/* ============ LALIGURANS // FUTURISTIC HUD ============ */
:root{--bg:#0c0708;--panel:#160d0f;--panel2:#211316;--line:#3a2024;--line2:#54292e;
  --text:#f4e8e6;--muted:#b58a8e;--amber:#ff2d4f;--amber2:#ff93a6;--amber-dk:#a30d24;
  --cyan:#2fe0a6;--cyan-dk:#0f7a55;--red:#ff5a3c;--green:#46d18a;--paper:#f6ecdf;--paper-ink:#5a1320;
  --glow:0 0 0 1px color-mix(in srgb,var(--amber) 55%,transparent),0 0 18px color-mix(in srgb,var(--amber) 30%,transparent);
  --shadow:0 16px 44px rgba(0,0,0,.6)}
html.light{--bg:#efe6e2;--panel:#fbf4f1;--panel2:#f1e3df;--line:#e0cbc5;--line2:#cdae a6;--line2:#cdb0a8;
  --text:#2a1417;--muted:#8a5d61;--amber:#d61230;--amber2:#9c0f24;--amber-dk:#d61230;--cyan:#138a5a;--cyan-dk:#0c6340;
  --red:#c23a1e;--green:#2f9a5c;--paper:#fffaf2;--paper-ink:#5a1320;--glow:0 0 0 1px color-mix(in srgb,var(--amber) 45%,transparent),0 0 14px color-mix(in srgb,var(--amber) 22%,transparent);--shadow:0 16px 36px rgba(90,19,32,.16)}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{font-family:'Chakra Petch','Mukta',system-ui,sans-serif;background:var(--bg);color:var(--text);overflow:hidden;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select{font-family:inherit;color:inherit}
::selection{background:var(--amber);color:#fff}
.disp{font-family:'Fraunces','Mukta',serif}
/* ---- ambient HUD grid + glow + scanlines ---- */
.bloom{position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(120% 80% at 50% -12%,color-mix(in srgb,var(--amber) 26%,transparent),transparent 56%),
  radial-gradient(90% 70% at 100% 112%,color-mix(in srgb,var(--cyan) 12%,transparent),transparent 60%)}
.bloom::before{content:'';position:absolute;inset:-2px;
  background-image:linear-gradient(color-mix(in srgb,var(--amber) 16%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--amber) 11%,transparent) 1px,transparent 1px);
  background-size:48px 48px;-webkit-mask-image:radial-gradient(125% 95% at 50% 32%,#000 28%,transparent 76%);mask-image:radial-gradient(125% 95% at 50% 32%,#000 28%,transparent 76%);animation:gridShift 22s linear infinite}
@keyframes gridShift{to{background-position:48px 48px}}
.bloom::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(0,0,0,.16) 3px 4px);mix-blend-mode:overlay;opacity:.55}
.dust{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.dust i{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--amber2);box-shadow:0 0 8px var(--amber);opacity:.4;animation:drift linear infinite alternate}
.dust i:nth-child(1){left:14%;top:24%;animation-duration:15s}.dust i:nth-child(2){left:32%;top:70%;animation-duration:21s}
.dust i:nth-child(3){left:48%;top:36%;animation-duration:18s}.dust i:nth-child(4){left:64%;top:78%;animation-duration:13s}
.dust i:nth-child(5){left:78%;top:20%;animation-duration:23s}.dust i:nth-child(6){left:88%;top:54%;animation-duration:16s}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(60px,-120px)}}
#petals{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.petal{position:absolute;top:-8vh;width:12px;height:12px;border-radius:80% 0 80% 0;opacity:0;
  background:radial-gradient(circle at 30% 30%,var(--amber2),var(--amber) 72%);box-shadow:0 0 10px color-mix(in srgb,var(--amber) 60%,transparent);will-change:transform;animation:fall linear infinite}
