:root{--bg-deep: #0f1c14;--bg-mid: #1a2f22;--bg-panel: #243d2c;--ink: #f2efe6;--ink-muted: #b7c4b8;--accent: #d4a017;--accent-soft: #f0d78c;--danger: #c45c4a;--ok: #6fbf8a;--board-light: #e8d5a3;--board-dark: #6b8f71;--board-hl: #f5c842aa;--font-display: "Fraunces", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;color:var(--ink);background:var(--bg-deep);font-family:var(--font-body);line-height:1.45;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;min-height:100dvh}body{background:radial-gradient(ellipse 80% 60% at 10% 0%,#2a4a35 0%,transparent 55%),radial-gradient(ellipse 70% 50% at 100% 100%,#3d2a12 0%,transparent 50%),var(--bg-deep)}button,input{font:inherit}button{cursor:pointer;border:none;border-radius:10px;padding:.75rem 1.25rem;background:var(--accent);color:#1a1408;font-weight:600;transition:transform .15s ease,filter .15s ease}button:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--ink);border:1px solid color-mix(in srgb,var(--ink) 25%,transparent)}button.danger{background:var(--danger);color:#fff}button.primary-player{background:var(--ok);color:#0f1c14}button.primary-main{background:var(--accent)}input{width:100%;padding:.75rem 1rem;border-radius:10px;border:1px solid color-mix(in srgb,var(--ink) 20%,transparent);background:color-mix(in srgb,var(--bg-deep) 70%,transparent);color:var(--ink)}input:focus{outline:2px solid var(--accent);outline-offset:1px}a{color:var(--accent-soft)}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.brand-bar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;flex-shrink:0}.brand-bar--compact{padding:.3rem .75rem;align-items:center;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent)}.brand-bar--compact .brand{font-size:1.15rem;margin:0}.brand-bar--compact .muted,.brand-bar--compact .lang-switch select{font-size:.8rem}.brand-bar--compact .reconnect-chip{padding:.3rem .55rem;font-size:.8rem}.brand-bar-actions{display:flex;align-items:center;gap:.75rem}.lang-switch select{width:auto;padding:.35rem .55rem;border-radius:8px;border:1px solid color-mix(in srgb,var(--ink) 20%,transparent);background:color-mix(in srgb,var(--bg-deep) 55%,transparent);color:var(--ink);font-size:.85rem}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand{font-family:var(--font-display);font-size:clamp(1.4rem,3vw,2rem);font-weight:700;letter-spacing:-.02em;margin:0}.brand span{color:var(--accent)}.muted{color:var(--ink-muted);font-size:.95rem}.page{flex:1;display:flex;flex-direction:column;padding:0 1.25rem 2rem;width:min(1100px,100%);margin:0 auto;min-height:0}.page--boardplay,.page--lobby{width:100%;max-width:none;padding:.4rem .6rem .6rem;overflow:hidden;position:relative}.page--boardplay .reconnect-banner,.page--lobby .reconnect-banner{flex-shrink:0;margin-bottom:.35rem}.hero-role{flex:1;display:grid;align-content:center;gap:1.5rem;padding:2rem 0 3rem;animation:rise .6s ease both}.hero-role h1{font-family:var(--font-display);font-size:clamp(2.4rem,8vw,4.5rem);line-height:1.05;margin:0;max-width:12ch}.hero-role p{margin:0;max-width:36ch;color:var(--ink-muted);font-size:1.1rem}.role-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.role-actions button{min-width:10rem;padding:1rem 1.5rem;font-size:1.05rem}.role-actions button.primary-main{background:var(--accent)}.role-actions button.primary-player{background:var(--ok);color:#0f1c14}.panel{background:color-mix(in srgb,var(--bg-panel) 85%,transparent);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:16px;padding:1.25rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.stack{display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.error-banner{background:color-mix(in srgb,var(--danger) 25%,transparent);border:1px solid var(--danger);color:#ffd8d2;padding:.75rem 1rem;border-radius:10px}.app-toast-host{position:fixed;top:.5rem;left:50%;transform:translate(-50%);z-index:50;width:min(520px,calc(100vw - 1rem));display:flex;flex-direction:column;gap:.4rem;pointer-events:none}.app-toast-host .error-banner,.app-toast-host .reconnect-banner{pointer-events:auto;margin:0;box-shadow:0 8px 28px color-mix(in srgb,#000 35%,transparent)}.reconnect-banner{background:color-mix(in srgb,var(--accent) 18%,transparent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent-soft);padding:.65rem 1rem;border-radius:10px;font-weight:600}.reconnect-chip{padding:.35rem .7rem;font-size:.85rem}.confirm-modal{border:none;padding:0;background:transparent;max-width:min(420px,calc(100vw - 2rem))}.confirm-modal::backdrop{background:color-mix(in srgb,#000 55%,transparent)}.confirm-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1rem;background:color-mix(in srgb,#000 45%,transparent);pointer-events:auto}.confirm-overlay .confirm-modal-panel{max-width:min(380px,100%);width:100%}.player-play-stage>.confirm-overlay{position:absolute}.confirm-modal-panel{background:var(--bg-panel);color:var(--ink);border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);border-radius:16px;padding:1.25rem;display:flex;flex-direction:column;gap:.85rem;box-shadow:0 24px 60px color-mix(in srgb,#000 45%,transparent)}.confirm-modal-panel h3{margin:0;font-family:var(--font-display);font-size:1.35rem}.confirm-modal-panel p{margin:0}.qr-wrap{display:grid;place-items:center;gap:.75rem;padding:1rem}.qr-wrap--rail{flex-shrink:0;padding:.35rem 0 .65rem;gap:.45rem;border-bottom:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}.qr-wrap--rail img{width:min(100%,220px);padding:.45rem}.qr-wrap--rail .room-code{font-size:1.35rem;letter-spacing:.12em;margin:0}.race-track-picker{flex-shrink:0;display:flex;flex-direction:column;gap:.45rem}.race-track-picker-list{display:flex;flex-wrap:wrap;gap:.35rem}.race-track-pick{flex:1 1 calc(50% - .35rem);min-width:5.5rem;padding:.4rem .55rem;font-size:.85rem;border-radius:8px;border:1px solid color-mix(in srgb,var(--ink) 16%,transparent);background:color-mix(in srgb,var(--bg-deep) 55%,transparent);color:var(--ink)}.race-track-pick.is-selected{border-color:color-mix(in srgb,var(--accent) 70%,transparent);background:color-mix(in srgb,var(--accent) 22%,transparent);font-weight:600}.race-track-pick:disabled:not(.is-selected){opacity:.65}.lobby-stage{container-type:size;min-width:0;min-height:0;height:100%;display:flex;align-items:stretch;justify-content:stretch;overflow:hidden}.lobby-stage-preview{flex:1;min-width:0;min-height:0;width:100%;height:100%;display:flex;align-items:stretch;justify-content:stretch;overflow:hidden}.lobby-stage-fallback{margin:auto;width:min(360px,100%)}.lobby-preview{width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.lobby-preview--board{container-type:size;padding:.35rem}.lobby-preview--board .chess-main--preview,.lobby-preview--board .mono-board--preview{width:min(100cqw,100cqh,100%);max-width:100%;max-height:100%}.chess-main--preview{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center}.chess-main--preview .board-stage{width:min(100%,100cqh,520px);max-width:100%}.mono-board--preview{width:min(100%,100cqh,520px);animation:none}.mono-board--preview .mono-cell-name{font-size:clamp(.4rem,1.1cqi,.7rem)}.lobby-preview--screen{width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:stretch;justify-content:stretch;padding:0;box-sizing:border-box}.lobby-preview-bezel{width:100%;height:100%;min-width:0;min-height:0;border-radius:16px;padding:10px;box-sizing:border-box;display:flex;flex-direction:column;background:linear-gradient(160deg,#2a2f36,#12151a 55%,#0b0d10);box-shadow:0 12px 36px color-mix(in srgb,#000 35%,transparent),inset 0 0 0 1px color-mix(in srgb,#fff 12%,transparent)}.lobby-preview-canvas{flex:1;width:100%;min-height:0;height:auto!important;border-radius:10px;overflow:hidden;box-shadow:none}.qr-wrap img{width:min(320px,70vw);height:auto;border-radius:12px;background:#fff;padding:.75rem;animation:softPulse 3s ease-in-out infinite}.room-code{font-family:var(--font-display);font-size:clamp(2rem,6vw,3.5rem);letter-spacing:.18em;margin:0}.player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.player-list li{display:flex;flex-direction:column;align-items:stretch;padding:.65rem .85rem;border-radius:10px;background:color-mix(in srgb,var(--bg-deep) 45%,transparent)}.room-meta{display:flex;flex-direction:column;gap:.2rem;font-size:.9rem;font-variant-numeric:tabular-nums}.player-list-main{display:flex;justify-content:space-between;gap:.5rem;width:100%}.player-split-tag{font-size:.75rem;margin-top:.15rem}.split-btn{margin-top:.35rem;padding:.35rem .65rem;font-size:.8rem;width:100%}.confirm-modal-panel input{width:100%}.turn-banner{text-align:center;padding:.85rem 1rem;border-radius:12px;font-family:var(--font-display);font-size:clamp(1.15rem,4.5vw,1.6rem);font-weight:700;background:color-mix(in srgb,var(--accent) 22%,transparent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent-soft);animation:softPulse 1.8s ease-in-out infinite}.turn-banner.waiting{background:color-mix(in srgb,var(--bg-panel) 80%,transparent);border-color:color-mix(in srgb,var(--ink) 12%,transparent);color:var(--ink-muted);animation:none;font-size:1rem;font-family:var(--font-body);font-weight:600}.dot{width:.55rem;height:.55rem;border-radius:50%;display:inline-block;margin-right:.4rem;background:var(--ok)}.dot.off{background:var(--ink-muted)}.main-layout{display:grid;gap:1.25rem}@media(min-width:900px){.main-layout{grid-template-columns:1fr 320px;align-items:start}}.main-layout--boardplay,.main-layout--lobby{flex:1;min-height:0;gap:.6rem;align-items:stretch;grid-template-columns:minmax(0,1fr) 240px}.main-layout--lobby{grid-template-columns:minmax(0,1fr) 300px}@media(min-width:800px){.main-layout--boardplay{grid-template-columns:minmax(0,1fr) 250px}.main-layout--lobby{grid-template-columns:minmax(0,1fr) 320px}}.aside--lobby{overflow:auto}@media(min-width:1600px){.main-layout--boardplay{grid-template-columns:minmax(0,1fr) 280px;gap:.75rem}.main-layout--lobby{grid-template-columns:minmax(0,1fr) 360px;gap:.75rem}.page--boardplay,.page--lobby{padding:.5rem .75rem .75rem}.brand-bar--compact{padding:.4rem .9rem}.brand-bar--compact .brand{font-size:1.3rem}.aside--rail{padding:.85rem .9rem;gap:.65rem;border-radius:16px}.rail-section-label{font-size:.8rem}.room-code-sm{font-size:1.05rem}.aside--rail .player-list{font-size:1rem}.rail-log ul{font-size:.9rem;gap:.4rem}.rail-end,.rail-actions__btn{padding:.65rem .9rem;font-size:.95rem}.status-pill{font-size:.95rem;padding:.4rem .85rem}}@media(min-width:2800px){.main-layout--boardplay{grid-template-columns:minmax(0,1fr) 320px;gap:.9rem}.main-layout--lobby{grid-template-columns:minmax(0,1fr) 400px;gap:.9rem}.page--boardplay,.page--lobby{padding:.55rem .85rem .85rem}.brand-bar--compact{padding:.45rem 1rem}.brand-bar--compact .brand{font-size:1.4rem}.aside--rail{padding:.95rem 1rem}.aside--rail .player-list{font-size:1.1rem}.rail-log ul{font-size:1rem}.status-pill{font-size:1.05rem}}.boardplay-stage{container-type:size;min-width:0;min-height:0;height:100%;display:grid;place-items:center;overflow:hidden}.aside--rail{padding:.7rem .75rem;gap:.55rem;min-width:0;min-height:0;height:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column}.rail-header{flex-shrink:0}.rail-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.room-code-sm{font-family:var(--font-display);font-size:.95rem;letter-spacing:.06em;color:var(--accent-soft)}.rail-meta{font-size:.8rem;font-variant-numeric:tabular-nums;margin-top:.15rem!important}.rail-section-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:.3rem}.rail-players{flex-shrink:0;max-height:42%;overflow:auto}.aside--rail .player-list{gap:.35rem;font-size:.9rem}.aside--rail .player-list li{padding:.2rem 0}.player-list-turn{color:var(--accent-soft);font-weight:600}.rail-log{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;border-top:1px solid color-mix(in srgb,var(--ink) 10%,transparent);padding-top:.45rem}.rail-log ul{list-style:none;margin:0;padding:0;overflow:auto;font-size:.78rem;line-height:1.35;color:var(--ink-muted);display:flex;flex-direction:column;gap:.35rem}.rail-end{flex-shrink:0;margin-top:auto;padding:.55rem .85rem;font-size:.9rem}.rail-actions{flex-shrink:0;margin-top:auto;display:flex;flex-direction:column;gap:.4rem;width:100%}.rail-actions__btn{width:100%;margin:0;padding:.55rem .85rem;font-size:.9rem}.board-stage{width:min(100%,72vh,640px);margin:0 auto;aspect-ratio:1;animation:boardIn .5s ease both;container-type:size}.page--boardplay .board-stage{width:min(100cqw,100cqh);max-width:100%;max-height:100%;margin:0}.board-shell{position:relative;width:100%;height:100%;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);border-radius:12px;overflow:hidden;box-shadow:0 20px 50px color-mix(in srgb,#000 45%,transparent);transform-origin:50% 50%;will-change:transform}.square{position:relative;display:grid;place-items:center;-webkit-user-select:none;user-select:none;font-size:clamp(1.4rem,11cqi,5.5rem);line-height:1;border:none;border-radius:0;padding:0;color:#111;transition:background .12s ease;background:transparent}.square-face{position:relative;display:grid;place-items:center;width:100%;height:100%;transform-origin:50% 50%;will-change:transform}.piece-flight{position:absolute;width:12.5%;height:12.5%;display:grid;place-items:center;font-size:clamp(1.4rem,4.5vw,2.6rem);line-height:1;pointer-events:none;z-index:6;color:#111;transition:left .4s cubic-bezier(.22,.61,.36,1),top .4s cubic-bezier(.22,.61,.36,1);transform-origin:50% 50%}.piece-flight .square-face{filter:drop-shadow(0 2px 4px color-mix(in srgb,#000 35%,transparent))}@media(prefers-reduced-motion:reduce){.piece-flight{transition-duration:.01ms}}.square.light{background:var(--board-light)}.square.dark{background:var(--board-dark);color:#0a120c}.square.selected,.square.target{background:var(--board-hl)}.square.last{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--accent) 70%,transparent)}.square:disabled{opacity:1}.coord{position:absolute;font-size:.55rem;opacity:.55;font-family:var(--font-body);pointer-events:none}.coord.file{right:3px;bottom:2px}.coord.rank{left:3px;top:2px}.scanner-box{overflow:hidden;border-radius:12px;min-height:240px;background:#000}.scanner-box video{width:100%!important}.phone-controls{display:flex;flex-direction:column;gap:.75rem;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.page--player-play,.page--player-play *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.page--player-play input,.page--player-play textarea,.page--player-play select{-webkit-user-select:text;user-select:text}.page--player-play{width:100%;max-width:none;padding:0;gap:0;overflow:hidden}.player-play-stage{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:#0f1c14}.player-play-stage>.qc-root,.player-play-stage>.phone-controls{flex:1;min-height:0}.player-play-chrome{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .5rem;padding-top:max(.35rem,env(safe-area-inset-top));padding-left:max(.5rem,env(safe-area-inset-left));padding-right:max(.5rem,env(safe-area-inset-right));pointer-events:none;background:linear-gradient(to bottom,rgba(8,14,10,.55),transparent)}.player-play-meta{display:flex;align-items:center;gap:.5rem;min-width:0}.player-play-code{font-family:var(--font-display);font-size:.85rem;letter-spacing:.04em;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.5)}.player-play-status{font-size:.75rem;color:#f5d76e}.player-play-leave{pointer-events:auto;padding:.25rem .55rem;font-size:.8rem;color:#ffffffe6;background:#0f1c148c;border-radius:6px}.player-play-loading{margin:auto;padding:1rem}.player-play-stage>.turn-banner{position:absolute;top:2.1rem;left:50%;transform:translate(-50%);z-index:5;width:auto;max-width:min(90%,22rem);padding:.35rem .7rem;font-size:.85rem;border-radius:8px;pointer-events:none}.brand-bar--play{padding:.2rem .65rem}.brand-bar--play .brand{font-size:1rem}.brand-bar--play .brand-bar-actions{gap:.45rem}@media(orientation:landscape)and (max-height:520px){.brand-bar--play{display:none}}.status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .7rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent-soft);font-size:.85rem;font-weight:600}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes boardIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes softPulse{0%,to{transform:scale(1)}50%{transform:scale(1.015)}}.mono-main{width:100%;height:100%;min-height:0;display:grid;place-items:center}.mono-board{container-type:size;display:grid;grid-template-columns:repeat(11,minmax(0,1fr));grid-template-rows:repeat(11,minmax(0,1fr));gap:clamp(2px,.28cqi,8px);aspect-ratio:1;width:min(100cqw,100cqh);max-width:100%;max-height:100%;background:#1a1408;padding:clamp(3px,.4cqi,10px);border-radius:clamp(10px,.9cqi,20px);box-shadow:0 12px 40px color-mix(in srgb,#000 40%,transparent),0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent);animation:boardIn .45s ease both}.mono-cell{position:relative;background:#f4ecd8;color:#1a1408;font-size:clamp(.5rem,1.45cqi,1.65rem);line-height:1.15;overflow:hidden;min-height:0;padding:clamp(2px,.35cqi,10px)}.mono-cell-go,.mono-cell-jail,.mono-cell-free,.mono-cell-gotojail{background:#e8c97a;font-weight:700;font-size:clamp(.55rem,1.6cqi,1.85rem)}.mono-cell-chance{background:#f0c070}.mono-cell-community{background:#9ec9e8}.mono-cell-tax{background:#e8b4a8}.mono-cell-stripe{height:clamp(14%,1.6cqi,22%);margin:calc(clamp(2px,.35cqi,10px)*-1) calc(clamp(2px,.35cqi,10px)*-1) clamp(2px,.35cqi,8px)}.mono-cell-name{font-weight:700;letter-spacing:.01em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.mono-tokens{position:absolute;right:clamp(1px,.25cqi,6px);bottom:clamp(1px,.25cqi,6px);display:flex;flex-wrap:wrap;gap:clamp(1px,.2cqi,4px);font-size:clamp(.85rem,2.6cqi,2.75rem);filter:drop-shadow(0 1px 2px color-mix(in srgb,#000 35%,transparent));z-index:2}.mono-token{display:inline-block;transform-origin:50% 80%;will-change:transform}.mono-token--hop{animation:monoTokenHop .18s ease-out}@keyframes monoTokenHop{0%{transform:translateY(0) scale(1)}35%{transform:translateY(-35%) scale(1.18)}to{transform:translateY(0) scale(1)}}.mono-houses{font-size:clamp(.55rem,1.5cqi,1.6rem);margin-top:.1em}.mono-mortgage{position:absolute;top:clamp(2px,.3cqi,8px);right:clamp(2px,.3cqi,8px);font-weight:800;font-size:clamp(.65rem,1.5cqi,1.5rem);color:#a00}.mono-owner{position:absolute;left:clamp(1px,.25cqi,6px);bottom:clamp(1px,.25cqi,6px);font-size:clamp(.55rem,1.3cqi,1.35rem);opacity:.75}.mono-center{grid-column:2 / 11;grid-row:2 / 11;background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 55%),color-mix(in srgb,var(--bg-panel) 92%,#000);border-radius:clamp(8px,.8cqi,18px);padding:clamp(.75rem,2cqi,2rem);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.65rem,1.5cqi,1.5rem);overflow:hidden}.mono-center-status{display:flex;flex-direction:column;align-items:center;gap:clamp(.4rem,1cqi,1rem);text-align:center}.mono-center-status .status-pill{font-size:clamp(.85rem,2cqi,1.65rem);padding:clamp(.35rem,.7cqi,.7rem) clamp(.7rem,1.4cqi,1.35rem)}.mono-dice{font-variant-numeric:tabular-nums;color:var(--ink-muted);font-size:clamp(.85rem,2.2cqi,1.6rem);font-weight:600}.dice-roll{display:flex;flex-direction:column;align-items:center;gap:clamp(.35rem,.8cqi,.85rem)}.dice-pair{display:flex;gap:clamp(.55rem,1.4cqi,1.35rem);align-items:center}.die{width:clamp(2.75rem,9.5cqi,8.5rem);height:clamp(2.75rem,9.5cqi,8.5rem);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center;padding:9%;border-radius:clamp(10px,1.2cqi,22px);background:linear-gradient(145deg,#fff8ea,#e8dcc4);color:#1a1408;box-shadow:0 clamp(2px,.25cqi,4px) 0 #c4b498,0 clamp(6px,.9cqi,16px) clamp(12px,1.6cqi,28px) color-mix(in srgb,#000 35%,transparent);transform-origin:50% 50%}.die--rolling{animation:dieTumble .14s linear infinite}.die-pip{width:58%;aspect-ratio:1;border-radius:50%;background:transparent}.die-pip.on{background:#1a1408}.dice-caption{font-variant-numeric:tabular-nums;color:var(--ink-muted);font-size:clamp(.85rem,2.1cqi,1.55rem);font-weight:600}.dice-roll--compact .die{width:clamp(2.4rem,4.5vw,3.5rem);height:clamp(2.4rem,4.5vw,3.5rem);border-radius:8px;box-shadow:0 1px #c4b498,0 3px 8px color-mix(in srgb,#000 25%,transparent)}.dice-roll--compact .die-pip{width:62%}.dice-roll--compact .dice-caption{font-size:clamp(.85rem,1.5vw,1.15rem)}@keyframes dieTumble{0%{transform:rotate(-12deg) scale(.94)}50%{transform:rotate(14deg) scale(1.06)}to{transform:rotate(-8deg) scale(.97)}}.mono-result{text-align:center;font-size:clamp(.95rem,2.2cqi,1.75rem);max-width:28ch;line-height:1.35}.mono-actions{display:flex;flex-wrap:wrap;gap:.5rem}.mono-deed-picks{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.35rem}.mono-deed-picks button{padding:.4rem .65rem;font-size:.8rem}.mono-main select,.phone-controls select,.phone-controls input[type=number]{width:100%;padding:.55rem .7rem;border-radius:8px;border:1px solid color-mix(in srgb,var(--ink) 20%,transparent);background:color-mix(in srgb,var(--bg-deep) 70%,transparent);color:var(--ink)}.chess3d-main{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;gap:.4rem}.chess3d-chrome{flex-shrink:0;padding:0 .15rem}.chess3d-result{flex-shrink:0;padding:.55rem .75rem;font-size:.9rem}.game-canvas3d{flex:1;min-height:0;width:100%;height:100%;border-radius:12px;overflow:hidden;background:#1a241c;box-shadow:0 12px 40px color-mix(in srgb,#000 40%,transparent)}.game-canvas3d canvas{display:block;width:100%!important;height:100%!important}.chess-main{container-type:size;width:100%;height:100%;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem}.chess-main-status{flex-shrink:0}.chess-main .board-stage{width:min(100cqw,calc(100cqh - 2.25rem));max-width:100%;max-height:calc(100% - 2.25rem)}.chess-main-result{flex-shrink:0;padding:.55rem .75rem;font-size:.85rem}.race-main{position:relative;width:100%;height:100%;min-height:0;display:flex;flex-direction:column;gap:.4rem}.race-chrome{flex-shrink:0;padding:0 .15rem}.race-result{flex-shrink:0;padding:.55rem .75rem;font-size:.85rem}.race-summary-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:1rem;background:#080c148c;pointer-events:auto}.race-countdown-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;pointer-events:none;background:radial-gradient(circle at center,rgba(8,12,20,.45) 0%,rgba(8,12,20,.15) 55%,transparent 75%)}.race-countdown-overlay--phone{border-radius:12px;background:#080c1466}.race-countdown-beat{font-family:var(--font-display);font-weight:800;line-height:1;letter-spacing:.04em;color:#fff;text-shadow:0 8px 28px rgba(0,0,0,.55);animation:raceCountdownPop .45s ease-out both;text-align:center;padding:0 1rem}.race-countdown-overlay--main .race-countdown-beat{font-size:clamp(5rem,18vw,11rem)}.race-countdown-overlay--phone .race-countdown-beat{font-size:clamp(3.2rem,22vw,5.5rem)}.race-countdown-overlay.is-prep .race-countdown-beat{font-size:clamp(1.75rem,5.5vw,3.4rem);letter-spacing:.02em;max-width:16ch;line-height:1.15}.race-countdown-overlay--phone.is-prep .race-countdown-beat{font-size:clamp(1.35rem,6vw,2rem)}.race-countdown-sub{font-family:var(--font-display);font-size:clamp(1rem,2.4vw,1.45rem);font-weight:600;color:#ffffffe0;text-align:center;text-shadow:0 4px 16px rgba(0,0,0,.45);padding:0 1.25rem}.race-countdown-overlay.is-go .race-countdown-beat{color:#7dffa3}@keyframes raceCountdownPop{0%{opacity:0;transform:scale(.65)}55%{opacity:1;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.race-summary-modal{width:min(420px,100%);max-height:min(80vh,560px);overflow:auto;gap:.75rem}.race-summary-winner{font-size:1.15rem;font-weight:600}.race-summary-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.35rem}.race-summary-list li{display:flex;align-items:center;gap:.65rem;font-weight:600}.race-summary-place{display:inline-grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:6px;background:#ffffff1f;font-size:.85rem;color:inherit}.race-phone--results{max-width:28rem;margin:0 auto}.race-vote-actions{gap:.5rem;flex-wrap:wrap}.race-vote-actions button{flex:1;min-width:6rem}.race-split-root{position:relative;flex:1;min-height:0;width:100%;border-radius:12px;overflow:hidden;background:#0b1220}.race-split-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:0;box-shadow:none}.race-split-hud{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;display:grid;gap:3px;padding:0}.race-split-hud--1{grid-template-columns:1fr;grid-template-rows:1fr}.race-split-hud--2{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.race-split-hud--3{grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr}.race-split-hud--4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.race-split-pane-hud{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:.15rem;padding:.45rem .55rem;box-shadow:inset 0 0 0 3px var(--race-pane-color, #fff);background:linear-gradient(180deg,color-mix(in srgb,#000 45%,transparent) 0%,transparent 42%)}.race-split-name{font-family:var(--font-display);font-size:clamp(.85rem,1.6vw,1.15rem);color:#fff;text-shadow:0 1px 4px #000}.race-split-meta{font-size:clamp(.7rem,1.2vw,.9rem);color:color-mix(in srgb,#fff 88%,transparent);text-shadow:0 1px 3px #000}.race-phone{position:relative;display:flex;flex-direction:column;gap:.85rem;width:100%;min-height:100%;padding:.75rem;box-sizing:border-box;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.race-phone *,.race-phone *:before,.race-phone *:after{-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important}.race-phone button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.race-phone--gate{justify-content:center;text-align:center;min-height:60dvh}.race-phone-hud{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:.5rem;text-align:center;align-items:start}.race-phone-hud-lap{text-align:center}.race-phone-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;opacity:.7}.race-phone-value{font-family:var(--font-display);font-size:1.75rem;line-height:1.1}.race-phone-value--lap{font-size:clamp(2.4rem,9vw,3.4rem);line-height:1;font-weight:700}.race-phone-value--place{font-size:1.45rem}.race-phone-lap-caption{font-size:.8rem;font-weight:600;opacity:.85;margin-top:.15rem}.race-phone-value--sm{font-size:1.1rem}.race-lap-flash{position:absolute;left:50%;top:28%;transform:translate(-50%,-50%);z-index:8;pointer-events:none;font-family:var(--font-display);font-size:clamp(1.8rem,7vw,2.6rem);font-weight:700;letter-spacing:.04em;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.65);animation:raceLapFlash 1.05s ease-out forwards}.race-lap-flash--pane{top:42%;font-size:clamp(1.1rem,2.8vw,1.75rem)}@keyframes raceLapFlash{0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}55%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-40%) scale(1.05)}}.race-phone--color{justify-content:center;text-align:center;min-height:60dvh;touch-action:manipulation}.race-lobby-colors{margin-top:.35rem}.race-lobby-player-swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:50%;margin-right:.35rem;vertical-align:-.05rem;border:1px solid rgba(0,0,0,.2)}.race-color-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}.race-color-swatch{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.55rem .35rem;border-radius:12px;border:2px solid transparent;background:color-mix(in srgb,var(--fg, #111) 6%,transparent);cursor:pointer}.race-color-swatch.is-mine{border-color:var(--race-swatch);box-shadow:0 0 0 2px color-mix(in srgb,var(--race-swatch) 35%,transparent)}.race-color-swatch.is-taken{opacity:.85}.race-color-swatch-chip{width:2.1rem;height:2.1rem;border-radius:50%;background:var(--race-swatch);border:2px solid rgba(0,0,0,.2);box-shadow:inset 0 -2px #00000026}.race-color-swatch-label{font-size:.68rem;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.race-color-trade{margin-top:.35rem}.race-color-trade--banner{flex-shrink:0;padding:.55rem .65rem;border-radius:12px;background:color-mix(in srgb,var(--fg, #111) 8%,transparent);text-align:center}.race-color-preview{display:inline-block;width:1.25rem;height:1.25rem;border-radius:50%;vertical-align:middle;border:2px solid rgba(0,0,0,.2)}.race-split-pane-hud{position:relative}.race-split-lap-block{display:flex;flex-direction:column;gap:.05rem;margin:.15rem 0 .1rem}.race-split-lap-num{font-family:var(--font-display);font-size:clamp(1.55rem,3.2vw,2.35rem);font-weight:700;line-height:1;color:#fff;text-shadow:0 1px 4px #000}.race-split-lap-label{font-size:clamp(.72rem,1.3vw,.95rem);font-weight:600;color:color-mix(in srgb,#fff 92%,transparent);text-shadow:0 1px 3px #000}.race-steer-meter{position:relative;height:.55rem;border-radius:999px;background:color-mix(in srgb,var(--fg, #111) 12%,transparent);overflow:hidden}.race-steer-needle{position:absolute;top:0;left:50%;width:18%;height:100%;margin-left:-9%;border-radius:999px;background:var(--accent, #2ecc71);transition:transform 60ms linear}.race-wrong-way{flex-shrink:0;text-align:center;font-family:var(--font-display);font-size:1.35rem;letter-spacing:.04em;padding:.55rem .75rem;border-radius:12px;background:#c0392b;color:#fff;animation:raceWrongPulse .55s ease-in-out infinite alternate}@keyframes raceWrongPulse{0%{transform:scale(1);filter:brightness(1)}to{transform:scale(1.02);filter:brightness(1.12)}}.race-drive-row{margin-top:auto;display:grid;grid-template-columns:1fr auto 1.15fr;align-items:center;gap:.55rem;width:100%}.race-steer-help{display:flex;flex-direction:column;align-items:center;gap:.35rem}.race-recenter{font-size:.85rem;padding:.35rem .75rem}.race-wheel-wrap{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.15rem 0}.race-wheel-label{font-family:var(--font-display);font-size:.9rem;min-height:1.15rem;text-align:center}.race-wheel{position:relative;width:min(28vw,7.5rem);height:min(28vw,7.5rem);border-radius:50%;transition:transform 50ms linear}.race-wheel-rim{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:.55rem solid #2c3e50;background:radial-gradient(circle at 50% 50%,#95a5a6 0 28%,transparent 29%),repeating-conic-gradient(from 0deg,#34495e 0,#34495e 12deg,#2c3e50 12deg,#2c3e50 24deg);box-shadow:inset 0 0 0 2px #1a252f}.race-wheel-hub{position:absolute;top:32%;right:32%;bottom:32%;left:32%;border-radius:50%;background:#ecf0f1;border:2px solid #7f8c8d}.race-wheel-spoke{position:absolute;background:#bdc3c7;left:50%;top:50%}.race-wheel-spoke--h{width:70%;height:.28rem;transform:translate(-50%,-50%)}.race-wheel-spoke--v{width:.28rem;height:70%;transform:translate(-50%,-50%)}.race-wheel-mark{position:absolute;top:50%;font-size:.7rem;font-weight:700;color:#fff;text-shadow:0 1px 2px #000}.race-wheel-mark--l{left:10%;transform:translateY(-50%)}.race-wheel-mark--r{right:10%;transform:translateY(-50%)}.race-wheel-bar{position:relative;width:min(22vw,6.5rem);height:.4rem;border-radius:999px;background:color-mix(in srgb,var(--fg, #111) 14%,transparent);overflow:hidden}.race-wheel-bar-fill{position:absolute;top:0;left:50%;width:28%;height:100%;margin-left:-14%;border-radius:999px;background:#3498db;transition:transform 50ms linear}.race-brake,.race-accel{min-height:5.5rem;height:100%;max-height:8rem;font-size:1.05rem;font-family:var(--font-display);border-radius:16px;border:none;color:#fff;cursor:pointer;touch-action:none;padding:.5rem .35rem}.race-brake{background:#c0392b}.race-brake.is-down{background:#922b21;transform:scale(.98)}.race-accel{background:#27ae60}.race-accel.is-down{background:#1e8449;transform:scale(.98)}@media(max-width:799px){.main-layout--boardplay,.main-layout--lobby{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;overflow:auto}.boardplay-stage,.lobby-stage{min-height:min(72vw,70dvh);height:min(92vw,70dvh)}.aside--rail{height:auto;max-height:40dvh}.rail-log{max-height:8rem}}.qc-root{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;width:100%;height:100%;margin:0;border-radius:0;overflow:hidden;background:#1a2a22}.qc-viewport{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;cursor:crosshair}.qc-viewport canvas{display:block;width:100%!important;height:100%!important}.qc-crosshair{position:absolute;left:50%;top:44%;width:18px;height:18px;margin:-9px 0 0 -9px;pointer-events:none;z-index:2}.qc-crosshair:before,.qc-crosshair:after{content:"";position:absolute;background:#ffffffeb;box-shadow:0 0 0 1px #00000073}.qc-crosshair:before{left:50%;top:0;width:2px;height:100%;margin-left:-1px}.qc-crosshair:after{top:50%;left:0;width:100%;height:2px;margin-top:-1px}.qc-hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;padding:max(.35rem,env(safe-area-inset-top)) max(.45rem,env(safe-area-inset-right)) max(.45rem,env(safe-area-inset-bottom)) max(.45rem,env(safe-area-inset-left))}.qc-mode-pill{position:absolute;top:max(2.1rem,calc(env(safe-area-inset-top) + 1.7rem));left:max(.45rem,env(safe-area-inset-left));pointer-events:none;background:#0f1c14b8;color:#e8f5e9;font-size:.7rem;padding:.2rem .45rem;border-radius:6px}.qc-coords{position:absolute;top:max(2.1rem,calc(env(safe-area-inset-top) + 1.7rem));right:max(.45rem,env(safe-area-inset-right));margin:0;padding:.15rem .4rem;font-size:.65rem;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:#ffffffd9;background:#0f1c148c;border-radius:4px;pointer-events:none}.qc-lock-hint{position:absolute;left:50%;bottom:6.5rem;transform:translate(-50%);max-width:min(22rem,90%);padding:.3rem .65rem;font-size:.72rem;text-align:center;color:#ffffffe6;background:#0f1c14a6;border-radius:8px;pointer-events:none;z-index:4}.qc-hotbar{position:absolute;left:50%;bottom:max(.45rem,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;justify-content:center;gap:.2rem;pointer-events:auto;z-index:4}.qc-slot{position:relative;width:2.2rem;height:2.2rem;padding:0;border:2px solid rgba(255,255,255,.35);border-radius:6px;background:#141e18d9}.qc-slot.selected{border-color:#f5d76e;box-shadow:0 0 0 1px #f5d76e}.qc-slot-swatch{display:block;width:100%;height:100%;border-radius:4px;background:var(--qc-slot, #666)}.qc-slot-count{position:absolute;right:2px;bottom:1px;font-size:.65rem;color:#fff;text-shadow:0 1px 2px #000}.qc-controls{position:absolute;left:max(.45rem,env(safe-area-inset-left));right:max(.45rem,env(safe-area-inset-right));bottom:max(3.1rem,calc(env(safe-area-inset-bottom) + 2.7rem));display:flex;justify-content:space-between;align-items:flex-end;gap:.75rem;pointer-events:none;z-index:4}.qc-joystick,.qc-action-btns{pointer-events:auto}.qc-joystick{width:5.75rem;height:5.75rem;border-radius:50%;background:#141e1873;border:2px solid rgba(255,255,255,.22);position:relative;touch-action:none}.qc-joystick-knob{position:absolute;left:50%;top:50%;width:2.1rem;height:2.1rem;margin:-1.05rem 0 0 -1.05rem;border-radius:50%;background:#ffffff73}.qc-action-btns{display:flex;flex-direction:column;gap:.35rem}.qc-btn{min-width:4.75rem;padding:.55rem .7rem;border:none;border-radius:10px;font-weight:600;font-size:.85rem;color:#0f1c14}.qc-btn.jump{background:#7fdbda}.qc-btn.break{background:#e74c3c;color:#fff}.qc-btn.place{background:#2ecc71}@media(pointer:fine)and (hover:hover){.qc-controls{display:none}.qc-lock-hint{bottom:3.5rem}.qc-hotbar{bottom:max(.65rem,env(safe-area-inset-bottom))}.qc-slot{width:2.45rem;height:2.45rem}}@media(orientation:landscape)and (max-height:520px){.qc-mode-pill,.qc-coords{top:max(.35rem,env(safe-area-inset-top));font-size:.6rem;padding:.12rem .35rem}.qc-hotbar{bottom:max(.3rem,env(safe-area-inset-bottom));gap:.15rem}.qc-slot{width:1.85rem;height:1.85rem}.qc-controls{bottom:max(2.35rem,calc(env(safe-area-inset-bottom) + 2rem))}.qc-joystick{width:4.6rem;height:4.6rem}.qc-joystick-knob{width:1.7rem;height:1.7rem;margin:-.85rem 0 0 -.85rem}.qc-btn{min-width:3.8rem;padding:.4rem .5rem;font-size:.75rem}.qc-lock-hint{bottom:4.5rem;font-size:.65rem}.player-play-chrome{padding:.2rem .4rem;background:none}.player-play-code{font-size:.75rem}.player-play-leave{padding:.15rem .4rem;font-size:.7rem}}@media(orientation:landscape)and (min-height:521px)and (max-height:720px){.qc-joystick{width:5.25rem;height:5.25rem}.qc-controls{bottom:max(3rem,calc(env(safe-area-inset-bottom) + 2.6rem))}}.qc-main{display:flex;flex-direction:column;gap:.5rem;height:100%;min-height:0}.qc-main-bar{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline}.qc-main-canvas{flex:1;min-height:280px;border-radius:10px;overflow:hidden;background:#87b8e8}.qc-main-canvas canvas{display:block;width:100%!important;height:100%!important}.qc-main-players{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:.9rem}.qc-main-players .dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;margin-right:.35rem;vertical-align:middle}.qc-lobby-preview{width:100%;height:100%;min-height:220px;border-radius:12px;overflow:hidden}.qc-mode-row{display:flex;gap:.5rem;flex-wrap:wrap}.qc-mode-row button.selected{outline:2px solid var(--accent)}
