:root,[data-theme=warm]{--bg0: #fff6e8;--bg1: #ffe0c2;--bg-glow-1: #ffd6a8;--bg-glow-2: #a8e8ff;--bg-end: #ffc9a0;--ink: #1f2a44;--muted: #5a6a7a;--accent: #ff6b4a;--accent-dim: #e85a3c;--accent-2: #3db8ff;--tile: #fff8f2;--tile-ink: #2a2a1a;--tile-edge: #efd4c0;--danger: #d4783c;--warn: #c9a227;--on-warn: #1f2a44;--ok: #2f9e6b;--board: #3cb89a;--board-border: #2a9a7e;--board-deep: #0d3d32;--cell-empty: rgba(255, 255, 255, .35);--premium-2l: #6ec8ff;--premium-3l: #2f9fe0;--premium-3l-ink: #fff;--premium-2w: #7ed4c0;--premium-3w: #1a8a7a;--premium-3w-ink: #fff;--center-ring: #ffd24a;--panel: #ffffff;--panel-border: #ffd0a8;--input-bg: #ffffff;--input-border: #c8d4e0;--on-accent: #fffaf5;--logo-bg: #0f2a24;--toast-shadow: rgba(31, 42, 68, .18);--modal-scrim: rgba(31, 42, 68, .45);--font-display: "Fraunces", Georgia, serif;--font-body: "Source Sans 3", system-ui, sans-serif;color-scheme:light}[data-theme=harbor]{--bg0: #e8f4f8;--bg1: #c5e4ef;--bg-glow-1: #9fd4e8;--bg-glow-2: #b8f0d8;--bg-end: #a8d4e8;--ink: #0f2a3a;--muted: #4a6578;--accent: #1f8a9e;--accent-dim: #176f80;--accent-2: #3db8ff;--tile: #f0f7ff;--tile-ink: #0f2a3a;--tile-edge: #c5d8ea;--danger: #c86e42;--warn: #b89018;--on-warn: #0f2a3a;--ok: #2a9e7a;--board: #2a8a9a;--board-border: #1f6f7c;--board-deep: #0a3340;--cell-empty: rgba(255, 255, 255, .28);--premium-2l: #6ec4ff;--premium-3l: #2f8fe0;--premium-3l-ink: #fff;--premium-2w: #9ae0cc;--premium-3w: #147a6e;--premium-3w-ink: #fff;--center-ring: #f0c040;--panel: #f7fcfe;--panel-border: #b0d4e0;--input-bg: #ffffff;--input-border: #a8c4d4;--on-accent: #f5fcfe;--logo-bg: #0a2a32;--toast-shadow: rgba(15, 42, 58, .2);--modal-scrim: rgba(15, 42, 58, .5);color-scheme:light}[data-theme=mist]{--bg0: #eef2f5;--bg1: #d8e2ea;--bg-glow-1: #c5d4e0;--bg-glow-2: #c8e4dc;--bg-end: #b8c8d4;--ink: #1a2e3c;--muted: #5a7080;--accent: #4a7a8c;--accent-dim: #3a6474;--accent-2: #6a9ab0;--tile: #f5f8fa;--tile-ink: #1a2e3c;--tile-edge: #c8d4dc;--danger: #b87050;--warn: #a88820;--on-warn: #1a2e3c;--ok: #3a9a78;--board: #5a8a9a;--board-border: #4a7484;--board-deep: #1a3844;--cell-empty: rgba(255, 255, 255, .4);--premium-2l: #8ab8d4;--premium-3l: #5a90b0;--premium-3l-ink: #fff;--premium-2w: #a0d4c0;--premium-3w: #3a6870;--premium-3w-ink: #fff;--center-ring: #d4b860;--panel: #f7fafc;--panel-border: #c0d0dc;--input-bg: #ffffff;--input-border: #b0c0cc;--on-accent: #f5fafc;--logo-bg: #1a3038;--toast-shadow: rgba(26, 46, 60, .18);--modal-scrim: rgba(26, 46, 60, .45);color-scheme:light}[data-theme=current]{--bg0: #0e2830;--bg1: #143840;--bg-glow-1: #1a4850;--bg-glow-2: #164848;--bg-end: #0a2028;--ink: #d8ecee;--muted: #7a9aa4;--accent: #2a9aaa;--accent-dim: #3aadb8;--accent-2: #5ec8d8;--tile: #e8f4f0;--tile-ink: #0e2830;--tile-edge: #a8c8c0;--danger: #d08058;--warn: #d4b040;--on-warn: #0e2830;--ok: #3cbe8a;--board: #1a6a78;--board-border: #145860;--board-deep: #062028;--cell-empty: rgba(255, 255, 255, .1);--premium-2l: #3a8ab0;--premium-3l: #2a6a98;--premium-3l-ink: #e8f4ff;--premium-2w: #5cbc9a;--premium-3w: #1a8890;--premium-3w-ink: #fff;--center-ring: #e0c050;--panel: #163840;--panel-border: #2a5860;--input-bg: #0e2830;--input-border: #3a6870;--on-accent: #f0fafc;--logo-bg: #061418;--toast-shadow: rgba(0, 0, 0, .4);--modal-scrim: rgba(0, 0, 0, .6);color-scheme:dark}[data-theme=night]{--bg0: #121a22;--bg1: #1a2834;--bg-glow-1: #243848;--bg-glow-2: #1e3a3a;--bg-end: #152028;--ink: #e8eef4;--muted: #8a9aac;--accent: #ff7a5c;--accent-dim: #ff9178;--accent-2: #5ec8ff;--tile: #eef2f6;--tile-ink: #1a1a20;--tile-edge: #b8c4d0;--danger: #d48955;--warn: #e0b848;--on-warn: #121a22;--ok: #3dce8a;--board: #1e6b5c;--board-border: #155246;--board-deep: #0a201c;--cell-empty: rgba(255, 255, 255, .08);--premium-2l: #3a7ab0;--premium-3l: #2a5f9a;--premium-3l-ink: #e8f0ff;--premium-2w: #3a9888;--premium-3w: #148a78;--premium-3w-ink: #fff;--center-ring: #e8c040;--panel: #1e2a36;--panel-border: #2e4050;--input-bg: #162028;--input-border: #3a5060;--on-accent: #fffaf5;--logo-bg: #0a1218;--toast-shadow: rgba(0, 0, 0, .45);--modal-scrim: rgba(0, 0, 0, .65);color-scheme:dark}[data-theme=moon]{--bg0: #0c1420;--bg1: #142030;--bg-glow-1: #1c3048;--bg-glow-2: #183040;--bg-end: #0a1018;--ink: #e4eef8;--muted: #8498b0;--accent: #6ab0d8;--accent-dim: #82c0e4;--accent-2: #9ad0f0;--tile: #eef4fa;--tile-ink: #0c1420;--tile-edge: #b0c4d8;--danger: #d08860;--warn: #d4b858;--on-warn: #0c1420;--ok: #48c090;--board: #246878;--board-border: #1a5460;--board-deep: #081820;--cell-empty: rgba(255, 255, 255, .07);--premium-2l: #4a88b8;--premium-3l: #346898;--premium-3l-ink: #e8f4ff;--premium-2w: #48b09a;--premium-3w: #3a88b0;--premium-3w-ink: #fff;--center-ring: #d8c878;--panel: #162432;--panel-border: #2a4058;--input-bg: #0e1824;--input-border: #3a5068;--on-accent: #0c1420;--logo-bg: #060c14;--toast-shadow: rgba(0, 0, 0, .5);--modal-scrim: rgba(0, 0, 0, .68);color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html{overflow-x:hidden}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(ellipse 100% 70% at 0% 0%,var(--bg-glow-1) 0%,transparent 55%),radial-gradient(ellipse 80% 60% at 100% 10%,var(--bg-glow-2) 0%,transparent 50%),linear-gradient(180deg,var(--bg0),var(--bg1) 55%,var(--bg-end));min-height:100dvh;overflow-x:hidden}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}html[data-reduce-motion="1"] *,html[data-reduce-motion="1"] *:before,html[data-reduce-motion="1"] *:after{animation:none!important;transition:none!important}a{color:var(--accent-dim)}button,input,select{font:inherit}.app-shell{max-width:480px;margin:0 auto;padding:1rem 1rem 2.5rem;min-height:100dvh;position:relative}.app-shell:has(.game-page),.app-shell:has(.spectate-page){font-size:16px;height:100dvh;max-height:100dvh;overflow:hidden;display:flex;flex-direction:column;padding-top:0;padding-bottom:max(.35em,env(safe-area-inset-bottom,0px));padding-left:.35em;padding-right:.35em}.toast-stack{position:absolute;z-index:40;right:max(.45rem,env(safe-area-inset-right,0px));top:calc(env(safe-area-inset-top,0px) + 4.5rem);display:flex;flex-direction:column;align-items:stretch;gap:.5rem;width:min(22rem,calc(100% - .9rem));pointer-events:none}.app-shell:has(>.nav) .toast-stack{top:calc(env(safe-area-inset-top,0px) + 6.5rem)}.challenge-toast{pointer-events:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem .65rem;padding:.7rem .85rem;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;box-shadow:0 12px 32px var(--toast-shadow);animation:challenge-toast-in .28s ease-out}.challenge-toast.is-leaving{animation:challenge-toast-out .28s ease-in forwards}.challenge-toast-body{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1 1 8rem}.challenge-toast-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem;flex:1 1 auto}.challenge-toast-actions .btn.compact{padding:.35rem .7rem;min-height:36px;font-size:.85rem}@keyframes challenge-toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes challenge-toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.brand{font-family:var(--font-display);font-size:clamp(2rem,8vw,2.75rem);font-weight:700;letter-spacing:-.02em;margin:.25rem 0 .35rem;color:var(--accent)}.lede{color:var(--muted);margin:0 0 1.25rem;line-height:1.45}.landing-hero-tagline,.landing-hero-brand,.landing-hero-lede,.landing-hero-cta{animation:landing-hero-in .28s ease-out both}.landing-hero-brand{animation-delay:.06s}.landing-hero-lede{animation-delay:.12s}.landing-hero-cta{animation-delay:.18s}.landing-guest{margin-top:1.25rem;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.landing-guest-note{margin:0;max-width:28rem}.landing-guest-name{display:flex;flex-direction:column;gap:.35rem;width:min(100%,16rem);font-size:.9rem}.landing-guest-name input{width:100%}.guest-upgrade-banner{margin-top:.25rem}@keyframes landing-hero-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stack{display:flex;flex-direction:column;gap:.75rem}.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--muted)}input,select{background:var(--input-bg);border:1px solid var(--input-border);border-radius:10px;padding:.7rem .85rem;color:var(--ink)}select option{background:var(--panel);color:var(--ink)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:6px;padding:.75rem 1.2rem;font-weight:700;cursor:pointer;background:var(--accent);color:var(--on-accent);transition:background-color .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--panel);color:var(--ink);border:1px solid var(--input-border)}.btn.danger{background:color-mix(in srgb,var(--danger) 18%,var(--panel));color:color-mix(in srgb,var(--danger) 82%,var(--ink));border:1px solid color-mix(in srgb,var(--danger) 42%,transparent)}.btn.warn{background:color-mix(in srgb,var(--warn) 20%,var(--panel));color:color-mix(in srgb,var(--warn) 72%,var(--ink));border:1px solid color-mix(in srgb,var(--warn) 45%,transparent)}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:16px;padding:1rem;box-shadow:0 8px 24px #ff783c14}.app-shell:not(:has(.game-page)) .stack{gap:.5rem}.app-shell:not(:has(.game-page)) .panel{padding:.65rem .75rem;border-radius:12px;box-shadow:0 4px 14px #ff783c0f}.app-shell:not(:has(.game-page)) .panel h2{margin:0 0 .35rem;font-size:1rem;font-weight:700;line-height:1.25}.app-shell:not(:has(.game-page)) .panel>.muted,.app-shell:not(:has(.game-page)) .panel>p{margin-top:.25rem;margin-bottom:.25rem}.app-shell:not(:has(.game-page)) .brand{margin:.05rem 0 .1rem}.app-shell:not(:has(.game-page)) .list-item{padding:.45rem 0;gap:.4rem}.app-shell:not(:has(.game-page)) .list-item:last-child{border-bottom:none;padding-bottom:.15rem}.app-shell:not(:has(.game-page)) .list-item:first-of-type{padding-top:.25rem}.app-shell:not(:has(.game-page)) .list-item .muted{margin-top:.1rem;line-height:1.3}.app-shell:not(:has(.game-page)) .stats-tabs{flex-wrap:wrap}.app-shell:not(:has(.game-page)) .stats-section-title{margin:0 0 .4rem;font-size:1rem}.app-shell:not(:has(.game-page)) .play-stats-grid{gap:.4rem .85rem}.app-shell:not(:has(.game-page)) .play-stats-grid dd{margin-top:.05rem;font-size:1.05rem}.app-shell:not(:has(.game-page)) .achievement-grid{gap:.45rem}.app-shell:not(:has(.game-page)) .achievement-card{padding:.5rem .55rem;gap:.18rem}.app-shell:not(:has(.game-page)) .top-words-list li{padding:.28rem 0}.app-shell:not(:has(.game-page)) .top-words-grid{gap:.75rem 1rem}.app-shell:not(:has(.game-page)) .top-words-word{font-size:.95rem}.app-shell:not(:has(.game-page)) .stats-win-ratio{font-size:1.15rem}.app-shell:not(:has(.game-page)) .stats-wlt{margin-top:.1rem}.app-shell:not(:has(.game-page)) .theme-tiles{gap:.4rem}.app-shell:not(:has(.game-page)) .theme-tile{padding:.4rem .35rem;gap:.3rem}.app-shell:not(:has(.game-page)) .theme-tile-label{font-size:.72rem}.app-shell:not(:has(.game-page)) .theme-detail-blurb{font-size:.75rem;line-height:1.3}.app-shell:not(:has(.game-page)) label{gap:.25rem}.app-shell:not(:has(.game-page)) input,.app-shell:not(:has(.game-page)) select{padding:.55rem .7rem}.app-shell:not(:has(.game-page)) .btn.compact{padding:.35rem .7rem;min-height:34px;font-size:.85rem}.app-shell:not(:has(.game-page)) .lede{margin-bottom:.75rem}.error{color:var(--danger);font-size:.9rem}.nav{position:sticky;top:0;z-index:20;display:flex;flex-direction:column;align-items:stretch;gap:.35rem;margin:0 -1rem 1rem;padding:max(.35rem,env(safe-area-inset-top,0px)) 1rem .5rem;background:color-mix(in srgb,var(--bg0) 72%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.nav-brand{font-family:var(--font-display);font-size:1.35rem;font-weight:700;color:var(--accent);text-decoration:none;line-height:1.2}.nav-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;width:100%;border-bottom:1px solid var(--panel-border)}.nav-tabs--guest{grid-template-columns:repeat(2,minmax(0,1fr));justify-items:stretch}.nav-tabs--guest-3{grid-template-columns:repeat(3,minmax(0,1fr))}.nav-tabs--guest-3 .nav-tab{font-size:.72rem;padding-left:.1rem;padding-right:.1rem}.nav-tabs--guest .nav-tab{max-width:none}.nav-tab{display:flex;align-items:center;justify-content:center;min-height:40px;padding:.35rem .15rem;font-size:.8rem;font-weight:600;color:var(--muted);text-decoration:none;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s ease,border-color .15s ease}.nav-tab:hover,.nav-tab:focus-visible{color:var(--ink);outline:none}.nav-tab.is-active{color:var(--ink);font-weight:700;border-bottom-color:var(--accent)}.install-banner{display:flex;flex-direction:column;gap:.4rem;margin-top:.35rem;padding:.55rem .65rem;border:1px solid var(--panel-border);border-radius:10px;background:color-mix(in srgb,var(--panel) 88%,var(--accent) 12%)}.offline-banner{padding:.45rem .75rem;text-align:center;font-size:.85rem;font-weight:600;color:var(--ink);background:color-mix(in srgb,var(--panel) 75%,var(--warn, #c47a2c) 25%);border-bottom:1px solid var(--panel-border)}.offline-banner-text{margin:0}.offline-banner-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin-top:.35rem}.install-banner-text{margin:0;font-size:.85rem;font-weight:600;color:var(--ink);line-height:1.3}.install-cta-actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.install-cta-how{margin:.15rem 0 0;font-size:.8rem;line-height:1.35}.theme-fieldset{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.theme-legend{padding:0;margin-bottom:.35rem;font-weight:600}.empty-state{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.theme-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.theme-tile{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;text-align:center;padding:.5rem .4rem;border:2px solid var(--panel-border);border-radius:10px;background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;transition:border-color .15s ease,box-shadow .15s ease}.theme-tile:hover,.theme-tile:focus-visible{border-color:color-mix(in srgb,var(--accent) 55%,var(--panel-border));outline:none}.theme-tile.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent)}.theme-tile-swatches{display:flex;height:1.35rem;border-radius:6px;overflow:hidden;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent)}.theme-tile-swatch{flex:1;min-width:0}.theme-tile-swatch--bg{background:linear-gradient(135deg,var(--bg0),var(--bg1))}.theme-tile-swatch--board{background:var(--board)}.theme-tile-swatch--accent{background:var(--accent)}.theme-tile-label{font-weight:700;font-size:.78rem;line-height:1.2}.theme-detail{display:flex;flex-direction:column;gap:.4rem;margin-top:.15rem}.theme-detail-title{margin:0;font-weight:700;font-size:.95rem}.theme-detail-blurb{margin:0;font-size:.8rem;color:var(--muted);line-height:1.35}.motion-pref-label{display:flex;align-items:flex-start;gap:.55rem;margin:.35rem 0 0;cursor:pointer;font-weight:600}.motion-pref-label input{margin-top:.2rem;flex-shrink:0}.motion-pref-hint{display:block;margin-top:.2rem;font-weight:400;font-size:.85rem;line-height:1.35}.theme-preview{border-radius:8px;overflow:hidden}.theme-preview-board{width:100%;max-width:none;pointer-events:none}.theme-preview-board .board{width:100%;gap:1px}.theme-preview-board .cell{border-radius:2px;cursor:default}.board-wrap{position:relative;overflow:hidden;border-radius:12px;border:2px solid var(--board-border);background:var(--board);padding:2px;touch-action:none}.board-wrap[data-board-zoomed="1"]{cursor:grab}.board-wrap[data-board-zoomed="1"].board-wrap--panning{cursor:grabbing;-webkit-user-select:none;user-select:none}.board-zoom-layer{transform-origin:0 0;width:100%;will-change:transform}.board-zoom-layer--anim{transition:transform .22s ease-out}.game-page .board-wrap,.spectate-page .board-wrap{max-width:100%;aspect-ratio:1 / 1;align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.spectate-page .board-wrap{flex:0 0 auto;width:min(100%,420px)}.game-page .board-zoom-layer,.spectate-page .board-zoom-layer{width:100%;flex-shrink:0}.board-zoom-layer .board,.board-zoom-layer .board-flag-frame{width:100%}.board{display:grid;grid-template-columns:repeat(15,minmax(0,1fr));gap:1px;width:min(100%,420px);margin:0 auto;container-type:inline-size;container-name:board}.cell{aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;margin:0;border:none;font-size:2.4cqi;font-weight:700;background:var(--cell-empty);color:var(--ink);-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;touch-action:manipulation}.cell:not(.has-letter){font-size:2.8cqi;font-weight:800}.cell[class~="2L"]{background:var(--premium-2l)}.cell[class~="3L"]{background:var(--premium-3l);color:var(--premium-3l-ink)}.cell[class~="2W"]{background:var(--premium-2w)}.cell[class~="3W"]{background:var(--premium-3w);color:var(--premium-3w-ink)}.cell.center{outline:2px solid var(--center-ring);outline-offset:-2px}.board--flag{--flag-camp-north: rgba(0, 0, 0, .42);--flag-camp-mid: rgba(120, 120, 120, .4);--flag-camp-south: rgba(255, 255, 255, .55);--flag-camp-mine: color-mix(in srgb, #e6b84a 28%, rgba(255, 255, 255, .5));--flag-camp-enemy: color-mix(in srgb, #e24a3a 22%, rgba(0, 0, 0, .38));--flag-mine: color-mix(in srgb, #e6b84a 72%, #fff8e0);--flag-enemy: color-mix(in srgb, #e24a3a 78%, #ffd4cc)}.board-wrap:has(.board--flag){border-color:var(--board-border);background:color-mix(in srgb,var(--board) 92%,var(--board-deep))}.board-flag-frame{position:relative;width:min(100%,420px);margin:0 auto;container-type:inline-size;container-name:board-frame}.board-flag-frame .board{width:100%}.flag-camp-label{position:absolute;left:0;right:0;z-index:2;pointer-events:none;text-align:center;font-size:2.2cqi;font-weight:800;letter-spacing:.04em;line-height:1.2;text-shadow:0 0 4px color-mix(in srgb,var(--board) 70%,transparent),0 1px 0 color-mix(in srgb,var(--board) 55%,transparent);color:var(--ink);opacity:.92}.flag-camp-label--north{top:3px}.flag-camp-label--south{bottom:3px}.flag-camp-label--enemy{color:#fffffff2;text-shadow:0 0 5px rgba(0,0,0,.55),0 1px 0 rgba(0,0,0,.35)}.board--flag .cell.camp-north:not([class~="2L"]):not([class~="3L"]):not([class~="2W"]):not([class~="3W"]):not(.has-letter):not(.flag):not(.camp-mine):not(.camp-enemy){background:var(--flag-camp-north);color:#ffffffd9}.board--flag .cell.camp-stripe:not([class~="2L"]):not([class~="3L"]):not([class~="2W"]):not([class~="3W"]):not(.has-letter):not(.flag){background:var(--flag-camp-mid);color:var(--ink)}.board--flag .cell.camp-south:not([class~="2L"]):not([class~="3L"]):not([class~="2W"]):not([class~="3W"]):not(.has-letter):not(.flag):not(.camp-mine):not(.camp-enemy){background:var(--flag-camp-south);color:var(--ink)}.board--flag .cell.camp-mine:not([class~="2L"]):not([class~="3L"]):not([class~="2W"]):not([class~="3W"]):not(.has-letter):not(.flag){background:var(--flag-camp-mine);color:var(--ink)}.board--flag .cell.camp-enemy:not([class~="2L"]):not([class~="3L"]):not([class~="2W"]):not([class~="3W"]):not(.has-letter):not(.flag){background:var(--flag-camp-enemy);color:#ffffffe0}.board--flag .cell.flag:not(.has-letter){background:var(--flag-mine);color:var(--tile-ink);font-size:2.8cqi;font-weight:800;box-shadow:inset 0 0 0 1.5px #2a2a1a38}.board--flag .cell.flag.flag-enemy:not(.has-letter){background:var(--flag-enemy);color:#5a1810;box-shadow:inset 0 0 0 1.5px #5a181040}.cell.has-letter{background:var(--tile);color:var(--tile-ink);font-size:4.65cqi;box-shadow:inset 0 -2px #0000001f}.tile-value{position:absolute;right:1px;bottom:0;font-size:2cqi;font-weight:700;line-height:1;color:color-mix(in srgb,var(--tile-ink) 72%,transparent);pointer-events:none}.rack-tile .tile-value{right:3px;bottom:2px;font-size:19cqi}.score-badge-cell{z-index:2}.score-badge{position:absolute;top:-1.35cqi;right:-1.35cqi;min-width:3.2cqi;padding:0 2px;border-radius:3px;background:var(--accent);color:#fff;font-size:2.1cqi;font-weight:700;line-height:1.15;pointer-events:none;z-index:2}.score-badge-cell.score-badge-top:not(.score-badge-right) .score-badge{top:auto;bottom:-1.35cqi;right:-1.35cqi}.score-badge-cell.score-badge-right:not(.score-badge-top) .score-badge{top:-1.35cqi;right:auto;left:-1.35cqi}.score-badge-cell.score-badge-top.score-badge-right .score-badge{top:auto;right:auto;bottom:-1.35cqi;left:-1.35cqi}.cell.pending{outline:2px solid var(--accent);outline-offset:-2px;touch-action:none}.cell.lifted{outline:2px solid var(--accent-2);outline-offset:-2px;transform:translateY(-2px);z-index:1}.cell.drop-target{outline:none;box-shadow:0 0 0 2px var(--accent-2);background:color-mix(in srgb,var(--accent-2) 22%,var(--cell-empty));z-index:2}.game-page,.spectate-page{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;padding-bottom:0;gap:.5em}.game-page{overflow:hidden}.game-main{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:.5em}.spectate-page{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:max(.75em,env(safe-area-inset-bottom,0px))}.spectate-page>*{flex-shrink:0}.debug-insta-win{position:fixed;bottom:calc(5.5em + env(safe-area-inset-bottom,0px));left:max(.5em,env(safe-area-inset-left,0px));top:auto;z-index:50}.game-header{display:flex;align-items:center;gap:.55em;margin:0;min-width:0;flex-shrink:0;z-index:6;background:var(--bg0);padding:max(.15em,env(safe-area-inset-top,0px)) .1em .35em}.game-back{flex-shrink:0;text-decoration:none;font-weight:700;font-size:.9em;color:var(--ink);padding:.25em .45em .25em 0}.game-back:before{content:"← "}.game-header .game-meta-row{flex:1;min-width:0;justify-content:flex-end;font-size:.78em;line-height:1.25}.game-header .timer{font-size:.85em}.game-meta{margin:0 0 .4em;font-size:.78em;line-height:1.25}.game-meta-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2em .55em;justify-content:center}.game-meta .timer{font-size:.85em}.meta-scores{font-weight:700;font-variant-numeric:tabular-nums}.meta-score{display:inline-flex;align-items:center;gap:.3em;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.meta-players{display:flex;flex-wrap:wrap;align-items:center;gap:.25em .65em;min-width:0}.game-header .meta-players{flex:1 1 100%;justify-content:flex-end}.meta-score.active{box-shadow:inset 0 -2px 0 var(--accent, #c45c26);color:var(--text)}.meta-score.active.turn-pulse{animation:meta-score-turn-pulse .4s ease-out}.meta-score.score-pop{animation:meta-score-score-pop .4s ease-out}.meta-score.active.turn-pulse.score-pop{animation:meta-score-turn-pulse .4s ease-out,meta-score-score-pop .4s ease-out}@keyframes meta-score-turn-pulse{0%,to{box-shadow:inset 0 -2px 0 var(--accent, #c45c26)}50%{box-shadow:inset 0 -2px 0 var(--accent, #c45c26),0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent)}}@keyframes meta-score-score-pop{0%,to{transform:scale(1)}45%{transform:scale(1.06)}}.meta-score.resigned{opacity:.45;text-decoration:line-through}.meta-rack{font-size:.7em;font-weight:600;color:var(--muted);margin-left:.12rem;position:relative;top:-.35em;line-height:1}.player-multi{border:1px solid var(--border, rgba(0, 0, 0, .12));border-radius:8px;padding:.65rem .75rem;margin:0}.player-multi legend{padding:0 .25rem;font-weight:600}.player-tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:.5rem;margin-top:.5rem}.player-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;min-height:4.25rem;padding:.4rem .3rem;border:2px solid color-mix(in srgb,var(--tile-ink) 18%,transparent);border-radius:8px;background:var(--tile);color:var(--tile-ink);cursor:pointer;font:inherit;box-shadow:0 1px color-mix(in srgb,var(--tile-ink) 12%,transparent);transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease,transform .15s ease}.player-tile:disabled{opacity:.45;cursor:not-allowed}.player-tile.selected{border-color:var(--accent, #2a9a7e);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent, #2a9a7e) 45%,transparent),0 1px color-mix(in srgb,var(--tile-ink) 12%,transparent);background:color-mix(in srgb,var(--tile) 78%,var(--accent, #2a9a7e));animation:player-tile-pop .15s ease-out}@keyframes player-tile-pop{0%{transform:scale(.96)}to{transform:scale(1)}}.player-tile-letter{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:1.55rem;line-height:1}.player-tile-name{font-size:.68rem;font-weight:600;text-align:center;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-tile-waiting{font-size:.62rem;font-weight:700;line-height:1;color:color-mix(in srgb,var(--tile-ink) 62%,transparent)}.blind-clock-pick{display:flex;flex-direction:column;gap:.35rem}.blind-clock-pick-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .45rem}.blind-clock-pick-label{font-size:.85rem;color:var(--muted, #6b6560);margin-right:.15rem}.blind-clock-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:.82rem;font-weight:600;line-height:1;padding:.35rem .7rem;border-radius:6px;border:1.5px solid color-mix(in srgb,var(--tile-ink) 20%,transparent);background:color-mix(in srgb,var(--tile) 70%,transparent);color:var(--tile-ink);cursor:pointer}.blind-clock-chip:hover{border-color:color-mix(in srgb,var(--accent, #2a9a7e) 55%,transparent)}.blind-clock-chip.selected{border-color:var(--accent, #2a9a7e);background:color-mix(in srgb,var(--tile) 72%,var(--accent, #2a9a7e));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent, #2a9a7e) 35%,transparent)}.blind-clock-pick-hint{margin:0;font-size:.85rem;line-height:1.35}.bot-filler-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr));gap:.5rem;margin-top:.5rem}.bot-filler-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;min-height:4.25rem;padding:.4rem .35rem;border:2px dashed color-mix(in srgb,var(--tile-ink) 28%,transparent);border-radius:8px;background:color-mix(in srgb,var(--tile) 55%,#e8e4d4);color:var(--tile-ink);cursor:pointer;font:inherit;text-align:center}.bot-filler-tile:hover{border-style:solid;border-color:var(--accent, #2a9a7e)}.bot-filler-letter{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:1.35rem;line-height:1}.bot-filler-label{font-size:.68rem;font-weight:600;line-height:1.15}.presence-dot{width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.presence-dot.here{background:var(--ok)}.presence-dot.away{background:var(--danger)}.meta-score .presence-dot{margin-right:.05rem}.meta-live,.meta-here{color:var(--ok);font-weight:600}.meta-away,.meta-warn{color:var(--muted);font-weight:600}.bag-count-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:.15em;text-decoration-color:color-mix(in srgb,var(--muted) 55%,transparent)}.bag-count-btn:hover,.bag-count-btn:focus-visible{color:var(--text);text-decoration-color:var(--accent, #c45c26);outline:none}.bag-modal{width:min(100%,380px)}.bag-modal-note{margin:-.35rem 0 .85rem;font-size:.78rem;line-height:1.35;color:var(--muted)}.bag-letter-grid{list-style:none;margin:0 0 .25rem;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem}.bag-letter-cell{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.3rem .15rem .35rem;border-radius:8px;border:1px solid var(--panel-border);background:var(--tile);color:var(--tile-ink);font-variant-numeric:tabular-nums}.bag-letter-cell.unused{opacity:.42}.bag-letter-face{font-weight:800;font-size:.95rem;line-height:1;letter-spacing:.02em}.bag-letter-count{font-size:.72rem;font-weight:700;line-height:1}.bag-letter-total{font-weight:600;opacity:.65}.play-feedback{display:inline-block;margin-top:.2em;padding:.15em .45em;border-radius:6px;font-size:.8em;font-weight:600;max-width:100%;line-height:1.25}.play-feedback.float{position:absolute;left:50%;top:.45em;transform:translate(-50%);z-index:8;margin:0;max-width:calc(100% - 1em);pointer-events:none;text-align:center;color:var(--ink);background:var(--panel);border:1px solid var(--panel-border);box-shadow:0 2px 10px #0000001f;animation:play-feedback-in .15s ease-out}@keyframes play-feedback-in{0%{opacity:0}to{opacity:1}}.play-feedback.ok{color:var(--ok);background:#ffffffd1}.play-feedback.bad{color:var(--danger);background:#ffffffd1}.play-feedback.float.ok{background:#e8fff2e0}.play-feedback.float.bad{background:#ffecece6}.play-feedback.float.your-turn-flash{font-weight:700;color:var(--ink);background:color-mix(in srgb,var(--accent, #c45c26) 18%,#fff);border-color:color-mix(in srgb,var(--accent, #c45c26) 45%,var(--panel-border));animation:your-turn-flash 1.8s ease-out forwards}@keyframes your-turn-flash{0%{opacity:0}8%{opacity:1}72%{opacity:1}to{opacity:0}}.game-controls{position:relative;flex-shrink:0;z-index:5;margin:.15em -.25em 0;padding:.4em .4em .55em;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px 14px 0 0;box-shadow:0 -4px 16px #ff783c14}.rack-bar{display:block;margin:0 0 .4em}.rack{display:flex;gap:.3em;justify-content:stretch;align-items:stretch;flex-wrap:nowrap;margin:0;width:100%;min-height:0}.rack-slot{flex:1 1 0;min-width:0;aspect-ratio:1 / 1.05;display:flex;align-items:stretch;justify-content:stretch;container-type:inline-size;container-name:rack-slot}.rack-slot.empty{border-radius:6px;background:#0000000f;box-shadow:inset 0 1px 2px #00000014;border:1px dashed rgba(0,0,0,.12)}.rack-slot.drop-target{outline:2px solid var(--accent);outline-offset:1px;border-radius:6px}.rack-slot.drop-target.empty{background:color-mix(in srgb,var(--accent) 18%,rgba(0,0,0,.06));border-color:var(--accent)}.rack-tile{position:relative;width:100%;height:100%;border-radius:6px;background:var(--tile);color:var(--tile-ink);font-weight:700;font-size:50cqi;display:flex;align-items:center;justify-content:center;cursor:grab;border:2px solid transparent;padding:0;box-shadow:0 2px #0000001f;touch-action:none;-webkit-user-select:none;user-select:none}.rack-tile:active{cursor:grabbing}.rack-tile:disabled{cursor:default}.rack-tile.selected{border-color:var(--accent);transform:translateY(-2px)}.rack-tile.swap-marked{border-color:var(--warn, #c45c26);background:color-mix(in srgb,var(--tile) 70%,#c45c26);transform:translateY(-2px)}.rack-swap .rack-tile{cursor:pointer}.rack-tile.dragging{opacity:.45;pointer-events:none}.cell.dragging{opacity:.45}.drag-ghost{position:fixed;left:0;top:0;z-index:50;pointer-events:none;border-radius:6px;background:var(--tile);color:var(--tile-ink);font-weight:700;font-size:calc(var(--ghost-size, 40px) * .5);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px #00000038;will-change:transform}.drag-ghost .tile-value{font-size:max(7px,calc(var(--ghost-size, 40px) * .16))}.rack-waiting{opacity:.45;pointer-events:none}.rack-waiting .rack-tile{cursor:default}.waiting-hint{color:var(--muted);font-size:.9em;font-weight:600;margin:0;padding:0 .15em;text-align:center;width:100%}.last-move-hint{font-size:.8em;font-weight:500;margin:.15em 0 0;padding:0 .15em;line-height:1.3;text-align:center;width:100%}.actions-commit .actions-next-game{flex:1 1 auto;min-width:0;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--modal-scrim);animation:modal-backdrop-in .2s ease-out}.modal{width:min(100%,360px);background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:1rem 1.1rem 1.15rem;box-shadow:0 12px 40px var(--toast-shadow);animation:modal-panel-in .2s ease-out}.result-modal{width:min(100%,360px);max-height:min(85vh,560px);display:flex;flex-direction:column;overflow:hidden}.result-modal .end-score-summary{overflow-y:auto;flex:1 1 auto;min-height:0;-webkit-overflow-scrolling:touch}.result-modal .actions{flex-shrink:0}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal h2{margin:0 0 .35rem;font-family:var(--font-display);font-size:1.35rem}.modal .muted{margin:0 0 .85rem}.modal .actions{margin-top:.75rem;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;width:auto}.enjoy-modal .enjoy-modal-later{margin:.65rem 0 0;text-align:center}.store-modal{width:min(100%,420px);max-height:min(85vh,640px);overflow-y:auto;-webkit-overflow-scrolling:touch}.store-status{margin:0;font-size:.92rem}.store-product{display:flex;flex-direction:row;align-items:flex-start;gap:.85rem}.store-product-icon{flex:0 0 auto;width:72px;height:72px;border-radius:14px;object-fit:cover;box-shadow:0 2px 8px #0000002e}.store-product-body{flex:1 1 auto;min-width:0;gap:.4rem}.store-product-price{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.store-footnote{margin:0;font-size:.8rem;line-height:1.35}.bot-about-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem;max-height:min(55vh,420px);overflow:auto}.bot-about-list li p{margin:.25rem 0 0;font-size:.92rem}.words-modal{width:min(100%,420px);max-height:min(85vh,560px);display:flex;flex-direction:column}.words-def-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1 1 auto;max-height:50vh;display:flex;flex-direction:column;gap:.75rem}.words-def-item{padding-bottom:.65rem;border-bottom:1px solid var(--panel-border)}.words-def-item:last-child{border-bottom:none;padding-bottom:0}.words-def-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.words-def-word{letter-spacing:.04em;font-size:1.05rem}.words-def-source{font-size:.8rem;font-weight:600;flex:0 0 auto}.words-def-body{display:flex;flex-direction:column;gap:.35rem}.words-def-sense{margin:0;font-size:.9rem;line-height:1.35;color:var(--text)}.words-def-pos{display:inline-block;margin-right:.4rem;font-style:italic;color:var(--muted);font-size:.82rem}.words-def-attr{margin:.85rem 0 0;font-size:.75rem;line-height:1.35}button.linkish{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin:0;color:var(--accent, #2a5a9e);font:inherit;font-weight:600;font-size:.9rem;text-decoration:underline;cursor:pointer}button.linkish:disabled{opacity:.6;cursor:default}.letter-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem;margin-bottom:.85rem}.letter-pick{aspect-ratio:1;border-radius:6px;border:1px solid var(--panel-border);background:var(--tile);color:var(--tile-ink);font-weight:700;font-size:1rem;padding:0;cursor:pointer}.letter-pick:hover{border-color:var(--accent)}.actions{display:flex;flex-direction:column;gap:.4em;width:100%}.actions-tools{display:flex;flex-wrap:nowrap;gap:.3em;width:100%}.actions-tools .btn{flex:1 1 0;min-width:0}.actions-commit{display:flex;flex-wrap:nowrap;align-items:center;gap:.35em;width:100%}.actions-commit .btn.danger{flex:0 0 auto}.actions-primary{flex:1 1 auto;min-width:0}.actions-finished{display:flex;flex-wrap:nowrap;align-items:center;gap:.35em;width:100%}.actions-finished .actions-primary,.actions-finished .waiting-hint{flex:1 1 auto;min-width:0;text-align:center}.actions-finished .btn.secondary{flex:0 0 auto}.btn.compact{padding:.45rem .85rem;min-height:40px;font-size:.9rem}.game-page .btn.compact,.spectate-page .btn.compact{padding:.45em .85em;font-size:.9em}.btn.tool{padding:.4rem .35rem;font-size:.82rem;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.game-page .btn.tool,.spectate-page .btn.tool{padding:.4em .35em;font-size:.82em}.timer{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent-dim)}.timer.timer-urgent{color:var(--danger);animation:timer-urgent-pulse 1s ease-in-out infinite}@keyframes timer-urgent-pulse{0%,to{opacity:1}50%{opacity:.72}}.list-item{display:flex;justify-content:space-between;gap:.5rem;padding:.75rem 0;border-bottom:1px solid var(--panel-border);text-decoration:none;color:inherit;transition:color .15s ease}.list-item--your-turn{margin:0 -.35rem;padding-left:.55rem;padding-right:.35rem;border-radius:6px;border-bottom-color:transparent;background:color-mix(in srgb,var(--accent) 10%,transparent);box-shadow:inset 3px 0 0 var(--accent)}.app-shell:not(:has(.game-page)) .list-item--your-turn{margin:0 -.25rem;padding-left:.45rem;padding-right:.25rem}.your-turn-mark{display:inline-block;padding:.05rem .4rem;font-size:.78em;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--on-accent);background:var(--accent);border-radius:4px;vertical-align:.05em;animation:your-turn-mark-pulse 1.8s ease-in-out infinite}@keyframes your-turn-mark-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent) 0%,transparent);filter:brightness(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 28%,transparent);filter:brightness(1.08)}}.home-pull-root{position:relative}.pull-refresh-indicator{display:flex;align-items:flex-end;justify-content:center;overflow:hidden;margin:-.25rem 0 0;pointer-events:none;transition:none}.pull-refresh-spinner{box-sizing:border-box;width:1.35rem;height:1.35rem;margin-bottom:.35rem;border:2.5px solid color-mix(in srgb,var(--accent) 28%,transparent);border-top-color:var(--accent);border-radius:50%;opacity:.55;transform:scale(.85);transition:opacity .15s ease,transform .15s ease}.pull-refresh-indicator.is-armed .pull-refresh-spinner{opacity:1;transform:scale(1)}.pull-refresh-indicator.is-refreshing .pull-refresh-spinner{opacity:1;animation:pull-refresh-spin .7s linear infinite}@keyframes pull-refresh-spin{0%{transform:rotate(0) scale(1)}to{transform:rotate(360deg) scale(1)}}.app-shell:not(:has(.game-page)) a.list-item:hover,.app-shell:not(:has(.game-page)) a.list-item:focus-visible{color:var(--accent-dim);outline:none}.stats-row{align-items:center}.stats-pager{margin-top:.75rem;align-items:center;justify-content:center;flex-wrap:wrap}.stats-section-title{margin:0 0 .75rem;font-size:1.05rem;font-weight:700}.stats-panel-note{margin:-.35rem 0 .75rem;font-size:.85rem}.stats-world-compare{font-size:.85rem;font-weight:500}.play-stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem;margin:0}.play-stats-grid dt{margin:0;font-size:.8rem;color:var(--muted)}.play-stats-grid dd{margin:.15rem 0 0;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}.achievement-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.achievement-card{display:flex;flex-direction:column;gap:.25rem;padding:.65rem .7rem;border-radius:10px;border:1px solid var(--panel-border);background:var(--panel);min-width:0}.achievement-card.unlocked{border-color:color-mix(in srgb,var(--accent) 42%,var(--panel-border))}.achievement-card.locked{opacity:.72}.achievement-title{font-size:.92rem;line-height:1.2}.achievement-desc{font-size:.78rem;line-height:1.3}.achievement-status{font-size:.75rem;font-weight:650;font-variant-numeric:tabular-nums}.achievement-bar{display:block;height:4px;border-radius:99px;background:color-mix(in srgb,var(--muted) 28%,transparent);overflow:hidden;margin-top:.15rem}.achievement-bar-fill{display:block;height:100%;background:var(--accent, currentColor);border-radius:99px}.achievement-card.locked .achievement-bar-fill{opacity:.55}.top-words-panel{display:grid;gap:.85rem}.top-words-len-tabs{display:flex;flex-wrap:wrap;gap:.35rem}.top-words-len-tab{min-width:2.25rem;padding:.35rem .55rem;border:1px solid color-mix(in srgb,var(--border, rgba(0, 0, 0, .16)) 80%,transparent);border-radius:.45rem;background:transparent;color:var(--muted);font:inherit;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer}.top-words-len-tab.active{border-color:color-mix(in srgb,var(--accent, #2a6df4) 55%,transparent);background:color-mix(in srgb,var(--accent, #2a6df4) 14%,transparent);color:inherit}.top-words-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.25rem}.top-words-subtitle{margin:0 0 .45rem;font-size:.85rem;font-weight:600;color:var(--muted)}.top-words-list{margin:0;padding:0;list-style:none;counter-reset:top-word}.top-words-list li{display:flex;align-items:baseline;justify-content:space-between;gap:.65rem;padding:.35rem 0;border-bottom:1px solid color-mix(in srgb,var(--border, rgba(0, 0, 0, .12)) 55%,transparent);counter-increment:top-word}.top-words-list li:last-child{border-bottom:none;padding-bottom:0}.top-words-word{font-weight:700;letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-words-word:before{content:counter(top-word) ". ";font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.top-words-games{flex-shrink:0;font-size:.85rem;font-variant-numeric:tabular-nums}.stats-row-main{min-width:0;flex:1}.stats-row-head{display:flex;align-items:baseline;gap:.65rem;flex-wrap:wrap}.stats-win-ratio{font-size:1.35rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--accent-dim);letter-spacing:-.02em}.stats-wlt{margin-top:.2rem}.stats-total{opacity:.85}.muted{color:var(--muted);font-size:.85rem}.site-share{margin-top:.5rem;opacity:.95}.site-share-lead{margin:0;font-weight:600}.site-share-row{gap:.35rem}.site-share-target{margin:0;font-weight:600;font-size:.8rem}.site-share-actions{flex-wrap:wrap;gap:.4rem}.site-share-url{margin:0;word-break:break-all;font-size:.78rem;font-variant-numeric:tabular-nums}.site-share-qr{align-self:center;width:min(200px,70vw);padding:.5rem;background:#fff;border-radius:10px;border:1px solid var(--panel-border);line-height:0}.site-share-qr svg{display:block;width:100%;height:auto}.landing-legal{margin-top:1.75rem;font-size:.8rem}.landing-legal a{color:inherit}.legal-page .legal-prose h2{margin:.75rem 0 .35rem;font-size:1.05rem}.legal-page .legal-prose ul{margin:.25rem 0 .5rem;padding-left:1.2rem}.legal-page .legal-prose li{margin:.25rem 0}.legal-page .legal-prose a{color:var(--accent, #7ec8b8)}.tournament-badge{display:inline-block;margin-left:.4rem;padding:.1rem .4rem;font-size:.7rem;font-weight:700;letter-spacing:.02em;color:var(--ink);background:color-mix(in srgb,var(--board) 35%,var(--panel));border-radius:4px;vertical-align:middle}.player-pick-list{max-height:14rem;overflow:auto;margin-top:.25rem}.seed-order-list{margin:.5rem 0 0;padding-left:1.25rem}.bracket-scroll{overflow-x:auto;padding-bottom:.5rem}.bracket{display:flex;gap:1.25rem;align-items:stretch;min-width:min-content}.bracket-round{display:flex;flex-direction:column;justify-content:space-around;gap:.75rem;min-width:9.5rem}.bracket-round-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.bracket-match{border:1px solid var(--panel-border);border-radius:8px;padding:.45rem .55rem;background:color-mix(in srgb,var(--panel) 92%,var(--bg1));display:flex;flex-direction:column;gap:.25rem}.bracket-match.status-finished .winner,.bracket-match.status-forfeit .winner{font-weight:800;color:var(--ok)}.bracket-player{font-size:.9rem}.bracket-actions{margin-top:.25rem;gap:.35rem;flex-wrap:wrap}.bracket-third{margin-top:1rem;max-width:12rem}.placed-by-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;vertical-align:middle;box-shadow:0 0 0 1px #00000026}.placed-by-dot.on-tile{position:absolute;left:1px;top:1px;width:.45rem;height:.45rem}.spectate-cell{cursor:default}.spectate-legend{justify-content:center;flex-wrap:wrap;flex-shrink:0;padding:.25rem 0 .15rem}.tile-letter-list{display:inline-flex;flex-wrap:wrap;gap:.25rem;vertical-align:middle}.tile-letter-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:2rem;height:1.85rem;padding:.2rem .55rem .4rem .3rem;border-radius:4px;border:1px solid var(--panel-border);background:var(--tile);color:var(--tile-ink);font-weight:700;font-size:.85rem;line-height:1}.tile-letter-face{display:inline-flex;align-items:center;justify-content:center;min-width:.65rem;min-height:.85rem}.tile-letter-mult{position:absolute;top:1px;right:2px;font-size:.55rem;font-weight:600;line-height:1;opacity:.75}.tile-letter-pts{position:absolute;right:2px;bottom:1px;font-size:.5rem;font-weight:600;line-height:1;opacity:.7}.end-score-summary{margin:.75rem 0 .25rem;text-align:left}.end-score-bonuses{margin-top:.65rem}.end-score-leftovers+.end-score-bonuses{margin-top:.65rem}.end-score-label{margin:0 0 .35rem;font-size:.8rem}.end-score-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.end-score-list li{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.9rem}.end-delta-pos{color:var(--accent-dim, #2a7a3a);font-weight:700;font-variant-numeric:tabular-nums}.end-delta-neg{color:var(--danger, #b33);font-weight:700;font-variant-numeric:tabular-nums}.end-bag-left{margin:.65rem 0 0;font-size:.85rem}.review-panel{margin-top:.5rem}.review-stats-table{display:flex;flex-direction:column;gap:.5rem}.review-stats-table .list-item{display:block}.review-tile-block{margin-top:.65rem}.review-tile-block h3{margin:0 0 .35rem;font-size:.95rem}.review-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}@media(min-width:600px){.app-shell{max-width:640px}}.game-page .board-stage{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;container-type:size}.game-page .board-wrap{flex:0 1 auto;width:min(100cqi,100cqh,420px);max-width:100%;aspect-ratio:1 / 1;height:auto;align-self:center}.game-page .board,.game-page .board-flag-frame{width:100%}@media(min-width:600px)and (max-width:1100px)and (min-height:720px){.app-shell:has(.game-page),.app-shell:has(.spectate-page){max-width:min(100%,720px)}.game-page .board-wrap{width:min(100cqi,100cqh)}.local-game-page .board-wrap{max-width:100%}.spectate-page .board-wrap,.spectate-page .board,.spectate-page .board-flag-frame{width:min(100%,560px)}}@media(orientation:landscape)and (max-height:560px){.app-shell:has(.game-page),.app-shell:has(.spectate-page){width:100%;max-width:100%;overflow-x:hidden;padding-left:max(.35em,env(safe-area-inset-left,0px));padding-right:max(.35em,env(safe-area-inset-right,0px))}.game-page{gap:.3em}.game-page .game-header{gap:.35em}.game-page .game-main{flex-direction:row;align-items:stretch;justify-content:center;gap:.5em}.game-page .board-stage{display:flex;flex:1 1 auto;min-height:0;min-width:0;width:auto;height:auto;max-width:calc(100% - 13.5em);align-self:stretch;align-items:center;justify-content:center;container-type:size}.game-page .board-wrap{flex:0 1 auto;align-self:center;width:min(100cqi,100cqh);height:auto;max-height:100%;max-width:100%;aspect-ratio:1 / 1}.game-page .game-controls{flex:0 0 auto;width:min(12.5em,34vw);max-width:14em;margin:0;padding:.3em;border-radius:12px;display:flex;flex-direction:column;min-height:0;overflow-x:hidden;overflow-y:auto;box-shadow:none;box-sizing:border-box}.game-page .rack-bar{flex:0 0 auto;min-height:0;margin:0 0 .25em;display:block}.game-page .rack{flex-direction:row;flex-wrap:wrap;height:auto;width:100%;gap:.18em;align-content:start;justify-content:center}.game-page .rack-slot{flex:0 0 calc(25% - .14em);min-height:0;min-width:0;width:auto;aspect-ratio:1 / 1}.game-page .rack-tile{font-size:48cqi}.game-page .rack-tile .tile-value{font-size:18cqi}.game-page .actions{gap:.2em}.game-page .actions-tools{display:grid;grid-template-columns:1fr 1fr;gap:.2em}.game-page .actions-tools .btn{flex:unset;width:auto;min-width:0}.game-page .actions-commit,.game-page .actions-finished{display:grid;grid-template-columns:1fr 1fr;gap:.2em}.game-page .actions-commit .actions-primary,.game-page .actions-finished .actions-primary,.game-page .actions-commit .waiting-hint,.game-page .actions-finished .waiting-hint{grid-column:1 / -1}.game-page .btn.compact{min-height:28px;padding:.2em .35em;font-size:.72em}.game-page .btn.tool{padding:.18em .28em;font-size:.68em}.game-page .waiting-hint{font-size:.7em}.game-page .last-move-hint{font-size:.65em}.debug-insta-win{bottom:max(.5em,env(safe-area-inset-bottom,0px));left:max(.5em,env(safe-area-inset-left,0px))}.spectate-page .board-wrap{height:min(calc(100dvh - 4.5em),420px);width:auto;max-width:100%;aspect-ratio:1 / 1}}.local-pass-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.75em}.play-feedback.float.local-pass-banner{pointer-events:auto}.local-pass-cover{position:absolute;top:0;right:0;bottom:0;left:0;z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.65em;padding:1.25em;box-sizing:border-box;text-align:center;background:var(--panel);border-radius:inherit;pointer-events:auto}.local-pass-cover-title{margin:0;font-size:1.15em;color:var(--ink)}.local-pass-cover-hint{margin:0;max-width:16em;font-size:.9em}.local-result{padding:1rem;text-align:center}.local-game-page .board-wrap{max-width:min(100%,480px);margin:0 auto}.app-shell:has(.local-game-page){padding-bottom:1rem}
