:root{color:#223028;font-synthesis:none;text-rendering:optimizelegibility;--acorn-green:#18722a;--acorn-green-dark:#115b20;--acorn-green-deep:#0d4919;--acorn-green-soft:#edf7ef;--acorn-green-faint:#f7fbf7;--acorn-cream:#fbfaf5;--acorn-text:#223028;--acorn-muted:#617067;--acorn-border:#d7dfd8;--acorn-surface:#fff;--acorn-page:#f3f6f1;--acorn-shadow:0 10px 28px #1e3e2712;--acorn-radius-card:16px;--acorn-radius-control:10px;background:#f3f6f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#f4f6f3;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{min-height:44px}button:disabled{cursor:default;opacity:.55}.page{width:100%;min-height:100vh;padding:28px 20px 40px}.app-header{text-align:center;width:min(92vw,720px);margin:0 auto 22px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:4px;font-size:clamp(1.9rem,5vw,2.7rem);line-height:1.1}.app-subtitle{color:#617067;margin-bottom:0;font-size:1rem;font-weight:600}.card{background:#fff;border:1px solid #d8dfda;border-radius:14px;width:min(92vw,720px);margin:0 auto;padding:24px;box-shadow:0 8px 24px #1f29330f}.join-card,.connecting-card{max-width:520px}.join-card h2,.connecting-card h2{margin-bottom:8px;font-size:1.45rem}.supporting-text{color:#607068;margin-bottom:20px;line-height:1.5}.supporting-text.compact{margin-bottom:0}.join-form{gap:10px;display:grid}.join-form label{font-weight:700}.join-form input{color:#1f2933;letter-spacing:.06em;text-transform:uppercase;background:#fff;border:1px solid #aeb9b2;border-radius:9px;width:100%;min-height:50px;padding:10px 13px;font-size:1.05rem}.join-form input:focus{border-color:#416b52;outline:3px solid #416b5229}.primary-button,.secondary-button,.danger-button{cursor:pointer;border-radius:9px;font-weight:700}.primary-button{color:#fff;background:#315e43;border:1px solid #315e43;margin-top:4px;padding:11px 18px}.primary-button:hover:not(:disabled){background:#274d36}.secondary-button{color:#2b3b32;background:#fff;border:1px solid #9aa9a0;padding:9px 14px}.secondary-button:hover:not(:disabled){background:#f0f3f1}.danger-button{color:#8c3434;background:#fff;border:1px solid #a54b4b;padding:9px 14px}.danger-button:hover:not(:disabled){background:#fff5f5}.compact-button{flex:none;min-width:120px}.form-message{color:#4f6257;min-height:24px;margin:14px 0 0;line-height:1.4}.form-message--error{color:#9a3434}.connecting-card{text-align:center}.connecting-card .supporting-text{margin-bottom:0}.spinner{border:4px solid #d8dfda;border-top-color:#315e43;border-radius:50%;width:34px;height:34px;margin:0 auto 16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.lobby,.game-screen{width:min(92vw,720px);margin:0 auto}.lobby .card,.game-screen .card{width:100%}.lobby-header,.matchmaking-card,.pending-card,.game-header-card{justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px;display:flex}.eyebrow{color:#748078;letter-spacing:.1em;text-transform:uppercase;margin-bottom:5px;font-size:.76rem;font-weight:800}.lobby-header h2,.game-header-card h2{margin-bottom:6px;font-size:clamp(1.35rem,4vw,1.75rem)}.matchmaking-card h3,.pending-card h3{margin-bottom:5px;font-size:1.15rem}.matchmaking-game{flex:auto;min-width:0}.game-select-label{margin-bottom:6px;font-size:.9rem;font-weight:700;display:block}.game-select{color:#1f2933;width:min(100%,360px);min-height:42px;font:inherit;background:#fff;border:1px solid #aeb9b2;border-radius:9px;margin-bottom:8px;padding:8px 36px 8px 11px;font-weight:700}.game-select:focus{border-color:#416b52;outline:3px solid #416b5229}.game-select:disabled{cursor:not-allowed;color:#6c7971;background:#f3f5f4}.player-identity{color:#4e6056;margin-bottom:0;font-weight:600}.connection-area{align-items:center;gap:10px;display:flex}.connection-badge{color:#53625a;background:#f3f5f4;border:1px solid #d1d8d3;border-radius:999px;align-items:center;min-height:32px;padding:5px 10px;font-size:.86rem;font-weight:800;display:inline-flex}.connection-badge--connected{color:#2e6540;background:#eef8f0;border-color:#b7d3bf}.connection-badge--disconnected{color:#923b3b;background:#fff3f3;border-color:#e0bcbc}.pending-card{background:#fbfdfb;border-color:#c8d7cc}.pending-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.players-card{padding:0;overflow:hidden}.section-heading{border-bottom:1px solid #e3e8e4;justify-content:space-between;align-items:center;gap:16px;padding:20px 22px 16px;display:flex}.section-heading h3{margin-bottom:0;font-size:1.18rem}#online-count{color:#6a776f;font-weight:600}.lobby-message{color:#42574a;background:#f5f8f6;border:1px solid #cbd7cf;border-radius:8px;margin:14px 18px 0;padding:10px 12px}.lobby-message--error{color:#913737;background:#fff5f5;border-color:#e2b8b8}.empty-state{color:#6c7971;text-align:center;padding:30px 22px}.player-list{margin:0;padding:0;list-style:none}.player-row{border-top:1px solid #edf0ee;justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:13px 22px;display:flex}.player-row:first-child{border-top:0}.player-row__identity{flex-direction:column;gap:3px;min-width:0;display:flex}.player-row__name{text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.player-row__detail{color:#6c7971;font-size:.88rem}.player-row__actions{flex:none;align-items:center;gap:9px;display:flex}.challenge-button{min-height:38px;padding:6px 11px;font-size:.86rem}.status-pill{color:#59675f;background:#f0f3f1;border-radius:999px;flex:none;padding:5px 9px;font-size:.78rem;font-weight:800}.status-pill--available{color:#2e6540;background:#edf8f0}.status-pill--searching{color:#735f26;background:#f4f1e6}.status-pill--challenged{color:#5e4c80;background:#f1eef8}.status-pill--busy{color:#5e5e5e;background:#f2f2f2}.lobby-actions{justify-content:flex-end;margin-top:14px;display:flex}.game-card{padding:20px}.move-help{color:#48574e;text-align:left;background:#f7faf8;border:1px solid #d4dfd7;border-radius:9px;align-items:center;height:76px;margin:0 0 16px;padding:11px 14px;font-size:.95rem;font-weight:650;line-height:1.45;display:flex;overflow-y:auto;box-shadow:0 1px 4px #344d3d0d}.move-help__text{min-width:0}.move-help--attention{color:#594817;background:#fff7dc;border-color:#d5b55e;animation:.56s ease-out move-help-attention;box-shadow:0 2px 8px #69521c14}@keyframes move-help-attention{0%{background:#ffefb8;box-shadow:0 0 #c69a2c57}45%{background:#fff4cd;box-shadow:0 0 0 4px #c69a2c29}to{background:#fff7dc;box-shadow:0 2px 8px #69521c14}}.game-rules{background:#fbfdfb;border:1px solid #d9e2dc;border-radius:9px;margin:0 0 16px;overflow:hidden}.game-rules__summary{cursor:pointer;color:#3f5146;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;min-height:46px;padding:11px 14px;font-size:.95rem;font-weight:800;list-style:none;display:flex}.game-rules__summary::-webkit-details-marker{display:none}.game-rules__summary:after{content:"▾";color:#607269;flex:none;font-size:.92rem;transition:transform .16s;transform:rotate(-90deg)}.game-rules[open] .game-rules__summary:after{transform:rotate(0)}.game-rules__summary:focus-visible{outline-offset:-3px;outline:3px solid #46815a3b}.game-rules__content{border-top:1px solid #e5ebe7;gap:16px;padding:4px 16px 16px;display:grid}.game-rules__section h3{color:#33483b;margin:12px 0 7px;font-size:.9rem}.game-rules__list{color:#526159;margin:0;padding-left:20px;font-size:.92rem;line-height:1.5}.game-rules__list li+li{margin-top:5px}.board-placeholder{color:#69776f;text-align:center;border:1px dashed #bbc7bf;border-radius:10px;place-items:center;min-height:260px;display:grid}#board{width:100%}.hidden{display:none!important}@media (width<=600px){.page{padding:20px 12px 30px}.app-header,.card,.lobby,.game-screen{width:100%}.card{padding:20px 16px}.lobby-header,.matchmaking-card,.pending-card,.game-header-card{flex-direction:column;align-items:stretch}.connection-area{justify-content:space-between}.matchmaking-card .primary-button,.game-header-card .danger-button,.game-select{width:100%}.pending-actions{justify-content:stretch}.pending-actions button{flex:120px}.players-card{padding:0}.section-heading{padding:16px}.player-row{align-items:flex-start;padding:13px 16px}.player-row__actions{flex-direction:column;align-items:flex-end}.status-pill{text-align:center}.lobby-actions{justify-content:stretch}.lobby-actions .danger-button{width:100%}.game-card{padding:14px}.move-help{flex-direction:column;justify-content:center;align-items:flex-start;gap:8px;height:104px}}@media (prefers-reduced-motion:reduce){.spinner,.move-help--attention{animation:none}}.game-header-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.rematch-card{background:#fbfdfb;border:1px solid #c8d7cc;border-radius:10px;justify-content:space-between;align-items:center;gap:18px;margin:0 0 16px;padding:16px;display:flex}.rematch-card h3{margin-bottom:5px;font-size:1.08rem}.rematch-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:8px;display:flex}@media (width<=600px){.game-header-actions{width:100%}.game-header-actions button{flex:120px}.rematch-card{flex-direction:column;align-items:stretch}.rematch-actions{justify-content:stretch}.rematch-actions button{flex:120px}.game-header-card .game-header-actions .danger-button{width:auto}}.cm-chessboard .arrow-opponent-move .arrow-head{fill:#52618a;fill-rule:nonzero;opacity:.52}.cm-chessboard .arrow-opponent-move .arrow-line{stroke:#52618a;stroke-linecap:round;opacity:.52}.confirmation-dialog{color:#1f2933;background:#fff;border:1px solid #d8dfda;border-radius:14px;width:min(100vw - 32px,440px);margin:auto;padding:0;box-shadow:0 24px 64px #1f29333d}.confirmation-dialog::backdrop{background:#1f29338f}.confirmation-dialog__content{padding:24px}.confirmation-dialog h2{margin-bottom:10px;font-size:1.4rem;line-height:1.2}.confirmation-dialog__description{color:#435349;margin-bottom:6px;line-height:1.5}.confirmation-dialog__consequence{color:#7f3333;margin-bottom:22px;font-weight:700;line-height:1.5}.confirmation-dialog__actions{justify-content:flex-end;gap:10px;display:flex}.danger-button--solid{color:#fff;background:#963939;border-color:#963939}.danger-button--solid:hover:not(:disabled){background:#7f2f2f}.confirmation-dialog button:focus-visible{outline-offset:2px;outline:3px solid #416b5238}@media (width<=480px){.confirmation-dialog__content{padding:20px}.confirmation-dialog__actions{flex-direction:column-reverse}.confirmation-dialog__actions button{width:100%}}.place-piece-panel{background:#fbfdfb;border:1px solid #c8d7cc;border-radius:10px;margin-bottom:16px;padding:14px}.place-piece-panel__header{justify-content:space-between;align-items:flex-start;display:flex}.place-piece-message{color:#4f6257;margin:0;line-height:1.4}.place-piece-message--error{color:#913737}.place-piece-tray{flex-wrap:wrap;gap:9px;margin-top:12px;display:flex}.place-piece-button{color:#26352d;cursor:pointer;background:#fff;border:1px solid #aeb9b2;border-radius:10px;justify-content:center;align-items:center;gap:7px;min-width:76px;min-height:58px;padding:7px 10px;font-weight:800;display:inline-flex}.place-piece-button:hover:not(:disabled){background:#f2f7f3;border-color:#6f8d79}.place-piece-button--selected{background:#eef7f0;border-color:#315e43;outline:3px solid #416b522e}.place-piece-button__glyph{font-family:Segoe UI Symbol,"Noto Sans Symbols 2",sans-serif;font-size:1.75rem;font-weight:400;line-height:1}.place-piece-button__count{color:#526159;text-align:center;background:#eef1ef;border-radius:999px;min-width:22px;padding:2px 6px;font-size:.78rem}.place-piece-button:disabled .place-piece-button__glyph,.place-piece-button:disabled .place-piece-button__count{opacity:.62}@media (width<=600px){.place-piece-panel{padding:12px}.place-piece-tray{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.place-piece-button{width:100%;min-width:0}}body{color:var(--acorn-text);background:radial-gradient(circle at 50% -160px, #18722a17, transparent 420px), var(--acorn-page)}.app-header{text-align:center;flex-direction:column;align-items:center;width:min(92vw,720px);margin:0 auto 24px;display:flex}.brand-logo{width:clamp(210px,42vw,300px);max-width:100%;height:auto;display:block}.app-subtitle{color:var(--acorn-muted);letter-spacing:.08em;text-transform:uppercase;margin:3px 0 0;font-size:.92rem;font-weight:750}.card{border-color:var(--acorn-border);border-radius:var(--acorn-radius-card);background:var(--acorn-surface);box-shadow:var(--acorn-shadow)}.supporting-text,.player-identity{color:var(--acorn-muted)}.eyebrow{color:var(--acorn-green)}.join-form input,.game-select{border-radius:var(--acorn-radius-control)}.join-form input:focus,.game-select:focus{border-color:var(--acorn-green);outline-color:#18722a29}.primary-button{border-color:var(--acorn-green);background:var(--acorn-green)}.primary-button:hover:not(:disabled){border-color:var(--acorn-green-dark);background:var(--acorn-green-dark)}.primary-button:disabled{color:#7b8980;opacity:1;background:#dfe5e1;border-color:#c7d0ca}.primary-button:focus-visible,.secondary-button:focus-visible,.danger-button:focus-visible,.place-piece-button:focus-visible{outline-offset:2px;outline:3px solid #18722a33}.secondary-button{color:#2d4034;border-color:#a9b5ad}.secondary-button:hover:not(:disabled){background:var(--acorn-green-faint);border-color:#8fa196}.spinner{border-color:#d9e1db;border-top-color:var(--acorn-green)}.connection-badge--connected,.status-pill--available{background:var(--acorn-green-soft);color:var(--acorn-green-dark);border-color:#b8d9bf}.pending-card,.rematch-card,.place-piece-panel{background:var(--acorn-green-faint);border-color:#cbdccf}.move-help{background:#f8fbf8;border-color:#d4dfd7}.game-rules{background:#fbfdfb;border-color:#d6e1d8}.game-rules__summary{color:#324d39}.game-rules__summary:hover{background:var(--acorn-green-faint)}.game-rules__summary:focus-visible{outline-color:#18722a33}.place-piece-button--selected{border-color:var(--acorn-green);background:var(--acorn-green-soft);outline-color:#18722a2e}.confirmation-dialog{border-color:var(--acorn-border);border-radius:var(--acorn-radius-card);color:var(--acorn-text)}.confirmation-dialog button:focus-visible{outline-color:#18722a38}@media (width<=600px){.app-header{margin-bottom:18px}.brand-logo{width:clamp(190px,62vw,250px)}.app-subtitle{font-size:.82rem}}.app-header{margin-bottom:18px}.brand-logo{width:clamp(230px,45vw,330px)}.app-subtitle{letter-spacing:.07em;margin-top:1px;font-weight:700}.join-card,.lobby .card{border-color:#dde5df;box-shadow:0 6px 18px #1e3e270b}.join-card{padding:28px}.join-card .eyebrow{margin-bottom:8px}.join-card h2{color:#16251b;margin-bottom:8px;font-size:1.55rem;font-weight:760}.join-card .supporting-text{max-width:42ch;margin-bottom:22px}.lobby-header,.matchmaking-card{padding:22px 24px}.lobby-header h2,.section-heading h3{color:#16251b;font-weight:760}.player-identity,.supporting-text,.player-row__detail{font-weight:450}.connection-area{flex-direction:column;align-items:flex-end;gap:8px}.connection-badge{min-height:30px;padding:4px 10px;font-weight:700}.quiet-button{min-height:38px;color:var(--acorn-green-dark);background:0 0;border-color:#c7d5ca;padding:7px 11px;font-weight:650}.quiet-button:hover:not(:disabled){background:var(--acorn-green-faint);border-color:#abc2b0}.quiet-danger-button{color:#8c3d3d;cursor:pointer;min-height:34px;font:inherit;text-underline-offset:3px;background:0 0;border:0;padding:4px 2px;font-size:.86rem;font-weight:650;-webkit-text-decoration:underline #8c3d3d59;text-decoration:underline #8c3d3d59}.quiet-danger-button:hover:not(:disabled){color:#742f2f;text-decoration-color:currentColor}.quiet-danger-button:focus-visible{outline-offset:2px;border-radius:6px;outline:3px solid #18722a33}.matchmaking-card{gap:28px}.matchmaking-card .primary-button{min-width:150px}.game-select-label{color:#25382b;font-weight:650}.game-select{border-color:#bdc9c0;font-weight:600}.players-card{border-color:#dde5df}.section-heading{border-bottom-color:#edf1ee;padding:18px 22px 14px}.section-heading .eyebrow{margin-bottom:4px}.status-pill{color:#647269;background:0 0;border-radius:0;align-items:center;gap:7px;padding:4px 0;font-weight:650;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.status-pill--available,.status-pill--searching,.status-pill--challenged,.status-pill--busy{background:0 0}.status-pill--available{color:var(--acorn-green)}.status-pill--searching{color:#8a6d20}.status-pill--challenged{color:#705a91}.status-pill--busy{color:#707772}.player-row{border-top-color:#f0f3f1;min-height:76px}.player-row__name{color:#1e3024;font-weight:720}.challenge-button{color:var(--acorn-green-dark);background:#fff;border-color:#b7cdbb;font-weight:650}.challenge-button:hover:not(:disabled){background:var(--acorn-green-faint);border-color:#91b299}.empty-state{min-height:190px;color:var(--acorn-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 22px 34px;display:flex}.empty-state__icon{fill:none;width:48px;height:48px;stroke:var(--acorn-green);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;opacity:.72;margin-bottom:12px}.empty-state__title{color:#30483a;margin:0 0 5px;font-size:1rem;font-weight:720}.empty-state__text{color:#718078;max-width:39ch;margin:0;font-size:.9rem;line-height:1.5}@media (width<=600px){.app-header{margin-bottom:15px}.brand-logo{width:clamp(205px,66vw,270px)}.join-card{padding:22px 18px}.lobby-header,.matchmaking-card{padding:20px 18px}.connection-area{flex-flow:wrap;justify-content:space-between;align-items:stretch;width:100%}.quiet-danger-button{margin-left:auto}.matchmaking-card{gap:16px}.matchmaking-card .primary-button{width:100%}.empty-state{min-height:170px;padding:28px 18px 30px}}body.game-active .page{padding:10px 16px 18px}body.game-active .app-header{width:min(100vw - 32px,1180px);margin-bottom:8px}body.game-active .brand-logo{width:clamp(160px,17vw,205px)}body.game-active .app-subtitle{display:none}.game-screen{width:min(100vw - 32px,1180px)}.game-screen .card{width:100%}.game-header-card{min-height:72px;margin-bottom:10px;padding:11px 16px}.game-header-card .eyebrow{margin-bottom:2px;font-size:.68rem}.game-header-card h2{margin-bottom:2px;font-size:clamp(1.2rem,2vw,1.42rem)}.game-header-card .player-identity{font-size:.88rem;line-height:1.3}.game-header-card .game-header-actions button{min-height:38px;padding:7px 12px}.game-play-layout{grid-template-columns:minmax(0,1fr) minmax(260px,300px);grid-template-areas:"board side";align-items:start;gap:14px;display:grid}.game-card{grid-area:board;margin:0;padding:8px;overflow:hidden;box-shadow:0 5px 16px #1e3e270b}.game-side-panel{scrollbar-gutter:stable;flex-direction:column;grid-area:side;gap:10px;max-height:calc(100dvh - 190px);display:flex;overflow-y:auto}.game-side-panel .move-help,.game-side-panel .game-rules,.game-side-panel .place-piece-panel,.game-side-panel .rematch-card{margin:0}.game-side-panel .move-help{flex:none;height:auto;min-height:76px}.game-side-panel .game-rules,.game-side-panel .place-piece-panel{flex:none}.game-side-panel .rematch-card{flex-direction:column;flex:none;align-items:stretch}.game-side-panel .rematch-actions{justify-content:stretch}.game-side-panel .rematch-actions button{flex:110px}.board-wrapper{width:min(100%,100dvh - 205px);margin:0 auto}.board-placeholder{min-height:min(480px,100dvh - 205px)}.game-side-panel .place-piece-tray{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.game-side-panel .place-piece-button{width:100%;min-width:0}@media (width<=900px){body.game-active .page{padding:16px 12px 28px}body.game-active .app-header{width:min(92vw,720px);margin-bottom:12px}body.game-active .brand-logo{width:clamp(185px,42vw,235px)}.game-screen{width:min(92vw,720px)}.game-header-card{margin-bottom:12px}.game-play-layout{flex-direction:column;gap:12px;display:flex}.game-side-panel{order:0;width:100%;max-height:none;overflow:visible}.game-card{order:1;width:100%;padding:12px}.board-wrapper{width:100%}.board-placeholder{min-height:260px}}@media (width<=600px){body.game-active .page{padding:12px 10px 24px}body.game-active .app-header{margin-bottom:10px}body.game-active .brand-logo{width:clamp(175px,58vw,220px)}.game-header-card{padding:14px}.game-side-panel .move-help{height:auto;min-height:88px}.game-side-panel .place-piece-tray{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=900px){body.game-active{min-height:100dvh}body.game-active .page{min-height:100dvh;padding:6px 8px 14px}body.game-active .app-header{display:none}.game-screen{flex-direction:column;gap:6px;width:100%;max-width:none;display:flex}.game-header-card{display:contents}.game-header-copy{order:0;min-width:0;padding:2px 4px 3px}.game-header-copy .eyebrow{display:none}.game-header-card h2{margin:0 0 1px;font-size:1rem;line-height:1.2}.game-header-card .player-identity{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.76rem;line-height:1.25;overflow:hidden}.game-play-layout,.game-side-panel{display:contents}.game-side-panel .move-help{border-radius:8px;order:1;width:100%;height:56px;min-height:56px;max-height:56px;margin:0;padding:7px 10px;font-size:.84rem;line-height:1.3;overflow-y:auto}.game-side-panel .place-piece-panel{border-radius:8px;order:2;margin:0;padding:7px 8px}.place-piece-panel__header .eyebrow{display:none}.place-piece-message{font-size:.78rem;line-height:1.25}.game-side-panel .place-piece-tray{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin-top:6px;display:grid}.game-side-panel .place-piece-button{border-radius:8px;gap:3px;width:100%;min-width:0;min-height:46px;padding:4px 3px}.place-piece-button__glyph{font-size:1.42rem}.place-piece-button__count{min-width:18px;padding:1px 4px;font-size:.68rem}.game-card{border-radius:10px;order:3;width:100%;margin:0;padding:3px}.board-wrapper{width:min(100vw - 22px,100dvh - 112px);max-width:100%;margin:0 auto}.board-placeholder{min-height:min(100vw - 22px,100dvh - 112px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-wrapper{width:min(100vw - 22px,100dvh - 188px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-placeholder{min-height:min(100vw - 22px,100dvh - 188px)}.game-side-panel .rematch-card{order:4;margin:0}.game-header-actions{order:5;justify-content:stretch;gap:7px;width:100%;margin:2px 0 0}.game-header-actions button{flex:1 1 0;min-height:40px}.game-side-panel .game-rules{order:6;width:100%;margin:0}.game-rules__summary{min-height:42px;padding:9px 11px;font-size:.9rem}}@media (width<=480px){body.game-active .page{padding-inline:5px}.board-wrapper{width:min(100vw - 14px,100dvh - 112px)}.board-placeholder{min-height:min(100vw - 14px,100dvh - 112px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-wrapper{width:min(100vw - 14px,100dvh - 188px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-placeholder{min-height:min(100vw - 14px,100dvh - 188px)}}@media (height<=620px) and (width>=600px){body.game-active .page{padding:5px 8px 8px}.game-screen{width:100%;display:block}.game-header-card{border:1px solid var(--acorn-border);background:var(--acorn-surface);border-radius:10px;min-height:48px;margin-bottom:5px;padding:5px 10px;display:flex;box-shadow:0 4px 12px #1e3e270a}.game-header-copy{padding:0}.game-header-card h2{font-size:.98rem}.game-header-card .player-identity{font-size:.72rem}.game-header-actions{flex:none;justify-content:flex-end;width:auto;margin:0}.game-play-layout{grid-template-columns:minmax(0,1fr) minmax(220px,270px);grid-template-areas:"board side";align-items:start;gap:8px;display:grid}.game-side-panel{flex-direction:column;grid-area:side;gap:6px;max-height:calc(100dvh - 61px);display:flex;overflow-y:auto}.game-side-panel .move-help{order:initial;height:52px;min-height:52px;max-height:52px}.game-side-panel .place-piece-panel,.game-side-panel .rematch-card,.game-side-panel .game-rules{order:initial}.game-card{order:initial;grid-area:board;padding:3px}.board-wrapper{width:min(100%,100dvh - 61px)}.game-side-panel .place-piece-tray{grid-template-columns:repeat(3,minmax(0,1fr))}body.game-active{min-height:100dvh;overflow:hidden}body.game-active .page{height:100dvh;min-height:100dvh;padding:4px 6px;overflow:hidden}body.game-active .app-header{display:none}.game-screen{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(218px,272px);gap:6px 8px;width:100%;max-width:none;height:calc(100dvh - 8px);display:grid;overflow:hidden}.game-header-card{border-radius:9px;flex-direction:column;grid-area:1/2;align-items:stretch;gap:6px;min-height:0;margin:0;padding:7px 8px;display:flex}.game-header-copy{min-width:0;padding:0}.game-header-copy .eyebrow{margin-bottom:1px;font-size:.62rem}.game-header-card h2{margin:0 0 1px;font-size:.94rem;line-height:1.12}.game-header-card .player-identity{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.68rem;line-height:1.18;overflow:hidden}.game-header-actions{justify-content:stretch;gap:5px;width:100%;margin:0}.game-header-actions button{flex:1 1 0;min-height:30px;padding:4px 6px;font-size:.73rem}.game-play-layout{display:contents}.game-side-panel{scrollbar-gutter:stable;flex-direction:column;grid-area:2/2;gap:6px;width:100%;min-height:0;max-height:100%;padding-right:2px;display:flex;overflow:hidden auto}.game-side-panel .move-help{flex:none;width:100%;height:auto;min-height:48px;max-height:none;padding:6px 8px;font-size:.78rem;line-height:1.24}.game-side-panel .game-rules,.game-side-panel .place-piece-panel,.game-side-panel .rematch-card{flex:none;width:100%}.game-side-panel .game-rules__summary{min-height:34px;padding:6px 8px;font-size:.78rem}.game-side-panel .place-piece-panel{padding:7px 8px}.game-side-panel .place-piece-message{font-size:.72rem;line-height:1.22}.game-side-panel .place-piece-tray{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:6px}.game-side-panel .place-piece-button{min-height:38px;padding:3px}.game-side-panel .place-piece-button__glyph{font-size:1.2rem}.game-card{border-radius:9px;grid-area:1/1/span 2;align-self:start;width:100%;min-width:0;min-height:0;margin:0;padding:2px}.board-wrapper{width:min(100%,100dvh - 12px);max-width:100%;margin:0 auto}.board-placeholder{min-height:min(100%,100dvh - 12px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-wrapper{width:min(100%,100dvh - 12px)}body.game-active:has(#place-piece-panel:not(.hidden)) .board-placeholder{min-height:min(100%,100dvh - 12px)}}.player-row__identity .status-pill{align-self:flex-start}.player-row__actions{justify-content:flex-end}@media (width<=600px){.player-row{align-items:center}.player-row__identity{flex:auto}.player-row__actions{flex-direction:row;align-items:center}.challenge-button{min-width:104px}}.share-dialog{width:min(100vw - 32px,500px)}.share-group-summary{gap:3px;margin:18px 0 14px;display:grid}.share-group-summary__label,.share-code-panel__label,.share-link-panel__label{color:var(--acorn-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.78rem;font-weight:800}.share-code-panel,.share-link-panel{background:var(--acorn-green-faint);border:1px solid #dbe4dd;border-radius:12px;gap:9px;padding:14px;display:grid}.share-code{color:#16251b;letter-spacing:.08em;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:clamp(1.45rem,8vw,2rem);font-weight:800}.share-code-panel .secondary-button,.share-link-panel .secondary-button{justify-self:start}.share-qr-panel{justify-items:center;gap:7px;margin:18px 0;display:grid}.share-qr-canvas{background:#fff;border:1px solid #e0e6e2;border-radius:12px;width:min(220px,64vw);height:auto;padding:8px;display:block}.share-qr-caption{color:#46584d;margin:0;font-weight:750}.share-invite-link{color:#435349;overflow-wrap:anywhere;margin:0;font-size:.88rem;line-height:1.45}.share-group-message{min-height:22px;margin:12px 0 0}@media (width<=600px){.connection-area{flex-wrap:wrap}#share-group-button,#leave-button{flex:130px}}.connection-status-row{justify-content:flex-end;align-items:center;gap:8px;display:flex}.share-icon-button{width:36px;height:36px;color:var(--acorn-green-dark);cursor:pointer;background:0 0;border:1px solid #c7d5ca;border-radius:9px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.share-icon-button svg{fill:none;stroke:currentColor;stroke-width:1.9px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.share-icon-button:hover:not(:disabled){background:var(--acorn-green-faint);border-color:#abc2b0}.share-icon-button:focus-visible{outline-offset:2px;outline:3px solid #18722a33}.share-icon-button:disabled{cursor:wait;opacity:.55}@media (width<=600px){.connection-area{align-items:center}.connection-status-row,#share-group-button,#leave-button{flex:none}#reconnect-button:not(.hidden){flex:100%}.share-dialog{width:min(100vw - 20px,500px);max-height:calc(100dvh - 20px);overflow:hidden}.share-dialog .confirmation-dialog__content{box-sizing:border-box;overscroll-behavior:contain;max-height:calc(100dvh - 20px);padding:16px;overflow-y:auto}.share-dialog .eyebrow{margin-bottom:4px}.share-dialog h2{margin-bottom:6px;font-size:1.3rem}.share-dialog .confirmation-dialog__description{margin-bottom:2px;line-height:1.35}.share-group-summary{margin:10px 0 9px}.share-code-panel,.share-link-panel{gap:6px;padding:10px 12px}.share-code{font-size:clamp(1.35rem,8vw,1.7rem)}.share-code-panel .secondary-button,.share-link-panel .secondary-button{min-height:38px;padding-top:8px;padding-bottom:8px}.share-qr-panel{gap:5px;margin:10px 0}.share-qr-canvas{border-radius:10px;width:min(176px,48vw);padding:6px}.share-qr-caption{font-size:.9rem}.share-invite-link{font-size:.8rem;line-height:1.3}.share-group-message{min-height:18px;margin-top:7px}}@media (width<=600px) and (height<=760px){.share-dialog .confirmation-dialog__content{padding:12px 14px}.share-group-summary{margin:7px 0}.share-code-panel,.share-link-panel{padding:8px 10px}.share-qr-panel{margin:7px 0}.share-qr-canvas{width:min(150px,42vw)}.share-group-message{min-height:16px;margin-top:5px}}
