/* default font renders via @font-face (works on file://). To EXPORT a
   self-contained HTML, also click "Load font" so the bytes get embedded. */
@font-face{ font-family:'AntonSC'; src:url('assets/font/AntonSC-Regular.ttf') format('truetype'); font-display:block; }
:root{--bg:#181a1f;--panel:#22262e;--line:#333a45;--txt:#e6e9ef;--accent:#59d38a;--accent2:#5aa0ff;--key:#ffcf4d;}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font:13px/1.4 system-ui,sans-serif;overflow:hidden;}
/* single column pinned to the viewport (minmax(0,…)) so no wide row — timeline, toolbar, etc. —
   can grow the app past the window and push the inspector off-screen (esp. at high display scaling). */
.app{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto 1fr auto;height:100%;}

/* ---- menu bar ---- */
.menubar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;background:#1b1f26;border-bottom:1px solid var(--line);padding:2px 8px;}
.brand{display:flex;align-items:center;gap:7px;font-weight:600;color:#cdd3dc;padding:0 10px 0 2px;font-size:13px;}
.brand-ico{width:16px;height:16px;border-radius:3px;}
.menus{display:flex;}
.menu{position:relative;}
.menu-btn{background:transparent;border:none;color:#c2c8d2;padding:5px 11px;border-radius:5px;font-size:13px;}
.menu-btn:hover,.menu.open .menu-btn{background:#2c313b;}
.menu-pop{position:absolute;top:calc(100% + 3px);left:0;min-width:210px;background:#22262e;border:1px solid var(--line);
   border-radius:7px;box-shadow:0 10px 28px rgba(0,0,0,.55);padding:4px;display:none;z-index:50;}
.menu.open .menu-pop{display:block;}
.mitem{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:6px 10px;border-radius:5px;
   cursor:pointer;color:#d6dbe3;white-space:nowrap;font-size:13px;}
.mitem:hover{background:var(--accent2);color:#022;}
.mitem .mkey{font-size:11px;opacity:.55;}
.mitem:hover .mkey{opacity:.85;color:#022;}
.mitem.on::after{content:'✓';margin-left:auto;font-size:12px;}
.menu-row{display:flex;align-items:center;gap:10px;padding:5px 10px;color:#c2c8d2;font-size:12px;}
.menu-row input[type=range]{flex:1;accent-color:var(--accent2);}
.msep{height:1px;background:var(--line);margin:4px 6px;}
.mb-status{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:14px;font-size:11px;color:#8b94a3;padding-right:6px;min-width:0;}
.mb-status #projName{color:#aeb6c2;min-width:64px;}
.mb-status #autostat{color:#6f7a88;min-width:120px;}

/* ---- creative toolbar (grouped) ---- */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--line);}
.tgroup{display:flex;align-items:center;gap:7px;padding:3px 10px;background:#1c2027;border:1px solid #2a303a;border-radius:8px;}
.tglabel{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#6f7a88;margin-right:2px;}
.toolbar label{display:flex;align-items:center;gap:5px;color:#aeb6c2;}
.toolbar input[type=text]{width:150px;}
.toolbar input[type=number]{width:62px;}

/* ---- modal ---- */
.modal{position:fixed;inset:0;z-index:100;background:rgba(6,8,11,.6);display:flex;align-items:center;justify-content:center;}
.modal-box{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:22px 26px;
   max-width:560px;max-height:80vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.6);}
.modal-box h2{margin:0 0 12px;font-size:16px;color:var(--txt);}
.modal-box h3{margin:14px 0 5px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#8b94a3;}
.modal-box kbd{background:#161a20;border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:11px;font-family:inherit;color:#cdd3dc;}
.modal-box .krow{display:flex;justify-content:space-between;gap:20px;padding:3px 0;color:#c2c8d2;font-size:13px;border-bottom:1px solid #262b34;}
.modal-x{position:absolute;top:10px;right:10px;background:#2c313b;border:1px solid var(--line);border-radius:6px;width:28px;height:28px;padding:0;}
input,button,select{background:#161a20;color:var(--txt);border:1px solid var(--line);border-radius:6px;padding:5px 7px;}
button{cursor:pointer;background:#2c313b;}
button:hover{background:#39404c;}
button.on{background:var(--accent);color:#04240f;border-color:var(--accent);}
.sep{width:1px;height:24px;background:var(--line);}
.file-btn{position:relative;overflow:hidden;display:inline-block;}
.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer;}

/* ---- middle: stage + inspector ---- */
/* minmax(0,1fr) + min-width:0 guarantee the stage column can shrink so the 250px inspector
   is NEVER pushed off-screen, regardless of the loaded sequence's resolution or the browser. */
.mid{display:grid;grid-template-columns:minmax(0,1fr) 250px;min-height:0;min-width:0;}
.stagewrap{position:relative;overflow:hidden;min-width:0;display:flex;align-items:center;justify-content:center;}
.stagewrap.hand{cursor:grab;}
.stagewrap.hand:active{cursor:grabbing;}
/* on-canvas tool switcher */
.canvas-tools{position:absolute;top:10px;left:10px;z-index:6;display:flex;gap:6px;}
.canvas-tools .tool{font-size:12px;padding:5px 9px;background:rgba(34,40,49,.82);border-color:#3a424e;}
.canvas-tools .tool:hover{background:rgba(57,64,76,.92);}
.canvas-tools .tool.on{background:var(--accent2);color:#022;border-color:var(--accent2);}
/* checkerboard is its OWN backdrop layer, independent of the project canvas */
.grid{position:absolute;inset:0;z-index:0;pointer-events:none;
   background:repeating-conic-gradient(#2a2f37 0% 25%,#232830 0% 50%) 50%/26px 26px;}
.stage{position:relative;z-index:1;flex:0 0 auto;transform-origin:center center;
   box-shadow:0 0 0 1px #000,0 12px 40px rgba(0,0,0,.6);background:#0d0f13;}
/* PNG sequence sits IN FRONT of the text so the overlay reads on top (text behind, seen through it) */
#onion{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.5;image-rendering:auto;z-index:3;}
.letter{position:absolute;z-index:2;color:var(--accent);line-height:1;white-space:pre;user-select:none;cursor:grab;
   transform-origin:center center;will-change:transform,opacity;}
.letter.sel{outline:1px dashed var(--accent2);outline-offset:2px;}
.letter.primary{outline-style:solid;}   /* last-clicked letter in a multi-selection */
/* group selection box + canvas marquee (screen-space overlays inside the stage) */
.group-box{position:absolute;z-index:4;pointer-events:none;border:1px dashed var(--accent2);border-radius:2px;background:rgba(90,160,255,.05);}
.canvas-marquee{position:absolute;z-index:5;pointer-events:none;border:1px solid var(--accent2);background:rgba(90,160,255,.14);}
/* rotation/scale pivot marker for the transient group "driver" */
.group-pivot{position:absolute;z-index:6;pointer-events:none;width:11px;height:11px;margin:-6px 0 0 -6px;border:1.5px solid var(--accent2);border-radius:50%;}
.group-pivot::before,.group-pivot::after{content:'';position:absolute;background:var(--accent2);}
.group-pivot::before{left:4px;top:-4px;width:1px;height:17px;}
.group-pivot::after{top:4px;left:-4px;height:1px;width:17px;}
.letter.dragging{cursor:grabbing;}
/* ghost: opacity-off layer shown as a faint locatable box while editing */
.letter.ghost{ color:transparent!important; background:rgba(120,170,255,.16);
   outline:1.5px dashed rgba(140,180,255,.55); outline-offset:0; }
.letter.ghost.sel{ background:rgba(120,170,255,.3); outline-color:var(--accent2); }

/* Aux diagnostic strips: editor-only confirmation that aux1/2/3 are animating.
   Derived live from keyframe values — never stored, never exported. */
#auxLayer{position:absolute;inset:0;z-index:5;pointer-events:none;}
#auxLayer.off{display:none;}
.auxstrip{position:absolute;transform:translate(-50%,0);width:46px;display:flex;flex-direction:column;gap:2px;}
.auxbar{position:relative;height:4px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden;}
.auxbar>i{position:absolute;left:0;top:0;bottom:0;width:0;}
.auxbar.a1>i{background:#4dd0e1;}   /* Aux 1 = cyan  */
.auxbar.a2>i{background:#e14d9d;}   /* Aux 2 = magenta */
.auxbar.a3>i{background:#e1c74d;}   /* Aux 3 = amber */

.inspector{background:var(--panel);border-left:1px solid var(--line);padding:10px;overflow:auto;}
.inspector h3{margin:4px 0 8px;font-size:12px;color:#8b94a3;text-transform:uppercase;letter-spacing:.5px;}
.row{display:flex;align-items:center;gap:6px;margin:5px 0;}
.row label{width:56px;color:#aeb6c2;}
.row input[type=number]{flex:1;}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0;}
.chip{padding:3px 6px;border:1px solid var(--line);border-radius:5px;cursor:pointer;background:#161a20;font-size:12px;}
.chip.sel{background:var(--accent2);color:#022;border-color:var(--accent2);}
.hint{color:#78818f;font-size:11px;margin-top:8px;line-height:1.55;}
.hint b{color:#aeb6c2;}

/* ---- bottom: transport + timeline ---- */
.bottom{background:var(--panel);border-top:1px solid var(--line);padding:8px 12px;}
.transport{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.transport input[type=range]{flex:1;accent-color:var(--accent2);}
.readout{font-variant-numeric:tabular-nums;color:var(--accent2);min-width:120px;text-align:right;}

.tl-wrap{display:flex;height:210px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#12151b;}
.tl-labels{flex:0 0 50px;background:#161b22;border-right:1px solid #2a3240;}
.tl-labels .sp{height:22px;border-bottom:1px solid #2a3240;}
.tl-labels .ll{height:20px;line-height:20px;padding-left:7px;font-size:10px;color:#9aa4b2;border-bottom:1px solid #20252e;}
.tl{position:relative;flex:1;overflow-x:auto;overflow-y:hidden;}
.tl-inner{position:relative;height:100%;min-width:100%;}
.tl-ruler{position:absolute;top:0;left:0;right:0;height:22px;border-bottom:1px solid #2a3240;cursor:col-resize;}
.tick{position:absolute;bottom:0;width:1px;background:#3a4453;}
.tick.major{background:#5f6c7e;}
.tick-label{position:absolute;top:3px;font-size:9px;color:#7d8794;pointer-events:none;font-variant-numeric:tabular-nums;transform:translateX(3px);}
.tl-tracks{position:absolute;left:0;right:0;top:22px;bottom:0;}
.tl-row{position:absolute;left:0;right:0;height:20px;border-bottom:1px solid #20252e;}
.tl-row:nth-child(odd){background:rgba(255,255,255,.015);}
.kf{position:absolute;top:5px;width:10px;height:10px;background:var(--key);border:1px solid #6b5300;
   transform:translateX(-50%) rotate(45deg);cursor:grab;}
.kf:hover{background:#fff;}
.kf.selk{background:#ff7bd0;border-color:#a02e70;box-shadow:0 0 0 2px rgba(255,123,208,.35);}
.playhead{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);z-index:8;pointer-events:none;}
.playhead::before{content:'';position:absolute;top:0;left:-4px;border:5px solid transparent;border-top-color:var(--accent);}
.marquee{position:absolute;z-index:7;border:1px solid var(--accent2);background:rgba(90,160,255,.15);pointer-events:none;}
