*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#0b0e14;color:#e6e9f0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.45}button{font:inherit;cursor:pointer}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar{display:flex;align-items:center;gap:20px;padding:10px 16px;background:#11151f;border-bottom:1px solid #232a3a;flex:0 0 auto}.brand{display:flex;flex-direction:column;min-width:0}.brand-name{font-weight:700;letter-spacing:.04em;white-space:nowrap}.brand-tagline{color:#8b94a7;font-size:12px;white-space:nowrap}.topbar-project{flex:1 1 auto;text-align:center;font-weight:600;color:#c9d2e4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.export-area{display:flex;align-items:center;gap:12px;flex:0 0 auto}.export-progress{color:#93a0c2;font-size:13px;white-space:nowrap}.export-error{color:#f87171;font-size:13px;max-width:420px}.export-btn{background:#ffb020;color:#171106;border:none;border-radius:6px;padding:8px 18px;font-weight:700}.export-btn:hover:not(:disabled){background:#ffc44d}.export-btn:disabled{opacity:.55;cursor:default}.layout{display:flex;flex:1 1 auto;min-height:0}.col{overflow-y:auto;padding:14px}.col-left{flex:0 0 280px;border-right:1px solid #232a3a;background:#0e1219}.col-center{flex:1 1 auto;display:flex;flex-direction:column;align-items:stretch;overflow:hidden;background:#080a0f}.col-right{flex:0 0 320px;border-left:1px solid #232a3a;background:#0e1219}.panel{margin-bottom:20px}.panel h2{margin:0 0 10px;font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#8b94a7}.item-list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px}.item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:#161b28;color:#e6e9f0;border:1px solid #232a3a;border-radius:8px;padding:9px 11px}.item:hover{border-color:#39445e}.item.active{border-color:#ffb020}.item.current{border-color:#38bdf8;background:#16222f}.dataset-item{display:flex;flex-direction:column;gap:2px;background:#161b28;border:1px solid #232a3a;border-radius:8px;padding:9px 11px}.item-title{font-weight:600;overflow-wrap:anywhere}.item-meta{color:#8b94a7;font-size:12px;overflow-wrap:anywhere}.secondary-btn{background:transparent;color:#e6e9f0;border:1px dashed #39445e;border-radius:6px;padding:7px 12px;width:100%}.secondary-btn:hover{border-color:#ffb020;color:#ffb020}.file-label{display:inline-block;background:#1c2333;border:1px solid #39445e;border-radius:6px;padding:7px 12px;cursor:pointer;font-weight:600}.file-label:hover{border-color:#ffb020}.file-label input[type=file]{display:none}.hint{color:#8b94a7;font-size:12px;margin:8px 0 0}.notice{font-size:13px;margin:8px 0 0;overflow-wrap:anywhere}.notice.ok{color:#34d399}.notice.error{color:#f87171}.canvas-wrap{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px}.preview{max-width:100%;max-height:100%;width:auto;height:auto;background:#000;border:1px solid #232a3a;border-radius:6px;box-shadow:0 10px 40px #00000080}.transport{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:10px 16px;background:#11151f;border-top:1px solid #232a3a}.play-btn{background:#1c2333;color:#e6e9f0;border:1px solid #39445e;border-radius:6px;padding:7px 14px;font-weight:600;white-space:nowrap}.play-btn:hover:not(:disabled){border-color:#ffb020}.play-btn:disabled{opacity:.55;cursor:default}.scrubber{flex:1 1 auto;accent-color:#ffb020}.readout{color:#c9d2e4;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.scene-label{flex:0 0 auto;padding:8px 16px 12px;background:#11151f;color:#93a0c2;font-size:13px;text-align:center}.script-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.script-text{margin:0 0 2px}.validation-status{font-weight:700;margin:0 0 8px}.validation-status.ok{color:#34d399}.validation-status.error{color:#f87171}.issue-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}.issue{background:#161b28;border:1px solid #232a3a;border-left-width:3px;border-radius:6px;padding:7px 9px;overflow-wrap:anywhere}.issue.error{border-left-color:#f87171}.issue.warning{border-left-color:#ffb020}.issue-code{font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}
