:root{--bg: #0b0c0f;--panel: #14161b;--panel-2: #191c22;--elev: #21252d;--elev-2: #262b34;--border: #262a33;--border-2: #333844;--text: #e7e9ee;--text-dim: #98a1b0;--text-faint:#656d7c;--accent: #6d8cff;--accent-dim:#3d55a8;--accent-soft: rgba(109,140,255,.16);--key: #ffb340;--key-soft: rgba(255,179,64,.18);--play: #ff5470;--ns: #ff2a4d;--ns-soft: rgba(255,42,77,.16);--ns-dim: #a3203a;--ok: #35d39a;--warn: #ffb020;--danger: #ff5f6d;--radius: 8px;--radius-sm: 6px;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--topbar-h: 48px;--timeline-h: 268px;--left-w: 300px;--right-w: 306px}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;background:var(--bg)}html{overflow-x:hidden}body{text-align:left;font-family:var(--ui);font-size:12.5px;color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;border:none;background:none}input,select{outline:none}svg{display:block}.ic{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.ic-lg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#2a2f38;border-radius:6px;border:2px solid var(--panel)}::-webkit-scrollbar-thumb:hover{background:#3a4150}::-webkit-scrollbar-corner{background:transparent}.app{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden;background:var(--bg)}.topbar{height:var(--topbar-h);flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:0 12px;background:linear-gradient(180deg,#171a20,#121419);border-bottom:1px solid var(--border);user-select:none;z-index:30}.tb-brand{display:flex;align-items:center;gap:9px;padding-right:8px}.tb-logo{width:22px;height:22px;color:var(--accent)}.tb-brand-text{display:flex;flex-direction:column;line-height:1.15}.tb-brand-name{font-size:13px;font-weight:800;letter-spacing:2.2px;color:#fff}.tb-brand-sub{font-size:9.5px;letter-spacing:.35px;color:#8b93a3;white-space:nowrap}.tb-tools{display:flex;align-items:center;gap:3px}.tb-sep{width:1px;height:22px;background:var(--border-2);margin:0 6px}.tbtn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:var(--radius-sm);color:var(--text-dim);background:transparent;border:1px solid transparent;font-size:12px;font-weight:500;transition:background .12s,color .12s,border-color .12s;white-space:nowrap}.tbtn:hover:not(:disabled){background:var(--elev);color:var(--text)}.tbtn:active:not(:disabled){background:var(--elev-2)}.tbtn:disabled{opacity:.35;cursor:default}.tbtn.ic-only{padding:0;width:30px;justify-content:center}.tbtn.primary{background:var(--accent);color:#fff;font-weight:600;border-color:#7d99ff;box-shadow:0 1px #ffffff1f inset,0 2px 8px #6d8cff47}.tbtn.primary:hover{background:#7f9bff}.tbtn.active{background:var(--accent-soft);color:#c3d0ff;border-color:var(--accent-dim)}.tb-right{margin-left:auto;display:flex;align-items:center;gap:12px}.proj-meta{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--text-dim);background:#0e1014;border:1px solid var(--border);padding:5px 10px;border-radius:var(--radius-sm);letter-spacing:.2px}.proj-meta i{width:1px;height:11px;background:var(--border-2);display:block}.save-badge{font-size:10.5px;color:var(--text-faint);min-width:62px;text-align:right;letter-spacing:.3px}.save-badge.show{color:var(--ok)}.main{flex:1 1 auto;display:flex;min-height:0;overflow:hidden}.splitter{flex:0 0 auto;background:transparent;position:relative;z-index:20}.splitter-v{width:5px;cursor:col-resize}.splitter-h{height:5px;cursor:row-resize}.splitter:hover,.splitter.dragging{background:var(--accent);opacity:.5}.panel{background:var(--panel);display:flex;flex-direction:column;min-height:0}.panel-left{width:var(--left-w);flex:0 0 auto;border-right:1px solid var(--border)}.panel-right{width:var(--right-w);flex:0 0 auto;border-left:1px solid var(--border)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px 7px;border-bottom:1px solid var(--border);flex:0 0 auto;background:var(--panel-2)}.panel-head-layers{border-top:1px solid var(--border)}.panel-title{font-size:10.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--text-dim)}.panel-actions{display:flex;gap:4px}.mini-btn{height:30px;padding:0 9px;font-size:11px;font-weight:600;border-radius:5px;color:var(--text-dim);background:var(--elev);border:1px solid var(--border-2);transition:background .12s,color .12s,border-color .12s;white-space:nowrap}.mini-btn:hover:not(:disabled){background:var(--elev-2);color:var(--text)}.mini-btn:active:not(:disabled){background:var(--elev-2)}.mini-btn.active{background:var(--accent-soft);color:#cfd9ff;border-color:var(--accent-dim)}.mini-btn:disabled{opacity:.38;cursor:default}.mini-btn.mute-btn.active{background:#ff787829;color:#ffb3b3;border-color:#7a3d45}.add-bar{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px 9px;border-bottom:1px solid var(--border)}.add-btn{height:28px;padding:0 8px;font-size:11px;font-weight:600;border-radius:5px;color:var(--text-dim);background:#0f1116;border:1px solid var(--border-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .12s,color .12s,border-color .12s}.add-btn:hover{background:var(--accent-soft);border-color:var(--accent-dim);color:#d5deff}.add-btn:active{background:var(--accent-dim)}.assets-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:9px;overflow-y:auto;max-height:200px;min-height:62px;align-content:start}.assets-empty{padding:0 12px 12px;font-size:11px;color:var(--text-faint);line-height:1.5}.assets-grid.has-items+.assets-empty{display:none}.asset-card{position:relative;border-radius:6px;overflow:hidden;background:#0a0b0e;border:1px solid var(--border);aspect-ratio:16/10;cursor:grab;transition:border-color .12s,transform .12s}.asset-card:hover{border-color:var(--border-2);transform:translateY(-1px)}.asset-card.dragging{opacity:.4}.asset-card img,.asset-card video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.asset-card .ac-audio{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a2130,#121722);color:var(--accent)}.asset-card .ac-badge{position:absolute;top:4px;left:4px;font-size:8.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;padding:2px 5px;border-radius:3px;background:#000000ad;color:#cfd6e4}.asset-card .ac-badge.video{color:#9fb6ff}.asset-card .ac-badge.audio{color:#7ee6c0}.asset-card .ac-name{position:absolute;left:0;right:0;bottom:0;padding:12px 5px 4px;font-size:9.5px;color:#dfe4ee;background:linear-gradient(transparent,#000000d9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.asset-card .ac-x{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:5px;background:#0009;color:#cfd6e4;font-size:13px;line-height:22px;text-align:center;opacity:0;transition:opacity .12s}.asset-card:hover .ac-x{opacity:1}.asset-card .ac-x:hover{background:var(--danger);color:#fff}.asset-card.missing{border-color:var(--warn)}.asset-card.missing img,.asset-card.missing video{opacity:.35;filter:grayscale(1)}.asset-card .ac-missing{position:absolute;top:4px;left:4px;right:4px;z-index:1;font-size:9px;font-weight:700;letter-spacing:.3px;text-align:center;padding:2px 5px;border-radius:3px;background:var(--warn);color:#241a00;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layers-list{flex:1 1 auto;overflow-y:auto;padding:6px;min-height:90px}.layer-row{display:flex;align-items:center;gap:4px;padding:8px;border-radius:7px;margin-bottom:3px;border:1px solid transparent;cursor:pointer;user-select:none;transition:background .1s}.layer-row:hover{background:var(--panel-2)}.layer-row.selected{background:var(--accent-soft);border-color:var(--accent-dim)}.layer-row .lr-icon{width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--text-faint);flex:0 0 auto}.layer-row .lr-icon svg{width:19px;height:19px}.layer-row.selected .lr-icon{color:#b8c6ff}.layer-row .lr-name{flex:1 1 auto;min-width:0;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-row .lr-name input{width:100%;background:#0d0f13;border:1px solid var(--accent-dim);border-radius:5px;padding:3px 5px;font-size:12.5px}.layer-row.dimmed .lr-name{color:var(--text-faint)}.layer-row .lr-btn{width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--text-faint);flex:0 0 auto;opacity:.9}.layer-row .lr-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}.layer-row .lr-btn:hover{background:var(--elev-2);color:var(--text);opacity:1}.layer-row .lr-btn.on{color:var(--accent);opacity:1}.layer-row .lr-btn.off{color:var(--text-faint);opacity:.6}.layer-row.drop-above{box-shadow:0 -2px 0 var(--accent)}.layer-row.drop-below{box-shadow:0 2px 0 var(--accent)}.layer-row .lr-missing{flex:0 0 auto;font-size:13px;color:var(--warn);line-height:1;padding:0 2px;cursor:help}.center{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;background:#0a0b0e}.canvas-toolbar{min-height:46px;flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;column-gap:10px;row-gap:5px;padding:5px 10px;background:var(--panel);border-bottom:1px solid var(--border);user-select:none}.ctb-group{display:flex;align-items:center;gap:4px}.ctb-spacer{flex:1 1 auto}.ctb-label{font-size:9.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint)}.ctb-info{font-family:var(--mono);font-size:10.5px;color:var(--text-faint)}.ctb-btn{height:32px;padding:0 11px;border-radius:6px;font-size:11px;font-weight:600;color:var(--text-dim);background:transparent;border:1px solid transparent;letter-spacing:.2px;flex:0 0 auto;white-space:nowrap;transition:background .12s,color .12s,border-color .12s}.ctb-btn:hover:not(:disabled){background:var(--elev);color:var(--text)}.ctb-btn.active{background:var(--accent-soft);color:#c6d3ff;border-color:var(--accent-dim)}.ctb-btn:disabled{opacity:.35;cursor:default}.ctb-select{height:32px;padding:0 6px;border-radius:6px;font-size:11px;background:var(--elev);border:1px solid var(--border-2);color:var(--text-dim)}.ctb-select:hover:not(:disabled){color:var(--text);border-color:#414857}.ctb-select:disabled{opacity:.4;cursor:default}.canvas-viewport{flex:1 1 auto;position:relative;overflow:hidden;background:linear-gradient(45deg,#0e0f13 25%,transparent 25%) -8px 0 / 16px 16px,linear-gradient(-45deg,#0e0f13 25%,transparent 25%) -8px 0 / 16px 16px,linear-gradient(45deg,transparent 75%,#0e0f13 75%) -8px 0 / 16px 16px,linear-gradient(-45deg,transparent 75%,#0e0f13 75%) -8px 0 / 16px 16px,#0a0b0e;display:flex;align-items:center;justify-content:center}.canvas-stage{position:relative;transform-origin:center center;will-change:transform;flex:0 0 auto}#glCanvas{display:block;width:100%;height:100%;box-shadow:0 10px 48px #000000b8,0 0 0 1px #ffffff12;background:#000;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}.overlay-svg{position:absolute;left:-3000px;top:-3000px;width:calc(100% + 6000px);height:calc(100% + 6000px);overflow:visible;pointer-events:none;touch-action:none}.overlay-svg .hit,.overlay-svg .ov-handle,.overlay-svg .ov-rot{pointer-events:none}.overlay-svg.interactive .ov-handle,.overlay-svg.interactive .ov-rot{pointer-events:all}.overlay-svg.interactive .ov-handle{cursor:pointer}.overlay-svg.interactive .ov-rot{cursor:grab}.overlay-svg.interactive .ov-rot:active{cursor:grabbing}.ov-outline{fill:none;stroke:var(--accent);stroke-width:1.25;vector-effect:non-scaling-stroke}.ov-outline.dim{stroke:#6d8cff59;stroke-dasharray:4 3}.ov-guide{stroke:#ffffff21;stroke-width:1;vector-effect:non-scaling-stroke;fill:none}.ov-guide.strong{stroke:#ffffff38}.ov-safe{stroke:#ffdc784d;stroke-width:1;stroke-dasharray:5 4;fill:none;vector-effect:non-scaling-stroke}.ov-grid{stroke:#ffffff14;stroke-width:1;vector-effect:non-scaling-stroke;fill:none}.ov-handle{fill:#101319;stroke:var(--accent);stroke-width:1.4}.ov-handle.hi{fill:var(--accent);stroke:#fff}.ov-line-handle{fill:#101319;stroke:#7ee6c0;stroke-width:1.6;pointer-events:none}.overlay-svg.interactive .ov-line-handle{pointer-events:all;cursor:move}.overlay-svg.interactive .ov-line-handle:hover{fill:#7ee6c0}.ov-rot-line{stroke:var(--accent);stroke-width:1.2;vector-effect:non-scaling-stroke}.ov-rot{fill:#101319;stroke:var(--accent);stroke-width:1.4}.ov-anchor{fill:none;stroke:#ffd479;stroke-width:1.4}.ov-anchor-dot{fill:#ffd479}.overlay-svg .ov-gizmo{display:none}.overlay-svg .ov-gizmo.on{display:inline}.overlay-svg .ov-gizmo .gm{display:none}.overlay-svg .ov-gizmo .gm.on{display:inline}.overlay-svg .ov-gizmo *{pointer-events:none}.overlay-svg.interactive .ov-gizmo .ov-giz-hit,.overlay-svg.interactive .ov-gizmo .ov-giz-ghit{pointer-events:stroke;cursor:grab}.overlay-svg.interactive .ov-gizmo .ov-giz-dhit{pointer-events:all;cursor:ns-resize}.overlay-svg.interactive .ov-gizmo .ov-giz-uhit{pointer-events:all;cursor:nwse-resize}.overlay-svg.interactive .ov-gizmo .ov-giz-hit:active,.overlay-svg.interactive .ov-gizmo .ov-giz-ghit:active,.overlay-svg.interactive .ov-gizmo .ov-giz-dhit:active,.overlay-svg.interactive .ov-gizmo .ov-giz-uhit:active{cursor:grabbing}.ov-giz-hit{stroke:transparent;stroke-width:14;fill:none}.ov-giz-ghit{stroke:transparent;stroke-width:16;fill:none}.ov-giz-dhit,.ov-giz-uhit{fill:transparent;stroke:none}.ov-giz-line,.ov-giz-gring,.ov-giz-head,.ov-giz-dmain,.ov-giz-ucen{filter:drop-shadow(0 0 1.5px rgba(0,0,0,.95)) drop-shadow(0 0 1px rgba(0,0,0,.75))}.ov-giz-line{stroke-width:2.6;fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.ov-giz-gring{fill:none;stroke-width:2;vector-effect:non-scaling-stroke}.ov-giz-head{stroke:none}.ov-giz-dmain{fill:#0d1016;stroke-width:2;vector-effect:non-scaling-stroke}.ov-giz-ucen{fill:#dfe6ff;stroke:#0d1016;stroke-width:1}.ax-x{stroke:#ff4d4d}.ax-y{stroke:#3fd66a}.ax-z{stroke:#4d8cff}.ov-giz-head.ax-x{fill:#ff4d4d}.ov-giz-head.ax-y{fill:#3fd66a}.ov-giz-head.ax-z{fill:#4d8cff}.ov-giz-line.hi,.ov-giz-gring.hi{stroke:#fff}.ov-giz-head.hi{fill:#fff}.ov-giz-dmain.hi{stroke:#fff}.ov-giz-ucen.hi{fill:#fff}.empty-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:6;pointer-events:none}.empty-state[hidden]{display:none}.empty-state:not([hidden]){pointer-events:auto}.empty-card{position:relative;text-align:center;padding:34px 44px;background:#121419eb;border:1px solid var(--border-2);border-radius:14px;box-shadow:0 24px 70px #0009;backdrop-filter:blur(6px);max-width:430px;pointer-events:auto}.empty-logo{width:44px;height:44px;color:var(--accent);margin:0 auto 12px}.empty-card h1,.empty-card .empty-title{margin:0 0 6px;font-size:21px;font-weight:700;letter-spacing:.2px}.empty-card p{margin:0 0 18px;color:var(--text-dim);font-size:12.5px}.empty-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap}.empty-actions-media{margin-top:10px}.empty-hint{margin-top:14px!important;font-size:11px!important;color:#8b93a3!important}.empty-actions .btn.lg{height:34px;padding:0 16px;font-size:12.5px}.empty-actions-media .btn.lg{height:30px;font-size:11.5px;color:var(--text-dim)}.empty-close{position:absolute;top:8px;right:8px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:7px;color:var(--text-faint);font-size:13px;line-height:1}.empty-close:hover{background:var(--elev);color:var(--text)}.drop-overlay{position:absolute;inset:8px;z-index:40;border:2px dashed var(--accent);border-radius:12px;background:#101420d1;display:none;align-items:center;justify-content:center;pointer-events:none}.drop-overlay.show{display:flex}.drop-inner{display:flex;flex-direction:column;align-items:center;gap:10px;color:#c9d4ff;font-size:14px;font-weight:600}.inspector-body{flex:1 1 auto;overflow-y:auto;padding:8px 10px 40px}.inspector-empty{padding:26px 16px;color:var(--text-faint);font-size:11.5px;text-align:center;line-height:1.6}.inspector-body.hidden{display:none}.insp-section{margin-bottom:12px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--panel-2)}.insp-section-head{display:flex;align-items:center;gap:6px;padding:6px 9px;background:#191d24;cursor:pointer;user-select:none;border-bottom:1px solid var(--border)}.insp-section-head .chev{width:11px;height:11px;fill:none;stroke:var(--text-faint);stroke-width:2;stroke-linecap:round;transition:transform .14s}.insp-section.collapsed .chev{transform:rotate(-90deg)}.insp-section.collapsed .insp-section-body{display:none}.insp-section-title{font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--text-dim);flex:1 1 auto}.insp-section-body{padding:7px 8px 9px}.insp-row{display:grid;grid-template-columns:54px 1fr 26px;align-items:center;gap:6px;margin-bottom:6px}.insp-row.two{grid-template-columns:54px 1fr 1fr 26px}.insp-row>label{font-size:10.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insp-row .sub-label{font-size:9px;color:var(--text-faint)}.num-field{position:relative;display:flex;align-items:center}.num-field input[type=number]{width:100%;height:30px;padding:0 40px 0 8px;background:#0e1014;border:1px solid var(--border-2);border-radius:6px;font-family:var(--mono);font-size:11.5px;color:var(--text);-moz-appearance:textfield;appearance:textfield;transition:border-color .12s,background .12s}.num-field input[type=number]:hover{border-color:#414857}.num-field input[type=number]:focus{border-color:var(--accent);background:#0b0d11}.num-field input::-webkit-outer-spin-button,.num-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.num-field .num-unit{position:absolute;right:18px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10px;color:var(--text-faint);letter-spacing:.2px;pointer-events:none}.num-field .scrub{position:absolute;right:0;top:0;bottom:0;width:16px;cursor:ew-resize;border-left:1px solid var(--border);border-radius:0 6px 6px 0;display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:8px}.num-field .scrub:hover{background:var(--elev-2);color:var(--text-dim)}.kf-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:var(--text-faint);border-radius:5px}.kf-btn:hover{background:var(--elev-2)}.kf-diamond{width:9px;height:9px;transform:rotate(45deg);border:1.4px solid currentColor;border-radius:1.5px}.kf-btn.has-key .kf-diamond{background:var(--key);border-color:var(--key)}.kf-btn.has-key{color:var(--key)}.kf-btn.on-key .kf-diamond{background:var(--key);border-color:#fff;box-shadow:0 0 0 1.5px var(--key)}.kf-btn.on-key,.kf-btn.anim{color:var(--key)}.insp-note{font-size:10.5px;color:var(--text-faint);line-height:1.55;margin:2px 0 6px}.insp-keynote{margin:8px 0 10px;padding:6px 8px;border-left:2px solid var(--key);background:#ffb34012;border-radius:2px}.insp-inline{display:flex;gap:5px;flex-wrap:wrap}.seg{display:flex;background:#0e1014;border:1px solid var(--border-2);border-radius:6px;overflow:hidden}.seg button{flex:1 1 0;height:30px;font-size:11px;font-weight:600;color:var(--text-dim);border-right:1px solid var(--border-2);transition:background .12s,color .12s}.seg button:last-child{border-right:none}.seg button:hover{background:var(--elev);color:var(--text)}.seg button.active{background:var(--accent);color:#fff}.text-input,.select-input{width:100%;height:26px;padding:0 7px;background:#0e1014;border:1px solid var(--border-2);border-radius:5px;font-size:11.5px;color:var(--text)}.select-input{cursor:pointer}.text-input:focus,.select-input:focus{border-color:var(--accent)}textarea.text-input{height:62px;padding:6px 7px;resize:vertical;line-height:1.45;font-family:var(--ui)}.color-input{width:30px;height:26px;padding:0;border:1px solid var(--border-2);border-radius:5px;background:#0e1014;cursor:pointer}.timeline{flex:0 0 auto;height:var(--timeline-h);display:flex;flex-direction:column;background:var(--panel);border-top:1px solid var(--border);overflow:hidden}.transport{height:38px;flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:0 10px;border-bottom:1px solid var(--border);background:var(--panel-2);user-select:none}.tp-group{display:flex;align-items:center;gap:3px}.tp-spacer{flex:1 1 auto}.tp-btn{height:26px;padding:0 8px;border-radius:5px;color:var(--text-dim);background:transparent;border:1px solid transparent;display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:600}.tp-btn:hover{background:var(--elev);color:var(--text)}.tp-btn.active{background:var(--accent-soft);color:#c6d3ff;border-color:var(--accent-dim)}.tp-btn.play{width:32px;height:30px;justify-content:center;background:var(--elev);color:var(--text);border:1px solid var(--border-2)}.tp-btn.play:hover{background:var(--elev-2)}.tp-btn.play.playing{background:var(--accent);color:#fff;border-color:#7d99ff}.tp-btn.split-btn{border-color:var(--border-2)}.tp-btn.split-btn:not(:disabled):hover{background:var(--elev);color:var(--text)}.tp-btn.split-btn:disabled{opacity:.4;cursor:not-allowed}.tp-time{display:flex;flex-direction:column;align-items:center;min-width:92px}.time-main{font-family:var(--mono);font-size:14px;font-weight:600;letter-spacing:.4px;color:#fff}.time-sub{font-size:9px;color:var(--text-faint);font-family:var(--mono)}.tp-label{font-size:10px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.6px}.tp-val{font-family:var(--mono);font-size:10px;color:var(--text-faint);min-width:52px}.num-input{height:26px;padding:0 7px;background:#0e1014;border:1px solid var(--border-2);border-radius:5px;font-family:var(--mono);font-size:11px;color:var(--text);width:74px;-moz-appearance:textfield;appearance:textfield}.num-input.sm{height:24px;width:62px}.num-input:focus{border-color:var(--accent)}.range{-webkit-appearance:none;appearance:none;height:3px;border-radius:2px;background:var(--border-2);width:90px}.range::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid #12141a}.range::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid #12141a}.tl-body{flex:1 1 auto;display:flex;min-height:0;position:relative}.tl-left{width:210px;flex:0 0 auto;border-right:1px solid var(--border);display:flex;flex-direction:column;background:#12141a}.tl-left-head{height:24px;flex:0 0 auto;display:flex;align-items:center;padding:0 9px;font-size:9.5px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--border);background:#14161c}.tl-left-rows{flex:1 1 auto;overflow:hidden}.tl-right{flex:1 1 auto;position:relative;overflow:hidden;min-width:0}.tl-ruler-wrap{height:24px;flex:0 0 auto;position:relative;overflow:hidden;border-bottom:1px solid var(--border);background:#14161c}.tl-ruler{display:block;height:24px;width:100%}.tl-tracks{position:absolute;inset:24px 0 0;overflow-y:auto;overflow-x:hidden}.tl-inner{position:relative;min-height:100%;will-change:transform}.tl-row{height:26px;border-bottom:1px solid #1c1f26;position:relative}.tl-row.layer-row-tl{background:#161920}.tl-row.selected{background:#1b2030}.tl-row:hover{background:#1a1d25}.tl-label{height:26px;display:flex;align-items:center;gap:5px;padding:0 8px;font-size:11px;color:var(--text-dim);border-bottom:1px solid #1c1f26;cursor:pointer;user-select:none;white-space:nowrap;overflow:hidden}.tl-label.selected{background:#1b2030;color:var(--text)}.tl-label:hover{background:#1a1d25}.tl-label.sub{padding-left:24px;font-size:10px;color:var(--text-faint);height:22px}.tl-label .tl-exp{width:12px;height:12px;flex:0 0 auto}.tl-label .tl-exp svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;transition:transform .12s}.tl-label.collapsed .tl-exp svg{transform:rotate(-90deg)}.tl-label .tl-name{overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.tl-label .tl-kfc{font-family:var(--mono);font-size:9px;color:var(--key);opacity:.75}.tl-clip{position:absolute;top:3px;bottom:3px;border-radius:4px;background:linear-gradient(180deg,#2e4166,#24314f);border:1px solid #3d5480;overflow:hidden;cursor:grab}.tl-clip.audio{background:linear-gradient(180deg,#1e4a41,#17362f);border-color:#2d6355}.tl-clip.text{background:linear-gradient(180deg,#4a3a63,#332b45);border-color:#5d4b7d}.tl-clip.shape{background:linear-gradient(180deg,#1d3f57,#16303f);border-color:#2c5f7d}.tl-clip.line{background:linear-gradient(180deg,#3f3a1d,#2f2c16);border-color:#6b6130}.tl-clip.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tl-clip .clip-name{font-size:9px;padding:1px 5px;color:#c8d4ea;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.tl-clip .clip-wave{position:absolute;left:0;right:0;bottom:0;height:60%;opacity:.5;pointer-events:none}.tl-clip .clip-edge{position:absolute;top:0;bottom:0;width:7px;cursor:ew-resize}.tl-clip .clip-edge.l{left:0}.tl-clip .clip-edge.r{right:0}.tl-clip .clip-edge:hover{background:#ffffff2e}.tl-clip .trans-badge{position:absolute;top:2px;font-size:8px;padding:0 3px;border-radius:2px;background:#0000008c;color:#ffd479;pointer-events:none}.tl-clip .split-hint{position:absolute;top:0;bottom:0;width:0;z-index:3;border-left:1.5px dashed #ffd23f;opacity:0;pointer-events:none;transition:opacity .08s linear}.tl-clip:hover .split-hint.on{opacity:1}.tl-clip .split-hint-ico{position:absolute;top:0;left:-4px;font-size:8px;line-height:1;color:#ffd23f;text-shadow:0 1px 2px #000;pointer-events:none}.tl-clip .trans-badge.in{left:2px}.tl-clip .trans-badge.out{right:2px}.tl-key{position:absolute;width:11px;height:11px;margin-left:-5.5px;margin-top:-5.5px;transform:rotate(45deg);background:var(--key);border:1.3px solid #1a1207;border-radius:1.5px;cursor:pointer;z-index:5}.tl-key:hover{background:#ffd07a}.tl-key.selected{background:#fff;border-color:var(--key);box-shadow:0 0 0 1.5px var(--key)}.tl-key.hold{border-radius:0}.tl-key.selected{background:#fff;border-color:#fff;box-shadow:0 0 0 1.5px var(--key),0 0 6px 1px #ffd23fd9}.tl-prop-row .tl-track{position:absolute;inset:0}.tl-track{position:relative}.tl-marquee{position:fixed;z-index:60;pointer-events:none;border:1px solid rgba(124,140,255,.9);background:#7c8cff29;border-radius:2px}.playhead{position:absolute;top:0;bottom:0;width:0;border-left:1px solid var(--play);left:0;z-index:12;pointer-events:none}.ph-cap{position:absolute;top:0;left:-5px;width:11px;height:11px;background:var(--play);clip-path:polygon(0 0,100% 0,50% 100%)}.modal-root{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center}.modal-root[hidden]{display:none}.modal-backdrop{position:absolute;inset:0;background:#040508b8;backdrop-filter:blur(3px)}.modal{position:relative;z-index:2;background:#15181e;border:1px solid var(--border-2);border-radius:12px;box-shadow:0 30px 90px #000000b3;display:flex;flex-direction:column;max-height:88vh;overflow:hidden}.modal[hidden]{display:none}.export-modal{width:660px}.settings-modal{width:520px}.confirm-modal{width:400px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:14.5px;font-weight:700;letter-spacing:.2px}.x-btn{width:26px;height:26px;border-radius:5px;color:var(--text-faint);font-size:12px}.x-btn:hover{background:var(--elev);color:var(--text)}.modal-body{padding:16px;overflow-y:auto}.modal-foot{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.modal-foot-actions{display:flex;justify-content:flex-end;gap:8px}.btn{height:31px;padding:0 14px;border-radius:6px;font-size:12px;font-weight:600;background:var(--elev);color:var(--text);border:1px solid var(--border-2);display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .12s,border-color .12s,opacity .12s;text-decoration:none}.btn:hover:not(:disabled){background:var(--elev-2);border-color:#434a58}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:#7d99ff;color:#fff}.btn.primary:hover:not(:disabled){background:#7f9bff}.btn.danger{background:#46222a;border-color:#7a3540;color:#ffb8c0}.btn.danger:hover:not(:disabled){background:#5a2a34}.btn.ghost{background:transparent}.export-modal .modal-body{display:flex;gap:16px}.export-preview{flex:0 0 auto;width:216px}.export-preview-frame{width:216px;background:#0a0b0e;border:1px solid var(--border-2);border-radius:8px;display:flex;align-items:center;justify-content:center;padding:8px;min-height:140px}.export-preview-frame canvas{max-width:100%;max-height:260px;display:block;border-radius:3px;box-shadow:0 3px 14px #0009}.export-preview-note{margin-top:6px;font-size:10px;color:var(--text-faint);text-align:center;line-height:1.35}.export-hint{font-size:11px;color:var(--text-dim);line-height:1.45;background:#7c8cff14;border:1px solid rgba(124,140,255,.22);border-radius:6px;padding:7px 9px}.export-fields{flex:1 1 auto;display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start;min-width:0}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field-wide{grid-column:1 / -1}.field>label{font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text-faint)}.field select,.field input[type=number],.field input[type=text]{height:30px;padding:0 8px;background:#0e1014;border:1px solid var(--border-2);border-radius:6px;font-size:12px;color:var(--text);width:100%}.field select:focus,.field input:focus{border-color:var(--accent)}.range-row{display:flex;align-items:center;gap:6px}.range-row .dim,.dim{flex:0 0 auto}.dim{color:var(--text-faint);font-size:11px}.est{background:#0e1014;border:1px solid var(--border);border-radius:6px;padding:9px 11px;font-family:var(--mono);font-size:11px;color:var(--text-dim);line-height:1.7}.est b{color:var(--text);font-weight:600}.est .warn{color:var(--warn)}.est .ok{color:var(--ok)}.est .bad{color:var(--danger)}.warn-box{background:#ffb02017;border:1px solid rgba(255,176,32,.35);color:#ffce7a;border-radius:6px;padding:9px 11px;font-size:11px;line-height:1.55}.warn-box.err{background:#ff5f6d17;border-color:#ff5f6d66;color:#ffb0b8}.warn-box.info{background:#6d8cff17;border-color:#6d8cff59;color:#b9c8ff}.export-progress{display:flex;flex-direction:column;gap:7px}.prog-bar{height:7px;border-radius:4px;background:#0c0e12;overflow:hidden;border:1px solid var(--border)}.prog-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),#8fb0ff);transition:width .18s}.prog-row{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--text-dim)}.prog-log{font-size:10px;color:var(--text-faint);font-family:var(--mono);max-height:44px;overflow:hidden;line-height:1.5}.settings-body{display:grid;grid-template-columns:1fr 1fr;gap:12px}.aspect-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.aspect-chip{border:1px solid var(--border-2);border-radius:7px;padding:7px 8px;background:#0e1014;display:flex;flex-direction:column;gap:2px;align-items:flex-start}.aspect-chip .ac-name{font-size:12px;font-weight:700;color:var(--text)}.aspect-chip .ac-sub{font-size:9px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.aspect-chip:hover{border-color:var(--border-2);background:#14171d}.aspect-chip.active{border-color:var(--accent);background:var(--accent-soft)}.aspect-chip.active .ac-name{color:#cfd9ff}.bg-row{display:flex;gap:8px;align-items:center}.chips{display:flex;gap:5px;flex:1 1 auto}.chip{height:27px;padding:0 10px;border-radius:6px;font-size:11px;font-weight:600;background:#0e1014;border:1px solid var(--border-2);color:var(--text-dim)}.chip:hover{background:var(--elev);color:var(--text)}.chip.active{background:var(--accent-soft);border-color:var(--accent-dim);color:#cfd9ff}.settings-note{font-size:10.5px;color:var(--text-faint);line-height:1.6}.confirm-msg{margin:0;font-size:12.5px;color:var(--text-dim);line-height:1.6}.ctx-menu{position:fixed;z-index:200;min-width:178px;padding:4px;background:#1b1f26;border:1px solid var(--border-2);border-radius:8px;box-shadow:0 14px 40px #0009}.ctx-menu[hidden]{display:none}.ctx-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:6px 9px;border-radius:5px;font-size:11.5px;color:var(--text-dim)}.ctx-item:hover{background:var(--accent-soft);color:var(--text)}.ctx-item.disabled{opacity:.4}.ctx-item .ctx-key{font-family:var(--mono);font-size:9.5px;color:var(--text-faint)}.ctx-sep{height:1px;background:var(--border);margin:4px 2px}.ctx-head{padding:5px 9px 3px;font-size:9.5px;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint)}.ctx-item.checked:before{content:"\2713"}.toasts{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{padding:9px 14px;border-radius:8px;font-size:12px;font-weight:500;background:#1e232c;border:1px solid var(--border-2);color:var(--text);box-shadow:0 10px 30px #00000080;animation:toastIn .18s ease-out;max-width:460px;display:flex;gap:9px;align-items:center}.toast.err{background:#3a1e23;border-color:#7a3540;color:#ffc4ca}.toast.ok{background:#16302a;border-color:#2d6355;color:#b6f0dd}.toast.warn{background:#33280f;border-color:#7a5c1a;color:#ffd89a}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.busy-overlay{position:fixed;inset:0;z-index:400;background:#06070a99;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}.busy-overlay[hidden]{display:none}.busy-box{display:flex;align-items:center;gap:12px;padding:16px 22px;background:#1a1e25;border:1px solid var(--border-2);border-radius:10px;font-size:13px}.spinner{width:17px;height:17px;border-radius:50%;border:2px solid rgba(109,140,255,.25);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app.preview-mode .panel-left,.app.preview-mode .panel-right,.app.preview-mode .splitter-v,.app.preview-mode .timeline,.app.preview-mode #splitTimeline,.app.preview-mode .canvas-toolbar{display:none}@media (max-width: 1500px){.canvas-toolbar{column-gap:8px}.canvas-toolbar .ctb-info{display:none}}@media (max-width: 1180px){:root{--left-w: 262px;--right-w: 262px}.tb-tools .tbtn span{display:none}.tb-tools .tbtn{padding:0 8px}.tb-tools .tbtn:not(.ic-only){width:30px;justify-content:center}}@media (max-width: 900px){:root{--left-w: 0px;--right-w: 240px;--timeline-h: 220px}.panel-left,.tb-brand-text,.proj-meta{display:none}}@media (max-width: 720px){:root{--right-w: 0px}.panel-right{display:none}.app{font-size:12px}.tp-group .tp-label,.tp-val{display:none}}@media (max-width: 640px){.topbar{gap:8px;padding:0 8px}.tb-brand{padding-right:0}.tb-tools{gap:2px}.tb-tools .tb-sep{display:none}.tb-hide-sm{display:none!important}.tb-tools .tbtn,.tb-tools .tbtn.ic-only{width:28px;height:28px}.tb-tools .tbtn.primary{width:auto}.tb-right{gap:6px}.save-badge{display:none}.canvas-toolbar{height:auto;min-height:46px;flex-wrap:wrap;row-gap:4px;column-gap:6px;padding:6px 8px}.canvas-toolbar .ctb-group{flex:0 0 auto}.canvas-toolbar .ctb-spacer,.canvas-toolbar .ctb-info{display:none}.canvas-toolbar .ctb-btn{padding:0 6px}:root{--timeline-h: 246px}.transport{flex-wrap:wrap;height:auto;min-height:38px;gap:6px 12px;padding:6px 8px;overflow:visible}.transport .tp-group,.transport .tp-time{flex:0 0 auto}.tp-btn{padding:0 6px}.tp-time{min-width:80px}.range{width:74px}}@media (max-width: 460px){#exportBtn span{display:none}#exportBtn{padding:0 9px}.tb-logo{width:20px;height:20px}}.mobile-only{display:none!important}@media (max-width: 900px){.mobile-only{display:inline-flex!important}.main{position:relative}.panel-right{display:none}.app.show-left .panel-left,.app.show-right .panel-right{display:flex;position:absolute;top:0;bottom:0;z-index:60;width:min(320px,86vw);background:var(--panel);border:1px solid var(--border);box-shadow:0 14px 48px #000000b8}.app.show-left .panel-left{left:0;border-radius:0 10px 10px 0}.app.show-right .panel-right{right:0;border-radius:10px 0 0 10px}.app.show-left #splitLeft,.app.show-right #splitRight{display:none}}.tp-btn.ns-toggle{border-color:var(--border-2)}.tp-btn.ns-toggle.ns-on{background:var(--ns-soft);color:#ffb9c4;border-color:var(--ns-dim)}.tp-btn.ns-toggle.ns-on:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ns);box-shadow:0 0 0 2px #ff2a4d47;margin-right:1px}.tp-btn.ns-key-btn.ns-ready{color:#ffb9c4}.tl-label.ns-section-label{color:var(--ns);font-weight:800;letter-spacing:1.2px;font-size:9px;text-transform:uppercase;border-bottom-color:#2a1218}.tl-row.ns-section-row{height:16px!important;background:#170a0e;border-bottom:1px solid #2a1218}.tl-label.ns-label{color:#ff9cac}.tl-label.ns-label.selected{background:#241016;color:#ffd0d8}.tl-row.ns-row{background:#1a0e13;border-bottom:1px solid #26141a}.tl-row.ns-row.selected{background:#241019}.tl-row.ns-row:hover{background:#201017}.ns-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--ns);box-shadow:0 0 0 2px #ff2a4d38}.ns-bar{position:absolute;top:5px;bottom:5px;border-radius:4px;background:#ff2a4d1f;border:1px solid rgba(255,42,77,.5);cursor:grab;min-width:10px}.ns-bar.open{border-style:dashed;background:#ff2a4d0f}.ns-bar.selected{border-color:#fff;box-shadow:0 0 0 1.5px var(--ns)}.tl-ns-key{position:absolute;top:50%;width:12px;height:12px;margin-top:-6px;transform:rotate(45deg);background:var(--ns);border:1.4px solid #22050b;border-radius:2px;cursor:pointer;z-index:6}.tl-ns-key:hover{background:#ff5c78}.tl-ns-key.start{left:-6px}.tl-ns-key.end{right:-6px}.insp-section.insp-ns{border-left:2px solid var(--ns-dim)}.insp-section.insp-ns.ns-on{border-color:var(--ns-dim)}.insp-section.insp-ns.ns-on .insp-section-title{color:#ff9cac}.ns-note{color:#d99aa6}.insp-ns .ns-status{margin:2px 0 6px}.ns-pair-list{display:flex;flex-direction:column;gap:3px;margin:5px 0}.ns-pair{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:5px;background:#0e1014;border:1px solid var(--border);cursor:pointer;font-size:10.5px;color:var(--text-dim)}.ns-pair:hover{border-color:var(--ns-dim)}.ns-pair.selected{border-color:var(--ns);background:var(--ns-soft);color:var(--text)}.ns-pair .ns-dot{width:7px;height:7px}.ns-pair-time{font-family:var(--mono);font-size:9.5px;color:var(--text-faint);white-space:nowrap}.ns-pair-val{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ffc6cf}.ns-mini{width:19px;height:19px;border-radius:4px;color:var(--text-faint);font-size:11px;line-height:1;flex:0 0 auto}.ns-mini:hover:not(:disabled){background:var(--elev-2);color:var(--text)}.ns-mini.danger:hover:not(:disabled){background:#46222a;color:#ffb8c0}.ns-mini:disabled{opacity:.3;cursor:default}.ns-editor{margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}.ns-editor .insp-row{margin-bottom:5px}.ns-value-btn{width:100%;height:26px;padding:0 8px;text-align:left;background:#0e1014;border:1px solid var(--border-2);border-radius:5px;font-family:var(--mono);font-size:11px;color:#ffc6cf;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ns-value-btn:hover{border-color:var(--ns-dim);background:#14090d}.ns-live{margin-top:5px;font-family:var(--mono);font-size:10.5px;color:#ff9cac;opacity:.9}.ns-colors-head{margin:9px 0 4px;padding-top:7px;border-top:1px dashed var(--border);font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--ns);opacity:.9}.ns-colors-sub{margin:6px 0 3px;font-size:9px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text-faint)}.ns-color-row{grid-template-columns:74px 1fr}.ns-color-row>label{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25}.ns-color-cell{display:flex;align-items:center;gap:7px}.ns-color-input{width:34px;height:24px;padding:0;border:1px solid var(--border-2);border-radius:5px;background:#0e1014;cursor:pointer;flex:0 0 auto}.ns-color-input::-webkit-color-swatch-wrapper{padding:2px}.ns-color-input::-webkit-color-swatch{border:none;border-radius:3px}.ns-color-input::-moz-color-swatch{border:none;border-radius:3px}.ns-color-input:hover{border-color:var(--ns-dim)}.ns-color-hex{font-family:var(--mono);font-size:10.5px;color:var(--text-dim);letter-spacing:.5px}.ns-modal{width:430px}.ns-modal-hint{font-size:11px;color:var(--text-faint);line-height:1.7;margin-bottom:10px}.ns-modal-hint code{background:#0e1014;border:1px solid var(--border);border-radius:3px;padding:0 4px;font-family:var(--mono);color:#ffc6cf}.ns-modal-input{width:100%;height:36px;font-size:15px;font-family:var(--mono);color:#fff;border-color:var(--border-2)}.ns-modal-input:focus{border-color:var(--ns)}.ns-modal-preview{margin-top:9px;min-height:16px;font-family:var(--mono);font-size:11px;color:#ff9cac;line-height:1.6;white-space:pre-wrap}.ns-modal .warn-box{margin-top:9px}.btn.primary.ns-primary{background:var(--ns);border-color:#ff5c78}.btn.primary.ns-primary:hover:not(:disabled){background:#ff4560}
