:root{--space-far:#03060f;--space-near:#0a1533;--felt:#00b4ff;--felt-dark:#041e49;--accent:#38bdf8;--accent-soft:#38bdf824;--accent-line:#38bdf857;--accent-glow:#38bdf873;--gold:#ffd54f;--text:#eaf4ff;--text-dim:#a8c8e8;--card-bg:#fff;--card-text:#111;--card-red:#e5383b;--danger:#ff8a80;--panel:#0a15338c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:16px/1.45 system-ui,Segoe UI,Roboto,sans-serif}[data-game=family-slave]{--accent:#22d3ee;--accent-soft:#22d3ee24;--accent-line:#22d3ee57;--accent-glow:#22d3ee73}[data-game=monopoly-th]{--accent:#34d399;--accent-soft:#34d39924;--accent-line:#34d39957;--accent-glow:#34d39973}[data-game=domino]{--accent:#a78bfa;--accent-soft:#a78bfa24;--accent-line:#a78bfa57;--accent-glow:#a78bfa73}[data-game=drinking-wheel]{--accent:#fb923c;--accent-soft:#fb923c24;--accent-line:#fb923c57;--accent-glow:#fb923c73}[data-game=hoo-hey-how]{--accent:#f472b6;--accent-soft:#f472b624;--accent-line:#f472b657;--accent-glow:#f472b673}[data-game=pok-deng]{--accent:#fb7185;--accent-soft:#fb718524;--accent-line:#fb718557;--accent-glow:#fb718573}[data-game=dummy]{--accent:#60a5fa;--accent-soft:#60a5fa24;--accent-line:#60a5fa57;--accent-glow:#60a5fa73}[data-game=uno]{--accent:#fbbf24;--accent-soft:#fbbf2424;--accent-line:#fbbf2457;--accent-glow:#fbbf2473}[data-game=challenge-cards]{--accent:#c084fc;--accent-soft:#c084fc24;--accent-line:#c084fc57;--accent-glow:#c084fc73}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{overscroll-behavior:none;min-height:100svh;color:var(--text);background:radial-gradient(900px 520px at 50% -8%, var(--accent-soft), transparent 62%), radial-gradient(ellipse at 50% 0%, var(--space-near), var(--space-far) 70%), var(--space-far);background-attachment:fixed;margin:0;transition:background .4s}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(var(--accent-line) 1px, transparent 1px), linear-gradient(90deg, var(--accent-line) 1px, transparent 1px);opacity:.07;background-size:46px 46px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000 0%,#0000 70%);mask-image:linear-gradient(#000 0%,#0000 70%)}#root{z-index:1;max-width:min(1100px,96vw);min-height:100svh;margin:0 auto;position:relative}button{font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border:1px solid var(--accent-line);color:var(--text);letter-spacing:.3px;text-shadow:0 1px #00000073;background:linear-gradient(#ffffff1a,#ffffff08);border-radius:10px;padding:12px 16px;font-weight:600;transition:border-color .18s,box-shadow .18s,transform 80ms;box-shadow:inset 0 1px #ffffff29,inset 0 -2px #00000059,0 3px 8px -4px #000c}button:hover:not(:disabled){border-color:var(--accent);box-shadow:inset 0 1px 0 #ffffff38, inset 0 -2px 0 #00000059, 0 4px 10px -4px #000000d9, 0 0 20px -4px var(--accent-glow)}button:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 2px 6px #00000080}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:linear-gradient(180deg, #ffe89c, var(--gold) 55%, #f0b81f);color:#2a1f00;text-shadow:0 1px #ffffff59;border-color:#ffd54fbf;font-weight:800;box-shadow:inset 0 1px #ffffffa6,inset 0 -2px #78550059,0 4px 10px -4px #000c,0 0 22px -6px #ffd54fbf}button.primary:hover:not(:disabled){border-color:#fff0b8;box-shadow:inset 0 1px #ffffffbf,inset 0 -2px #78550059,0 5px 12px -4px #000000d9,0 0 30px -4px #ffd54ff2}button.link{color:var(--text-dim);background:0 0;border:none;padding:6px;text-decoration:underline}button.link:hover:not(:disabled){box-shadow:none;color:var(--accent)}input,select{font:inherit;border:1px solid var(--accent-line);color:var(--text);background:#040a1a8c;border-radius:8px;width:100%;padding:10px 12px;transition:border-color .18s,box-shadow .18s}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft), 0 0 18px -6px var(--accent-glow);outline:none}label{color:var(--text-dim);flex-direction:column;gap:6px;margin:12px 0;font-size:14px;display:flex}.screen{flex-direction:column;gap:12px;padding:24px 20px 40px;display:flex}.seat-list li,.opponent,.field,.round-results,.game-card,.monopoly-player,.space-detail,.property-row,.domino-chain,.result-banner,.dare-card,.stats-row,.hoo-board,.hoo-roll-result,.dummy-meld{border:1px solid var(--accent-line);box-shadow:inset 0 1px 0 #ffffff1f, inset 0 -1px 0 #0006, 0 10px 22px -14px #000000e6, 0 0 22px -14px var(--accent-glow);-webkit-backdrop-filter:blur(6px);position:relative}.field:before,.game-card:before,.domino-chain:before,.hoo-board:before,.dare-card:before,.result-banner:before{content:"";pointer-events:none;background:linear-gradient(var(--accent), var(--accent)) top left / 14px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) top left / 2px 14px no-repeat, linear-gradient(var(--accent), var(--accent)) bottom right / 14px 2px no-repeat, linear-gradient(var(--accent), var(--accent)) bottom right / 2px 14px no-repeat;opacity:.75;position:absolute;inset:5px}h1{letter-spacing:.5px;text-shadow:0 1px 0 #0000008c, 0 2px 0 #00000073, 0 3px 8px #0009, 0 0 24px var(--accent-glow);font-weight:800}h2{letter-spacing:.3px;text-shadow:0 1px 0 #00000080, 0 2px 6px #00000080, 0 0 18px var(--accent-glow);font-weight:800}.turn-banner{letter-spacing:.3px;text-shadow:0 1px 0 #00000080, 0 0 16px var(--accent-glow);font-weight:700}.screen>h1:after{content:"";background:linear-gradient(90deg, var(--accent), transparent);border-radius:2px;width:64px;height:2px;margin-top:8px;display:block}.connection-banner{z-index:50;text-align:center;background:var(--gold);color:#2a1f00;padding:10px 16px;font-size:14px;font-weight:600;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #00000059}.connection-banner-detail{opacity:.75;font-weight:400}.in-game-bar{z-index:40;align-items:center;gap:6px;display:flex;position:fixed;top:10px;left:10px}.in-game-bar-button{letter-spacing:1.5px;border:1px solid var(--accent-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.72;background:#0a1533b8;border-radius:999px;padding:6px 12px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;transition:opacity .15s,box-shadow .15s;box-shadow:0 2px 10px #0006}.in-game-bar-button:hover,.in-game-bar-button:focus-visible{opacity:1;box-shadow:0 0 0 1px var(--accent-line), 0 0 14px var(--accent-glow)}.in-game-bar-prompt{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a1533eb;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:700}.in-game-bar-danger{border:1px solid var(--danger);color:#2a0b0b;background:var(--danger);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:700}.sound-toggle{z-index:40;border:1px solid var(--accent-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.7;background:#0a1533b8;border-radius:50%;width:38px;min-width:0;height:38px;padding:0;font-size:17px;line-height:1;transition:opacity .15s,box-shadow .15s;position:fixed;top:10px;right:10px;box-shadow:0 2px 10px #0006}.sound-toggle:hover,.sound-toggle:focus-visible{opacity:1;box-shadow:0 0 0 1px var(--accent-line), 0 0 14px var(--accent-glow)}.sound-toggle[aria-pressed=false]{opacity:.45}h1{margin:0 0 4px;font-size:28px}h2{margin:0 0 4px}.subtitle{color:var(--text-dim);margin:0;font-size:14px}.error{color:var(--danger);margin:4px 0;font-size:14px}.how-to-play{flex-flow:wrap;gap:10px;display:flex}.how-to-play-section{border-left:3px solid var(--gold);background:#ffffff0f;border-radius:8px;flex:1 1 0;min-width:0;padding:10px 8px}.how-to-play-toggle{text-align:left;width:100%;color:var(--gold);white-space:nowrap;text-overflow:ellipsis;padding:0;font-size:13px;font-weight:800;text-decoration:none;overflow:hidden}.how-to-play-steps{color:var(--text-dim);flex-direction:column;gap:8px;margin:10px 0 0;padding-left:20px;font-size:14px;display:flex}.tabs{gap:8px;display:flex}.tabs button{flex:1}.tabs button.active{background:var(--gold);color:#2a1f00;font-weight:700}.room-code{font-size:18px}.room-code span{letter-spacing:6px;color:var(--gold);text-shadow:0 1px #0009,0 2px #00000073,0 0 26px #ffd54fbf;font-family:ui-monospace,SF Mono,Cascadia Mono,Consolas,monospace;font-size:32px;font-weight:800}.seat-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.seat-list li{background:var(--panel);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;display:flex}.seat-list li.disconnected{opacity:.5}.game-header{color:var(--text-dim);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.badge{border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700}.badge.revolution{background:var(--gold);color:#2a1f00}.opponents{flex-wrap:wrap;gap:8px;display:flex}.opponent{background:var(--panel);border-radius:10px;flex-direction:column;flex:140px;gap:2px;padding:8px 10px;font-size:13px;display:flex}.opponent.current-turn{outline:2px solid var(--gold)}.opponent.finished{opacity:.65}.opponent .name{font-weight:600}.passed-badge{background:#ffffff26;border-radius:999px;align-self:flex-start;padding:1px 8px;font-size:11px}.field{background:var(--panel);border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;min-height:100px;padding:12px;display:flex}.turn-banner{text-align:center;color:var(--gold);margin:0;font-weight:800}.hand{flex-wrap:wrap;justify-content:center;gap:6px;padding:8px 0;display:flex}.actions{gap:10px;display:flex}.end-of-round-choice{flex-direction:column;gap:10px;margin-top:14px;display:flex}.end-of-round-choice .subtitle{text-align:center}.actions button{flex:1}.playing-card{background:var(--card-bg);width:52px;height:74px;color:var(--card-text);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:0;font-weight:800;transition:transform .1s;display:flex;box-shadow:0 2px 4px #0000004d}.playing-card.red{color:var(--card-red)}.playing-card.joker{color:#8e44ad}.playing-card.selected{outline:3px solid var(--gold);transform:translateY(-10px)}.playing-card .rank{font-size:16px}.playing-card .suit{font-size:18px}.playing-card.face-down{background:repeating-linear-gradient(45deg,#1c3f8a,#1c3f8a 4px,#274c9e 4px 8px)}.uno-card .uno-face{color:#14202e;letter-spacing:-1px;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:80%;height:62%;font-size:26px;font-weight:900;line-height:1;display:flex}.uno-color-chip{border:2px solid #ffffffd9;border-radius:999px;padding:2px 12px;font-weight:800;display:inline-block}.round-results{background:var(--panel);border-radius:10px;margin:0;padding:16px 16px 16px 36px}.round-results li{padding:4px 0}.leaderboard-table{border-collapse:collapse;width:100%;font-size:14px}.leaderboard-table th,.leaderboard-table td{text-align:center;border-bottom:1px solid #ffffff1a;padding:8px 6px}.leaderboard-table th{color:var(--text-dim);font-weight:600}.leaderboard-table td:first-child,.leaderboard-table th:first-child{text-align:left}.back-link{align-self:flex-start;margin:-8px 0 4px -6px}button.back-link{background:var(--gold);color:#2a1f00;border-radius:10px;padding:8px 14px;font-weight:700;text-decoration:none}.game-select-screen{text-align:center;align-items:center;padding-top:48px}.game-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;width:100%;margin-top:16px;display:grid}.game-card{text-align:center;background:var(--panel);border-radius:16px;flex-direction:column;align-items:center;gap:8px;padding:18px 14px;display:flex;position:relative;overflow:hidden}.game-card:after{content:"";pointer-events:none;background:linear-gradient(115deg,#0000 35%,#ffffff29 50%,#0000 65%);transition:transform .55s;position:absolute;inset:0;transform:translate(-120%)}.game-card:hover:after{transform:translate(120%)}.game-card:hover:not(:disabled){border-color:var(--accent);box-shadow:inset 0 1px 0 #ffffff14, 0 0 26px -8px var(--accent-glow)}.game-card .emoji{filter:drop-shadow(0 0 12px var(--accent-glow));font-size:40px;line-height:1}.game-card .info{flex-direction:column;gap:2px;display:flex}.game-card .info strong{font-size:15px;display:block}.game-card .info span{color:var(--text-dim);font-size:12px}.monopoly-screen{padding-left:8px;padding-right:8px}.monopoly-players{flex-wrap:wrap;gap:6px;display:flex}.monopoly-player{background:var(--panel);border-radius:999px;outline:2px solid #0000;align-items:center;gap:6px;padding:4px 10px 4px 6px;font-size:12px;transition:outline-color .25s,box-shadow .25s,transform .25s;display:flex}.monopoly-player.current-turn{outline-color:var(--gold);box-shadow:0 0 12px -2px var(--accent-glow);transform:translateY(-2px)}.monopoly-player.bankrupt{opacity:.45}.monopoly-player .cash{font-variant-numeric:tabular-nums;color:var(--text-dim)}.token{border:1px solid #fff9;border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.board-grid{aspect-ratio:1;background:#ffffff0f;border-radius:10px;grid-template-rows:repeat(11,1fr);grid-template-columns:repeat(11,1fr);gap:1px;width:100%;display:grid;overflow:hidden}.board-cell{background:var(--felt-dark);color:var(--text);cursor:pointer;border:none;border-radius:0;flex-direction:column;justify-content:center;align-items:center;padding:1px;font-size:8px;line-height:1.1;display:flex;position:relative;overflow:hidden}.board-cell.selected{outline:2px solid var(--gold);outline-offset:-2px;z-index:1}.board-cell .color-bar{height:4px;position:absolute;top:0;left:0;right:0}.board-cell .cell-label{text-align:center;word-break:break-word;margin-top:4px}.board-cell .cell-owner-dot{color:#fff;border-radius:3px;padding:0 1px;font-size:7px}.board-cell .cell-tokens{flex-wrap:wrap;justify-content:center;gap:1px;display:flex;position:absolute;bottom:1px}.board-cell .cell-tokens .token{width:6px;height:6px}.board-center{background:var(--felt);grid-area:2/2/11/11;justify-content:center;align-items:center;display:flex}.board-title{letter-spacing:2px;color:#ffd54f59;text-transform:uppercase;font-size:28px;font-weight:800}.space-detail{background:var(--panel);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.space-detail .color-bar{border-radius:4px;flex:none;width:14px;height:14px}.dice-display{text-align:center;margin:0;font-size:20px;font-weight:700}.my-properties{flex-direction:column;gap:6px;display:flex}.property-row{background:var(--panel);border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.property-row .color-bar{border-radius:3px;flex:none;width:10px;height:10px}.property-row .prop-name{flex:1;min-width:60px}.property-row button{padding:6px 10px;font-size:11px}.domino-screen{padding-left:8px;padding-right:8px}.domino-chain{background:var(--panel);border-radius:12px;justify-content:center;min-height:60px;padding:16px;display:flex;overflow:auto}.domino-chain-track{flex:none;position:relative}.domino-chain-links{pointer-events:none;position:absolute;top:0;left:0}.domino-chain-links path{stroke:#ffffff80;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5 5;fill:none}.domino-tile.latest{outline:3px solid var(--gold);outline-offset:1px;z-index:2;animation:1.4s ease-in-out 2 domino-latest-pulse;box-shadow:0 0 0 3px #ffd54f59,0 0 14px 4px #ffd54f8c}@keyframes domino-latest-pulse{0%,to{box-shadow:0 0 0 3px #ffd54f59,0 0 14px 4px #ffd54f8c}50%{box-shadow:0 0 0 5px #ffd54f8c,0 0 22px 8px #ffd54fcc}}@keyframes card-land{0%{opacity:0;transform:translateY(-30px)rotate(-9deg)scale(1.08)}to{opacity:1;transform:none}}.card-land{animation:.3s cubic-bezier(.2,.9,.3,1.2) both card-land;display:inline-block}@keyframes rise-in{0%{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}.turn-banner,.result-banner{animation:.3s both rise-in}@keyframes token-arrive{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.35)}to{transform:scale(1)}}.token-arrive{animation:.34s ease-out both token-arrive}@keyframes dice-settle{0%{opacity:0;transform:rotate(-18deg)scale(.7)}55%{opacity:1;transform:rotate(9deg)scale(1.15)}to{transform:none}}.dice-settle{animation:.4s ease-out both dice-settle}@media (prefers-reduced-motion:reduce){.domino-tile.latest,.card-land,.turn-banner,.result-banner,.token-arrive,.dice-settle{animation:none}}.boneyard-count{text-align:center;color:var(--text-dim);margin:0;font-size:12px}.domino-tile{cursor:default;border:1px solid #00000059;border-radius:6px;flex-direction:row;flex:none;padding:0;display:flex;overflow:hidden;box-shadow:0 2px 4px #00000059}.domino-tile.vertical{flex-direction:column;justify-content:space-between}button.domino-tile{cursor:pointer}.domino-tile .half{background:var(--card-bg);border-right:2px solid var(--felt-dark);justify-content:center;align-items:center;width:42px;height:42px;padding:4px;display:flex}.domino-tile.small .half{width:28px;height:28px;padding:2px}.domino-tile.small .pip{max-width:5px;max-height:5px}.domino-tile .half:last-child{border-right:none}.domino-tile.vertical .half{border-right:none;border-bottom:2px solid var(--felt-dark)}.domino-tile.vertical .half:last-child{border-bottom:none}.pip-grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:1px;width:100%;height:100%;display:grid}.pip{border-radius:50%;place-self:center;width:100%;max-width:7px;height:100%;max-height:7px}.pip.on{background:var(--card-text)}.domino-tile.selected{outline:3px solid var(--gold);transform:translateY(-8px)}.domino-tile.faded{opacity:.4}.wheel-wrap{aspect-ratio:1;width:min(340px,88vw);margin:8px auto;position:relative}.wheel-svg{filter:drop-shadow(0 6px 10px #0006);width:100%;height:100%;transition:transform 3.2s cubic-bezier(.15,.75,.2,1);display:block}.wheel-pointer{border-left:14px solid #0000;border-right:14px solid #0000;border-top:24px solid var(--gold);z-index:3;filter:drop-shadow(0 2px 2px #00000073);width:0;height:0;position:absolute;top:-4px;left:50%;transform:translate(-50%)}.wheel-center{z-index:2;pointer-events:none;width:32%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.beer-glass{filter:drop-shadow(0 3px 5px #00000080);width:100%;height:auto}.spinner-row{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.target-pick{background:#ffffff1a;border-radius:999px;padding:8px 16px}.target-pick.picked{outline:2px solid var(--gold)}.result-banner{background:var(--panel);text-align:center;border-radius:14px;padding:18px;font-size:17px;font-weight:700}.dare-card{background:var(--panel);text-align:center;border-radius:14px;padding:20px;font-size:15px;line-height:1.6}.stats-row{background:var(--panel);border-radius:10px;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.stats-row .rank{color:var(--gold);width:28px;font-weight:800}.hoo-board{background:var(--panel);border-radius:12px;padding:14px}.hoo-chip-row{justify-content:center;gap:8px;margin-bottom:12px;display:flex}.hoo-chip{background:#ffffff1f;border:2px solid #0000;border-radius:999px;width:48px;height:48px;font-weight:800}.hoo-chip.active{background:var(--gold);color:#2a1f00;border-color:#fff}.hoo-symbol-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.hoo-symbol-cell{background:#ffffff14;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:12px 4px;display:flex;position:relative}.hoo-symbol-emoji{font-size:28px}.hoo-symbol-label{color:var(--text-dim);font-size:13px}.hoo-symbol-bet{background:var(--gold);color:#2a1f00;border-radius:999px;padding:2px 7px;font-size:12px;font-weight:800;position:absolute;top:4px;right:4px}.hoo-roll-result{text-align:center;background:var(--panel);border-radius:12px;justify-content:center;gap:16px;padding:16px;font-size:36px;display:flex}.hoo-roll-die{color:var(--text-dim);font-size:14px}.hoo-win{color:#7ee787;font-weight:800}.hoo-lose{color:var(--danger);font-weight:800}.dummy-piles{justify-content:center;gap:24px;display:flex}.dummy-pile-group{flex-direction:column;align-items:center;gap:4px;display:flex}.dummy-pile-group button.link{padding:0;text-decoration:none}.dummy-melds{flex-direction:column;gap:8px;display:flex}.dummy-meld{background:var(--panel);cursor:pointer;border-radius:10px;padding:8px 12px}
