:root{--bg:#0b0c10;--panel:#14161d;--panel2:#1a1d27;--line:#262a35;--text:#e8eaf0;--muted:#9aa1b2;--accent:#7cc4ff;--ok:#6fdc8c;--warn:#ffcb6b;--bad:#ff7b7b}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent)}h1,h2,h3,p{margin:0}[hidden]{display:none!important}button,input,select,textarea{font:inherit;color:inherit}.wrap{max-width:1100px;margin:0 auto;padding:0 16px}.nav{display:flex;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.nav .brand{font-weight:700;letter-spacing:-.01em;color:var(--text);margin-right:auto}.nav .brand,.nav a{text-decoration:none}.nav a{color:var(--muted);font-size:14px}.nav a:hover{color:var(--text)}.hero{padding:56px 0 24px}.hero h1{font-size:clamp(30px,6vw,52px);letter-spacing:-.03em;line-height:1.05}.hero p{color:var(--muted);margin-top:14px;max-width:60ch;font-size:18px}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px}.form{display:grid;grid-gap:14px;gap:14px;margin-top:24px;max-width:760px}.form label{display:grid;grid-gap:6px;gap:6px;font-size:14px;color:var(--muted)}.form input[type=password],.form input[type=text],.form select,.form textarea{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}.form textarea{min-height:110px;resize:vertical}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1 1 160px}.seg,.seg label{display:flex;gap:8px}.seg label{flex:1 1;align-items:flex-start;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--text);cursor:pointer}.seg small{display:block}.count,.seg small{color:var(--muted)}.count{text-align:right;font-size:12px}.btn{background:var(--accent);color:#04121f;border:0;border-radius:10px;padding:11px 18px;font-weight:600;cursor:pointer}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}.btn.good{background:var(--ok)}.btn.bad{background:var(--bad)}.btn.small{padding:6px 12px;font-size:14px}.note{color:var(--muted)}.est,.note{font-size:14px}.est{background:#7cc4ff14;border:1px solid #7cc4ff55;border-radius:10px;padding:10px 12px}.err{color:var(--bad);font-size:14px}.steps{display:grid;grid-gap:8px;gap:8px;margin:20px 0;padding:0;list-style:none}.steps li{display:flex;gap:10px;align-items:center;color:var(--muted)}.steps li .dot{width:12px;height:12px;border-radius:50%;background:var(--line);flex:none}.steps li.done{color:var(--text)}.steps li.done .dot{background:var(--ok)}.steps li.now{color:var(--text);font-weight:600}.steps li.now .dot{background:var(--accent);box-shadow:0 0 0 4px #7cc4ff33}.bar{height:8px;background:var(--panel2);border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent)}.bar>i.w0{width:0}.bar>i.w10{width:10%}.bar>i.w20{width:20%}.bar>i.w30{width:30%}.bar>i.w40{width:40%}.bar>i.w50{width:50%}.bar>i.w60{width:60%}.bar>i.w70{width:70%}.bar>i.w80{width:80%}.bar>i.w90{width:90%}.bar>i.w100{width:100%}.bar.warn>i{background:var(--warn)}.bar.bad>i{background:var(--bad)}.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:12px;border:1px solid var(--line);color:var(--muted)}.pill.pending_approval{color:var(--warn);border-color:#ffcb6b66}.pill.generating,.pill.processing,.pill.queued{color:var(--accent);border-color:#7cc4ff66}.pill.done{color:var(--ok);border-color:#6fdc8c66}.pill.failed,.pill.rejected{color:var(--bad);border-color:#ff7b7b66}.admin h2{margin:28px 0 10px;font-size:18px}.job{display:grid;grid-gap:8px;gap:8px;margin-bottom:10px}.job .meta{color:var(--muted);font-size:13px;gap:12px}.job .acts,.job .meta{display:flex;flex-wrap:wrap}.job .acts{gap:8px;align-items:center}.job .p{white-space:pre-wrap;word-break:break-word}.grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));padding:16px 0 40px}.scene{display:block;background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;color:inherit;text-decoration:none;transition:transform .15s,border-color .15s}.scene:focus-visible,.scene:hover{transform:translateY(-2px);border-color:var(--accent);outline:none}.media{position:relative;aspect-ratio:16/9;background:#000}.media img,.media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.scene .body{padding:12px 14px 14px}.scene h2{font-size:16px;font-weight:600}.label{color:var(--accent);margin-top:4px}.date,.label{font-size:12px}.date{margin-top:2px}.date,.empty{color:var(--muted)}.empty{text-align:center;padding:60px 16px}body.viewer-page{overflow:hidden}.stage{position:fixed;inset:0}.stage canvas{width:100%;height:100%;display:block;cursor:-webkit-grab;cursor:grab;touch-action:none}.vtop{position:fixed;top:0;left:0;right:0;padding:max(12px,env(safe-area-inset-top)) 16px 24px;background:linear-gradient(#000a,#0000);pointer-events:none;display:flex;gap:16px;align-items:flex-start}.vtop>*{pointer-events:auto}.back{color:var(--text);text-decoration:none;background:#0008;border:1px solid var(--line);padding:6px 12px;border-radius:999px;font-size:14px;white-space:nowrap}.vinfo{max-width:min(640px,70vw);text-shadow:0 1px 6px #000}.vinfo h1{font-size:20px}.vinfo .label{margin-top:2px}.vinfo .prompt{color:#dfe3ee;font-size:13px;margin-top:6px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.vinfo .prompt:hover{-webkit-line-clamp:unset}.hint{color:var(--muted);font-size:12px;margin-top:6px}.tap{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#000b;color:#fff;border:1px solid #fff6;border-radius:999px;font-size:20px;padding:16px 28px;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.controls{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;gap:10px;padding:10px 14px max(12px,env(safe-area-inset-bottom));background:linear-gradient(#0000,#000c)}.controls button{background:#fff1;color:var(--text);border:1px solid #fff3;border-radius:10px;min-width:40px;height:40px;font-size:16px;cursor:pointer}.controls button.on{background:var(--accent);color:#001}.controls input[type=range]{flex:1 1;min-width:60px;accent-color:var(--accent)}.time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px;white-space:nowrap}.vrslot button{position:static!important;width:auto!important;height:40px;padding:0 12px;border-radius:10px;background:#fff1;color:var(--text);border:1px solid #fff3;font:13px system-ui;cursor:pointer}.fallback{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;background:var(--bg)}.fallback p{color:var(--muted);max-width:60ch;text-align:center}.fallback video{max-width:min(100%,900px);max-height:70vh;border-radius:12px}@media (max-width:600px){.vinfo{max-width:60vw}.time{display:none}.seg{flex-direction:column}}.exp{font-style:normal;color:#e0a030;font-size:12px}.comfort{margin:6px 0 0;padding:6px 10px;border-left:3px solid #e0a030;background:rgba(224,160,48,.12);font-size:13px;max-width:46ch}.seg{flex-wrap:wrap}.seg label{min-width:210px}