.print-app{--ink:#14181f;--ink-dim:#14181fad;--paper:#f5f7fa;--red:#d92c20;--red-deep:#a51f16;--blue:#1d5bbf;--blue-deep:#13408a;--grey:#5b6573;--leader:#0f7a4c;--accent:#e5a100;--line:#14181f1f;--shadow:0 16px 40px #14181f14;--font-display:"Archivo Black", Impact, sans-serif;--font-body:"IBM Plex Sans", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--card-w:2.5in;--card-h:3.5in;z-index:1;color:var(--ink);font-family:var(--font-body);background:linear-gradient(180deg, transparent 0%, #1d5bbf0d 40%, #d92c200f 100%), repeating-linear-gradient(90deg, transparent, transparent 47px, #14181f08 47px, #14181f08 48px), repeating-linear-gradient(0deg, transparent, transparent 47px, #14181f08 47px, #14181f08 48px), var(--paper);padding:clamp(1.25rem,4vw,2.5rem) clamp(1rem,4vw,2.5rem) 2rem;line-height:1.45;position:relative}.print-app .btn{appearance:none;border:2px solid var(--ink);color:var(--ink);font-family:var(--font-body);border-radius:var(--radius-full);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.7rem 1.15rem;font-size:.95rem;font-weight:700;text-decoration:none;transition:transform .15s,background .15s,color .15s,border-color .15s;display:inline-flex}.print-app .btn:hover{transform:translateY(-1px)}.print-app .btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.print-app .btn.primary:hover{background:var(--red);border-color:var(--red)}.print-app .btn.ghost{background:#ffffffb3}.print-app .panel{border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);background:#ffffffe6;margin:0 0 2rem;padding:clamp(1.25rem,3vw,2rem)}.print-app .panel-head h2{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .35rem;font-size:clamp(1.4rem,3vw,1.9rem)}.print-app .panel-head p{color:var(--ink-dim);margin:0 0 1.25rem}.print-app .setup-grid{gap:1.25rem;display:grid}.print-app .field{gap:.4rem;display:grid}.print-app .field>span,.print-app .field legend{font-size:.92rem;font-weight:700}.print-app .field input[type=number]{border:2px solid var(--ink);border-radius:var(--radius-sm);width:min(140px,100%);color:var(--ink);font:inherit;background:#fff;padding:.65rem .75rem;font-size:1.1rem;font-weight:600}.print-app .field small,.print-app .hint{color:var(--ink-dim);font-size:.85rem}.print-app .pack{border:1px solid var(--line);border-radius:var(--radius-md);margin:0;padding:1rem}.print-app .checks{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.65rem;margin-top:.75rem;display:grid}.print-app .check{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;background:#f8fafc;grid-template-columns:auto 1fr;align-items:start;gap:.65rem;padding:.7rem .75rem;display:grid}.print-app .check:hover{border-color:#14181f47}.print-app .check input{width:1rem;height:1rem;margin-top:.2rem}.print-app .check strong{margin-right:.35rem;display:inline}.print-app .check em{color:var(--ink-dim);margin-top:.2rem;font-size:.82rem;font-style:normal;display:block}.print-app .rec,.print-app .req{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border-radius:4px;margin-right:.25rem;padding:.1rem .35rem;font-size:.68rem;display:inline-block}.print-app .rec{color:#8a6200;background:#e5a10033}.print-app .req{color:var(--ink-dim);background:#14181f0f}.print-app .setup-actions{flex-wrap:wrap;gap:.65rem;display:flex}.print-app .optional{opacity:.55;font-size:.85em;font-weight:500}.print-app .playsets{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.65rem;margin-top:.35rem;display:grid}.print-app .playset-card{border:2px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;background:#f8fafc;grid-template-columns:auto 1fr;align-items:start;gap:.65rem;padding:.75rem;transition:border-color .15s,background .15s;display:grid;position:relative}.print-app .playset-card:hover{border-color:#14181f4d}.print-app .playset-card input{opacity:0;pointer-events:none;position:absolute}.print-app .playset-card.is-active{border-color:var(--ink);box-shadow:inset 3px 0 0 var(--red);background:#fff}.print-app .playset-mark{background:linear-gradient(155deg, var(--blue) 0%, var(--red) 100%);color:#fff;width:2rem;height:2rem;font-family:var(--font-display);border-radius:8px;place-items:center;font-size:.95rem;line-height:1;display:grid}.print-app .playset-body{gap:.2rem;display:grid}.print-app .playset-body em{color:var(--ink-dim);font-size:.8rem;font-style:normal}.print-app .playset-range{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;opacity:.55;font-size:.68rem}.print-app .deal-mode-check{margin:0}.print-app .room-split{grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem;display:grid}.print-app .room-col{border:2px solid var(--ink);border-radius:var(--radius-sm);background:#fff;padding:.85rem 1rem}.print-app .room-col-a{border-color:var(--blue)}.print-app .room-col-b{border-color:var(--red)}.print-app .room-col h3{font-family:var(--font-display);align-items:baseline;gap:.5rem;margin:0 0 .5rem;font-size:1rem;display:flex}.print-app .room-col h3 small{font-family:var(--font-mono);opacity:.55;font-size:.75rem;font-weight:500}.print-app .room-col ul{gap:.25rem;margin:0;padding-left:1.1rem;font-size:.92rem;display:grid}.print-app .team-hidden.face:before{background:#94a3b8}.print-app .team-hidden .card-team{color:#64748b}.print-app .rules-chip{border-radius:var(--radius-sm);border-left:3px solid var(--accent);background:linear-gradient(90deg,#1d5bbf14,#d92c2014);margin-top:1.25rem;padding:.85rem 1rem;font-size:.95rem}.print-app .rules-chip-error{color:var(--red-deep);font-weight:600}.print-app .screen-cards{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;display:grid}.print-app .card{aspect-ratio:2.5/3.5;color:#14181f;background:#fffcf7;border:2px solid #14181f;border-radius:10px;flex-direction:column;width:100%;padding:.7rem .75rem .6rem;display:flex;position:relative;overflow:hidden}.print-app .card.face:before{content:"";height:8px;position:absolute;inset:0 0 auto}.print-app .team-blue.face:before{background:var(--blue)}.print-app .team-red.face:before{background:var(--red)}.print-app .team-grey.face:before{background:var(--grey)}.print-app .team-leader.face:before{background:var(--leader)}.print-app .card-top{justify-content:space-between;align-items:center;margin-top:.35rem;margin-bottom:.35rem;display:flex}.print-app .card-team,.print-app .card-num{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:.68rem}.print-app .team-blue .card-team{color:var(--blue-deep)}.print-app .team-red .card-team{color:var(--red-deep)}.print-app .team-grey .card-team{color:var(--grey)}.print-app .team-leader .card-team{color:var(--leader)}.print-app .card-name{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .25rem;font-size:1.15rem;line-height:1.05}.print-app .card-short{opacity:.65;margin:0 0 .5rem;font-size:.75rem;font-weight:600}.print-app .card-ability{flex:1;margin:0;font-size:.72rem;line-height:1.35}.print-app .card-foot{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;opacity:.45;margin-top:.5rem;font-size:.58rem}.print-app .hostage-list{margin:0 0 .5rem;padding-left:1rem;font-size:.78rem}.print-app .card.back{color:#f5f7fa;background:repeating-linear-gradient(-32deg,#14181f 0 10px,#222833 10px 20px);border-color:#0a0c10;padding:0}.print-app .back-inner{text-align:center;border:1px solid #f5f7fa4d;place-content:center;gap:.15rem;height:100%;margin:8px;display:grid}.print-app .back-brand{font-family:var(--font-display);letter-spacing:.02em;font-size:.95rem}.print-app .back-sub{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;opacity:.7;font-size:.65rem}.print-app .back-boom{font-family:var(--font-display);color:#f5a8a2;font-size:1.6rem}.print-app .card.placeholder{opacity:.25;background:0 0;border-style:dashed}.print-app .print-intro,.print-app .print-sheet{display:none}.print-app .sheet-label{font-family:var(--font-display);margin:0 0 .75rem;font-size:1rem}@media print{@page{size:letter;margin:.5in}body{color:#111;background:#fff}.no-print{display:none!important}.print-app{background:0 0;padding:0}.print-app .panel{box-shadow:none;background:0 0;border:none;margin:0;padding:0}.print-app .print-intro{color:#111;margin-bottom:.3in;display:block}.print-app .print-intro h1{font-family:var(--font-display);margin:0 0 .1in;font-size:16pt}.print-app .print-intro p{margin:0;font-size:10pt}.print-app .print-sheet{display:block}.print-app .screen-cards{display:none!important}.print-app .sheet-page{break-after:page;page-break-after:always}.print-app .sheet-page:last-child{break-after:auto;page-break-after:auto}.print-app .card-grid{grid-template-columns:repeat(4,1fr);gap:.12in;width:100%;display:grid}.print-app .card{aspect-ratio:2.5/3.5;break-inside:avoid;page-break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1.5pt solid #14181f;border-radius:0;width:100%;container-type:inline-size}.print-app .card-top{margin-top:4cqw;margin-bottom:2cqw}.print-app .card-team,.print-app .card-num{font-size:2.6cqw}.print-app .card-name{margin:1cqw 0 .5cqw;font-size:5.2cqw;line-height:1.05}.print-app .card-short{margin:0 0 2cqw;font-size:3cqw}.print-app .card-ability{font-size:2.8cqw;line-height:1.3}.print-app .card-foot{margin-top:2cqw;font-size:2cqw}.print-app .card.face:before{height:3cqw}.print-app .card{padding:3cqw 3cqw 2.5cqw}.print-app .hostage-list{padding-left:4cqw;font-size:3cqw}.print-app .hostage-list li{margin-bottom:1cqw}.print-app .card.back .back-inner{border-width:.5pt;margin:3cqw}.print-app .back-brand{font-size:3.5cqw}.print-app .back-sub{font-size:2.2cqw}.print-app .back-boom{font-size:6cqw}}:root{--ink:#f0f4fa;--ink-dim:#8b95a7;--ink-faint:#5c6573;--bg:#0a0d12;--panel:#141821;--panel-2:#1c212c;--line:#252b37;--line-2:#383f4d;--red:#ff453a;--blue:#0a84ff;--grey:#6b7280;--gold:#ffd60a;--ok:#30d158;--danger:#ff453a;--font-display:"Archivo Black", "Inter", -apple-system, system-ui, sans-serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", ui-monospace, monospace;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-full:999px;--ease:ease-out;--sa-top:env(safe-area-inset-top,0px);--sa-bottom:env(safe-area-inset-bottom,0px);--sa-left:env(safe-area-inset-left,0px);--sa-right:env(safe-area-inset-right,0px)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;color:var(--ink);font-family:var(--font-body);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}::selection{background:var(--blue);color:#fff}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}input,select,textarea,button{font:inherit;color:inherit}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.topbar{z-index:50;padding:calc(.85rem + var(--sa-top)) max(1rem, var(--sa-left)) .85rem max(1rem, var(--sa-right));border-bottom:1px solid var(--line);background:var(--bg);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}main{flex:1}.brand{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:.92rem;text-decoration:none}.brand:hover{color:var(--red)}.brand-and{color:var(--ink-dim);font-weight:400}.topnav{gap:.3rem;display:flex}.topnav-link{color:var(--ink-dim);border-radius:var(--r-sm);transition:color .15s var(--ease), background .15s var(--ease);align-items:center;min-height:36px;padding:.5rem .85rem;font-size:.86rem;font-weight:600;text-decoration:none;display:inline-flex}.topnav-link:hover,.topnav-link.active{color:var(--ink);background:var(--panel)}.view{padding:clamp(1.5rem, 5vw, 3rem) max(1rem, var(--sa-left)) 2.5rem max(1rem, var(--sa-right))}.btn{appearance:none;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font-family:var(--font-body);border-radius:var(--r-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:44px;transition:background .12s var(--ease), border-color .12s var(--ease), color .12s var(--ease);justify-content:center;align-items:center;gap:.4rem;padding:.7rem 1.2rem;font-size:.92rem;font-weight:700;text-decoration:none;display:inline-flex}.btn:hover{background:var(--panel-2);border-color:var(--ink-dim)}.btn:active{background:var(--bg)}.btn.lg{min-height:50px;padding:.85rem 1.5rem;font-size:.98rem}.btn.primary{background:var(--red);border-color:var(--red);color:#fff}.btn.primary:hover{background:#d8352d;border-color:#d8352d}.btn.secondary{border-color:var(--line-2);color:var(--ink);background:0 0}.btn.secondary:hover{border-color:var(--ink-dim);background:var(--panel)}.btn.ghost{color:var(--ink-dim);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--ink);background:var(--panel)}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.35;cursor:not-allowed}.text-link{color:var(--ink-dim);border-bottom:1px solid var(--line-2);transition:color .12s var(--ease), border-color .12s var(--ease);margin-top:1.25rem;padding:.3rem 0;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.text-link:hover{color:var(--ink);border-color:var(--ink-dim)}.hero{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:clamp(2rem,5vw,3.5rem);margin-bottom:clamp(2rem,5vw,3rem);display:grid}.hero-copy{max-width:600px}.eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 .85rem;font-size:.72rem}.brand-mark{font-family:var(--font-display);margin:0 0 .75rem;font-size:clamp(1.3rem,4vw,1.8rem);line-height:1}.hero h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 1rem;font-size:clamp(1.8rem,5vw,2.8rem);line-height:1.08}.lede{max-width:40ch;color:var(--ink-dim);margin:0 0 1.5rem;font-size:1.05rem}.hero-actions,.lobby-actions,.host-timer-actions{flex-wrap:wrap;gap:.6rem;display:flex}.hero-actions{margin-bottom:.5rem}.hero-visual{justify-content:center;display:flex}.room-diagram{grid-template-columns:1fr auto 1fr;align-items:center;gap:clamp(.4rem,2vw,1rem);width:100%;max-width:420px;display:grid}.room-diagram-room{border-radius:var(--r-md);border:2px solid var(--line-2);background:var(--panel);flex-direction:column;justify-content:space-between;min-height:170px;padding:1.2rem 1rem;display:flex}.room-diagram-a{border-color:var(--blue)}.room-diagram-b{border-color:var(--red)}.room-diagram-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);font-size:.68rem}.room-diagram-dots{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}.room-dot{background:var(--blue);border-radius:50%;width:12px;height:12px}.room-diagram-b .room-dot{background:var(--red)}.room-diagram-core{background:var(--bg);border:2px solid var(--red);border-radius:50%;place-items:center;width:64px;height:64px;display:grid}.room-diagram-core-label{font-family:var(--font-display);color:var(--red);letter-spacing:.02em;font-size:.68rem}.how-it-works{margin-bottom:clamp(2rem,5vw,3rem)}.steps-row{border:1px solid var(--line);border-radius:var(--r-md);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.step{background:var(--panel);border-right:1px solid var(--line);padding:1.35rem 1.3rem}.step:last-child{border-right:none}.step-index{font-family:var(--font-mono);color:var(--ink-faint);margin-bottom:.6rem;font-size:.74rem;display:block}.step h3{font-family:var(--font-display);margin:0 0 .4rem;font-size:.98rem}.step p{color:var(--ink-dim);margin:0;font-size:.88rem}.join-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);gap:1rem;max-width:440px;margin:.5rem 0 1rem;padding:1.35rem;display:grid}.field{gap:.4rem;display:grid}.field>span{color:var(--ink-dim);font-size:.8rem;font-weight:600}.field input,.field select{border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--bg);width:100%;min-height:44px;color:var(--ink);transition:border-color .12s var(--ease);padding:.7rem .85rem;font-size:1rem}.field input:hover,.field select:hover{border-color:var(--ink-dim)}.field input:focus-visible,.field select:focus-visible{outline:2px solid var(--blue);outline-offset:1px;border-color:var(--blue)}.field input::placeholder{color:var(--ink-faint)}.code-input{align-items:center;gap:.4rem;width:100%;display:flex}.code-input-field{text-align:center;min-width:0;font-family:var(--font-mono);border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--bg);min-height:48px;color:var(--ink);text-transform:lowercase;transition:border-color .12s var(--ease);flex:1;padding:.7rem .4rem;font-size:1rem;font-weight:600}.code-input-field::placeholder{color:var(--ink-faint);font-weight:400}.code-input-field:hover{border-color:var(--ink-dim)}.code-input-field.is-active{border-color:var(--blue)}.code-input-field.is-valid{border-color:var(--ok);color:var(--ink)}.code-input-field+.code-input-field{position:relative}.code-input-field+.code-input-field:before{content:"-";color:var(--ink-faint);font-family:var(--font-mono);pointer-events:none;position:absolute;top:50%;left:calc(-.4rem - .5ch);transform:translateY(-50%)}.share-btn{min-height:38px;padding:.4rem .8rem;font-size:.82rem}.share-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;align-items:center;gap:1rem;margin-bottom:1rem;padding:1.35rem;display:flex}.share-panel-head{justify-content:space-between;align-items:center;width:100%;display:flex}.share-panel-head h2{font-family:var(--font-display);margin:0;font-size:1rem}.share-close{min-height:30px;padding:.3rem .65rem;font-size:.8rem}.qr-code{border-radius:var(--r-sm);background:#fff;padding:8px}.qr-code svg{width:100%;height:100%;display:block}.share-hint{text-align:center;color:var(--ink-dim);margin:0;font-size:.86rem}.share-code{font-family:var(--font-mono);color:var(--ink);font-weight:600}.share-actions{gap:.5rem;width:100%;display:flex}.share-actions .btn{flex:1}.form-hint{color:var(--ink-dim);margin:0;font-size:.84rem}.form-hint.error{color:var(--danger)}.feature-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;display:grid}.feature{border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);padding:1.25rem 1.3rem}.feature h3{font-family:var(--font-display);margin:0 0 .4rem;font-size:.96rem}.feature p{color:var(--ink-dim);margin:0;font-size:.88rem}.feature em{font-style:normal;font-family:var(--font-mono);color:var(--gold);font-size:.86em}.game-shell{max-width:1000px;margin:0 auto}.game-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;margin-bottom:1rem;display:flex}.code-block{align-items:center;gap:.6rem;display:flex;position:relative}.code-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-size:.68rem}.code-value{appearance:none;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font-family:var(--font-mono);border-radius:var(--r-sm);cursor:pointer;min-height:38px;transition:border-color .12s var(--ease);padding:.45rem .8rem;font-size:clamp(.92rem,2.5vw,1.1rem);font-weight:600}.code-value:hover{border-color:var(--ink-dim)}.copy-toast{color:var(--ok);margin-left:.5rem;font-size:.75rem;position:absolute;left:100%}.conn{color:var(--ink-dim);border-radius:var(--r-full);border:1px solid var(--line);background:var(--panel);align-items:center;gap:.45rem;min-height:30px;padding:.35rem .7rem;font-size:.8rem;display:inline-flex}.conn-dot{background:var(--grey);border-radius:50%;width:7px;height:7px}.conn[data-status=live] .conn-dot{background:var(--ok)}.conn[data-status=reconnecting] .conn-dot{background:var(--gold)}.conn[data-status=offline] .conn-dot{background:var(--danger)}.toast{border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--red);color:#ff8b82;margin:0 0 1rem;padding:.75rem .9rem}.toast a{color:inherit;text-decoration:underline}.game-grid{grid-template-columns:minmax(220px,280px) 1fr;align-items:start;gap:1rem;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:1.1rem 1.2rem 1.25rem}.panel-head{justify-content:space-between;align-items:baseline;gap:.65rem;margin-bottom:.85rem;display:flex}.panel-head.stacked{flex-direction:column;align-items:flex-start}.panel-head h2{font-family:var(--font-display);margin:0;font-size:1.05rem}.panel-head p{color:var(--ink-dim);margin:.25rem 0 0;font-size:.86rem}.pill{font-family:var(--font-mono);border-radius:var(--r-sm);background:var(--bg);border:1px solid var(--line);padding:.18rem .5rem;font-size:.7rem}.pill-quiet{color:var(--ink-dim)}.player-list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.player-list li{border-radius:var(--r-sm);background:var(--bg);border:1px solid #0000;align-items:center;gap:.65rem;padding:.5rem .6rem;display:flex}.player-list li:hover{background:var(--panel-2)}.player-list li.is-you{border-color:var(--blue)}.pavatar{background:var(--panel-2);border:1px solid var(--line);width:32px;height:32px;font-family:var(--font-mono);color:var(--ink-dim);border-radius:50%;flex:none;place-items:center;font-size:.68rem;font-weight:600;display:grid}.player-list li.is-you .pavatar{background:var(--blue);border-color:var(--blue);color:#fff}.pinfo{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.pname{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.player-list li.is-host .pname:after{content:"Host";font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--gold);margin-left:.4rem;font-size:.58rem;font-weight:600}.pmeta{color:var(--ink-faint);font-size:.68rem;font-family:var(--font-mono);letter-spacing:.02em;flex-wrap:wrap;align-items:center;gap:.3rem;min-width:0;display:flex;overflow:hidden}.dot-online{background:var(--ok);border-radius:50%;flex:none;width:6px;height:6px}.dot-offline{background:var(--grey)}.room-tag{border-radius:3px;padding:.1rem .35rem;font-size:.62rem;font-weight:600}.room-tag.a{background:var(--blue);color:#fff}.room-tag.b{background:var(--red);color:#fff}.leader-tag{background:var(--gold);color:#14161a;border-radius:3px;padding:.1rem .35rem;font-size:.62rem;font-weight:600}.bot-tag{background:var(--panel-2);border:1px solid var(--line-2);color:var(--ink-dim);border-radius:3px;padding:.1rem .35rem;font-size:.62rem;font-weight:600}.ready-tag{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);font-size:.6rem;font-weight:600}.ready-tag[data-ready=true]{color:var(--ok)}.kick-btn{appearance:none;color:var(--ink-faint);font-family:var(--font-body);border-radius:var(--r-sm);cursor:pointer;min-height:28px;transition:color .12s var(--ease), background .12s var(--ease);background:0 0;border:none;flex:none;padding:.3rem .55rem;font-size:.72rem;font-weight:600}.kick-btn:hover{color:var(--red);background:var(--panel-2)}.lobby-controls,.play-controls{gap:1rem;display:grid}.host-setup{border-radius:var(--r-sm);background:var(--bg);border:1px solid var(--line);gap:.6rem;padding:1rem;display:grid}.you-card-wrap{width:100%;max-width:300px;margin:0 auto}.role-card-flip{aspect-ratio:2.5/3.5;perspective:1400px;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;width:100%;position:relative}.role-card-flip:focus-visible .role-card-flip-inner{outline:2px solid var(--gold);outline-offset:3px}.role-card-flip-inner{width:100%;height:100%;transform-style:preserve-3d;will-change:transform;transition:transform .5s cubic-bezier(.22,1,.36,1);position:relative}.role-card-face{border-radius:var(--r-md);backface-visibility:hidden;position:absolute;inset:0;overflow:hidden}.role-card-face-front{border:2px solid var(--line-2);background:var(--panel);color:var(--ink);transition:border-color .15s var(--ease)}.role-card-flip:hover .role-card-face-front{border-color:var(--gold)}.role-card-face-back{transform:rotateY(180deg)}.card-reveal-ring{border:1px solid var(--line-2);border-radius:50%;width:80px;height:80px;position:absolute;top:50%;left:50%;translate:-50% -60%}.card-reveal-inner{height:100%;padding:1rem;position:relative}.peek,.peek-team{text-align:center;transition:opacity .2s var(--ease);justify-content:center;align-items:center;padding:0 1rem;display:flex;position:absolute;inset:0}.peek{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;opacity:.7;font-size:.78rem;font-weight:500;line-height:1.6}.peek-team{flex-direction:column;gap:.6rem}.peek-team-main{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-dim);align-items:center;gap:.45rem;font-size:.85rem;font-weight:600;display:flex}.peek-team-hint{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;opacity:.55;font-size:.62rem;font-weight:500}.peek-team-dot{background:var(--grey);border-radius:50%;width:12px;height:12px}.peek-team.team-blue .peek-team-dot{background:var(--blue)}.peek-team.team-blue .peek-team-label{color:var(--blue)}.peek-team.team-red .peek-team-dot{background:var(--red)}.peek-team.team-red .peek-team-label{color:var(--red)}.role-card{border-radius:var(--r-md);border:1px solid var(--bg);color:#14161a;background:#f4f4f0;flex-direction:column;width:100%;height:100%;padding:1.1rem 1rem .9rem;display:flex;position:relative;overflow:hidden}.role-card:before{content:"";background:var(--grey);height:8px;position:absolute;inset:0 0 auto}.role-card.team-blue:before{background:var(--blue)}.role-card.team-red:before{background:var(--red)}.role-card.team-grey:before{background:var(--grey)}.role-card .team{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-top:.5rem;font-size:.68rem;font-weight:600}.role-card.team-blue .team{color:var(--blue)}.role-card.team-red .team{color:var(--red)}.role-card h3{font-family:var(--font-display);margin:.4rem 0 .25rem;font-size:1.4rem;line-height:1.08}.role-card .short{opacity:.6;margin:0 0 .55rem;font-size:.8rem;font-weight:600}.role-card .ability{flex:1;margin:0;font-size:.82rem;line-height:1.4}.room-badge{text-align:center;font-family:var(--font-display);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--bg);padding:.65rem;font-size:1.05rem}.room-badge[data-room=A]{color:var(--blue);border-color:var(--blue)}.room-badge[data-room=B]{color:var(--red);border-color:var(--red)}.leader-panel{border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg);flex-direction:column;gap:.7rem;padding:.9rem 1rem;display:flex}.leader-status{font-size:.86rem;font-weight:600}.leader-you-badge{color:var(--gold);align-items:center;gap:.4rem;display:inline-flex}.leader-crown{font-size:1rem}.leader-who{color:var(--ink-dim);font-weight:400}.leader-who strong{color:var(--ink)}.hostage-picker{border-top:1px solid var(--line);flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.hostage-list{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.hostage-list label{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.leader-vote{border-top:1px solid var(--line);flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.vote-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.vote-btn{align-items:center;gap:.35rem;padding:.35rem .6rem;font-size:.78rem;display:inline-flex}.timer-block{border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg);text-align:center;padding:1.25rem}.timer-meta{font-family:var(--font-mono);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-dim);justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:.68rem;font-weight:500;display:flex}.timer-ring-wrap{aspect-ratio:1;place-items:center;width:min(200px,58vw);margin:0 auto 1rem;display:grid;position:relative}.timer-ring{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.timer-ring-track,.timer-ring-progress{fill:none;stroke-width:6px}.timer-ring-track{stroke:var(--line)}.timer-ring-progress{stroke:var(--blue);stroke-linecap:round;transition:stroke-dashoffset .3s linear, stroke .2s var(--ease)}.timer-ring-progress.is-urgent{stroke:var(--red)}.timer-display{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:clamp(1.8rem,7vw,2.4rem);line-height:1}.timer-display.is-urgent{color:var(--red)}.site-footer{padding:1.5rem max(1rem, var(--sa-left)) calc(2rem + var(--sa-bottom)) max(1rem, var(--sa-right));color:var(--ink-faint);border-top:1px solid var(--line);font-size:.82rem}.site-footer a{color:var(--ink-dim);text-decoration:none}.site-footer a:hover{color:var(--ink)}@media (width<=900px){.hero{grid-template-columns:1fr}.hero-visual{margin-bottom:.5rem}.room-diagram{max-width:340px}}@media (width<=820px){.game-grid{grid-template-columns:1fr}.players-panel{order:2}.hero-actions,.lobby-actions{flex-direction:column;align-items:stretch}.hero-actions .btn,.lobby-actions .btn{width:100%}.host-timer-actions{flex-wrap:wrap}.host-timer-actions .btn{flex:calc(50% - .3rem);min-width:0}.host-timer-actions .btn.primary{flex:100%}}@media (width<=520px){.room-diagram-room{min-height:140px;padding:1rem .85rem}.room-diagram-core{width:52px;height:52px}.steps-row{grid-template-columns:1fr}.step{border-right:none;border-bottom:1px solid var(--line)}.step:last-child{border-bottom:none}.panel{padding:1rem 1.05rem 1.15rem}.topbar{padding-top:calc(.7rem + var(--sa-top));padding-bottom:.7rem}.brand{font-size:.84rem}}
