:root{--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans: system-ui, -apple-system, "Segoe UI", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1)}[data-era=past]{--bg: #211710;--bg2: #2e2014;--panel: #382817;--panel2: #46321d;--ink: #f2e4c8;--ink-dim: #c4ad88;--accent: #e8b54d;--accent2: #ff9d5c;--glow: #ffd98a;--line: #5d4527}[data-era=present]{--bg: #0e161d;--bg2: #14202a;--panel: #1b2c38;--panel2: #243a49;--ink: #ddeef4;--ink-dim: #93b2bf;--accent: #4fc3d9;--accent2: #7ee0c3;--glow: #aee9f7;--line: #2f4b5d}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);overflow:hidden;transition:background 1.2s ease}#app{height:100%}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}.grain:after{content:"";position:fixed;inset:-50%;pointer-events:none;z-index:90;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain .9s steps(3) infinite}@keyframes grain{0%{transform:translate(0)}33%{transform:translate(-2%,1%)}66%{transform:translate(1%,-2%)}to{transform:translate(0)}}.vignette:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:89;background:radial-gradient(ellipse at 50% 42%,transparent 55%,rgba(0,0,0,.42) 100%)}.lobby{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;position:relative;z-index:2}.lobby-split{position:fixed;inset:0;z-index:0}.lobby h1{font-family:var(--serif);font-size:clamp(48px,9vw,110px);letter-spacing:.14em;margin:0;text-align:center;line-height:1;text-shadow:0 4px 40px rgba(0,0,0,.6)}.lobby .tagline{font-family:var(--serif);font-style:italic;opacity:.75;font-size:clamp(15px,2vw,20px);margin-top:-6px}.lobby-card{background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--line);border-radius:14px;padding:26px 30px;backdrop-filter:blur(6px);box-shadow:0 18px 60px #00000073;display:flex;flex-direction:column;gap:14px;align-items:center;max-width:560px}.btn{font-family:var(--serif);font-size:19px;padding:12px 26px;border-radius:10px;border:1px solid var(--accent);color:var(--accent);letter-spacing:.04em;transition:all .25s var(--ease)}.btn:hover{background:var(--accent);color:var(--bg);box-shadow:0 0 30px color-mix(in srgb,var(--accent) 55%,transparent)}.btn.primary{background:var(--accent);color:#221a0d}.btn.primary:hover{filter:brightness(1.12)}.btn:disabled{opacity:.4;pointer-events:none}.char-row{display:flex;gap:18px}.char-card{width:218px;border:1.5px solid var(--line);border-radius:14px;padding:16px 14px 14px;display:flex;flex-direction:column;align-items:center;gap:8px;transition:all .25s var(--ease);background:#0000002e}.char-card:hover,.char-card.sel{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 14px 40px #00000080}.char-card .who{font-family:var(--serif);font-size:24px}.char-card .era-tag{font-size:12px;letter-spacing:.18em;text-transform:uppercase;opacity:.65}.char-card svg{width:120px;height:120px}.code-input{font-family:var(--serif);font-size:26px;letter-spacing:.5em;text-align:center;text-transform:uppercase;width:200px;background:#0000004d;border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:10px 0 10px .5em}.share-link{font-family:ui-monospace,monospace;font-size:13px;background:#00000059;padding:9px 12px;border-radius:8px;user-select:all;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint{font-size:13px;opacity:.6;text-align:center;max-width:420px;line-height:1.5}.game{height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg2) 88%,transparent);z-index:10}.topbar .chapter{font-family:var(--serif);font-size:17px;letter-spacing:.06em}.topbar .era-plate{font-size:11px;letter-spacing:.22em;border:1px solid var(--line);border-radius:99px;padding:3px 12px;opacity:.8}.topbar .spacer{flex:1}.topbar .room-code{font-family:ui-monospace,monospace;letter-spacing:.3em;font-size:13px;opacity:.55}.iconbtn{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);display:grid;place-items:center;opacity:.75;transition:all .2s}.iconbtn:hover{opacity:1;border-color:var(--accent)}.stage{flex:1;display:flex;min-height:0}.scene-wrap{flex:1;position:relative;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 30%,var(--bg2),var(--bg) 75%);min-width:0}.scene-box{position:relative;width:100%;height:100%;max-width:calc((100vh - 54px)*1.6)}svg.scene{position:absolute;inset:0;width:100%;height:100%}.fx-layer{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:hidden}svg.scene .ambient,svg.scene .dynamic{pointer-events:none}svg.scene .hot{pointer-events:all}.hot{cursor:pointer}.hot:hover .hot-glow,.hot:focus-visible .hot-glow{opacity:1}.hot-glow{opacity:0;transition:opacity .25s;pointer-events:none}.hot[data-disabled=true]{cursor:default}.bark{position:absolute;left:50%;bottom:26px;transform:translate(-50%);max-width:620px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);border-radius:12px;padding:12px 20px;font-family:var(--serif);font-size:17px;font-style:italic;text-align:center;z-index:6;opacity:0;transition:opacity .4s,transform .4s var(--ease);pointer-events:none;box-shadow:0 10px 40px #00000073}.bark.show{opacity:1;transform:translate(-50%) translateY(-6px)}.side{width:320px;border-left:1px solid var(--line);background:color-mix(in srgb,var(--bg2) 92%,transparent);display:flex;flex-direction:column;min-height:0}.partner{display:flex;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}.partner .face{width:52px;height:52px;border-radius:50%;border:2px solid var(--line);overflow:hidden;flex:none;background:#00000040}.partner .face svg{width:100%;height:100%}.partner .pname{font-family:var(--serif);font-size:18px}.partner .pera{font-size:11px;letter-spacing:.18em;opacity:.6;text-transform:uppercase}.partner .dot{width:9px;height:9px;border-radius:50%;background:#777;margin-left:auto;box-shadow:0 0 0 0 transparent;transition:all .4s}.partner .dot.on{background:#62d98a;box-shadow:0 0 12px #62d98a88}.parts-tray{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);align-items:center}.parts-tray .slot{width:46px;height:46px;border:1px dashed var(--line);border-radius:10px;display:grid;place-items:center;opacity:.45;transition:all .5s var(--ease)}.parts-tray .slot svg{width:34px;height:34px}.parts-tray .slot.got{opacity:1;border-style:solid;border-color:var(--accent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 35%,transparent)}.parts-tray .tray-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.5;writing-mode:vertical-rl;transform:rotate(180deg);margin-right:2px}.chat{flex:1;display:flex;flex-direction:column;min-height:0}.chat-log{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin}.msg{max-width:85%;padding:8px 12px;font-size:14px;line-height:1.45;background:var(--panel);border:1px solid var(--line);align-self:flex-start;border-radius:12px 12px 12px 4px;overflow-wrap:break-word}.msg.mine{align-self:flex-end;background:color-mix(in srgb,var(--accent) 16%,var(--panel));border-bottom-left-radius:12px;border-bottom-right-radius:4px}.msg .glyph-chip{display:inline-block;width:22px;height:22px;vertical-align:-6px;margin:0 1px}.msg .who-line{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.5;margin-bottom:3px}.chat-input{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}.chat-input input{flex:1;background:#00000047;border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:9px 12px;font-size:14px}.chat-input input::placeholder{color:var(--ink-dim);opacity:.6}.glyph-stamps{display:flex;gap:5px;padding:0 12px 10px;flex-wrap:wrap}.glyph-stamps button{width:30px;height:30px;border:1px solid var(--line);border-radius:7px;padding:3px;opacity:.7;transition:all .15s}.glyph-stamps button:hover{opacity:1;border-color:var(--accent);transform:translateY(-2px)}.ping{position:absolute;width:70px;height:70px;margin:-35px 0 0 -35px;pointer-events:none}.ping .ring{position:absolute;inset:0;border-radius:50%;border:2px solid var(--glow);animation:ping-ring 1.4s var(--ease) forwards}.ping .core{position:absolute;inset:28px;border-radius:50%;background:var(--glow);filter:blur(1px);animation:ping-core 1.4s ease-out forwards}.ping.theirs .ring{border-color:var(--accent2)}.ping.theirs .core{background:var(--accent2)}@keyframes ping-ring{0%{transform:scale(.25);opacity:.95}to{transform:scale(1.5);opacity:0}}@keyframes ping-core{0%{transform:scale(.4);opacity:1}70%{opacity:.8}to{transform:scale(.9);opacity:0}}.advance-pill{position:absolute;top:16px;right:18px;z-index:7;font-family:var(--serif);font-size:17px;padding:10px 22px;border-radius:999px;border:1px solid var(--accent);color:var(--accent);background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(4px);transition:all .3s var(--ease);animation:pill-in .6s var(--ease);box-shadow:0 0 24px color-mix(in srgb,var(--accent) 30%,transparent)}.advance-pill:hover{background:var(--accent);color:var(--bg)}.advance-pill.waiting{opacity:.7;pointer-events:none}@keyframes pill-in{0%{transform:translateY(-12px);opacity:0}to{transform:none;opacity:1}}.cutscene{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#080604ed;opacity:0;pointer-events:none;transition:opacity .7s ease}.cutscene.show{opacity:1;pointer-events:auto}.cutscene .card{max-width:720px;padding:0 40px;text-align:center;font-family:var(--serif);font-size:clamp(24px,3.6vw,38px);line-height:1.45;white-space:pre-line;animation:card-in 1s var(--ease)}.cutscene .card .small{display:block;font-size:.55em;font-style:italic;opacity:.65;margin-top:18px}.cutscene .card.hand{font-style:italic;letter-spacing:.03em}.cutscene .continue{position:fixed;bottom:34px;left:0;right:0;text-align:center;font-size:13px;letter-spacing:.22em;text-transform:uppercase;opacity:.45;animation:pulse 2s infinite}@keyframes card-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:.25}50%{opacity:.6}}.grow-in{transform-box:fill-box;transform-origin:50% 100%;animation:growin 1.1s var(--ease)}@keyframes growin{0%{transform:scale(.15);opacity:0}60%{opacity:1}to{transform:scale(1)}}.gear-cw{transform-box:fill-box;transform-origin:center;animation:spin-cw var(--spin-dur, 3s) linear infinite}.gear-ccw{transform-box:fill-box;transform-origin:center;animation:spin-ccw var(--spin-dur, 3s) linear infinite}@keyframes spin-cw{to{transform:rotate(360deg)}}@keyframes spin-ccw{to{transform:rotate(-360deg)}}.shudder{animation:shudder .45s ease 3}@keyframes shudder{0%,to{transform:translate(0)}25%{transform:translate(-3px,1px)}75%{transform:translate(3px,-1px)}}.key-flash{animation:keyflash .35s ease}@keyframes keyflash{30%{transform:translateY(5px)}}.conn-toast{position:fixed;top:64px;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--line);padding:8px 18px;border-radius:999px;font-size:13px;z-index:95;opacity:0;transition:opacity .3s;pointer-events:none}.conn-toast.show{opacity:1}@media(max-width:900px){.side{width:250px}}.figure{animation:figure-bob 3.2s ease-in-out infinite alternate}@keyframes figure-bob{0%{transform:translate(var(--fx, 0))}to{transform:translate(var(--fx, 0),-3px)}}.help-panel{position:fixed;top:60px;right:340px;z-index:60;width:340px;background:color-mix(in srgb,var(--panel) 94%,transparent);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:0 18px 60px #00000080;cursor:pointer;animation:card-in .4s var(--ease)}.help-title{font-size:11px;letter-spacing:.2em;text-transform:uppercase;opacity:.55;margin-bottom:8px}.help-law{font-family:var(--serif);font-style:italic;font-size:15px;margin-bottom:5px}.help-goal{font-family:var(--serif);font-size:16px;line-height:1.5}.help-dismiss{margin-top:14px;font-size:11px;opacity:.4;text-align:center}.cutscene .era-chip{display:inline-block;font-size:12px;letter-spacing:.3em;border:1px solid currentColor;border-radius:99px;padding:4px 14px;opacity:.55;margin-bottom:22px}
