:root{--bg:#0f1c14;--bg2:#14271b;--panel:#1b3325;--panel2:#21402f;--line:#2d5740;--ink:#eaf4ec;--muted:#9fbfa9;--accent:#4ade80;--accent-ink:#06281a;--sky:#38bdf8;--gold:#fbbf24;--danger:#f87171;--radius:12px;--shadow:0 6px 20px #00000059}*{box-sizing:border-box}html,body{background:radial-gradient(1200px 600px at 50% -10%, #1c3a28 0%, var(--bg) 60%) fixed;color:var(--ink);margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}#root{min-height:100vh}main{display:block}h1,h2,h3{margin:0 0 .5rem;font-weight:700}.muted{color:var(--muted);font-weight:400}.section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1.25rem 0 .6rem;font-size:.95rem}.btn{appearance:none;border:1px solid var(--line);background:var(--panel2);color:var(--ink);cursor:pointer;border-radius:10px;padding:.5rem .9rem;font-size:.92rem;font-weight:600;transition:transform 60ms,background .15s,border-color .15s}.btn:hover{border-color:var(--accent);background:#295338}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn-primary:hover{background:#6ee7a0}.btn-ghost{background:0 0}.btn-sm{border-radius:8px;padding:.3rem .6rem;font-size:.82rem}.btn-lg{box-shadow:var(--shadow);border-radius:12px;padding:.7rem 1.4rem;font-size:1.05rem}.game{flex-direction:column;max-width:1000px;height:100dvh;margin:0 auto;padding:0 1rem;display:flex}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(#163021f2,#14271bf2);flex:none;align-items:center;gap:1rem;min-height:52px;margin:0 -1rem;padding:.5rem 1rem;display:flex}.brand{white-space:nowrap;font-size:1.1rem;font-weight:800}.topbar .dice{margin-left:auto}.actionbar{padding:.6rem 1rem calc(.6rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);background:linear-gradient(#14271be0,#0c1810f7);flex:none;justify-content:center;margin:0 -1rem;display:flex}.actionbar-inner{align-items:center;gap:1rem;width:100%;max-width:1000px;display:flex}.ab-status{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.ab-title{font-size:1.05rem;font-weight:700}.ab-hint{color:var(--muted);font-size:.85rem}.ab-actions{flex-wrap:wrap;gap:.5rem;margin-left:auto;display:flex}.ab-reaction{align-items:center;gap:1rem;width:100%;display:flex}.ab-reaction .ab-title{color:var(--gold)}.toast{z-index:45;max-width:92vw;box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:.75rem;padding:.6rem .9rem;display:flex;position:fixed;top:60px;left:50%;transform:translate(-50%)}.toast-error{border:1px solid var(--danger);color:#ffd9d9;background:#3a1717}.toast button{color:inherit;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:1rem}.notice-card{border:1px solid var(--gold);text-align:center;max-width:360px;box-shadow:var(--shadow);background:linear-gradient(#2a2410,#241f0e);border-radius:16px;padding:1.5rem 1.75rem;animation:.18s ease-out pop-in}.notice-emoji{font-size:2.4rem}.notice-card p{color:#fdf0c8;margin:.4rem 0 1rem}.notice-card .btn{width:100%}@keyframes pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.reaction{border:1px solid var(--gold);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#2a2410,#241f0e);margin:.75rem 0;padding:1rem}.reaction-headline{margin:0 0 .6rem}.reaction-actions{flex-wrap:wrap;gap:.5rem;display:flex}.reaction-waiting{color:var(--muted);margin:0}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.tabs{border-bottom:1px solid var(--line);display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.55rem .6rem;font-size:.9rem;font-weight:700}.tab:hover{color:var(--ink)}.tab-on{color:var(--ink);border-bottom-color:var(--accent)}.tab .dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-left:.35rem;display:inline-block}.panel-body{flex:auto;min-height:0;padding:.7rem;overflow-y:auto}.badge{letter-spacing:.03em;vertical-align:middle;border-radius:999px;margin-left:.6rem;padding:.15rem .5rem;font-size:.72rem;font-weight:700;display:inline-block}.badge-go{background:var(--accent);color:var(--accent-ink)}.log{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.log li{color:#cfe3d5;border-bottom:1px solid #ffffff0d;padding:.15rem 0;font-size:.85rem}.log .log-turn{color:var(--sky);font-weight:700}.log .log-win{color:var(--gold);font-weight:800}.log .log-timber{color:var(--accent)}.log .log-contest{color:#fb923c}.log .log-react{color:#2dd4bf}.cards{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--panel2);border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:10px;flex-direction:column;gap:.35rem;padding:.6rem .7rem;display:flex}.card-dim{opacity:.6}.card-name{font-weight:700}.card-cat{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.68rem}.card-text{color:#cfe3d5;flex:1;font-size:.78rem}.card-actions{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.25rem;display:flex}.card-na{font-size:.76rem}.targets{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.card.cat-equipment{border-left-color:var(--sky)}.card.cat-plus{border-left-color:var(--accent)}.card.cat-help{border-left-color:#c084fc}.card.cat-sasquatch{border-left-color:var(--danger)}.card.cat-action{border-left-color:var(--gold)}.card.cat-reaction{border-left-color:#2dd4bf}.card.cat-contest{border-left-color:#fb923c}.dice{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.dice-faces{gap:6px;display:flex}.dice-readout{color:var(--accent);white-space:nowrap;font-size:.8rem;font-weight:800}.die{background:linear-gradient(150deg,#fff 0%,#e8e3d6 100%);border-radius:7px;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);width:30px;height:30px;padding:4px;display:grid;box-shadow:inset 0 0 0 1px #0000002e,0 2px 5px #00000073}.die .pip{justify-content:center;align-items:center;display:flex}.die .pip--on:after{content:"";background:#1c2027;border-radius:50%;width:5px;height:5px}.die--hit{background:linear-gradient(150deg,#86efac,#34a866)}.die--miss{background:linear-gradient(150deg,#fde68a,#d99e1a)}.die--low{background:linear-gradient(150deg,#fca5a5,#d65555)}.die--win{box-shadow:inset 0 0 0 1px #0000002e, 0 0 0 2px var(--gold), 0 2px 6px #00000080;background:linear-gradient(150deg,#ffe39a,#d4af37)}.die--rolling{animation:.6s ease-in-out die-tumble}.die--rolling-loop{animation:.45s ease-in-out infinite die-tumble}@keyframes die-tumble{0%{transform:rotate(0)scale(1)}25%{transform:rotate(-22deg)translateY(-8px)scale(1.1)}50%{transform:rotate(18deg)translateY(0)scale(1.05)}75%{transform:rotate(-8deg)translateY(-3px)scale(1.02)}to{transform:rotate(0)scale(1)}}@media (prefers-reduced-motion:reduce){.die--rolling,.die--rolling-loop{animation:none}}.board{flex:none;margin:.4rem 0}.players{scroll-snap-type:x proximity;gap:.5rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.player{scroll-snap-align:start;cursor:pointer;background:var(--panel);border:1px solid var(--line);border-radius:10px;flex:0 0 156px;padding:.5rem .6rem;transition:border-color .15s,box-shadow .15s}.player:hover{border-color:var(--muted)}.player.is-active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--shadow)}.player.is-me{background:var(--panel2)}.player-top{align-items:baseline;gap:.4rem;display:flex}.player-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.player-score-num{color:var(--accent);margin-left:auto;font-size:1.3rem;font-weight:800;line-height:1}.bar{border:1px solid var(--line);background:#0e1f16;border-radius:999px;height:7px;margin:.4rem 0 .25rem;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--accent), var(--sky));height:100%;transition:width .3s}.basket-meta{font-size:.72rem}.driver{color:var(--sky);white-space:nowrap;text-overflow:ellipsis;margin-top:.3rem;font-size:.76rem;overflow:hidden}.driver-off{color:var(--muted);opacity:.7}.icons{flex-wrap:wrap;gap:.3rem;margin-top:.3rem;font-size:.82rem;display:flex}.ic{line-height:1}.ic-off{opacity:.28;filter:grayscale()}.detail{grid-template-columns:auto 1fr;gap:.25rem .8rem;margin:.25rem 0 .5rem;font-size:.9rem;display:grid}.detail dt{color:var(--muted)}.detail dd{margin:0}.detail-h{margin:.5rem 0 .3rem}.chip-warn{color:var(--gold);border-color:#5c4a1d}.overlay{z-index:50;background:#040c08d1;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.win-card{background:var(--panel);border:1px solid var(--accent);text-align:center;box-shadow:var(--shadow);border-radius:16px;width:100%;max-width:360px;padding:2rem 2.5rem}.win-emoji{font-size:3rem}.win-standings{text-align:left;flex-direction:column;gap:.35rem;margin:1.2rem 0 0;padding:0;list-style:none;display:flex}.win-standings li{background:#ffffff0a;border-radius:10px;align-items:center;gap:.6rem;padding:.45rem .7rem;display:flex}.win-standings li.is-winner{border:1px solid var(--gold);background:#d4af3729}.win-standings .rank{color:var(--muted);text-align:center;width:1.2rem;font-weight:700}.win-standings .who{flex:1;font-weight:600}.win-standings .pts{color:var(--muted);font-variant-numeric:tabular-nums}.win-actions{gap:.6rem;margin-top:1.4rem;display:flex}.win-actions .btn{flex:1}.results-pill{z-index:49;background:var(--gold);color:#1a1407;cursor:pointer;box-shadow:var(--shadow);border:none;border-radius:999px;padding:.5rem 1rem;font-weight:700;position:fixed;top:.7rem;right:.7rem}.contest-card{background:var(--panel);border:1px solid var(--gold);text-align:center;box-shadow:var(--shadow);border-radius:16px;max-width:360px;padding:1.5rem 2rem}.contest-card h3{margin:0}.contest-rolls{justify-content:center;align-items:center;gap:1rem;margin:1rem 0;display:flex}.contest-side{opacity:.6;flex-direction:column;align-items:center;gap:.4rem;display:flex}.contest-side.won{opacity:1}.contest-side .die{width:44px;height:44px}.contest-name{font-size:.9rem;font-weight:700}.contest-vs{color:var(--muted);font-weight:700}.contest-result{color:var(--gold);margin:.5rem 0 1rem;font-weight:800}.start-screen{max-width:460px;margin:0 auto;padding:2.5rem 1.25rem}.start-screen h1{text-align:center;font-size:2rem}.start-screen>*{margin-bottom:.8rem}.start-screen label{display:block}.start-screen input,.start-screen select{border:1px solid var(--line);background:var(--panel);width:100%;color:var(--ink);border-radius:9px;padding:.55rem .7rem;font-size:1rem}.start-screen select{width:auto;min-width:5rem}.start-screen .btn,.start-screen button{width:100%}.theme-toggle{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem}.theme-toggle label{display:inline-block}.player-row input{margin-bottom:.4rem}.lobby-code{text-align:center;font-size:1.1rem}.lobby-slots{margin:.5rem 0;padding:0;list-style:none}.lobby-slots li{background:var(--panel);border:1px solid var(--line);border-radius:9px;align-items:center;gap:.5rem;margin-bottom:.4rem;padding:.55rem .8rem;display:flex}.lobby-slots .lobby-name{font-weight:600}.lobby-slots .lobby-open{color:var(--muted);font-style:italic}.lobby-slots button{width:auto;margin-left:auto}.lobby-join{gap:.5rem;display:flex}.lobby-join input{flex:1}.lobby-join .btn,.lobby-join button{width:auto}.you{color:var(--accent);font-size:.8rem}.host-crown{color:var(--gold)}button:not(.btn){appearance:none;border:1px solid var(--line);background:var(--panel2);color:var(--ink);cursor:pointer;border-radius:10px;padding:.5rem .9rem;font-weight:600}button:not(.btn):hover{border-color:var(--accent)}button:not(.btn):disabled{opacity:.45;cursor:not-allowed}@media (width<=560px){.actionbar-inner{flex-direction:column;align-items:stretch;gap:.5rem}.ab-actions{margin-left:0}.ab-actions .btn{flex:1}.ab-reaction{flex-direction:column;align-items:stretch}}.score-card{background:var(--panel);border:1px solid var(--accent);min-width:240px;max-width:360px;box-shadow:var(--shadow);border-radius:16px;padding:1.25rem 1.5rem}.score-card h3{margin:0 0 .6rem}.score-list{margin:0 0 .6rem;padding:0;list-style:none}.score-list li{border-bottom:1px solid #ffffff0d;justify-content:space-between;gap:1rem;padding:.25rem 0;display:flex}.score-pts{color:var(--accent);font-weight:700}.score-total{border-top:1px solid var(--line);margin:.5rem 0 1rem;padding-top:.5rem}.score-card .btn{width:100%}.detail-sub{margin:0 0 .3rem}.detail-sub strong{color:var(--accent);font-size:1.15rem}.pills{flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem;display:flex}.pill{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--muted);color:var(--ink);cursor:pointer;border-radius:999px;padding:.25rem .6rem;font-size:.82rem;font-weight:600}.pill:hover{border-color:var(--accent)}.pill.sel{border-color:var(--accent);background:#295338}.pill.cat-equipment{border-left-color:var(--sky)}.pill.cat-plus{border-left-color:var(--accent)}.pill.cat-help{border-left-color:#c084fc}.pill.cat-action{border-left-color:var(--gold)}.pill.cat-contest{border-left-color:#fb923c}.card-inspect{border:1px solid var(--line);background:#0e1f16;border-radius:10px;margin-bottom:.6rem;padding:.6rem .7rem}.ci-head{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.25rem;display:flex}.ci-head .muted{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-size:.72rem}.card-inspect p{color:#cfe3d5;margin:0;font-size:.85rem}.statuses{flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem;display:flex}.status-pill{border:1px solid var(--gold);color:var(--gold);background:#2a2410;border-radius:999px;padding:.2rem .55rem;font-size:.78rem}.swap-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.7rem 0 .35rem;font-size:.8rem}.swap-opts{flex-wrap:wrap;gap:.35rem;display:flex}.swap-opts .btn{width:auto}.swap-opp{margin-bottom:.4rem}.btn.swap-sel{outline:2px solid var(--accent);background:#295338}.swap-actions{gap:.5rem;margin-top:1rem;display:flex}.swap-actions .btn{flex:1;width:auto}.chains-burst{z-index:60;pointer-events:none;text-align:center;letter-spacing:.02em;color:var(--gold);text-shadow:0 2px #00000060,0 0 22px #fbbf2480;place-items:center;font-size:clamp(2rem,9vw,4rem);font-weight:900;animation:1.6s ease-out forwards chains-burst;display:grid;position:fixed;inset:0}@keyframes chains-burst{0%{opacity:0;transform:scale(.4)rotate(-4deg)}18%{opacity:1;transform:scale(1.12)rotate(2deg)}35%{opacity:1;transform:scale(1)rotate(0)}80%{opacity:1}to{opacity:0;transform:scale(1.05)}}.player.flash-chains{animation:1.4s ease-out flash-chains}@keyframes flash-chains{0%,to{box-shadow:none}15%{box-shadow:0 0 0 2px var(--accent), 0 0 22px var(--accent)}}.player.flash-break{animation:.6s ease-in-out flash-break}@keyframes flash-break{0%{box-shadow:0 0 0 2px var(--danger), 0 0 18px var(--danger);transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}to{box-shadow:none;transform:translate(0)}}.player-score-num{display:inline-block;position:relative}.player-score-num.score-pop{animation:.5s ease-out score-pop}@keyframes score-pop{0%{transform:scale(1)}40%{color:#fff;transform:scale(1.5)}to{transform:scale(1)}}.score-float{color:var(--accent);pointer-events:none;font-size:.9rem;font-weight:800;animation:1.2s ease-out forwards score-float;position:absolute;top:-.4rem;right:0}@keyframes score-float{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(-1.4rem)}}.ab-reaction.urgent{border-radius:10px;animation:1s ease-in-out infinite ab-urgent}@keyframes ab-urgent{0%,to{box-shadow:0 0 #fbbf2400}50%{box-shadow:0 0 0 2px var(--gold), 0 0 16px #fbbf2455}}.btn-lg{transition:transform 80ms,background .15s}.btn-lg:active{transform:scale(.93)}.card.card-exit{pointer-events:none;animation:.16s ease-in forwards card-out}@keyframes card-out{to{opacity:0;transform:translateY(-10px)scale(.9)}}@media (prefers-reduced-motion:reduce){.chains-burst,.player.flash-chains,.player.flash-break,.player-score-num.score-pop,.score-float,.ab-reaction.urgent,.card.card-exit{animation:none}}