@keyframes fall{0%{transform:translateY(-10vh) rotate(0);opacity:0}8%{opacity:.6}90%{opacity:.35}100%{transform:translateY(112vh) translateX(70px) rotate(440deg);opacity:0}}
.rev{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.2,1)}.rev.in{opacity:1;transform:none}
/* ============ TACTILE / HUD BUTTONS ============ */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 13px;border-radius:9px;
  font-size:11.5px;font-weight:600;letter-spacing:.04em;user-select:none;overflow:hidden;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 86%,#fff 8%),var(--panel2));
  border:1px solid var(--line);box-shadow:0 1px 0 rgba(255,255,255,.07) inset,0 -2px 6px rgba(0,0,0,.32) inset,0 3px 8px rgba(0,0,0,.42);
  transition:transform .12s,box-shadow .12s,border-color .12s}
.btn::before{content:'';position:absolute;top:0;left:0;right:0;height:40%;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent);pointer-events:none}
.btn::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.5),transparent 60%);transition:opacity .4s}
.btn:hover{border-color:var(--amber);transform:translateY(-1px);box-shadow:var(--glow),0 1px 0 rgba(255,255,255,.09) inset,0 -2px 6px rgba(0,0,0,.32) inset}
.btn:active{transform:translateY(1px);box-shadow:0 3px 8px rgba(0,0,0,.5) inset}.btn:active::after{opacity:1;transition:0s}
.btn.on{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 72%,#fff 22%),var(--amber));box-shadow:0 1px 0 rgba(255,255,255,.45) inset,0 -2px 6px rgba(0,0,0,.3) inset,0 0 14px color-mix(in srgb,var(--amber) 45%,transparent)}
.btn.primary{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 60%,#fff 40%),var(--amber) 50%,var(--amber-dk));text-shadow:0 1px 2px rgba(0,0,0,.4);box-shadow:0 1px 0 rgba(255,255,255,.55) inset,0 -3px 8px rgba(0,0,0,.34) inset,0 6px 20px color-mix(in srgb,var(--amber) 55%,transparent)}
.btn.primary:hover{box-shadow:0 1px 0 rgba(255,255,255,.65) inset,0 -3px 8px rgba(0,0,0,.34) inset,0 10px 30px color-mix(in srgb,var(--amber) 70%,transparent)}
.btn.danger{color:#ff8c79;border-color:color-mix(in srgb,var(--red) 50%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--red) 22%,var(--panel2)),var(--panel2))}
.btn.danger:hover{box-shadow:0 0 0 1px var(--red),0 0 16px color-mix(in srgb,var(--red) 40%,transparent)}
.btn.tiny{padding:6px 9px;font-size:10.5px;border-radius:7px}.btn.wide{width:100%}
.btn.hero{grid-column:1/-1;color:var(--amber2);border-color:color-mix(in srgb,var(--amber) 55%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 30%,var(--panel2)),var(--panel2))}
.tbtn{position:relative;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;font-size:15px;overflow:hidden;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 92%,#fff 6%),var(--panel2));border:1px solid var(--line);
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 -2px 5px rgba(0,0,0,.3) inset,0 2px 6px rgba(0,0,0,.4);transition:all .12s}
.tbtn::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.45),transparent 60%);transition:opacity .4s}
.tbtn:hover{color:var(--text);border-color:var(--amber);box-shadow:var(--glow)}.tbtn:active{transform:translateY(1px);box-shadow:0 2px 6px rgba(0,0,0,.5) inset}.tbtn:active::after{opacity:1;transition:0s}
.tbtn.on{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 70%,#fff 22%),var(--amber));box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 0 12px color-mix(in srgb,var(--amber) 45%,transparent)}
.tbtn:disabled{opacity:.3;pointer-events:none}
.chip{position:relative;padding:7px 10px;border-radius:8px;border:1px solid var(--line);font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:700;letter-spacing:.04em;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 84%,#fff 5%),var(--panel2));box-shadow:0 2px 0 var(--line2),0 3px 6px rgba(0,0,0,.34);transition:transform .1s,box-shadow .1s}
.chip::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.4),transparent 60%);transition:opacity .4s}
.chip:hover{transform:translateY(-1px);border-color:var(--amber)}.chip:active{transform:translateY(2px);box-shadow:0 0 0 var(--line2),0 1px 3px rgba(0,0,0,.4) inset}.chip:active::after{opacity:1;transition:0s}
.chip.on{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,var(--amber),var(--amber-dk));box-shadow:0 2px 0 color-mix(in srgb,var(--amber-dk) 70%,#000),0 0 12px color-mix(in srgb,var(--amber) 45%,transparent)}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chips.mini{gap:4px}.chips.mini .chip{padding:5px 7px;font-size:9.5px}
.inp{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}
.inp:focus{border-color:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 22%,transparent)}
select.inp{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:26px}
input[type=range]{-webkit-appearance:none;width:100%;height:5px;border-radius:3px;background:linear-gradient(90deg,var(--amber),var(--line));outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,var(--amber) 70%);border:2px solid var(--amber-dk);cursor:pointer;box-shadow:0 0 8px color-mix(in srgb,var(--amber) 60%,transparent)}
input[type=color]{width:34px;height:28px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);padding:2px;cursor:pointer}
label.fld{display:block;font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 5px}
.qbtn{width:38px;height:34px;border-radius:8px;font-size:14px;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 88%,#fff 6%),var(--panel2));border:1px solid var(--line);box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 -2px 5px rgba(0,0,0,.3) inset,0 2px 5px rgba(0,0,0,.4);transition:all .12s}
.qbtn:hover{border-color:var(--amber);box-shadow:var(--glow)}.qbtn:active{transform:translateY(1px);box-shadow:0 2px 5px rgba(0,0,0,.5) inset}
.qbtn.on{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,var(--amber),var(--amber-dk));box-shadow:0 0 12px color-mix(in srgb,var(--amber) 45%,transparent)}
.quickrow{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.val2{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:var(--cyan);padding:3px 8px;border:1px solid color-mix(in srgb,var(--cyan) 40%,transparent);border-radius:6px;background:color-mix(in srgb,var(--cyan) 8%,transparent)}
/* ============ LANDING ============ */
#landing{position:relative;z-index:2;height:100%;overflow-y:auto;display:flex;flex-direction:column}
.l-head{display:flex;align-items:center;gap:16px;padding:14px 26px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:12px}
.bloom-mark{width:40px;height:40px;flex:none;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--amber) 50%,transparent))}
.bloom-mark .petals-g path{fill:var(--amber);transform-origin:24px 24px;animation:pp 5s ease-in-out infinite}
.bloom-mark .petals-g path:nth-child(2){animation-delay:.4s}.bloom-mark .petals-g path:nth-child(3){animation-delay:.8s}.bloom-mark .petals-g path:nth-child(4){animation-delay:1.2s}.bloom-mark .petals-g path:nth-child(5){animation-delay:1.6s}.bloom-mark .petals-g path:nth-child(6){animation-delay:2s}
.bloom-mark .stamen{fill:var(--amber2)}@keyframes pp{0%,100%{opacity:.8}50%{opacity:1}}
.brand h1{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:28px;line-height:.92}
.brand small{display:block;font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.28em;color:var(--amber);margin-top:4px}
.l-head .spacer{flex:1}
.ticker{border-bottom:1px solid var(--line);background:var(--panel);overflow:hidden;white-space:nowrap}
.ticker div{display:inline-block;padding:7px 0;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;color:var(--muted);animation:tick 34s linear infinite}.ticker b{color:var(--amber)}
@keyframes tick{to{transform:translateX(-50%)}}
.l-main{flex:1;display:grid;grid-template-columns:400px 1fr;gap:24px;padding:26px;max-width:1280px;margin:0 auto;width:100%}
.l-right{display:flex;flex-direction:column;gap:18px;min-width:0}
.ticket{position:relative;background:var(--paper);color:var(--paper-ink);border-radius:6px;padding:22px 22px 16px;box-shadow:var(--shadow);font-family:'JetBrains Mono',monospace;align-self:start;overflow:hidden;
  background-image:repeating-linear-gradient(0deg,transparent 0 26px,rgba(90,19,32,.05) 26px 27px);transition:transform .35s,box-shadow .35s}
