*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.visible{visibility:visible}.mx-auto{margin-left:auto;margin-right:auto}.mb-6{margin-bottom:1.5rem}.block{display:block}.grid{display:grid}.resize{resize:both}.text-xl{font-size:1.25rem;line-height:1.75rem}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--background:#fbf7f0;--foreground:#2a2620;--surface:#fff;--surface-2:#f6f1e7;--line:#e6dfd2;--muted:#7d7568;--ink:#2a2620;--accent:#1f6fe5;--radius:18px;--shadow-card:0 1px 2px rgba(60,45,20,.06),0 10px 30px -12px rgba(60,45,20,.22);--cell:12px}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{color:var(--foreground);background:radial-gradient(1200px 600px at 50% -200px,#fff 0,var(--background) 60%);font-family:ui-rounded,SF Pro Rounded,Nunito,Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}header.site-header{position:sticky;top:0;z-index:20;background:hsla(0,0%,100%,.82);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--line)}.site-header-inner{max-width:1280px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:12px}.site-header .logo{width:44px;height:44px;border-radius:11px;box-shadow:0 2px 6px rgba(60,45,20,.2)}.site-header h1{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.01em;color:var(--ink)}.site-header h1 span{font-weight:500;color:var(--muted)}@media (max-width:480px){.site-header h1 span{display:none}}main.site-main{max-width:1280px;margin:0 auto;padding:16px}.btn{appearance:none;border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:999px;font-weight:700;font-size:.95rem;color:var(--ink);background:var(--surface);box-shadow:inset 0 -3px 0 rgba(60,45,20,.12),0 2px 6px rgba(60,45,20,.15);transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;user-select:none;-webkit-user-select:none;touch-action:manipulation;white-space:nowrap;text-decoration:none}.btn svg{width:18px;height:18px;fill:currentColor}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:inset 0 -3px 0 rgba(60,45,20,.12),0 6px 14px rgba(60,45,20,.18)}.btn:active:not(:disabled){transform:translateY(1px);box-shadow:inset 0 -1px 0 rgba(60,45,20,.12),0 1px 3px rgba(60,45,20,.15)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--player-color,var(--accent));color:#fff;box-shadow:inset 0 -3px 0 rgba(0,0,0,.22),inset 0 2px 0 hsla(0,0%,100%,.28),0 2px 6px rgba(60,45,20,.2)}.btn-primary:hover:not(:disabled){box-shadow:inset 0 -3px 0 rgba(0,0,0,.22),inset 0 2px 0 hsla(0,0%,100%,.28),0 6px 14px rgba(60,45,20,.22)}.btn-lg{padding:14px 24px;font-size:1.05rem}.piece-glyph{position:relative;flex:none}.blk{position:absolute;width:var(--cell);height:var(--cell);border-radius:22%;background-color:var(--block-color,#888);background-image:linear-gradient(160deg,hsla(0,0%,100%,.42),hsla(0,0%,100%,.08) 45%,rgba(0,0,0,.14));box-shadow:inset 0 calc(var(--cell) * .12) 0 hsla(0,0%,100%,.28),inset 0 calc(var(--cell) * -.16) 0 rgba(0,0,0,.26),0 1px 2px rgba(0,0,0,.25);transform:scale(.94)}.game-layout{display:flex;flex-direction:column;gap:16px}.game-main{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}@media (min-width:900px){.game-main{grid-template-columns:minmax(0,1fr) 320px}}@media (min-width:1200px){.game-main{grid-template-columns:minmax(0,1fr) 360px}}.board-panel{min-width:0}.board-stage{position:relative;width:100%;aspect-ratio:10/9;max-height:calc(100vh - 220px);min-height:300px;margin:0 auto}@media (max-width:899px){.board-stage{aspect-ratio:1/.95;max-height:78vh}}.board-canvas{position:absolute;inset:0}.board-canvas canvas{cursor:pointer;outline:none}.board-loading{inset:0}.board-loading,.board-reset-view{position:absolute;display:flex;align-items:center;justify-content:center;color:var(--muted)}.board-reset-view{right:8px;bottom:8px;width:36px;height:36px;border-radius:999px;border:0;background:hsla(0,0%,100%,.85);box-shadow:0 2px 6px rgba(60,45,20,.2);cursor:pointer}.board-reset-view svg{width:18px;height:18px;fill:currentColor}@media (pointer:coarse){.board-reset-view{display:none}}.board-status{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:4px;color:var(--muted);font-weight:600;min-height:28px}.status-dot{width:10px;height:10px;border-radius:999px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.2)}.game-over{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:hsla(38,58%,96%,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:5}.game-over-card{background:var(--surface);border-radius:var(--radius);padding:24px 28px;text-align:center;box-shadow:var(--shadow-card);min-width:260px}.game-over-card h2{margin:0;font-size:1.5rem;font-weight:800}.game-over-card .winner{margin:4px 0 12px;font-size:1.2rem;font-weight:800}.results{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-direction:column;gap:6px}.results li{display:grid;grid-template-columns:20px 14px 1fr auto;align-items:center;gap:8px;text-align:left;font-weight:600}.results .left,.results .rank{color:var(--muted)}.results .left{font-weight:500}.scoreboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media (min-width:900px){.scoreboard{grid-template-columns:repeat(4,minmax(0,1fr))}}.player-card{--cell:6px;position:relative;background:var(--surface);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow-card);border:2px solid transparent;transition:border-color .15s ease,transform .15s ease;min-width:0}.player-card.is-current{border-color:var(--player-color);transform:translateY(-2px)}.player-card.is-out{opacity:.6}.player-card-head{display:flex;align-items:center;gap:8px}@media (max-width:899px){.player-card{padding:8px 10px}.player-card-head{gap:5px;font-size:.9rem}.player-score{min-width:26px;padding:1px 7px}.bot-toggle{width:24px;height:24px}.bot-toggle svg{width:16px;height:16px}.player-out{display:none}.player-card.is-out .player-name{text-decoration:line-through}}.player-swatch{width:14px;height:14px;border-radius:4px;flex:none;background:var(--player-color);background-image:linear-gradient(160deg,hsla(0,0%,100%,.45),hsla(0,0%,100%,0) 50%,rgba(0,0,0,.15));box-shadow:inset 0 -2px 0 rgba(0,0,0,.22)}.player-name{font-weight:800;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-out{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.player-score{font-weight:800;font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 10px;min-width:36px;text-align:center}.bot-toggle,.player-score{background:var(--surface-2)}.bot-toggle{width:28px;height:28px;border-radius:8px;border:0;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease}.bot-toggle svg{width:18px;height:18px;fill:currentColor}.bot-toggle.is-bot{background:var(--ink);color:#fff}.player-pieces{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;min-height:calc(var(--cell) * 2)}@media (max-width:899px){.player-pieces{display:none}}.tray-panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:14px;display:flex;flex-direction:column;gap:12px;min-width:0}@media (min-width:900px){.tray-panel{position:sticky;top:76px;max-height:calc(100vh - 92px)}}.tray-head{display:flex;align-items:center;gap:8px}.tray-head strong{flex:1;font-weight:800}.tray-count{color:var(--muted);font-size:.9rem}.piece-controls{--cell:12px;display:flex;align-items:center;gap:12px;background:var(--surface-2);border-radius:14px;padding:10px 12px;min-height:84px}.piece-controls.is-empty p{margin:0;color:var(--muted);font-size:.92rem}.piece-preview{width:64px;height:64px;display:flex;align-items:center;justify-content:center;flex:none}.piece-buttons{display:flex;flex-wrap:wrap;gap:8px;flex:1}.piece-buttons .btn{padding:8px 12px;font-size:.88rem}.piece-tray{--cell:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;overflow-y:auto;padding:2px}@media (min-width:900px){.piece-tray{flex:1;min-height:0}}@media (max-width:480px){.piece-tray{--cell:10px;grid-template-columns:repeat(auto-fill,minmax(62px,1fr))}}.piece-tile{appearance:none;border:0;cursor:pointer;aspect-ratio:1;border-radius:14px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 -3px 0 rgba(60,45,20,.08);transition:transform .12s ease,box-shadow .12s ease,background .12s ease;padding:6px}.piece-tile:hover:not(:disabled){transform:translateY(-2px);background:#fff;box-shadow:inset 0 -3px 0 rgba(60,45,20,.08),0 6px 14px rgba(60,45,20,.16)}.piece-tile.is-selected{background:#fff;box-shadow:0 0 0 3px var(--ring),0 6px 14px rgba(60,45,20,.16);transform:translateY(-2px) scale(1.04)}.piece-tile:disabled{cursor:default;opacity:.55}.piece-tray.is-disabled .piece-tile{filter:saturate(.6)}.btn-restart{align-self:stretch}.home{display:flex;flex-direction:column;align-items:center;gap:28px;padding:24px 0 48px;text-align:center}.home-logo{width:160px;height:160px;border-radius:36px;box-shadow:0 20px 40px -18px rgba(60,45,20,.45);animation:float 6s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.home h2{margin:0;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;letter-spacing:-.02em}.home p.lead{margin:8px 0 0;color:var(--muted);font-size:1.1rem;max-width:34rem}.home-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.home-card{width:100%;max-width:420px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:20px;text-align:left}.home-card h3{margin:0 0 8px;display:flex;align-items:center;gap:8px;font-weight:800}.home-card ul{list-style:none;padding:0;margin:0}.home-card li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-top:1px solid var(--line)}.pill{font-size:.8rem;padding:2px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-weight:700}.pill.online{background:#e3f5e6;color:#1c7a2c}.pill.in-game{background:#e4edfc;color:#1f4fa3}