:root{--bg: #12151a;--fg: #e8e6e1;--muted: #9a968c;--panel: #1c2129;--accent: #c4a35a;--mono: "IBM Plex Mono", "SF Mono", ui-monospace, monospace;--sans: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;background:radial-gradient(ellipse 80% 50% at 50% -10%,#2a3340 0%,transparent 55%),var(--bg);color:var(--fg);font-family:var(--sans)}main{height:100%;max-width:1200px;margin:0 auto;padding:1rem 1.25rem;display:flex;flex-direction:column;min-height:0}header{flex:0 0 auto}header h1{margin:0 0 .2rem;font-size:1.35rem;font-weight:600;letter-spacing:-.02em}.lede{margin:0 0 .75rem;color:var(--muted);font-size:.9rem;line-height:1.4}.stage{position:relative;isolation:isolate;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;background:#0a0c0f;border:1px solid #2e3642;overflow:hidden}.backdrop,.veil{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;opacity:0}.backdrop{filter:blur(42px) saturate(1.12);transform:scale(1.08)}.veil{background:#06080c6b;z-index:1}#canvas{position:relative;z-index:2;display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.fs-btn{position:absolute;z-index:3;top:.55rem;right:.55rem;width:2rem;height:2rem;padding:0;display:grid;place-items:center;color:#e8e6e1e0;background:#0a0c1059;border:1px solid rgba(255,255,255,.16);cursor:pointer;opacity:0;transition:opacity .45s ease,background .2s ease}.stage:hover .fs-btn,.stage:fullscreen .fs-btn,.stage:-webkit-full-screen .fs-btn{opacity:1}.fs-btn svg{width:.9rem;height:.9rem}.fs-btn:hover{background:#0a0c109e}.stage:fullscreen,.stage:-webkit-full-screen{width:100%;height:100%;border:none;background:#050608;display:flex;align-items:center;justify-content:center}.stage:fullscreen .backdrop,.stage:fullscreen .veil,.stage:-webkit-full-screen .backdrop,.stage:-webkit-full-screen .veil{opacity:1}.stage:fullscreen #canvas,.stage:-webkit-full-screen #canvas{width:auto;height:auto;max-width:92vw;max-height:88vh;box-shadow:0 28px 90px #00000061}.hud,.mark,.morph-rail,.fs-btn{transition:opacity .6s ease}.stage.chrome-hidden .hud,.stage.chrome-hidden .mark,.stage.chrome-hidden .morph-rail,.stage.chrome-hidden .fs-btn{opacity:0}.stage:fullscreen.chrome-hidden,.stage:-webkit-full-screen.chrome-hidden{cursor:none}.mark{pointer-events:none;position:absolute;z-index:3;top:.65rem;left:.7rem;max-width:calc(100% - 3.4rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:clamp(.62rem,1.7vw,.72rem);letter-spacing:.02em;color:#e8e6e1e0;text-shadow:0 1px 2px rgba(0,0,0,.75),0 0 12px rgba(0,0,0,.45)}.hud{pointer-events:none;position:absolute;inset:auto 0 .55rem;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;padding:0 .7rem .15rem;font-family:var(--mono);font-size:clamp(.62rem,1.7vw,.72rem);letter-spacing:.02em;color:#e8e6e1e0;text-shadow:0 1px 2px rgba(0,0,0,.75),0 0 12px rgba(0,0,0,.45)}.hud-block{font:inherit;color:inherit}.hud-hash{font:inherit;color:#e8e6e1b8;max-width:58%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.morph-rail{position:absolute;left:0;right:0;bottom:0;height:2px;background:#ffffff14}.morph-fill{height:100%;width:0%;background:var(--accent);opacity:.85;transform-origin:left center;transition:opacity .4s ease}.stage[data-phase=idle] .morph-fill{opacity:.35}.stage[data-phase=morphing] .morph-fill{opacity:.95}.error{flex:0 0 auto;margin:.5rem 0 0;padding:.55rem .7rem;font-size:.85rem;color:#f0c7c0;background:#5a1c1c73;border:1px solid rgba(180,70,70,.45)}.error[hidden]{display:none}.controls{flex:0 0 auto;margin-top:.75rem;padding:.75rem .9rem;background:var(--panel);border:1px solid #2e3642;display:grid;gap:.75rem}.row{display:grid;gap:1rem}@media(min-width:560px){.row{grid-template-columns:1fr 1fr;align-items:end}}label{display:grid;gap:.4rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}select,input[type=file]{font:inherit;font-size:1rem;text-transform:none;letter-spacing:0;color:var(--fg);background:var(--bg);border:1px solid #3a4452;padding:.55rem .7rem;max-width:100%}input[type=file]{font-size:.85rem;cursor:pointer}input[type=file]::file-selector-button{font:inherit;font-size:.85rem;margin-right:.75rem;padding:.25rem .55rem;color:var(--fg);background:#2a3340;border:1px solid #3a4452;cursor:pointer}
