:root{--bg:#101216;--panel:#1e2127;--fg:#ece8df;--muted:#a7a59d;--tape:#e3b341;--line:#3a3f49}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
html,body{height:100%;margin:0;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--fg);font:16px/1.35 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none}
#stage{position:fixed;width:960px;height:440px;transform-origin:0 0;overflow:hidden;background:#000}
#bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#sprites{position:absolute;inset:0;pointer-events:none}
#hit{position:absolute;inset:0;z-index:600}
.sprite{position:absolute;transform:translateX(-50%);max-width:none}
.exit{position:absolute;z-index:500;padding:5px 8px;font-size:14px;font-weight:700;color:#14161a;background:var(--tape);border-radius:6px;text-align:center}
.exit.left::before{content:"← "}
.exit.right::after{content:" →"}
.overlay{position:absolute;z-index:1}
.overlay.roll{z-index:450}
.overlay.written{padding:3px 4px;font:italic 11px/1.2 Georgia,serif;color:#222;white-space:pre-line;text-align:center;display:flex;align-items:center;justify-content:center}
.npc{transform-origin:50% 100%;animation:breathe 3.6s ease-in-out infinite}
@keyframes breathe{50%{scale:1 1.012}}
#fade{position:absolute;inset:0;z-index:610;background:#000;opacity:0;pointer-events:none}
#fade.on{animation:fadein .35s ease-out}
@keyframes fadein{from{opacity:1}to{opacity:0}}
@media (prefers-reduced-motion:reduce){.npc{animation:none}}
.overlay.badge{z-index:400;background:#f4efe2;border-radius:2px;box-shadow:0 1px 2px #0008}
.overlay.note{background:#efe6cf;box-shadow:0 1px 3px #0009;transform:rotate(-2deg)}
.studio #hud button{display:none}
.studio #hud #resetbtn{display:block}
#chapters{position:absolute;inset:10px;z-index:950;overflow:auto;display:flex;flex-direction:column;gap:7px;padding:10px 14px;background:#14161afa;border:1px solid var(--tape);border-radius:10px}
#chapters[hidden]{display:none}
#chapters h2{margin:0 80px 2px 0;font-size:18px;color:var(--tape)}
.ep.now{border-color:var(--tape);color:var(--tape)}
.ep.danger{color:var(--muted);font-size:15px;min-height:44px}
.chip.person{border-color:#7fb4d8}
.overlay.cable{background:#0d0d0f;border-radius:3px;box-shadow:0 1px 0 #fff2}
.overlay.taped{background:repeating-linear-gradient(90deg,#17181b 0 34px,#2a2c31 34px 36px);border-radius:2px}
.overlay.roll{border-radius:50%;background:radial-gradient(circle,#c9a35a 0 24%,#111 26% 100%);box-shadow:0 2px 4px #0009}
.overlay.shadow{border-radius:40% 40% 10% 10%;background:#000b;filter:blur(2px)}
.overlay.static{background:repeating-linear-gradient(0deg,#555 0 2px,#999 2px 3px,#333 3px 5px);opacity:.72;animation:flick .18s steps(2) infinite}
.overlay.slide{background:linear-gradient(#f4efe2,#d9d2c1);opacity:.9}
.overlay.slide::after{content:"";position:absolute;left:12%;right:12%;bottom:16%;height:52%;background:repeating-linear-gradient(90deg,#e3b341 0 26px,transparent 26px 40px)}
@keyframes flick{to{opacity:.35}}
.dot{position:absolute;z-index:550;transform:translate(-50%,-50%);padding:3px 8px;font-size:13px;color:#14161a;background:#ffe9a8;border-radius:10px;white-space:nowrap;box-shadow:0 0 0 3px #e3b34188;animation:pulse .8s infinite alternate}
@keyframes pulse{to{box-shadow:0 0 0 7px #e3b34133}}
#hud{position:absolute;top:0;left:0;right:0;z-index:700;display:flex;align-items:center;gap:6px;padding:5px 7px;background:linear-gradient(#000a,#0000)}
#roomname{margin-right:auto;padding:3px 9px;font-size:15px;font-weight:700;color:var(--tape);background:#14161acc;border-radius:6px}
#hud button{min-height:50px;padding:4px 14px;font:inherit;font-size:17px;color:var(--fg);background:#14161acc;border:1px solid var(--line);border-radius:8px}
#status{position:absolute;left:8px;top:54px;z-index:700;font-size:15px;color:#ffe9a8;text-shadow:0 1px 3px #000}
#bag{position:absolute;right:7px;top:54px;width:380px;max-height:340px;overflow:auto;-webkit-overflow-scrolling:touch;z-index:720;display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:#14161af2;border:1px solid var(--line);border-radius:9px}
#bag[hidden]{display:none}
.chip{min-height:44px;padding:5px 11px;font:inherit;font-size:15px;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:7px}
.chip.idea{border-color:var(--tape)}
.chip.info{color:var(--muted);font-size:13px}
.empty{margin:4px;color:var(--muted)}
#menu{position:absolute;z-index:730;width:200px;display:flex;flex-direction:column;gap:5px;padding:7px;background:#14161af2;border:1px solid var(--tape);border-radius:9px}
#menu[hidden]{display:none}
#menu b{font-size:14px;color:var(--tape)}
#menu button{min-height:44px;font:inherit;font-size:16px;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:7px}
#speech{position:absolute;left:10px;right:10px;bottom:8px;z-index:800;min-height:70px;max-height:340px;overflow:auto;padding:10px 30px 10px 12px;background:#101216f0;border:1px solid var(--tape);border-radius:9px;font-size:19px}
#speech[hidden]{display:none}
#speech p{margin:0}
#speech .said b{color:var(--tape)}
#speech .more{position:absolute;right:10px;bottom:6px;color:var(--tape);font-size:14px}
.face{float:left;width:52px;height:52px;margin-right:10px;border-radius:50%;object-fit:cover}
table{border-collapse:collapse;font-size:18px;font-variant-numeric:tabular-nums}
th,td{border:1px solid var(--line);padding:5px 16px;text-align:left;white-space:nowrap}
th{background:var(--panel)}
#panel{position:absolute;inset:10px;z-index:760;overflow:auto;-webkit-overflow-scrolling:touch;padding:10px 14px;background:#14161af8;border:1px solid var(--tape);border-radius:10px}
#panel[hidden]{display:none}
#panel h2{margin:0 80px 2px 0;font-size:18px;color:var(--tape)}
#panel .note{margin:0 80px 7px 0;font-size:18px;min-height:22px}
#panel th.good{background:var(--tape);color:#14161a}
#panel tr.taped td{background:#17181b;color:#17181b;border-color:#000}
.closep{position:absolute;right:10px;top:8px;min-height:44px;padding:3px 14px;font:inherit;font-size:15px;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:7px}
.pipe{display:flex;align-items:center;gap:8px;margin:10px 0 4px}
.box,.slot,.meter{min-height:64px;padding:8px 10px;border-radius:8px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:16px}
.box{background:var(--panel);border:1px solid var(--line)}
.slot{flex:1;border:2px dashed var(--tape);color:var(--tape)}
.meter{min-width:170px;font-size:24px;font-weight:700;background:#000;color:#ffe9a8;font-variant-numeric:tabular-nums}
.arrow{color:var(--tape);font-size:24px}
.under{margin-left:170px;font-size:14px;color:var(--muted)}
.tray{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.tile{min-height:54px;padding:6px 12px;font:inherit;font-size:16px;color:#14161a;background:var(--tape);border:0;border-radius:7px;box-shadow:0 2px 0 #8a6a1d}
.phone{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.phone.many{display:grid;grid-template-columns:1fr 1fr}
.overlay.thanks{display:flex;align-items:center;justify-content:center;font-size:44px;font-weight:800;letter-spacing:3px;color:#222;background:#f4efe2e6}
.ep{min-height:54px;padding:6px 12px;font:inherit;font-size:17px;text-align:left;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:9px}
.trace{display:block;width:100%;height:290px}
.trace .cable{fill:none;stroke:#555b66;stroke-width:4;pointer-events:none}
.trace .cable.on{stroke:var(--tape);stroke-width:6}
.trace .cablehit{fill:none;stroke:transparent;stroke-width:40;pointer-events:stroke}
.trace .node rect{fill:var(--panel);stroke:var(--line)}
.trace .node text{fill:var(--fg);font-size:15px}
.trace .node.on rect{stroke:var(--tape);stroke-width:2}
#panel tr.pick td{background:#3b3414}
#panel tr.grp0 td{background:#4a3a10}
#panel tr.grp1 td{background:#123a4a}
#panel tr.grp2 td{background:#3a1f4a}
#panel tr.grp3 td{background:#1c4a2c}
.claim{margin:6px 0 10px;font-size:21px;font-style:italic;color:#ffe9a8}
.score{font-size:15px;color:var(--muted)}
.stepper{display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0}
.stepper .meter{min-height:54px;min-width:150px}
.tile.wide{display:block;width:100%;margin-top:6px}
.tree{display:flex;flex-direction:column;align-items:center;gap:8px;margin:6px 0}
.tree .root{padding:7px 18px;font-weight:700;color:#14161a;background:var(--tape);border-radius:7px}
.kids{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.knode{min-height:50px;padding:6px 12px;font:inherit;font-size:15px;color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:7px}
.knode.pick{border-color:var(--tape);color:var(--tape)}
.knode.good{background:#1c4a2c;border-color:#2f7a48}
.plates{display:flex;gap:8px;margin-top:6px}
.plate{flex:1;padding:4px;font:inherit;color:var(--fg);background:#efe6cf;border:2px solid transparent;border-radius:6px}
.plate.good{border-color:var(--tape)}
.plate .pic{display:block;width:100%;height:265px;object-fit:contain}
.plate .cap{display:block;font-size:14px;color:#222}
input.name{display:block;width:100%;min-height:54px;margin-top:8px;padding:8px 12px;font:inherit;font-size:22px;color:var(--fg);background:#000;border:1px solid var(--tape);border-radius:7px;-webkit-user-select:text;user-select:text}
.flash{position:absolute;inset:0;z-index:790;background:#fff;pointer-events:none;animation:flash .42s ease-out forwards}
@keyframes flash{from{opacity:.95}to{opacity:0}}
.ghost{animation:ghost 1.5s linear forwards}
@keyframes ghost{0%{opacity:1}60%{opacity:1}100%{opacity:0}}
#again{position:absolute;right:16px;top:60px;z-index:900;min-height:44px;padding:6px 16px;font:inherit;background:var(--tape);color:#14161a;border:0;border-radius:8px}
#again[hidden]{display:none}
#rotate{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;font-size:20px;color:var(--tape);background:#101216}
#rotate[hidden]{display:none}
#safe{position:fixed;left:0;top:0;visibility:hidden;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}
