.game-page{--game-header:74px}.game-header{position:sticky;top:0;z-index:60;min-height:var(--game-header);padding:0 clamp(14px,2.5vw,38px);display:grid;grid-template-columns:1fr auto 1fr;background:color-mix(in srgb,var(--bg) 90%,transparent)}.game-status{display:grid;gap:2px;text-align:center}.game-status span{color:var(--muted);font-size:.67rem;font-weight:700}.game-status strong{font-size:1.13rem;font-variant-numeric:tabular-nums}.game-tools{display:flex;align-items:center;justify-content:flex-end;gap:7px}.game-shell{width:min(1540px,calc(100% - 32px));margin:auto;padding:27px 0 40px}.game-intro{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:18px}.game-intro h1{max-width:960px;margin:7px 0 0;font-size:clamp(1.85rem,3vw,3.15rem)}.completion{width:min(290px,31vw);display:grid;gap:7px;color:var(--muted);font-size:.72rem;text-align:right}.completion>div{height:8px;padding:1px;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,.18)}.completion i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 60%,white));box-shadow:0 0 15px color-mix(in srgb,var(--accent) 65%,transparent);transition:width .25s}.stage-tabs{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 15px;scrollbar-width:thin}.stage-tab{min-width:145px;height:49px;padding:0 12px;display:flex;align-items:center;gap:9px;color:var(--muted);border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 65%,transparent);box-shadow:inset 0 1px rgba(255,255,255,.09),0 7px 14px rgba(0,0,0,.12);cursor:pointer}.stage-tab b{display:grid;place-items:center;width:29px;height:29px;flex:0 0 auto;color:var(--button-ink);border-radius:8px;background:var(--accent);font-size:.66rem;box-shadow:inset 0 -3px rgba(0,0,0,.12)}.stage-tab span{overflow:hidden;font-size:.68rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.stage-tab.active{color:var(--text);border-color:color-mix(in srgb,var(--accent) 65%,transparent);transform:translateY(-1px)}.stage-tab.complete b{background:var(--success);color:#fff}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start;perspective:1500px}.board-panel,.token-panel{overflow:hidden;color:var(--ink);border:1px solid var(--panel-line);border-radius:20px;background:var(--panel-surface);box-shadow:var(--panel-shadow)}.board-panel{transform:rotateX(.45deg);transform-origin:50% 0}.board-toolbar{min-height:54px;padding:10px 15px;display:flex;align-items:center;justify-content:space-between;gap:15px;color:var(--ink-muted);border-bottom:1px solid var(--board-line);font-size:.7rem}.board-toolbar>div{display:flex;gap:12px}.board-toolbar .text-button{color:var(--ink)}.board-scroll{max-height:calc(100vh - 275px);min-height:410px;overflow:auto;overscroll-behavior:contain;background:var(--board-surface);box-shadow:inset 0 8px 18px rgba(0,0,0,.12)}.game-board{min-width:810px;padding:14px}.game-table{width:100%;border-collapse:separate;border-spacing:6px;table-layout:fixed}.game-table th{padding:6px;color:var(--ink-muted);font-size:.62rem;line-height:1.28;text-align:left;vertical-align:bottom}.game-table th:first-child{width:178px}.game-table td{height:69px}.fixed-cell{height:100%;padding:10px;display:flex;align-items:center;color:#fff;border:1px solid color-mix(in srgb,var(--board-well) 65%,white);border-radius:11px;background:linear-gradient(145deg,color-mix(in srgb,var(--board-well) 88%,white),var(--board-well));box-shadow:inset 0 1px rgba(255,255,255,.15),inset 0 -5px 9px rgba(0,0,0,.22),0 7px 12px rgba(0,0,0,.18);font-size:.69rem;font-weight:800;line-height:1.28}.drop-cell{height:100%;min-height:69px;padding:6px;display:grid;place-items:center;border:1px dashed color-mix(in srgb,var(--ink) 29%,transparent);border-radius:11px;background:color-mix(in srgb,var(--panel-2) 50%,transparent);box-shadow:inset 0 4px 10px rgba(0,0,0,.11),0 1px rgba(255,255,255,.2);cursor:pointer;transition:.14s}.drop-cell:empty::before{content:"+";color:color-mix(in srgb,var(--ink) 24%,transparent);font-size:1rem;font-weight:800}.drop-cell:hover,.drop-cell:focus-visible,.drop-cell.drag-over,.drop-cell.selected-cell{outline:0;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--panel-2));box-shadow:inset 0 3px 9px rgba(0,0,0,.1),0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}.game-token{position:relative;width:100%;min-height:45px;padding:7px 8px;color:var(--token-ink);border:1px solid color-mix(in srgb,var(--token-color) 72%,white);border-radius:9px;background:linear-gradient(155deg,color-mix(in srgb,var(--token-color) 72%,white),var(--token-color) 45%,color-mix(in srgb,var(--token-color) 76%,black));box-shadow:inset 0 2px rgba(255,255,255,.33),inset 0 -5px 8px rgba(0,0,0,.2),0 7px 12px var(--token-glow);text-shadow:0 1px 2px rgba(0,0,0,.65);font-size:.61rem;font-weight:800;line-height:1.2;text-align:center;cursor:grab;transition:transform .13s,filter .13s}.game-token::before{content:"";position:absolute;inset:3px;border:1px solid rgba(255,255,255,.13);border-radius:6px;pointer-events:none}.game-token:hover{z-index:2;transform:translateY(-2px) rotateX(4deg);filter:saturate(1.12) brightness(1.06)}.game-token.selected{outline:3px solid color-mix(in srgb,var(--accent) 65%,white);outline-offset:2px;transform:translateY(-2px)}.game-token:active{cursor:grabbing;transform:translateY(2px)}.token-panel{position:sticky;top:calc(var(--game-header) + 14px);background:var(--panel-surface)}.token-head{padding:16px 15px 10px;display:flex;justify-content:space-between;gap:12px}.token-head h2{margin:3px 0 0;font-size:1.05rem}.token-head-actions{display:flex;align-items:center;gap:8px}.token-head-actions .text-button{color:var(--ink)}.token-head strong{display:grid;place-items:center;min-width:35px;height:29px;color:var(--button-ink);border-radius:9px;background:var(--accent);font-size:.7rem;box-shadow:inset 0 -3px rgba(0,0,0,.12)}.token-search{display:block;padding:0 12px 9px}.return-button{width:calc(100% - 24px);min-height:38px;margin:0 12px 9px;color:var(--ink);border:1px solid var(--board-line);border-radius:9px;background:color-mix(in srgb,var(--accent) 17%,transparent)}.token-pool{height:calc(100vh - 286px);min-height:330px;padding:3px 12px 15px;display:grid;align-content:start;gap:8px;overflow:auto;overscroll-behavior:contain}.pool-empty{padding:35px 10px;color:var(--ink-muted);font-size:.72rem;text-align:center}.game-actions{position:sticky;z-index:42;bottom:0;margin-top:14px;padding:13px 0;display:flex;justify-content:flex-end;background:linear-gradient(transparent,color-mix(in srgb,var(--bg) 97%,transparent) 28%)}.game-actions .button{min-width:210px}.compact-modal{width:min(480px,100%)}.compact-modal ol{padding-left:20px;color:var(--ink-muted);line-height:1.8}.palette-card{width:min(670px,100%)}.palette-presets{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:17px}.colour-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:20px}.colour-grid label{position:relative}.colour-grid input{position:absolute;opacity:0;pointer-events:none}.colour-grid span{display:grid;place-items:center;min-height:48px;color:white;border:2px solid color-mix(in srgb,var(--token-color) 70%,black);border-radius:10px;background:linear-gradient(145deg,color-mix(in srgb,var(--token-color) 80%,white),color-mix(in srgb,var(--token-color) 84%,black));box-shadow:inset 0 1px rgba(255,255,255,.36),0 7px 12px rgba(0,0,0,.18);font-size:.65rem;font-weight:900;cursor:pointer}.result-card{width:min(900px,100%);padding:20px}.scorecard-preview{position:relative;overflow:hidden;min-height:470px;padding:42px;color:var(--ink);border:1px solid color-mix(in srgb,var(--accent) 65%,transparent);border-radius:20px;background:var(--panel-surface);box-shadow:inset 0 1px rgba(255,255,255,.45),inset 0 -10px 30px rgba(0,0,0,.13)}.scorecard-preview::before{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:50%;box-shadow:0 0 0 24px color-mix(in srgb,var(--accent) 7%,transparent),0 0 0 52px color-mix(in srgb,var(--accent) 5%,transparent)}.scorecard-brand,.scorecard-player,.scorecard-meta{position:relative;display:flex;align-items:center;gap:12px}.scorecard-brand>span,.scorecard-player>span{display:grid;place-items:center;width:58px;height:58px;border-radius:15px;color:var(--button-ink);background:var(--accent);box-shadow:inset 0 -4px rgba(0,0,0,.13),0 9px 15px rgba(0,0,0,.2);font-weight:900}.scorecard-brand div,.scorecard-player div{display:grid}.scorecard-brand small,.scorecard-player small,.scorecard-score small,.scorecard-meta small{color:var(--ink-muted)}.scorecard-brand strong{font:700 1.55rem var(--font-display)}.scorecard-player{margin-top:35px}.scorecard-player>span{border-radius:50%}.scorecard-score{position:relative;margin:34px 0;display:grid}.scorecard-score strong{font-size:clamp(4rem,10vw,7.5rem);line-height:.95;letter-spacing:-.08em}.scorecard-score span{margin-top:8px;color:var(--ink-muted);font-weight:800}.scorecard-meta{display:grid;grid-template-columns:2fr 1fr 1fr;padding-top:23px;border-top:2px solid color-mix(in srgb,var(--accent) 55%,transparent)}.scorecard-meta div{display:grid;gap:4px}.result-save-note{margin:13px 0;padding:11px 13px;display:flex;align-items:center;gap:12px;color:var(--ink);border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:.7rem}.result-save-note strong{color:var(--accent)}.result-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.mistakes-card{width:min(650px,100%)}.mistake-list{display:grid;gap:8px;margin:18px 0;max-height:55vh;overflow:auto}.mistake{padding:13px;display:grid;gap:4px;border:1px solid color-mix(in srgb,var(--ink) 13%,transparent);border-left:4px solid var(--danger);border-radius:10px;background:color-mix(in srgb,var(--panel-2) 50%,transparent)}.mistake small{color:var(--ink-muted)}.mistake span{color:var(--danger);font-size:.76rem}.celebration-piece{position:fixed;z-index:210;top:-30px;width:9px;height:17px;pointer-events:none;transition:top 2.5s cubic-bezier(.2,.7,.3,1),transform 2.5s linear}.play-focus{overflow:hidden}.play-focus .game-header{--game-header:58px;min-height:58px}.play-focus .game-shell{width:calc(100% - 16px);height:calc(100vh - 58px);padding:8px 0}.play-focus .game-intro{display:none}.play-focus .stage-tabs{padding-bottom:6px}.play-focus .board-scroll{max-height:calc(100vh - 190px)}.play-focus .token-panel{top:66px}.play-focus .token-pool{height:calc(100vh - 200px)}
html[data-theme="arcade"] .game-token{box-shadow:inset 0 2px rgba(255,255,255,.42),inset 0 -5px 8px rgba(0,0,0,.25),0 0 14px color-mix(in srgb,var(--token-color) 48%,transparent)}html[data-theme="marble"] .scorecard-preview{background-image:linear-gradient(118deg,transparent 0 31%,rgba(50,56,59,.06) 32%,transparent 34% 64%,rgba(50,56,59,.05) 65%,transparent 68%),var(--panel-surface)}html[data-theme="walnut"] .scorecard-preview{background-image:repeating-linear-gradient(4deg,transparent 0 18px,rgba(76,32,14,.055) 19px 21px),var(--panel-surface)}
@media(max-width:1020px){.game-header{grid-template-columns:1fr auto}.game-status{display:none}.play-layout{grid-template-columns:1fr}.token-panel{position:static}.token-pool{height:auto;max-height:340px;min-height:150px;grid-template-columns:repeat(2,minmax(0,1fr))}.board-scroll{max-height:none}.mobile-only{display:inline-flex}.play-focus .play-layout{grid-template-columns:minmax(0,1fr) 300px}.play-focus .token-panel{position:sticky}.play-focus .token-pool{display:grid}}
@media(max-width:720px){.game-page{--game-header:62px}.game-header{grid-template-columns:auto 1fr;padding:0 10px;gap:8px}.game-header .brand span{display:none}.game-tools{gap:4px}.game-tools .button{min-height:37px;padding:0 9px;font-size:.58rem}.game-tools #sound-button{display:none}.game-shell{width:calc(100% - 16px);padding-top:18px}.game-intro{align-items:stretch;flex-direction:column;gap:12px}.game-intro h1{font-size:1.65rem}.completion{width:100%;text-align:left}.stage-tab{min-width:116px;height:45px}.play-layout{display:block}.board-panel{border-radius:14px;transform:none}.board-toolbar{min-height:48px}.board-scroll{min-height:390px}.game-board{min-width:730px;padding:8px}.game-table{border-spacing:4px}.game-table th:first-child{width:145px}.game-table td,.drop-cell{height:62px;min-height:62px}.fixed-cell{font-size:.62rem}.game-token{min-height:41px;font-size:.56rem}.token-panel{position:fixed;z-index:95;left:8px;right:8px;bottom:8px;max-height:min(72vh,620px);transform:translateY(calc(100% + 18px));transition:transform .22s ease;border-radius:18px}.repository-open .token-panel{transform:translateY(0)}.token-panel::before{content:"";display:block;width:46px;height:4px;margin:7px auto 0;border-radius:10px;background:color-mix(in srgb,var(--ink) 25%,transparent)}.token-pool{max-height:47vh;grid-template-columns:repeat(2,minmax(0,1fr))}.game-actions{justify-content:stretch}.game-actions .button{width:100%}.colour-grid{grid-template-columns:repeat(2,1fr)}.result-card{padding:9px}.scorecard-preview{min-height:420px;padding:25px 19px}.scorecard-score strong{font-size:4.2rem}.scorecard-meta{grid-template-columns:1fr 1fr}.scorecard-meta div:first-child{grid-column:1/-1}.result-save-note{align-items:flex-start;flex-direction:column;gap:3px}.result-actions>*{width:100%}.play-focus .play-layout{display:block}.play-focus .game-shell{height:calc(100vh - 58px)}.play-focus .stage-tabs{display:none}.play-focus .board-scroll{height:calc(100vh - 175px);max-height:none}.play-focus .token-panel{position:fixed}.modal{padding:7px}.modal-card{max-height:calc(100vh - 14px)}}
@media(max-width:390px){.game-tools #fullscreen-button{max-width:76px}.game-tools #repository-toggle{max-width:72px}.scorecard-player{margin-top:25px}.scorecard-score{margin:27px 0}.scorecard-score strong{font-size:3.65rem}}
@media(orientation:landscape) and (max-height:520px){.game-intro{display:none}.game-header{--game-header:56px;min-height:56px}.game-shell{padding:7px 0}.stage-tabs{padding-bottom:6px}.board-scroll{height:calc(100vh - 170px);max-height:none}.game-actions{position:fixed;right:13px;bottom:7px;padding:0;background:none}.game-actions .button{min-height:38px}.token-panel{max-height:78vh}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}.celebration-piece{display:none}}

/* v4.1 universal E-token system */
.token-stylebar{margin:0 0 14px;padding:9px 11px;display:flex;align-items:center;gap:15px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 76%,transparent);box-shadow:inset 0 1px rgba(255,255,255,.11),0 8px 20px rgba(0,0,0,.13);backdrop-filter:blur(14px)}.token-stylebar>.micro-label{flex:0 0 auto}.token-style-options{display:flex;align-items:center;gap:7px;min-width:0;overflow-x:auto;scrollbar-width:none}.token-style-options::-webkit-scrollbar{display:none}.token-style-options>button,.custom-token-picker{min-height:34px;padding:0 11px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--muted);border:1px solid var(--line);border-radius:9px;background:rgba(0,0,0,.12);font-size:.6rem;font-weight:900;letter-spacing:.06em;cursor:pointer}.token-style-options>button.selected{color:var(--button-ink);border-color:var(--accent);background:var(--accent);box-shadow:inset 0 1px rgba(255,255,255,.38),inset 0 -3px rgba(0,0,0,.12),0 5px 12px rgba(0,0,0,.18)}.custom-token-picker{position:relative;gap:7px}.custom-token-picker input{width:18px;height:18px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}.token-finish-name{max-width:86px;overflow:hidden;color:var(--ink-muted);font-size:.58rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}
.game-token{isolation:isolate;overflow:hidden;color:var(--token-text,#fffaf2)!important;border:1px solid color-mix(in srgb,var(--token-color) 62%,white)!important;border-radius:9px;background:linear-gradient(158deg,color-mix(in srgb,var(--token-color) 54%,white) 0,var(--token-color) 34%,color-mix(in srgb,var(--token-color) 78%,black) 100%)!important;box-shadow:inset 0 3px 0 rgba(255,255,255,.34),inset 0 -4px 0 rgba(0,0,0,.24),0 7px 0 rgba(32,19,13,.46),0 13px 19px rgba(24,12,7,.26)!important;text-shadow:0 1px 2px rgba(0,0,0,.62)}.game-token::before{inset:3px;z-index:-1;border-color:rgba(255,255,255,.17)}.game-token::after{content:"";position:absolute;z-index:-1;left:7%;right:7%;top:4px;height:32%;border-radius:7px;background:linear-gradient(180deg,rgba(255,255,255,.32),transparent);pointer-events:none}.game-token.selected{outline-color:#fff!important;box-shadow:inset 0 3px rgba(255,255,255,.42),inset 0 -4px rgba(0,0,0,.22),0 9px 0 rgba(24,15,12,.45),0 0 0 3px var(--accent),0 16px 26px rgba(0,0,0,.33)!important;animation:token-lift .32s cubic-bezier(.2,.8,.2,1) both}.game-token.landed{animation:token-land .42s cubic-bezier(.18,.9,.25,1.25)}.drop-cell.drop-impact{animation:cell-impact .45s ease}.row-finished .drop-cell{animation:row-trace .52s ease}.board-submitting .board-panel{animation:board-submit .72s ease}
html[data-theme="forest"] .drop-cell.drop-impact{box-shadow:inset 0 3px 9px rgba(0,0,0,.1),0 0 0 3px rgba(58,151,99,.34),0 0 25px rgba(58,151,99,.34)}html[data-theme="marble"] .game-token.landed{filter:brightness(1.16) saturate(.95)}html[data-theme="arcade"] .row-finished .drop-cell{animation:arcade-row .55s ease}html[data-theme="sunstone"] .drop-cell.drop-impact{animation:sunstone-impact .48s ease}
@keyframes token-lift{0%{transform:translateY(0)}100%{transform:translateY(-6px) rotateX(5deg)}}@keyframes token-land{0%{transform:translateY(-18px) scale(1.04)}62%{transform:translateY(3px) scale(.98)}100%{transform:none}}@keyframes cell-impact{45%{transform:scale(.97);border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 23%,transparent)}}@keyframes row-trace{35%{filter:brightness(1.18);box-shadow:0 0 18px color-mix(in srgb,var(--accent) 36%,transparent)}}@keyframes board-submit{45%{transform:rotateX(.45deg) scale(.992);filter:brightness(1.12)}}@keyframes arcade-row{0%{filter:hue-rotate(0)}50%{filter:hue-rotate(80deg) brightness(1.3);box-shadow:0 0 22px #33dbff}100%{filter:none}}@keyframes sunstone-impact{45%{transform:scale(.96);box-shadow:0 0 0 4px rgba(42,174,166,.3),0 0 30px rgba(237,177,65,.42)}}
@media(max-width:720px){.token-stylebar{margin-bottom:10px;padding:7px 8px;align-items:flex-start;flex-direction:column;gap:6px}.token-style-options{width:100%}.token-style-options>button,.custom-token-picker{min-height:32px;padding-inline:9px}.game-tools #sound-button{display:inline-flex;width:37px;min-width:37px;padding:0;font-size:0}.game-tools #sound-button::before{content:"♪";font-size:1rem}}
.scorecard-credit{margin-top:18px;padding-top:12px;display:grid;gap:4px;border-top:1px solid color-mix(in srgb,var(--ink) 12%,transparent);color:var(--ink-muted);font-size:.52rem;line-height:1.4}.scorecard-credit small{font-size:.52rem}.scorecard-credit span{max-width:760px}

/* v4.2 immersive play surface */
.game-page{--game-header:58px;height:100dvh;min-height:100dvh;overflow:hidden;background-attachment:fixed!important;background-position:center!important;background-size:cover!important}.game-page .world-decor{display:none!important}.game-header{position:relative;z-index:70;height:var(--game-header);min-height:var(--game-header);padding:0 14px;display:grid;grid-template-columns:1fr auto 1fr;background:color-mix(in srgb,var(--bg) 90%,transparent);box-shadow:0 7px 25px rgba(0,0,0,.24)}.game-header .brand{justify-self:start}.game-status{justify-self:center}.game-tools{justify-self:end}.game-commandbar{position:absolute;z-index:100;left:12px;right:12px;top:calc(100% + 8px);min-height:64px;padding:8px;display:flex;align-items:center;gap:10px;color:var(--text);border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--bg) 94%,transparent);box-shadow:0 25px 70px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.12);backdrop-filter:blur(24px);opacity:0;visibility:hidden;transform:translateY(-10px) scale(.985);transform-origin:top center;pointer-events:none;transition:opacity .18s,transform .18s,visibility .18s}.controls-open .game-commandbar{opacity:1;visibility:visible;transform:none;pointer-events:auto}.game-commandbar .stage-tabs{min-width:0;flex:1;padding:0}.game-commandbar .stage-tab{min-width:126px;height:46px}.command-actions{display:flex;align-items:center;gap:7px;flex:0 0 auto}
.game-shell{width:100%;height:calc(100dvh - var(--game-header));margin:0;padding:10px;display:flex;min-height:0}.play-layout{width:100%;height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(292px,24vw,370px);gap:10px;align-items:stretch;perspective:none}.board-panel,.token-panel{height:100%;min-height:0;border-radius:18px;backdrop-filter:blur(10px)}.board-panel{display:flex;flex-direction:column;transform:none}.board-toolbar{min-height:66px;padding:7px 10px;display:grid;grid-template-columns:minmax(180px,1fr) minmax(150px,260px) auto;align-items:center;gap:13px}.board-identity{min-width:0}.board-identity .micro-label{font-size:.55rem}.board-identity h1{margin:3px 0 0;overflow:hidden;font-size:clamp(.85rem,1.25vw,1.12rem);line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.board-toolbar .completion{width:100%;text-align:right}.board-actions{display:flex;align-items:center;justify-content:flex-end;gap:3px}.board-actions #primary-action{min-width:150px}.board-scroll{min-height:0;max-height:none;height:auto;flex:1;overscroll-behavior:contain}.game-board{padding:10px}.token-panel{position:static;top:auto;display:flex;flex-direction:column}.token-head{flex:0 0 auto;padding:11px 12px 7px}.token-head h2{font-size:.98rem}.token-style-drawer{margin:0 10px 8px;flex:0 0 auto;border:1px solid var(--board-line);border-radius:10px;background:color-mix(in srgb,var(--panel-2) 45%,transparent)}.token-style-drawer summary{min-height:35px;padding:0 10px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--ink);font-size:.57rem;font-weight:900;letter-spacing:.08em;cursor:pointer;list-style:none}.token-style-drawer summary::-webkit-details-marker{display:none}.token-style-drawer summary::after{content:"+";color:var(--accent);font-size:1rem}.token-style-drawer[open] summary::after{content:"−"}.token-style-drawer summary span{margin-left:auto;color:var(--ink-muted);font-size:.56rem;letter-spacing:0;text-transform:none}.token-style-drawer .token-style-options{padding:0 8px 8px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;overflow:visible}.token-style-drawer .token-style-options>button,.token-style-drawer .custom-token-picker{width:100%;min-height:31px;padding:0 7px;color:var(--ink-muted);border-color:var(--board-line);background:color-mix(in srgb,var(--panel-2) 70%,transparent);font-size:.53rem}.token-style-drawer .token-style-options>button.selected{color:var(--button-ink);background:var(--accent)}.token-search{flex:0 0 auto;padding:0 10px 8px}.token-search input{height:38px}.return-button{flex:0 0 auto}.token-pool{height:auto;min-height:0;max-height:none;flex:1;padding:3px 10px 13px}.game-actions,.token-stylebar{display:none!important}

html[data-theme="walnut"] body.game-page{background-image:linear-gradient(90deg,rgba(12,4,2,.5),rgba(35,16,8,.08) 26% 74%,rgba(12,4,2,.5)),url("../art/walnut-world.webp")!important}html[data-theme="forest"] body.game-page{background-image:linear-gradient(90deg,rgba(4,31,21,.45),rgba(244,246,218,.14) 28% 72%,rgba(4,31,21,.42)),url("../art/forest-world.webp")!important}html[data-theme="marble"] body.game-page{background-image:linear-gradient(90deg,rgba(12,16,18,.38),rgba(255,255,255,.08) 25% 75%,rgba(12,16,18,.38)),url("../art/marble-world.webp")!important}html[data-theme="arcade"] body.game-page{background-image:linear-gradient(rgba(1,2,18,.2),rgba(1,2,18,.34)),url("../art/arcade-world.webp")!important}html[data-theme="sunstone"] body.game-page{background-image:linear-gradient(90deg,rgba(45,24,8,.38),rgba(255,225,159,.08) 25% 75%,rgba(45,24,8,.38)),url("../art/sunstone-world.webp")!important}
html[data-theme="walnut"] .game-page .board-scroll{background-image:linear-gradient(rgba(176,108,59,.87),rgba(128,70,35,.93)),url("../art/walnut-world.webp");background-size:cover}html[data-theme="forest"] .game-page .board-scroll{background-image:linear-gradient(rgba(241,244,222,.93),rgba(210,226,203,.95)),url("../svg/forest-corners.svg");background-size:cover}html[data-theme="marble"] .game-page .board-scroll{background-image:linear-gradient(rgba(247,247,244,.92),rgba(218,224,224,.94)),url("../svg/marble-veins.svg");background-size:cover}html[data-theme="arcade"] .game-page .board-scroll{background-image:linear-gradient(rgba(7,12,49,.9),rgba(13,20,70,.94)),url("../art/arcade-world.webp");background-size:cover}html[data-theme="sunstone"] .game-page .board-scroll{background-image:linear-gradient(rgba(225,194,132,.91),rgba(190,135,70,.94)),url("../svg/sunstone-emblem.svg");background-size:auto,650px}
html[data-theme="walnut"] .game-page .board-panel,html[data-theme="walnut"] .game-page .token-panel{border-width:7px;border-color:#2b120a;background:linear-gradient(145deg,rgba(230,184,131,.97),rgba(158,92,47,.98));box-shadow:inset 0 0 0 2px #9f6539,0 18px 48px rgba(11,3,1,.55)}html[data-theme="forest"] .game-page .board-panel,html[data-theme="forest"] .game-page .token-panel{border:3px solid #194a34;background:linear-gradient(145deg,rgba(249,247,229,.97),rgba(205,224,202,.98));box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 18px 48px rgba(4,37,24,.36)}html[data-theme="marble"] .game-page .board-panel,html[data-theme="marble"] .game-page .token-panel{border:2px solid rgba(68,75,78,.7);background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(214,221,221,.97));box-shadow:inset 0 0 0 1px #fff,0 18px 50px rgba(12,16,18,.4)}html[data-theme="arcade"] .game-page .board-panel,html[data-theme="arcade"] .game-page .token-panel{border:2px solid rgba(54,225,255,.62);background:linear-gradient(145deg,rgba(19,28,88,.96),rgba(6,10,44,.97));box-shadow:inset 0 0 30px rgba(57,218,255,.07),0 0 25px rgba(107,67,255,.26),0 18px 54px rgba(0,0,0,.6)}html[data-theme="sunstone"] .game-page .board-panel,html[data-theme="sunstone"] .game-page .token-panel{border-width:6px;border-color:#4c2c16;background:linear-gradient(145deg,rgba(239,211,157,.97),rgba(184,126,61,.98));box-shadow:inset 0 0 0 2px #c69450,0 18px 50px rgba(48,23,6,.44)}
.play-focus{--game-header:48px}.play-focus .game-header{height:var(--game-header);min-height:var(--game-header)}.play-focus .game-shell{width:100%;height:calc(100dvh - var(--game-header));padding:4px}.play-focus .play-layout{grid-template-columns:minmax(0,1fr) clamp(280px,23vw,360px);gap:4px}.play-focus .board-toolbar{min-height:56px}.play-focus .board-scroll{height:auto;max-height:none}.play-focus .token-panel{position:static;top:auto}.play-focus .token-pool{height:auto}.play-focus .game-header .brand span{display:none}

@media(max-width:900px){.game-header{grid-template-columns:1fr auto auto}.game-status{display:grid;justify-self:end}.game-status span{display:none}.game-shell{padding:6px}.play-layout,.play-focus .play-layout{display:block;height:100%}.board-panel{height:100%}.board-toolbar{min-height:61px;grid-template-columns:minmax(0,1fr) 110px auto;gap:7px}.board-toolbar .completion{width:110px}.board-actions .text-button{display:none}.board-actions #primary-action{min-width:118px;padding-inline:9px;font-size:.56rem}.token-panel,.play-focus .token-panel{position:fixed;z-index:95;left:6px;right:6px;top:auto;bottom:6px;height:min(78dvh,680px);max-height:min(78dvh,680px);transform:translateY(calc(100% + 14px));transition:transform .22s ease}.repository-open .token-panel{transform:translateY(0)}.token-pool{grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-only{display:inline-flex}.game-commandbar{align-items:stretch;flex-direction:column;max-height:46dvh;overflow:auto}.game-commandbar .stage-tabs{width:100%;flex:0 0 auto}.command-actions{justify-content:flex-end}.game-token{font-size:.58rem}}
@media(max-width:620px){.game-page{--game-header:54px}.game-header{height:var(--game-header);min-height:var(--game-header);padding:0 7px;grid-template-columns:auto 1fr auto}.game-header .brand span{display:none}.game-header .brand img{width:28px;height:28px}.game-status{justify-self:center}.game-status strong{font-size:.9rem}.game-tools{gap:4px}.game-tools .button{min-height:34px;padding:0 8px;font-size:.54rem}.game-shell{width:100%;height:calc(100dvh - var(--game-header));padding:4px}.board-toolbar{min-height:58px;padding:5px 7px;grid-template-columns:minmax(0,1fr) 84px auto}.board-identity h1{font-size:.75rem}.board-toolbar .completion{width:84px}.board-toolbar .completion span{font-size:.58rem}.board-actions #primary-action{min-width:100px;max-width:110px;min-height:35px;padding:0 5px;font-size:.5rem}.game-board{min-width:690px;padding:6px}.game-table{border-spacing:4px}.game-table th:first-child{width:142px}.game-table td,.drop-cell{height:60px;min-height:60px}.game-token{min-height:39px}.token-panel{left:4px;right:4px;bottom:4px}.game-commandbar{left:5px;right:5px}.command-actions>*{flex:1}.game-tools #sound-button{display:none}.scorecard-preview{min-height:420px}}
@media(orientation:landscape) and (max-height:560px){.game-page{--game-header:46px}.game-header{height:var(--game-header);min-height:var(--game-header)}.game-shell{height:calc(100dvh - var(--game-header));padding:3px}.board-toolbar{min-height:49px}.game-table td,.drop-cell{height:55px;min-height:55px}.game-token{min-height:36px}.token-panel{height:calc(100dvh - 8px);max-height:calc(100dvh - 8px)}}

/* v4.3 personal scorecards */
.scorecard-player{align-items:flex-start}.scorecard-player>.scorecard-avatar{width:78px;height:78px;overflow:hidden;flex:0 0 auto;border:3px solid color-mix(in srgb,var(--accent) 80%,white);box-shadow:inset 0 -4px rgba(0,0,0,.13),0 12px 22px rgba(0,0,0,.24)}.scorecard-avatar img{width:100%;height:100%;display:block;object-fit:cover}.scorecard-player div{min-width:0;gap:2px}.scorecard-player strong{font:700 clamp(1.05rem,2.2vw,1.55rem) var(--font-display)}.scorecard-player em{max-width:620px;overflow:hidden;color:var(--ink-muted);font-size:.7rem;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.scorecard-player em:first-of-type{color:var(--accent);font-weight:800}.scorecard-photo-tools{margin:12px 0 0;padding:10px 12px;display:flex;align-items:center;gap:8px;color:var(--ink);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:11px;background:color-mix(in srgb,var(--panel-2) 36%,transparent)}.scorecard-photo-tools>span{margin-left:auto;color:var(--ink-muted);font-size:.66rem}.scorecard-photo-tools .text-button{color:var(--ink-muted)}
@media(max-width:620px){.scorecard-player>.scorecard-avatar{width:64px;height:64px}.scorecard-player em{max-width:220px}.scorecard-photo-tools{align-items:stretch;flex-wrap:wrap}.scorecard-photo-tools>span{width:100%;margin:0}.scorecard-photo-tools .button{flex:1}}

/* v4.4 mobile landscape play */
.orientation-gate{position:fixed;z-index:215;inset:0;display:none;place-items:center;padding:max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:linear-gradient(145deg,color-mix(in srgb,var(--bg) 96%,black),color-mix(in srgb,var(--bg-2) 92%,black));overflow:auto}.orientation-required .orientation-gate{display:grid}.orientation-card{width:min(390px,100%);display:grid;justify-items:center;text-align:center}.orientation-card h2{margin:8px 0 5px;font-size:clamp(1.6rem,8vw,2.7rem)}.orientation-card p{margin:0 0 18px;color:var(--muted);font-size:.78rem}.orientation-card .button{min-width:210px}.rotate-device{position:relative;width:112px;height:82px;margin:0 0 22px}.rotate-device span{position:absolute;left:24px;top:4px;width:48px;height:74px;border:3px solid var(--accent);border-radius:12px;background:color-mix(in srgb,var(--surface) 55%,transparent);box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--accent) 8%,transparent),0 14px 30px rgba(0,0,0,.3);animation:turn-device 1.8s ease-in-out infinite}.rotate-device span::after{content:"";position:absolute;left:50%;bottom:5px;width:12px;height:2px;border-radius:4px;background:var(--accent);transform:translateX(-50%)}.rotate-device i{position:absolute;right:0;top:9px;color:var(--accent);font-size:2rem;font-style:normal}.orientation-waiting .rotate-device span{animation-duration:1.05s}@keyframes turn-device{0%,20%{transform:rotate(0)}70%,100%{transform:translate(13px,12px) rotate(90deg)}}

@media(orientation:landscape) and (pointer:coarse) and (max-width:1400px){
  .game-page{--game-header:46px}
  .game-header{height:var(--game-header);min-height:var(--game-header);padding:0 max(7px,env(safe-area-inset-right)) 0 max(7px,env(safe-area-inset-left));grid-template-columns:auto 1fr auto}
  .game-header .brand span{display:none}.game-header .brand img{width:28px;height:28px}.game-status{display:grid;justify-self:center}.game-status span{display:none}.game-tools{gap:5px}.game-tools .button{min-height:36px;padding:0 9px;font-size:.53rem}
  .game-shell,.play-focus .game-shell{width:100%;height:calc(100dvh - var(--game-header));padding:3px max(3px,env(safe-area-inset-right)) max(3px,env(safe-area-inset-bottom)) max(3px,env(safe-area-inset-left))}
  .play-layout,.play-focus .play-layout{display:block;height:100%}.board-panel{height:100%;border-radius:11px;transform:none}.board-toolbar{min-height:48px;height:48px;padding:4px 7px;grid-template-columns:minmax(0,1fr) 92px auto;gap:7px}.board-identity h1{font-size:.7rem}.board-toolbar .completion{width:92px}.board-toolbar .completion span{font-size:.55rem}.board-actions .text-button{display:none}.board-actions #primary-action{min-width:104px;min-height:36px;padding:0 7px;font-size:.5rem}
  .board-scroll,.play-focus .board-scroll{height:calc(100dvh - var(--game-header) - 54px);min-height:0;max-height:none}.game-board{min-width:620px;padding:5px}.game-table{border-spacing:3px}.game-table th{padding:3px;font-size:.52rem}.game-table th:first-child{width:120px}.game-table td,.drop-cell{height:52px;min-height:52px}.fixed-cell{padding:6px;font-size:.56rem}.game-token{min-height:35px;padding:5px;font-size:.51rem}
  .token-panel,.play-focus .token-panel{position:fixed;z-index:95;left:auto;right:max(3px,env(safe-area-inset-right));top:calc(var(--game-header) + 3px);bottom:max(3px,env(safe-area-inset-bottom));width:min(420px,70vw);height:auto;max-height:none;transform:translateX(calc(100% + 18px));transition:transform .22s ease;border-radius:13px}.repository-open .token-panel{transform:translateX(0)}.token-panel::before{display:none}.token-head{padding:9px 11px 6px}.token-head h2{font-size:.9rem}.token-style-drawer{margin:0 9px 6px}.token-search{padding:0 9px 6px}.token-search input{height:36px}.token-pool{height:auto;min-height:0;max-height:none;flex:1;padding:2px 9px 10px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.game-commandbar{left:max(4px,env(safe-area-inset-left));right:max(4px,env(safe-area-inset-right));max-height:70dvh}.mobile-only{display:inline-flex}
}
@media(orientation:landscape) and (pointer:coarse) and (max-height:430px){.game-page{--game-header:42px}.game-header{height:var(--game-header);min-height:var(--game-header)}.board-toolbar{height:44px;min-height:44px}.board-scroll,.play-focus .board-scroll{height:calc(100dvh - var(--game-header) - 50px)}.game-table td,.drop-cell{height:48px;min-height:48px}.game-token{min-height:32px}.token-head{padding-block:6px 4px}.token-style-drawer summary{min-height:31px}}
@media(prefers-reduced-motion:reduce){.rotate-device span{animation:none;transform:translate(13px,12px) rotate(90deg)}}

/* v7.0.1 legible scientific board headings */
.game-board{min-width:960px}
.game-table thead th{
  position:sticky;
  z-index:12;
  top:0;
  height:74px;
  padding:10px 9px;
  color:#23150f;
  border:1px solid rgba(65,38,24,.72);
  border-radius:10px;
  background:rgba(249,229,202,.96);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72),0 5px 13px rgba(31,15,8,.24);
  backdrop-filter:blur(12px) saturate(1.1);
  font-size:clamp(.76rem,.82vw,.88rem);
  font-weight:900;
  line-height:1.18;
  letter-spacing:.008em;
  text-align:left;
  text-shadow:none;
  vertical-align:middle;
  opacity:1;
}
.game-table thead th:first-child{width:178px}
html[data-theme="walnut"] .game-table thead th{color:#2c160c;border-color:#9a603b;background:rgba(248,218,181,.96);box-shadow:inset 0 1px #fff0dc,0 5px 14px rgba(51,20,7,.28)}
html[data-theme="forest"] .game-table thead th{color:#113d2c;border-color:#4d7c60;background:rgba(246,248,226,.97);box-shadow:inset 0 1px #fff,0 5px 14px rgba(10,53,35,.22)}
html[data-theme="marble"] .game-table thead th{color:#20272a;border-color:#7b8588;background:rgba(253,253,250,.97);box-shadow:inset 0 1px #fff,0 5px 14px rgba(20,26,28,.2)}
html[data-theme="arcade"] .game-table thead th{color:#f5fcff;border-color:#3fe0f5;background:rgba(12,20,67,.97);box-shadow:inset 0 1px rgba(255,255,255,.2),0 0 0 1px rgba(117,83,255,.34),0 0 16px rgba(48,219,246,.25);text-shadow:0 0 8px rgba(67,224,247,.4)}
html[data-theme="sunstone"] .game-table thead th{color:#35200f;border-color:#9a6634;background:rgba(246,220,167,.97);box-shadow:inset 0 1px #fff3cf,0 5px 14px rgba(57,31,8,.24)}

@media(max-width:620px){
  .game-board{min-width:900px}
  .game-table thead th{height:68px;padding:8px 7px;font-size:.72rem;line-height:1.15}
  .game-table thead th:first-child{width:155px}
}
@media(orientation:landscape) and (pointer:coarse) and (max-width:1400px){
  .game-board{min-width:880px}
  .game-table thead th{height:62px;padding:6px;font-size:clamp(.66rem,1.35vw,.76rem);line-height:1.12}
  .game-table thead th:first-child{width:150px}
}
@media(orientation:landscape) and (pointer:coarse) and (max-height:430px){
  .game-table thead th{height:58px;padding:5px 6px;font-size:clamp(.64rem,1.28vw,.72rem)}
}

/* v7.0.2 full-cell puzzle tiles */
.drop-cell.filled{
  padding:0;
  overflow:visible;
  border-style:solid;
  border-color:color-mix(in srgb,var(--token-color,var(--accent)) 52%,var(--ink));
  background:transparent;
  box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--panel-2) 48%,transparent),0 3px 8px rgba(0,0,0,.18);
}
.drop-cell>.game-token.placed{
  width:100%;
  height:100%;
  min-height:100%;
  margin:0;
  padding:7px 8px;
  align-self:stretch;
  border-radius:10px;
  box-shadow:inset 0 3px 0 rgba(255,255,255,.36),inset 0 -5px 0 rgba(0,0,0,.24),0 4px 0 rgba(32,19,13,.4),0 8px 13px rgba(24,12,7,.23)!important;
}
.drop-cell>.game-token.placed:hover{transform:translateY(-1px) rotateX(2deg)}
.drop-cell>.game-token.placed.selected{transform:translateY(-2px)}