.ticket:hover{transform:translateY(-4px) rotate(-.4deg);box-shadow:0 26px 60px rgba(90,19,32,.34)}
.ticket::before,.ticket::after{content:'';position:absolute;width:22px;height:22px;border-radius:50%;background:var(--bg);top:50%;transform:translateY(-50%);z-index:2}.ticket::before{left:-11px}.ticket::after{right:-11px}
.holo{position:absolute;inset:0;pointer-events:none;opacity:.5;background:linear-gradient(115deg,transparent 30%,rgba(255,45,79,.18) 45%,rgba(47,224,166,.16) 55%,transparent 70%);background-size:250% 100%;animation:holo 6s linear infinite;mix-blend-mode:multiply}
@keyframes holo{to{background-position:-250% 0}}
.ticket .t-top{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid var(--paper-ink);padding-bottom:8px;margin-bottom:14px;position:relative;z-index:1}
.ticket .t-top h2{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:22px}.ticket .t-top span{font-size:9px;letter-spacing:.1em}
.ticket .fld{margin-bottom:13px;position:relative;z-index:1}.ticket label{display:block;font-size:9px;font-weight:700;letter-spacing:.2em;color:#9a5560;margin-bottom:6px}
.ticket .chip{background:#efe2d2;border-color:#dcc6b6;color:var(--paper-ink);box-shadow:0 2px 0 #d8bfae}.ticket .chip.on{background:var(--paper-ink);color:var(--paper);border-color:var(--paper-ink);box-shadow:0 2px 0 #3a0c14}
.ticket .row{display:flex;gap:8px;align-items:center}.ticket .inp{background:#fffdf8;border-color:#dcc6b6;color:var(--paper-ink);font-family:'JetBrains Mono',monospace}
.ticket .swap{width:34px;height:34px;flex:none;border:1px solid #dcc6b6;border-radius:8px;font-size:15px;background:#fffdf8;transition:.2s}.ticket .swap:hover{background:var(--paper-ink);color:var(--paper);transform:rotate(180deg)}
.readout{background:#2a0c12;color:var(--amber2);border-radius:7px;padding:12px 14px;margin:16px 0;position:relative;overflow:hidden;z-index:1}
.readout .big{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:25px;color:#ffd0d8}.readout .sub{font-size:10px;letter-spacing:.1em;color:#c98089;margin-top:4px}
.readout::after{content:'PRINT-READY';position:absolute;right:-26px;top:12px;transform:rotate(35deg);font-size:8px;letter-spacing:.3em;color:#5a1320}
.ticket .btn.start{width:100%;color:var(--paper);border:none;font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:17px;padding:14px;border-radius:8px;background:var(--paper-ink);box-shadow:0 5px 0 #3a0c14,0 8px 18px rgba(90,19,32,.3);z-index:1}.ticket .btn.start::before,.ticket .btn.start::after{display:none}
.ticket .btn.start:hover{transform:translateY(-2px);box-shadow:0 7px 0 #3a0c14,0 12px 26px rgba(90,19,32,.4)}.ticket .btn.start:active{transform:translateY(3px);box-shadow:0 2px 0 #3a0c14}
.ticket .btn.ghost{width:100%;margin-top:8px;background:transparent;border:1px dashed #c2a394;color:#7d5258;font-size:11px;box-shadow:none;z-index:1}.ticket .btn.ghost::before,.ticket .btn.ghost::after{display:none}
.barcode{margin-top:16px;height:32px;position:relative;z-index:1;background:repeating-linear-gradient(90deg,var(--paper-ink) 0 2px,transparent 2px 4px,var(--paper-ink) 4px 7px,transparent 7px 9px,var(--paper-ink) 9px 10px,transparent 10px 14px)}
.barcode+p{font-size:8.5px;letter-spacing:.3em;text-align:center;color:#9a5560;margin-top:4px;position:relative;z-index:1}
.lightbox{background:linear-gradient(180deg,#241417,#160d0f);border-radius:16px;padding:16px 40px;box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.08);position:relative;display:flex;min-height:340px;flex:1}
.lightbox::before,.lightbox::after{content:'';position:absolute;top:14px;bottom:14px;width:16px;background-image:radial-gradient(circle 4px at 8px 12px,#0a0506 4px,transparent 5px);background-size:16px 26px;background-repeat:repeat-y}.lightbox::before{left:12px}.lightbox::after{right:12px}
.dropzone{flex:1;border:2px dashed #5a3a3d;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:30px;cursor:pointer;background:radial-gradient(600px 300px at 50% 40%,color-mix(in srgb,var(--amber) 10%,transparent),transparent 70%);transition:.25s}
.dropzone:hover{border-color:#7d4a4e}.dropzone.over{border-color:var(--amber);background:radial-gradient(600px 340px at 50% 40%,color-mix(in srgb,var(--amber) 24%,transparent),transparent 72%);transform:scale(1.01)}
.dz-icon{width:68px;height:68px;color:var(--amber);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--amber) 50%,transparent));animation:bob 4s ease-in-out infinite}@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.dropzone h2{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:clamp(24px,3vw,38px);line-height:1.05}.dropzone h2 em{font-style:italic;color:var(--amber)}
.dropzone p{color:var(--muted);font-size:12.5px;max-width:420px}.fmt{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.fmt span{font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.12em;padding:4px 9px;border:1px solid var(--line2);border-radius:6px;color:var(--muted)}
.privline{display:inline-flex;align-items:center;gap:8px;font-size:11px;color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent);border:1px solid color-mix(in srgb,var(--green) 38%,transparent);padding:7px 13px;border-radius:20px}
.telemetry{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.telemetry::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scan 3s linear infinite}@keyframes scan{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.tel-h{font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.24em;color:var(--cyan);display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dotg{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px var(--cyan);animation:pulse 1.8s infinite}
.tel-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.tel{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.tel b{display:block;font-family:'JetBrains Mono',monospace;font-size:15px;color:var(--amber2)}.tel span{font-size:8.5px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.seal{position:relative;width:92px;height:92px;flex:none}.seal svg{width:100%;height:100%;animation:spin 26s linear infinite}.seal .core{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--amber)}@keyframes spin{to{transform:rotate(360deg)}}
.l-steps{max-width:1280px;margin:0 auto 24px;width:100%;padding:0 26px}
.filmstrip{background:#0a0506;border:1px solid var(--line);border-radius:14px;padding:24px 16px;position:relative;overflow:hidden;display:grid;grid-template-columns:repeat(4,1fr)}
.filmstrip::before,.filmstrip::after{content:'';position:absolute;left:0;right:0;height:10px;background-image:repeating-linear-gradient(90deg,transparent 0 8px,#33201f 8px 20px,transparent 20px 28px);background-size:28px 10px}.filmstrip::before{top:6px}.filmstrip::after{bottom:6px}
.frame{position:relative;padding:8px 18px;border-right:1px dashed #33201f;transition:.25s}.frame:last-child{border-right:none}.frame:hover{transform:translateY(-4px);background:color-mix(in srgb,var(--amber) 7%,transparent)}
.frame::before,.frame::after{content:'';position:absolute;width:9px;height:9px;border:1.5px solid var(--amber);opacity:.5}.frame::before{top:6px;left:6px;border-right:0;border-bottom:0}.frame::after{bottom:6px;right:6px;border-left:0;border-top:0}
.frame .no{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:32px;color:var(--amber)}.frame h3{font-size:13px;font-weight:700;margin:4px 0 5px;letter-spacing:.04em}.frame p{font-size:11px;color:var(--muted);line-height:1.5}
.l-foot{border-top:1px solid var(--line);padding:18px 26px;display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:wrap}.l-foot .big-priv{font-size:13px;font-weight:600}.l-foot .big-priv b{color:var(--green)}.l-foot small{color:var(--muted);font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.1em}
/* ============ EDITOR ============ */
#editor{display:none;position:relative;z-index:2;height:100%;flex-direction:column}
body.in-editor #landing{display:none}body.in-editor #editor{display:flex}
#topbar{position:relative;z-index:30;display:flex;align-items:center;gap:6px;padding:7px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
#topbar::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--amber),var(--cyan),transparent);opacity:.6}
#topbar .sep{width:1px;height:22px;background:var(--line);margin:0 4px}
#projName{background:transparent;border:1px solid transparent;border-radius:7px;padding:5px 9px;font-size:12.5px;font-weight:600;width:150px;outline:none;transition:.15s}
#projName:hover{border-color:var(--line)}#projName:focus{border-color:var(--amber);background:var(--panel2)}
#zoomPct{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--muted);width:46px;text-align:center;cursor:pointer}#zoomPct:hover{color:var(--amber)}
#main{flex:1;display:flex;min-height:0;position:relative}
aside{width:276px;flex:none;background:var(--panel);overflow-y:auto;transition:margin .28s cubic-bezier(.2,.8,.2,1)}
#leftPanel{border-right:1px solid var(--line)}#rightPanel{border-left:1px solid var(--line)}
.sec{border-bottom:1px solid var(--line);padding:13px 14px 15px}
.sec-h{display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;letter-spacing:.22em;color:var(--muted);margin-bottom:11px;position:relative;padding-bottom:7px}
.sec-h::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,var(--amber),transparent 70%)}
.sec-h::before{content:'';width:8px;height:8px;background:var(--amber);flex:none;clip-path:polygon(50% 0,100% 38%,82% 100%,18% 100%,0 38%);box-shadow:0 0 8px var(--amber)}
.sec-h .tag{margin-left:auto;letter-spacing:.08em;color:var(--cyan);font-size:8.5px}
.toolgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.toolgrid .btn{font-size:10.5px;padding:8px 5px}
.aligntools{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;margin-top:8px}.aligntools .tbtn{width:100%;font-size:12px}
.layrow{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.lay{padding:7px 2px;border-radius:7px;border:1px solid var(--line);background:var(--panel2);font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.02em;transition:.12s}
.lay:hover{border-color:var(--amber);color:var(--amber2)}.lay.on{color:#fff;border-color:var(--amber-dk);background:linear-gradient(180deg,var(--amber),var(--amber-dk));box-shadow:0 0 10px color-mix(in srgb,var(--amber) 40%,transparent)}
#thumbs{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.thumb{position:relative;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--panel2);cursor:grab;transition:.18s;animation:pop .3s ease both}
.thumb.dragover{border-color:var(--amber);box-shadow:0 0 0 2px var(--amber) inset}@keyframes pop{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
.thumb:hover{transform:translateY(-3px);border-color:var(--amber);box-shadow:0 8px 20px rgba(0,0,0,.5)}
.thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block;pointer-events:none}
.thumb .meta{padding:5px 7px;font-size:8.5px;font-family:'JetBrains Mono',monospace;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb .ppi{position:absolute;top:4px;left:4px;font-family:'JetBrains Mono',monospace;font-size:8px;font-weight:700;padding:2px 5px;border-radius:5px;background:rgba(8,4,5,.85)}
.thumb .ppi.ok{color:var(--green)}.thumb .ppi.mid{color:var(--amber2)}.thumb .ppi.low{color:var(--red)}
.thumb .acts{position:absolute;top:4px;right:4px;display:flex;gap:3px;opacity:0;transition:.15s}.thumb:hover .acts{opacity:1}
.thumb .acts button{width:22px;height:22px;border-radius:6px;background:rgba(8,4,5,.88);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center}.thumb .acts button:hover{background:var(--amber)}
#viewport{flex:1;position:relative;min-width:0;background:radial-gradient(1000px 600px at 50% 30%,color-mix(in srgb,var(--panel) 60%,var(--bg)),var(--bg))}
#viewport::before{content:'';position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(color-mix(in srgb,var(--amber) 5%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--amber) 4%,transparent) 1px,transparent 1px);background-size:40px 40px;opacity:.5}
.hud-frame{position:absolute;inset:10px;z-index:5;pointer-events:none}
.hud-frame i{position:absolute;width:18px;height:18px;border:2px solid var(--cyan);opacity:.7;filter:drop-shadow(0 0 4px var(--cyan))}
.hud-frame i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0}.hud-frame i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0}
.hud-frame i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0}.hud-frame i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0}
#stage{position:absolute;inset:0;touch-action:none;cursor:default}
#stage.panning{cursor:grab}#stage.grabbing{cursor:grabbing}#stage.dropper{cursor:crosshair}
#rulerX{position:absolute;top:0;left:24px;right:0;height:24px;z-index:3;cursor:col-resize}
#rulerY{position:absolute;top:24px;left:0;bottom:0;width:24px;z-index:3;cursor:row-resize}
#corner{position:absolute;top:0;left:0;width:24px;height:24px;background:var(--panel);border-right:1px solid var(--line);border-bottom:1px solid var(--line);z-index:4}
body.no-rulers #rulerX,body.no-rulers #rulerY,body.no-rulers #corner{display:none}
#loupe{position:absolute;width:96px;height:96px;border-radius:50%;border:2px solid var(--amber);box-shadow:0 0 16px color-mix(in srgb,var(--amber) 50%,transparent),0 6px 18px rgba(0,0,0,.5);background-size:cover;background-position:center;pointer-events:none;z-index:7;display:none;transform:translate(-50%,-130%)}#loupe.on{display:block}
#cropbar{position:absolute;top:34px;left:50%;transform:translateX(-50%);z-index:6;display:none;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--amber);border-radius:11px;padding:8px 12px;box-shadow:var(--glow)}#cropbar.open{display:flex}
#cropbar .hint{font-size:10.5px;color:var(--muted);font-family:'JetBrains Mono',monospace}
#emptyHint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none;color:var(--muted);z-index:2}
#emptyHint .disp{font-size:30px;color:var(--line2);font-family:'Fraunces','Mukta',serif}
#panelScrim{position:fixed;inset:0;z-index:15;background:rgba(6,3,4,.6);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .25s}
#panelScrim.on{opacity:1;pointer-events:auto}
#statusbar{position:relative;z-index:30;display:flex;align-items:center;gap:13px;padding:5px 14px;background:var(--panel);border-top:1px solid var(--line);font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--muted);overflow-x:auto;white-space:nowrap}
#statusbar b{color:var(--amber2);font-weight:700}#statusbar .dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);flex:none;animation:pulse 2.4s infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.prow{display:flex;align-items:center;gap:8px;margin-bottom:9px}.prow label{width:58px;flex:none;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.prow .inp{font-family:'JetBrains Mono',monospace;font-size:11px;padding:6px 8px}.prow .val{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--amber2);width:46px;text-align:right;flex:none}
.prow2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.swatches{display:flex;gap:6px;flex-wrap:wrap}.sw{width:24px;height:24px;border-radius:7px;border:2px solid var(--line);cursor:pointer;transition:.12s;box-shadow:0 2px 5px rgba(0,0,0,.35)}.sw:hover{transform:scale(1.16);border-color:var(--amber);box-shadow:var(--glow)}
/* context menu */
#ctxMenu{position:fixed;z-index:80;min-width:172px;background:var(--panel);border:1px solid var(--amber);border-radius:10px;padding:5px;box-shadow:var(--glow),var(--shadow);display:none}
#ctxMenu.on{display:block;animation:mIn .14s ease}
#ctxMenu button{display:flex;width:100%;align-items:center;gap:9px;padding:8px 10px;border-radius:7px;font-size:11.5px;font-weight:600;text-align:left;color:var(--text);transition:.1s}
#ctxMenu button:hover{background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--amber2)}
#ctxMenu button.danger{color:var(--red)}#ctxMenu .cdiv{height:1px;background:var(--line);margin:4px 2px}
/* modals / toasts */
.modal{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;background:rgba(6,3,4,.72);backdrop-filter:blur(4px)}.modal.open{display:flex}
.mcard{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(560px,92vw);max-height:86vh;overflow-y:auto;box-shadow:var(--glow),var(--shadow);animation:mIn .22s ease}@keyframes mIn{from{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:none}}
.mhead{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}.mhead h3{font-family:'Fraunces','Mukta',serif;font-weight:900;font-size:19px}
.mbody{padding:18px 20px}.mfoot{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.seg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}.seg button{flex:1;padding:9px 6px;font-size:11px;font-weight:700;color:var(--muted);transition:.15s;border-right:1px solid var(--line)}.seg button:last-child{border-right:none}.seg button.on{background:linear-gradient(180deg,var(--amber),var(--amber-dk));color:#fff}
.exfo{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-family:'JetBrains Mono',monospace;font-size:11px;line-height:1.9;color:var(--muted)}.exfo b{color:var(--amber2)}.exfo .warn{color:var(--red)}
.prog{height:8px;border-radius:4px;background:var(--panel2);overflow:hidden;margin-top:12px;display:none}.prog.on{display:block}
.prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--amber),var(--cyan));transition:width .2s;border-radius:4px;position:relative;overflow:hidden}.prog i::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);animation:shimmer 1.1s linear infinite}@keyframes shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.projrow{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px}.projrow:hover{border-color:var(--line2)}.projrow .nm{font-weight:700;font-size:12.5px}.projrow .dt{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--muted)}.projrow .sp{flex:1}
.kbd{display:inline-block;min-width:24px;text-align:center;padding:3px 7px;border-radius:6px;background:var(--panel2);border:1px solid var(--line2);border-bottom-width:3px;font-family:'JetBrains Mono',monospace;font-size:10.5px}
.krow{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);font-size:12px}
#toasts{position:fixed;right:18px;bottom:46px;z-index:99;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.toast{background:var(--panel);border:1px solid var(--line2);border-left:4px solid var(--amber);padding:10px 16px;border-radius:10px;font-size:12px;font-weight:600;box-shadow:var(--glow),var(--shadow);animation:tIn .28s cubic-bezier(.2,.9,.3,1.2);max-width:340px}
.toast.ok{border-left-color:var(--green)}.toast.err{border-left-color:var(--red)}@keyframes tIn{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:none}}.toast.out{opacity:0;transform:translateX(60px);transition:.3s}
@media(max-width:1060px){.l-main{grid-template-columns:1fr}.tel-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){
  aside{position:absolute;top:0;bottom:0;z-index:20;box-shadow:var(--shadow)}
  #leftPanel{left:0;margin-left:-288px}#leftPanel.open{margin-left:0}
  #rightPanel{right:0;margin-right:-288px}#rightPanel.open{margin-right:0}
  .filmstrip{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){#topbar .tbtn:not(.mob):not(#btnTheme){display:none}#projName{width:96px}.filmstrip{grid-template-columns:1fr}.frame{border-right:none;border-bottom:1px dashed #33201f}.tel-grid{grid-template-columns:repeat(2,1fr)}}
@media(prefers-reduced-motion:reduce){.petal,.dust,.holo,.bloom::before{animation:none}}
