:root{color:#f8fafc;background:#0f1020;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 20% 20%,#a855f73d,#0000 28rem),radial-gradient(circle at 80% 20%,#22c55e2e,#0000 24rem),#0f1020;min-width:320px;min-height:100vh;margin:0}button{color:#f8fafc;cursor:pointer;background:#ffffff1f;border:0;border-radius:999px;padding:.8rem 1rem;font-weight:800;transition:transform .16s,background .16s}button:hover:not(:disabled){background:#ffffff2e;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.5}button.primary{color:#111827;background:linear-gradient(135deg,#facc15,#fb7185,#a855f7)}button.selected{color:#111827;background:#facc15}input,select{color:#f8fafc;width:100%;font:inherit;background:#0f172ac7;border:1px solid #ffffff29;border-radius:16px;padding:.78rem .9rem;font-weight:700}input:focus,select:focus{outline-offset:2px;outline:2px solid #facc15b8}select option{color:#0f172a}.app-shell{grid-template-columns:minmax(300px,380px) minmax(560px,1fr);gap:1rem;min-height:100vh;padding:1rem;display:grid}.game-panel{flex-direction:column;gap:1rem;min-width:0;display:flex}.game-stage{grid-template-columns:minmax(520px,1fr) minmax(290px,360px);grid-template-areas:"board controls";align-items:start;gap:1rem;min-width:0;display:grid}.title-card,.controls-card,.message-card,.players-card,.board-controls-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0f172ac7;border:1px solid #ffffff1f;border-radius:24px;padding:1.1rem;box-shadow:0 24px 80px #0000003d}.eyebrow{color:#facc15;letter-spacing:.08em;text-transform:uppercase;margin:0 0 .4rem;font-size:.78rem;font-weight:900}h1{margin:0;font-size:clamp(2rem,4vw,3rem);line-height:.95}h2{margin:0;font-size:clamp(1.35rem,3vw,2rem);line-height:1}.subtitle{color:#cbd5e1;line-height:1.5}.player-select,.button-row{flex-wrap:wrap;gap:.6rem;display:flex}.player-select button,.button-row button{padding:.72rem .9rem}.board-controls-card{grid-area:controls;gap:.85rem;max-height:calc(100vh - 2rem);display:grid;position:sticky;top:1rem;overflow-y:auto}.board-button-row{grid-template-columns:1fr;align-items:stretch;display:grid}.roll-button{letter-spacing:.02em;width:100%;min-height:64px;font-size:1.18rem;box-shadow:0 14px 34px #facc1533}.turn-box,.dice-display,.dice-box{background:#ffffff14;border:2px solid #ffffff14;border-radius:18px;justify-content:space-between;align-items:center;gap:1rem;margin:0;padding:.75rem .9rem;display:flex}.dice-display{background:linear-gradient(135deg,#facc1529,#a855f71f);justify-content:flex-start;min-height:96px}.dice-display.rolling{border-color:#facc15bf;box-shadow:0 0 28px #facc1538}.dice-face{background:#f8fafc;border:3px solid #111827;border-radius:15px;flex:0 0 64px;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:5px;width:64px;height:64px;padding:8px;display:grid;box-shadow:inset 0 -5px #0f172a24,0 10px 24px #0000004d}.dice-display.rolling .dice-face{animation:.7s cubic-bezier(.36,.07,.19,.97) both diceShake}.pip{opacity:0;background:#111827;border-radius:999px;width:100%;height:100%;transition:opacity .14s,transform .14s;display:block;transform:scale(.35)}.pip.visible{opacity:1;transform:scale(1)}.dice-readout{min-width:0}.dice-readout span,.turn-box span,.dice-box span,.card-readout span{color:#94a3b8;text-transform:uppercase;font-size:.8rem;font-weight:800}.dice-readout strong{font-size:1.8rem;line-height:1;display:block}.dice-readout p{color:#fef3c7;margin:.32rem 0 0;font-weight:900;line-height:1.25}.message-card p,.player-chip p,.card-readout p{color:#cbd5e1;margin:.25rem 0 0}.card-readout{background:#facc151f;border-radius:18px;margin-top:.9rem;padding:.9rem}.player-setup-form,.room-lobby{gap:.85rem;display:grid}.setup-field{gap:.42rem;display:grid}.setup-field span{color:#94a3b8;letter-spacing:.05em;text-transform:uppercase;font-size:.78rem;font-weight:900}.form-error,.form-note{border-radius:14px;margin:0;padding:.72rem .85rem;line-height:1.35}.room-player-list{max-height:30vh}.players-card{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;max-height:42vh;display:grid;overflow-y:auto}.player-chip{background:#ffffff12;border-left:6px solid;border-radius:18px;align-items:center;gap:.75rem;padding:.75rem;display:flex}.player-chip.active{background:#facc151f;outline:2px solid #facc15db;animation:2.2s ease-in-out infinite chipPulse}@keyframes chipPulse{0%,to{box-shadow:none;outline-color:#facc15e6}50%{outline-color:#facc1559;box-shadow:0 0 12px #facc152e}}.token-dot{border:2px solid #fff;border-radius:999px;flex:none;width:18px;height:18px}.board-wrap{background:#0206178c;border:1px solid #ffffff1f;border-radius:28px;grid-area:board;place-items:center;min-width:0;min-height:0;display:grid;overflow:hidden}.phaser-board{aspect-ratio:4/3;place-items:center;width:min(100%,133.3vh - 2.666rem);max-width:1280px;display:grid}.phaser-board canvas{border-radius:22px;max-width:100%;max-height:calc(100vh - 2rem);display:block;box-shadow:0 24px 90px #00000073;width:100%!important;height:auto!important}.card-reveal{z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020617b8;place-items:center;padding:1.2rem;animation:.18s ease-out both hitOverlayIn;display:grid;position:fixed;inset:0}.hit-card{color:#111827;text-align:center;transform-origin:50%;background:radial-gradient(circle at 0 0,#ffffffeb,#0000 10rem),linear-gradient(135deg,#facc15,#fb7185 52%,#a855f7);border:4px solid #facc15;border-radius:28px;width:min(92vw,520px);max-height:92vh;padding:1.1rem;animation:.42s cubic-bezier(.18,1.35,.32,1) both hitCardPop,1.3s ease-in-out infinite alternate hitCardGlow;overflow-y:auto;box-shadow:0 28px 110px #000000a6}.hit-label{color:#fef3c7;letter-spacing:.11em;text-transform:uppercase;background:#111827;border-radius:999px;margin-bottom:.75rem;padding:.38rem .7rem;font-size:.78rem;font-weight:1000;display:inline-flex}.hit-card-art{object-fit:contain;background:#ffffff59;border:3px solid #111827db;border-radius:18px;width:min(100%,360px);max-height:46vh;margin:0 auto .8rem;display:block;box-shadow:0 16px 34px #00000040}.hit-card-sheet-preload{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.hit-effect-status{color:#e2e8f0;text-transform:uppercase;background:#0f172ac7;border:1px solid #fff3;border-radius:999px;align-self:center;padding:.35rem .7rem;font-size:.75rem;font-weight:900;display:inline-flex}.hit-effect-status.applied{color:#bbf7d0;background:#14532dc7;border-color:#4ade80a6}.hit-card-missing-art{color:#111827;background:#fee2e2e6;border:3px dashed #111827c7;border-radius:18px;gap:.35rem;margin:0 auto .8rem;padding:1rem;font-weight:900;display:grid}.hit-card-missing-art span{color:#7f1d1d;word-break:break-all;font-family:monospace;font-size:.82rem}.hit-card h2{color:#111827;font-size:clamp(1.55rem,5vw,2.55rem)}.hit-card p{color:#1f2937;font-size:1.08rem;font-weight:800;line-height:1.35}.hit-card small{color:#fef3c7;text-transform:uppercase;background:#111827db;border-radius:16px;margin-top:.8rem;padding:.65rem;font-weight:1000;display:block}.hit-card-close{color:#f8fafc;background:#111827;margin-top:1rem}@keyframes diceShake{0%{transform:translate(0,0)rotate(0)}15%{transform:translate(-7px,-4px)rotate(-16deg)}30%{transform:translate(8px,3px)rotate(18deg)}45%{transform:translate(-6px,4px)rotate(-12deg)}60%{transform:translate(6px,-3px)rotate(14deg)}75%{transform:translate(-3px,2px)rotate(-7deg)}to{transform:translate(0,0)rotate(0)}}@keyframes hitOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes hitCardPop{0%{opacity:0;transform:translateY(18px)scale(.82)rotate(-2deg)}70%{opacity:1;transform:translateY(-4px)scale(1.04)rotate(1deg)}to{opacity:1;transform:translateY(0)scale(1)rotate(0)}}@keyframes hitCardGlow{0%{box-shadow:0 28px 110px #000000a6,0 0 #facc1500}to{box-shadow:0 28px 110px #000000a6,0 0 36px #facc159e}}.btn-spinner{vertical-align:middle;border:2.5px solid #11182759;border-top-color:#111827;border-radius:999px;width:14px;height:14px;margin-right:6px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.winner-overlay{z-index:2000;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#020617e0;place-items:center;padding:1.2rem;animation:.28s ease-out both hitOverlayIn;display:grid;position:fixed;inset:0;overflow:hidden}.winner-card{text-align:center;background:radial-gradient(circle at 50% 0,#facc1529,#0000 55%),#0f172afa;border:3px solid #facc15;border-radius:32px;gap:1rem;width:min(92vw,460px);padding:2rem 1.6rem;animation:.5s cubic-bezier(.18,1.35,.32,1) both hitCardPop;display:grid;position:relative;box-shadow:0 32px 120px #000000b3}.winner-trophy{border-radius:999px;place-items:center;width:72px;height:72px;margin:0 auto;font-size:2rem;animation:1.8s ease-in-out infinite winnerBounce;display:grid}@keyframes winnerBounce{0%,to{transform:translateY(0)scale(1)}45%{transform:translateY(-6px)scale(1.06)}}.winner-name{letter-spacing:-.02em;margin:0;font-size:clamp(2rem,9vw,3rem);font-weight:900;line-height:1}.winner-phrase{color:#94a3b8;margin:0;font-size:.98rem;line-height:1.5}.winner-badges{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.winner-badge-pill{color:#fde68a;letter-spacing:.03em;text-transform:uppercase;background:#facc1521;border-radius:999px;align-items:center;gap:.35rem;padding:.38rem .78rem;font-size:.8rem;font-weight:900;display:inline-flex}.winner-actions{margin-top:.25rem}.winner-restart-btn{letter-spacing:.04em;width:100%;min-height:56px;font-size:1.1rem}.winner-leaves{pointer-events:none;position:absolute;inset:0;overflow:hidden}.winner-leaf{-webkit-user-select:none;user-select:none;animation:linear infinite leafFall;position:absolute;top:-2rem}@keyframes leafFall{0%{opacity:0;transform:translateY(-40px)rotate(0)}10%{opacity:1}90%{opacity:.7}to{opacity:0;transform:translateY(105vh)rotate(540deg)}}@media (prefers-reduced-motion:reduce){.dice-display.rolling .dice-face,.card-reveal,.hit-card,.winner-overlay,.winner-card,.winner-trophy,.winner-leaf,.player-chip.active,.btn-spinner{animation:none}}@media (width<=1100px){.app-shell{grid-template-columns:1fr}.game-stage{order:-1;grid-template-columns:1fr;grid-template-areas:"board""controls"}.board-controls-card{max-height:none;position:static}.phaser-board{width:min(100%,96vw)}.players-card{max-height:none}.board-button-row,.player-select{justify-content:center}.roll-button{width:100%}}@media (width<=680px){.app-shell{gap:.6rem;padding:.6rem}h1{font-size:clamp(1.5rem,7vw,2.2rem)}.title-card,.controls-card,.message-card,.players-card,.board-controls-card{border-radius:18px;padding:.85rem}button{padding:.88rem 1rem;font-size:.95rem}.roll-button{border-radius:18px;min-height:72px;font-size:1.25rem}.dice-display{min-height:80px}.dice-face{flex:0 0 56px;width:56px;height:56px}.players-card{grid-template-columns:1fr}.player-chip{padding:.6rem .75rem}.winner-card{border-radius:24px;width:96vw;padding:1.5rem 1.1rem}.winner-name{font-size:clamp(1.6rem,9vw,2.4rem)}.winner-trophy{width:60px;height:60px;font-size:1.6rem}.hit-card{width:96vw;padding:.9rem}.message-card{padding:.75rem .85rem}}html,body,#root{max-width:100%;overflow-x:hidden}body{min-width:0}.app-shell{width:100%;max-width:100vw;overflow-x:hidden}.app-shell>*,.game-stage>*,.board-controls-card>*,.turn-box>*,.dice-display>*{min-width:0}.game-stage{grid-template-columns:minmax(0,1fr) clamp(260px,24vw,340px);overflow-x:hidden}.board-wrap,.board-controls-card,.phaser-board,.phaser-board canvas,.turn-box,.dice-display,.dice-box,.player-chip{min-width:0;max-width:100%}.turn-box,.dice-display{flex-wrap:wrap}.turn-box strong,.dice-readout,.dice-readout p,.player-chip p{overflow-wrap:anywhere;word-break:break-word}.app-shell :where(button,a,input,select,[tabindex]):focus-visible{outline-offset:3px;outline:3px solid #f1d36d}@media (prefers-reduced-motion:reduce){.app-shell *,.app-shell :before,.app-shell :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=1100px){.app-shell{grid-template-columns:minmax(0,1fr);padding:.7rem}.game-stage{grid-template-columns:minmax(0,1fr)}.phaser-board{width:100%}}@media (width<=520px){.app-shell{padding:.35rem}.title-card,.controls-card,.message-card,.players-card,.board-controls-card{border-radius:18px;padding:.7rem}.dice-face{flex-basis:50px;width:50px;height:50px}.dice-display,.turn-box{gap:.55rem;padding:.6rem}}:root{--hl-bg:#07110c;--hl-bg-deep:#030705;--hl-surface:#0a1811e0;--hl-surface-strong:#0d1f16f5;--hl-surface-soft:#ffffff0e;--hl-border:#e8ffd821;--hl-border-strong:#d9ff7952;--hl-text:#f5f7ef;--hl-muted:#a8b6aa;--hl-muted-strong:#cbd5cc;--hl-lime:#c8ff62;--hl-lime-strong:#a9ee35;--hl-gold:#ffd869;--hl-purple:#b890ff;--hl-rose:#ff8ca3;--hl-danger:#ff7c91;--hl-radius-sm:12px;--hl-radius-md:18px;--hl-radius-lg:26px;--hl-shadow-soft:0 16px 48px #00000047;--hl-shadow-board:0 28px 90px #0000007a;--hl-control-height:48px;color:var(--hl-text);background:var(--hl-bg)}html{background:var(--hl-bg-deep)}body{color:var(--hl-text);background:radial-gradient(circle at 12% 6%, #c8ff621c, transparent 30rem), radial-gradient(circle at 84% 4%, #b890ff1f, transparent 28rem), linear-gradient(180deg, #0a1710 0%, var(--hl-bg) 42%, var(--hl-bg-deep) 100%)}body:before{content:"";z-index:-1;pointer-events:none;opacity:.28;background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:42px 42px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 78%);mask-image:linear-gradient(#000,#0000 78%)}button,input,select{font:inherit}button{min-height:var(--hl-control-height);border:1px solid var(--hl-border);border-radius:var(--hl-radius-sm);color:var(--hl-text);letter-spacing:-.01em;background:#ffffff12;padding:.72rem 1rem;font-size:.9rem;font-weight:800;transition:transform .16s,border-color .16s,background .16s,box-shadow .16s;box-shadow:inset 0 1px #ffffff0a}button:hover:not(:disabled){background:#ffffff1b;border-color:#e8ffd840;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)scale(.985)}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #c8ff62ad}button.primary{color:#122006;background:linear-gradient(135deg, var(--hl-lime) 0%, var(--hl-gold) 100%);border-color:#c8ff62b8;box-shadow:0 10px 28px #adf23d33,inset 0 1px #ffffffb3}button.primary:hover:not(:disabled){background:linear-gradient(135deg,#d7ff82 0%,#ffe28d 100%);border-color:#f5ffd0e6;box-shadow:0 14px 34px #adf23d47,inset 0 1px #ffffffbf}button.selected{color:#17240d;background:var(--hl-lime);border-color:#c8ff62b8}input,select{border:1px solid var(--hl-border);border-radius:var(--hl-radius-sm);min-height:50px;color:var(--hl-text);background:#0108049e;padding:.75rem .9rem;font-weight:700;box-shadow:inset 0 1px #ffffff06}input::placeholder{color:#758178}input:focus,select:focus{border-color:#c8ff628f;outline:none;box-shadow:0 0 0 3px #c8ff621c}.app-shell{gap:clamp(.75rem,1.15vw,1.1rem);width:min(100%,1680px);margin-inline:auto;padding:clamp(.72rem,1.3vw,1.25rem)}.title-card,.controls-card,.message-card,.players-card,.board-controls-card{border-color:var(--hl-border);border-radius:var(--hl-radius-lg);color:var(--hl-text);background:linear-gradient(180deg, #ffffff07, #fff0), var(--hl-surface);box-shadow:var(--hl-shadow-soft);-webkit-backdrop-filter:blur(18px)saturate(120%);backdrop-filter:blur(18px)saturate(120%)}.title-card{background:radial-gradient(circle at 92% 10%,#c8ff6224,#0000 16rem),radial-gradient(circle at 70% 90%,#b890ff1f,#0000 15rem),linear-gradient(150deg,#102819fa,#08140ef5);border-color:#c8ff6233;padding:clamp(1.35rem,2.8vw,2.35rem);position:relative;overflow:hidden}.title-card:after{content:"";pointer-events:none;border:1px solid #c8ff6229;border-radius:50%;width:15rem;height:15rem;position:absolute;bottom:-7rem;right:-5rem;box-shadow:0 0 0 2.8rem #c8ff6206,0 0 0 5.6rem #b890ff05}.eyebrow{color:var(--hl-lime);letter-spacing:.13em;font-size:.7rem}h1{letter-spacing:-.055em;text-wrap:balance;max-width:13ch;font-size:clamp(2.2rem,5vw,4.5rem);line-height:.92}h2{letter-spacing:-.035em}.subtitle{max-width:58ch;color:var(--hl-muted-strong);font-size:clamp(.96rem,1.4vw,1.06rem);line-height:1.62}.app-shell:not(:has(.game-stage)){grid-template-columns:minmax(0,1.08fr) minmax(330px,.92fr);align-items:start;min-height:100svh;padding-top:clamp(1rem,4vh,3rem);padding-bottom:clamp(1rem,4vh,3rem)}.app-shell:not(:has(.game-stage)) .game-panel{grid-column:1/-1;grid-template-columns:minmax(0,1.08fr) minmax(330px,.92fr);align-items:start;gap:clamp(.8rem,1.4vw,1.2rem);display:grid}.app-shell:not(:has(.game-stage)) .title-card{flex-direction:column;grid-row:span 2;justify-content:flex-end;min-height:min(66vh,590px);display:flex}:is(.app-shell:not(:has(.game-stage)) .controls-card,.app-shell:not(:has(.game-stage)) .room-lobby){align-self:stretch;padding:clamp(1.1rem,2vw,1.55rem)}.app-shell:not(:has(.game-stage)) .game-panel>.message-card:not([aria-label=Game\ rules]){border-radius:var(--hl-radius-md);box-shadow:none;grid-column:2;padding:.9rem 1rem}.app-shell:not(:has(.game-stage)) .game-panel>[aria-label=Game\ rules]{border-radius:var(--hl-radius-md);box-shadow:none;background:#ffffff09;grid-column:2;padding:1rem 1.1rem}.app-shell:not(:has(.game-stage)) .game-panel>[aria-label=Game\ rules] p{font-size:.88rem;line-height:1.45}.controls-card .button-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.controls-card .button-row .primary{grid-column:1/-1}.player-setup-form,.room-lobby{border-color:var(--hl-border-strong)}.setup-field span{color:var(--hl-muted);letter-spacing:.1em;font-size:.69rem}.form-note{color:#f9eaa7;background:#ffd86914}.form-error{color:#ffd2da;background:#ff7c911a}.app-shell:has(.game-stage){grid-template-columns:1fr;align-content:start;min-height:100svh}.app-shell:has(.game-stage) .game-panel{grid-template-columns:minmax(260px,auto) minmax(0,1fr);grid-template-areas:"brand status""players players";gap:.7rem;min-width:0;display:grid}.app-shell:has(.game-stage) .title-card{border-radius:var(--hl-radius-md);min-width:260px;box-shadow:none;background:var(--hl-surface-strong);grid-area:brand;align-items:center;gap:.8rem;padding:.82rem 1rem;display:flex}:is(.app-shell:has(.game-stage) .title-card .eyebrow,.app-shell:has(.game-stage) .title-card .subtitle){display:none}.app-shell:has(.game-stage) .title-card h1{letter-spacing:-.035em;max-width:none;font-size:clamp(1.05rem,1.8vw,1.35rem);line-height:1}.app-shell:has(.game-stage) .game-panel>.message-card:not([aria-label=Game\ rules]){border-radius:var(--hl-radius-md);min-width:0;box-shadow:none;background:#0f2017c7;grid-area:status;grid-template-columns:auto 1fr;align-items:center;gap:.65rem .85rem;padding:.72rem .95rem;display:grid}.app-shell:has(.game-stage) .game-panel>.message-card:not([aria-label=Game\ rules]) strong{color:var(--hl-lime);letter-spacing:.1em;text-transform:uppercase;font-size:.69rem}.app-shell:has(.game-stage) .game-panel>.message-card:not([aria-label=Game\ rules]) p{color:var(--hl-muted-strong);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.88rem;font-weight:750;overflow:hidden}.app-shell:has(.game-stage) .players-card{border-radius:var(--hl-radius-md);max-height:none;box-shadow:none;scrollbar-width:thin;scroll-snap-type:x proximity;grid-area:players;grid-template-columns:none;gap:.55rem;padding:.55rem;display:flex;overflow:auto hidden}.app-shell:has(.game-stage) .player-chip{scroll-snap-align:start;border:1px solid var(--hl-border);background:#ffffff0a;border-left:4px solid;border-radius:13px;flex:none;min-width:178px;padding:.55rem .65rem}.app-shell:has(.game-stage) .player-chip strong{font-size:.84rem}.app-shell:has(.game-stage) .player-chip p{max-width:17ch;color:var(--hl-muted);font-size:.72rem;line-height:1.3}.app-shell:has(.game-stage) .player-chip.active{background:#c8ff6216;outline:1px solid #c8ff627a;box-shadow:inset 0 0 0 1px #c8ff620d}.app-shell:has(.game-stage) .token-dot{border-width:1px;width:14px;height:14px}.app-shell:has(.game-stage) .game-panel>[aria-label=Game\ rules]{display:none}.game-stage{grid-template-columns:minmax(0,1fr) minmax(285px,330px);grid-template-areas:"board controls";align-items:start;gap:clamp(.75rem,1.15vw,1rem)}.board-wrap{border-radius:var(--hl-radius-lg);min-height:0;box-shadow:var(--hl-shadow-board);background:radial-gradient(circle at 50% 8%,#c8ff620f,#0000 35%),#010503b8;border-color:#e8ffd81a}.phaser-board{width:min(100%,133.3svh - 13.33rem);min-height:0}.phaser-board canvas{max-height:calc(100svh - 10rem);box-shadow:none;border-radius:20px}.board-controls-card{border-radius:var(--hl-radius-lg);border-color:var(--hl-border-strong);background:linear-gradient(180deg, #c8ff6209, transparent 28%), var(--hl-surface-strong);gap:.62rem;max-height:calc(100svh - 2*clamp(.72rem,1.3vw,1.25rem));padding:.72rem;top:clamp(.72rem,1.3vw,1.25rem)}.board-controls-card::-webkit-scrollbar{width:6px}.board-controls-card::-webkit-scrollbar-thumb{background:#c8ff6238;border-radius:99px}.turn-box,.dice-display,.dice-box{border:1px solid var(--hl-border);background:var(--hl-surface-soft);border-radius:14px;min-height:58px;padding:.62rem .72rem}.turn-box{flex-direction:column;align-items:flex-start;gap:.18rem}.turn-box span,.dice-readout span,.dice-box span,.card-readout span{color:var(--hl-muted);letter-spacing:.09em;font-size:.64rem}.turn-box strong{font-size:.92rem;line-height:1.25}.turn-box p{color:var(--hl-muted);margin:0;font-size:.74rem}.dice-display{background:radial-gradient(circle at 18%,#ffd8691f,#0000 7rem),#ffffff0b;min-height:86px}.dice-face{background:#f3f5e9;border:2px solid #17200f;border-radius:13px;flex-basis:58px;width:58px;height:58px;box-shadow:inset 0 -4px #0f1a0f1f,0 10px 22px #00000047}.dice-readout strong{font-size:1.45rem}.dice-readout p{color:#f4e7a8;font-size:.78rem;line-height:1.35}.board-button-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.board-button-row .roll-button{grid-column:1/-1}.roll-button{letter-spacing:-.015em;border-radius:15px;min-height:62px;font-size:1.02rem;box-shadow:0 13px 32px #adf23d2e}.player-select{scrollbar-width:none;flex-wrap:nowrap;gap:.4rem;padding-bottom:.1rem;display:flex;overflow-x:auto}.player-select::-webkit-scrollbar{display:none}.player-select button{flex:none;min-height:38px;padding:.5rem .65rem;font-size:.72rem}.card-reveal,.winner-overlay{-webkit-backdrop-filter:blur(16px)saturate(115%);backdrop-filter:blur(16px)saturate(115%);background:#010503d1}.hit-card{border-radius:var(--hl-radius-lg);color:#17150c;background:radial-gradient(circle at 10% 8%,#ffffffad,#0000 10rem),linear-gradient(145deg,#ffe78d 0%,#ffb1bd 49%,#c5a4ff 100%);border:1px solid #fff0ab80;padding:1rem;box-shadow:0 30px 110px #000000b3,inset 0 0 0 1px #ffffff2e}.hit-label{letter-spacing:.12em;background:#11170f;border-radius:9px;padding:.34rem .58rem}.hit-card-close{border-radius:var(--hl-radius-sm);background:#10170f}.winner-card{border-radius:var(--hl-radius-lg);background:radial-gradient(circle at 50% 0%, #c8ff6221, transparent 55%), var(--hl-surface-strong);border:1px solid #c8ff6270}.winner-badge-pill{color:#edfbc6;background:#c8ff6213;border:1px solid #c8ff621f;border-radius:10px}@media (width<=1100px){.app-shell:not(:has(.game-stage)){grid-template-columns:1fr}.app-shell:not(:has(.game-stage)) .game-panel{grid-template-columns:1fr}.app-shell:not(:has(.game-stage)) .title-card{grid-row:auto;min-height:360px}.app-shell:not(:has(.game-stage)) .game-panel>.message-card:not([aria-label=Game\ rules]){grid-column:1}.app-shell:not(:has(.game-stage)) .game-panel>[aria-label=Game\ rules]{grid-column:1}.game-stage{grid-template-columns:1fr;grid-template-areas:"board""controls"}.phaser-board{width:min(100%,980px)}.phaser-board canvas{max-height:none}.board-controls-card{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;max-height:none;display:grid;position:static}.board-controls-card>.player-select,.board-controls-card>.board-button-row{grid-column:1/-1}.board-controls-card>.dice-display{min-height:100%}}@media (width<=760px){:root{--hl-radius-lg:20px;--hl-radius-md:16px}.app-shell{padding:.55rem max(.55rem, env(safe-area-inset-right)) max(.7rem, env(safe-area-inset-bottom)) max(.55rem, env(safe-area-inset-left))}.app-shell:not(:has(.game-stage)){padding-top:.55rem}.app-shell:not(:has(.game-stage)) .game-panel{gap:.6rem}.app-shell:not(:has(.game-stage)) .title-card{min-height:280px;padding:1.2rem}h1{font-size:clamp(2.15rem,11vw,3.3rem)}.controls-card .button-row{grid-template-columns:1fr}.controls-card .button-row .primary{grid-column:auto}.app-shell:has(.game-stage) .game-panel{grid-template-columns:1fr;grid-template-areas:"brand""status""players";gap:.48rem}.app-shell:has(.game-stage) .title-card{min-width:0;padding:.7rem .82rem}.app-shell:has(.game-stage) .game-panel>.message-card:not([aria-label=Game\ rules]){grid-template-columns:1fr;gap:.18rem;padding:.6rem .75rem}.app-shell:has(.game-stage) .game-panel>.message-card:not([aria-label=Game\ rules]) p{white-space:normal}.app-shell:has(.game-stage) .players-card{margin-inline:-.05rem;padding:.4rem}.app-shell:has(.game-stage) .player-chip{min-width:150px;padding:.48rem .55rem}.game-stage{gap:.55rem}.board-wrap{border-radius:17px}.phaser-board canvas{border-radius:14px}.board-controls-card{border-radius:18px;grid-template-columns:1fr;gap:.48rem;padding:.55rem}.board-controls-card>.player-select,.board-controls-card>.board-button-row{grid-column:auto}.turn-box{min-height:0}.dice-display{min-height:78px}.board-button-row{bottom:max(.35rem, env(safe-area-inset-bottom));z-index:30;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#06110bf5;border:1px solid #e8ffd824;border-radius:16px;grid-template-columns:repeat(3,minmax(0,1fr));margin:.1rem -.1rem -.1rem;padding:.45rem;position:sticky;box-shadow:0 16px 40px #0000006b}.board-button-row .roll-button{grid-column:1/-1;min-height:64px}.board-button-row button:not(.roll-button){min-height:44px;padding-inline:.4rem;font-size:.72rem}.hit-card,.winner-card{width:min(96vw,520px)}}@media (width<=420px){.app-shell{padding-inline:.4rem}.app-shell:not(:has(.game-stage)) .title-card{min-height:245px}.app-shell:has(.game-stage) .player-chip{min-width:138px}.player-chip p{font-size:.68rem}.board-button-row{grid-template-columns:repeat(2,minmax(0,1fr))}.board-button-row .roll-button{grid-column:1/-1}}@media (orientation:landscape) and (height<=690px) and (width>=760px){.app-shell:has(.game-stage) .game-panel{grid-template-columns:240px minmax(0,1fr)}.app-shell:has(.game-stage) .players-card{max-height:56px}.game-stage{grid-template-columns:minmax(0,1fr) 285px}.phaser-board{width:min(100%,133.3svh - 9.8642rem)}.phaser-board canvas{max-height:calc(100svh - 7.4rem)}.board-controls-card{max-height:calc(100svh - 1.2rem)}}@media (prefers-reduced-motion:reduce){button{transition:none}button:hover:not(:disabled),button:active:not(:disabled){transform:none}}
