/* Quiet, native-feeling controls in the room's champagne and warm ivory palette. */
.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:18px 0;min-width:0}
.setting-title{font-size:13px;color:#634a35}.setting-row small{display:block;margin-top:7px;font-size:10px;line-height:1.6;color:#9b8060}
.time-setting{margin:22px 0}.time-picker{position:relative;flex:0 0 118px}
.time-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:43px;padding:10px 15px;border:1px solid #d2b37b66;border-radius:15px;background:linear-gradient(135deg,#fffbed,#f8e9cd);box-shadow:inset 0 1px #fffaf0;color:#755733;font-size:13px;font-variant-numeric:tabular-nums}
.time-trigger[aria-expanded=true]{border-color:#b59451;background:#f8e9c9}.time-chevron{color:#a1875a;transition:transform .2s}.time-trigger[aria-expanded=true] .time-chevron{transform:translateX(2px)}
.time-options{position:absolute;top:calc(100% + 7px);right:0;z-index:12;min-width:176px;padding:7px;border:1px solid #ddc7a3;border-radius:18px;background:#fff8eb;box-shadow:0 12px 28px #79522926,inset 0 1px #fffdf8;transform-origin:top right}
.time-menu-caption{padding:7px 11px 8px;font-size:10px;color:#a48c6c}.time-options button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:42px;padding:10px 11px;border:0;border-radius:11px;background:transparent;text-align:left;font-size:13px;color:#72583c;font-variant-numeric:tabular-nums}
.time-options button i{opacity:0;color:#a47e39;font-style:normal}.time-options button[aria-selected=true]{background:#eddbb65e}.time-options button[aria-selected=true] i{opacity:1}.time-options button:hover{background:#f2e4ca;filter:none}.settings-panel.picker-open{z-index:6}
.panel-slot{display:flex;flex-direction:column;gap:16px;min-width:0}.panel-slot:empty{display:none}#underBoardPanels{margin-top:22px}.panel-slot .analysis-panel{margin-top:0}
.side-control{position:relative;display:flex;flex:0 1 224px;min-width:0;padding:4px;height:44px;border:1px solid #d4b77c52;border-radius:24px;background:#f4e4c565;isolation:isolate}
.side-control .side-thumb{position:absolute;inset:4px auto 4px 4px;width:calc((100% - 8px)/2);border:1px solid #fff7df;background:linear-gradient(145deg,#fffbed,#f0dbac);border-radius:21px;box-shadow:0 2px 5px #80571916;transition:transform .32s cubic-bezier(.22,.85,.24,1),background .25s}
.side-control[data-side=b] .side-thumb{transform:translateX(100%);background:linear-gradient(135deg,#856342,#60472f);border-color:#92754e}
.side-control label{position:relative;display:grid;place-items:center;flex:1;margin:0!important;cursor:pointer;font-size:11px;white-space:nowrap;color:#987f5b}
.side-control input{position:absolute;opacity:0;width:1px;height:1px}.side-control label span{transition:color .24s}.side-control input:checked+span{color:#6b512b}.side-control[data-side=b] input:checked+span{color:#fff5dc}.side-control label:has(input:focus-visible){outline:2px solid #a88743;outline-offset:1px;border-radius:20px}.side-control:has(input:disabled){opacity:.65}
/* One clipped compositor layer: no animated blur, masks or CSS gradient repaint. */
.island-rim{position:absolute;inset:0;border-radius:inherit;padding:1.3px;pointer-events:none;z-index:3;overflow:hidden;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;opacity:.66}
.island-rim i{position:absolute;inset:-200%;background:conic-gradient(from 0deg,transparent 0 20%,#fff8df 26%,#d7b777aa 31%,transparent 39% 70%,#f9e2acaa 77%,transparent 85%);animation:rim-orbit 12s linear infinite;will-change:transform}
.island[data-state=thinking] .island-rim{opacity:.95}
html .island[data-state=thinking]::before,html[data-effects=light] .island[data-state=thinking]::before,html .engine-busy .island[data-state=thinking]::before{animation:none!important;opacity:0!important}
@keyframes rim-orbit{to{transform:rotate(1turn)}}
.board-moving .island-rim i{animation-play-state:paused}
.reduce-motion .island-rim i{animation:none;will-change:auto}.reduce-motion .side-thumb,.reduce-motion .wheel-option{transition:none}
@media(prefers-reduced-motion:reduce){.island-rim i{animation:none;will-change:auto}.side-control .side-thumb,.wheel-option{transition:none}}
@media(max-width:390px){.setting-row{gap:10px}.side-control{flex-basis:194px}.side-control label{font-size:10px}.time-picker{flex-basis:108px}}
[hidden]{display:none!important}

.reduce-motion .time-chevron,.reduce-motion .island-rim,.reduce-motion .island-rim i{transition:none}
@media(prefers-reduced-motion:reduce){.time-chevron,.island-rim,.island-rim i{transition:none}}

#underBoardPanels:has(>#analysisPanel[hidden]:only-child){display:none}
#sidebarPanels:has(>#analysisPanel[hidden]:only-child){display:none}

/* Stable layers for completion: only opacity changes, with no width or filter animation. */
.island-icon{transition:opacity .22s ease;will-change:opacity}
html .island[data-celebrating=true] .island-icon{visibility:visible;opacity:0}
html .island-success{display:grid;opacity:0;transition:opacity .22s ease;will-change:opacity}
html .island[data-celebrating=true] .island-success{opacity:1}
.island-rim{transition:opacity .22s ease}
.island-rim-pulse{position:absolute;inset:0;z-index:3;border:2px solid #ffe4a1;border-radius:inherit;box-shadow:inset 0 0 0 1px #fff7dbb3;opacity:0;transition:opacity .22s ease;pointer-events:none}
.island[data-celebrating=true] .island-rim{opacity:1}
.island[data-celebrating=true] .island-rim-pulse{opacity:.95}
.island[data-celebrating=true] .island-rim i{animation-play-state:paused}
.side-control .side-thumb{display:grid;place-items:center;text-align:center;font-style:normal;pointer-events:none;transition:transform .32s cubic-bezier(.22,.85,.24,1);z-index:1}
.side-thumb-label{display:block;width:100%;text-align:center;font-size:11px;line-height:1;white-space:nowrap;color:#6b512b}
.side-control[data-side=b] .side-thumb-label{color:#fff5dc}
.side-control label{justify-content:center!important;text-align:center}
.side-control label>span{opacity:0;pointer-events:none}
@media(max-width:390px){.side-thumb-label{font-size:10px}}
.reduce-motion .island-icon,.reduce-motion .island-success,.reduce-motion .island-rim-pulse{transition:none}
@media(prefers-reduced-motion:reduce){.island-icon,.island-success,.island-rim-pulse{transition:none}}

/* Setup lives next to the board actions on narrow windows, and in the tablet sidebar. */
.intro-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.settings-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid #d9c9af55}.settings-heading b{font-size:14px;font-weight:500;color:#775738}.settings-heading button{display:grid;place-items:center;width:30px;height:30px;border:1px solid #dbc8a855;border-radius:50%;background:#fff8e777;color:#92734f;font-size:19px;padding:0}
.settings-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.settings-actions button{min-height:40px;padding:10px 15px;border:1px solid #c7a56e55;border-radius:14px;font-size:12px}.settings-actions .primary{margin-left:auto}
#settingsPanel{transform-origin:top center}.actions #new span{display:inline-block}
@media(max-width:760px){.intro-tools{flex:0 0 auto;max-width:130px;gap:7px}.intro-tools button{font-size:10px;padding:8px 10px}.intro{align-items:center}#underBoardPanels #settingsPanel{margin-bottom:3px}}
/* Compact sizing uses real layout dimensions so touch targets and overlays remain aligned. */
html[data-window=compact] main{max-width:1020px;padding:26px 24px 0}
html[data-window=compact] header{height:68px;padding:0 5%}
html[data-window=compact] .brand{font-size:18px;gap:8px}
html[data-window=compact] .intro{margin-bottom:22px}
html[data-window=compact] .intro h1{font-size:29px;margin:9px 0}
html[data-window=compact] .intro p{font-size:10px}
html[data-window=compact] .layout{grid-template-columns:minmax(0,500px) minmax(250px,300px);gap:24px}
html[data-window=compact] .panel{padding:17px;border-radius:21px}
html[data-window=compact] .panel-title{margin-bottom:13px}
html[data-window=compact] .mode{padding:10px;gap:9px}
html[data-window=compact] .mode b{font-size:11px}
html[data-window=compact] .mode small{font-size:8px}
html[data-window=compact] .island-stage{height:105px;min-height:105px}
html[data-window=compact] aside{padding-top:105px}
html[data-window=compact] .board-shell{padding:9px;border-radius:20px}
html[data-window=compact] .actions button{font-size:11px;padding:10px 13px}
html[data-window=compact] .candidate{padding:11px 10px;gap:8px}
html[data-window=compact] .candidate-body b{font-size:12px}
html[data-window=compact] .candidate-body small{font-size:9px}
html[data-window=compact] .candidate-score{font-size:16px}
html[data-window=compact] .setting-title{font-size:12px}
html[data-window=compact] .side-control{flex-basis:190px}
html[data-window=compact] .side-thumb-label{font-size:10px}
@media(max-width:760px){html[data-window=compact] main{max-width:510px;padding:20px 12px 0}html[data-window=compact] .play,html[data-window=compact] aside{max-width:480px}html[data-window=compact] aside{padding-top:0}html[data-window=compact] .layout{display:flex;gap:20px}html[data-window=compact] header{height:62px;padding:0 12px}html[data-window=compact] .brand{font-size:15px}html[data-window=compact] .brand-avatar{width:29px;height:29px}html[data-window=compact] .intro h1{font-size:22px}html[data-window=compact] .intro .eyebrow{font-size:7px}html[data-window=compact] .intro-tools{max-width:114px}html[data-window=compact] .intro-tools button{font-size:9px;padding:7px 8px}html[data-window=compact] .panel{padding:15px}html[data-window=compact] .side-control{flex-basis:178px}html[data-window=compact] .board-shell{padding:7px}html[data-window=compact] .player{gap:9px;padding-bottom:12px}html[data-window=compact] .avatar{width:33px;height:33px}html[data-window=compact] .player b{font-size:12px}html[data-window=compact] .setting-row{gap:8px}html[data-window=compact] .settings-actions button{font-size:11px;padding:9px 12px}}

@media(max-width:390px){html[data-window=compact] .actions{gap:7px}html[data-window=compact] .actions button{font-size:10px;padding:9px 10px}}

@media(min-width:761px){#settingsPanel{position:sticky;top:18px}}

/* Opening, setup and play share the same board nodes. Layout is measured once, then composited. */
body[data-started=false] #hint{background:#dedbd57a!important;border-color:#cfc8bb!important;color:#aaa397!important;box-shadow:none;cursor:not-allowed}
#islandToggle:disabled{opacity:1;cursor:default}
.layout[data-stage=welcome] #underBoardPanels,.layout[data-stage=welcome]>aside,.layout[data-stage=setup] #sidebarPanels{display:none}
#settingsPanel{transform-origin:85% 15%}
@media(min-width:761px){
  html .layout[data-stage=welcome]{grid-template-columns:minmax(0,1fr);justify-content:center}
  html .layout[data-stage=welcome]>.play{grid-column:1/-1;width:min(100%,820px);max-width:820px;margin:0 auto}
  html[data-window=compact] .layout[data-stage=welcome]>.play{width:min(100%,680px);max-width:680px}
  html .layout:not([data-stage=welcome])>aside{padding-top:var(--rail-offset,180px);min-width:0}
  .layout[data-stage=playing] #sidebarPanels{height:var(--board-height,550px);min-height:0;display:grid;grid-template-rows:minmax(154px,.30fr) minmax(0,1fr);gap:12px;align-content:start}
  .layout[data-stage=playing] #sidebarPanels>.panel{min-height:0;margin:0;padding:15px;border-radius:21px;overflow:hidden}
  #sidebarPanels .search-panel .panel-title{margin-bottom:11px}
  #sidebarPanels .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  #sidebarPanels .stats b{font-size:22px;line-height:1.15;display:block;overflow:hidden;text-overflow:ellipsis}
  #sidebarPanels .stats small{display:block;font-size:8px;line-height:1.4;margin-top:4px}
  #sidebarPanels .insight{min-height:0;font-size:10px;line-height:1.5;margin-top:10px;padding-top:9px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #sidebarPanels #analysisPanel:not([hidden]){display:flex;flex-direction:column;gap:0}
  #sidebarPanels #analysisPanel .panel-title{flex-shrink:0;margin-bottom:8px}
  #sidebarPanels .analysis-status{font-size:10px;line-height:1.4;margin:0 0 7px;flex-shrink:0}
  #sidebarPanels #analysisLines{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;flex:1}
  #sidebarPanels .candidate{padding:9px 8px;margin-top:6px;gap:7px;border-radius:11px}
  #sidebarPanels .candidate:first-child{margin-top:0}
  #sidebarPanels .candidate-body b{font-size:11px;line-height:1.4}
  #sidebarPanels .candidate-body small{font-size:9px;line-height:1.45;margin-top:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #sidebarPanels .candidate-score{font-size:15px}
  #sidebarPanels .candidate-rank{font-size:9px}
  #sidebarPanels .analysis-note{font-size:8px;line-height:1.4;margin:8px 0 0;flex-shrink:0}
  html[data-window=compact] #sidebarPanels>.panel{padding:12px;border-radius:18px}
  html[data-window=compact] #sidebarPanels .stats b{font-size:19px}
  html[data-window=compact] #sidebarPanels .candidate{padding:8px 7px}
}
@media(max-width:760px){.layout[data-stage=playing] .search-panel{padding:17px}.layout[data-stage=playing] .search-panel .stats b{font-size:23px}}

/* Keep document scrolling independent from large board/card relayouts. */
html{overflow-anchor:none}
@media(min-width:761px){html #settingsPanel{position:relative;top:auto}}
body.layout-moving .board-shell{will-change:transform}

@media(min-width:761px){
  #sidebarPanels .search-panel .panel-title{min-height:18px;gap:8px;margin-bottom:8px;flex-wrap:wrap}
  #sidebarPanels .search-panel .panel-title h2{line-height:1.4}
  #sidebarPanels .stats b{white-space:nowrap;font-size:20px}
  html[data-window=compact] #sidebarPanels .stats b{font-size:17px}
  html[data-window=compact] #sidebarPanels .insight{margin-top:8px;padding-top:7px;line-height:1.45}
  html[data-window=compact] #sidebarPanels .stats small{font-size:9px;line-height:1.45}
}
#analysisPanel{transform-origin:50% 0}

/* Phone settings are a sheet: changing them never replaces the board's document flow. */
.settings-shade{display:none}
@media(max-width:760px){
  html{scrollbar-gutter:stable}
  .settings-shade:not([hidden]){display:block;position:fixed;inset:0;z-index:119;background:#62462b30;animation:sheet-shade-in .2s ease-out}
  html #settingsPanel[data-presentation=sheet]{position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));top:auto;z-index:120;width:auto;max-width:520px;margin:0 auto;max-height:calc(100dvh - 70px);overflow-y:auto;overscroll-behavior:contain;transform-origin:50% 100%;box-shadow:0 14px 50px #66452938;background:#fff5e5}
  html .layout[data-stage=setup] #sidebarPanels{display:flex}
  body[data-configured=false] .layout>aside{display:none}
  .search-panel .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;contain:none}
  .search-panel .stats>div{min-width:0;overflow:visible;text-align:left}
  .search-panel .stats b{display:block;font-size:21px;line-height:1.3;white-space:nowrap}
  .search-panel .stats small{display:block;font-size:9px;line-height:1.5;margin-top:4px;overflow-wrap:anywhere}
  .search-panel .insight{min-height:0;line-height:1.65}
  html[data-window=compact] .search-panel .stats b{font-size:19px}
}
@keyframes sheet-shade-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.settings-shade{animation:none!important}}
.reduce-motion .settings-shade{animation:none!important}

/* A body-level sheet uses only translation/opacity: no text/board scale rasterization. */
@media(max-width:760px){
  html #settingsPanel[data-presentation=sheet]{will-change:transform,opacity;isolation:isolate;box-shadow:0 8px 22px #66452930}
  .settings-shade.is-closing:not([hidden]){animation:sheet-shade-out .16s ease-in forwards}
  .settings-sheet-open .island-rim i,.settings-sheet-open .island::before,.settings-sheet-open .thinking-bars i{animation-play-state:paused!important}
}
@keyframes sheet-shade-out{from{opacity:1}to{opacity:0}}

/* Keep the document viewport and sheet geometry stable throughout a settings session. */
@media(max-width:760px){
  .settings-shade{touch-action:none;overscroll-behavior:none}
  html #settingsPanel[data-presentation=sheet]{height:min(760px,calc(100dvh - 64px));max-height:calc(100dvh - 64px);contain:layout style}
  html #settingsPanel[data-presentation=sheet]:not([hidden]){display:flex;flex-direction:column}
  html #settingsPanel[data-presentation=sheet]>*{flex-shrink:0}
  html #settingsPanel[data-presentation=sheet] .settings-actions{margin-top:auto;padding-top:16px}
}

/* Settle exactly on the selected card, with no spring overshoot or fixed row height. */
.mode-track{transition:transform .22s cubic-bezier(.2,.8,.2,1),height .22s ease-out}
@media(max-width:760px){.board-shell{transform:translateZ(0);isolation:isolate}}

/* Clipped 2D departure-board rolls: one compositor animation for the whole number. */
.flap-number{display:inline-flex;max-width:100%;vertical-align:bottom;overflow:hidden;line-height:1.3;position:relative;font-variant-numeric:tabular-nums;letter-spacing:0}
.flap-visual{position:relative;display:block;width:calc(var(--flap-width,.66)*1em);height:1.3em;max-width:100%;overflow:hidden;contain:layout paint;font-size:calc(1em * var(--flap-fit,1));line-height:1.3}
.flap-reel{display:block;position:relative;transform:none}
.flap-row{display:flex;height:1.3em;line-height:1.3;white-space:nowrap}
.flap-digit{display:block;flex:0 0 calc(var(--cell-space,.66)*1em);min-width:0;text-align:center}
.flap-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.eval-heading b{flex:0 0 7.5ch;min-width:0;max-width:45%;overflow:hidden;text-align:right;white-space:nowrap}
.eval-heading b .flap-number{max-width:100%}
.stats b,.candidate-score,.time-value{max-width:100%;overflow:hidden;white-space:nowrap}
.candidate-score{flex-shrink:0;max-width:30%}
.time-value{min-width:0}
.analysis-status .flap-number,.eval-detail .flap-number,.insight .flap-number{vertical-align:baseline}

/* Keep the page's text tiles separate from hint-card layout invalidations. */
html .liquid-glass::before,html .engine-busy .liquid-glass::before{background:linear-gradient(135deg,#ffffff20,transparent 65%)}
.island-rim{padding:0;mask:none;-webkit-mask:none;contain:paint}
.island-rim i{inset:0 auto auto 0;width:45%;height:2px;background:linear-gradient(90deg,transparent,#fff7da,#e6c17d,transparent);animation:rim-glide 6s ease-in-out infinite alternate}
@keyframes rim-glide{from{transform:translateX(-80%)}to{transform:translateX(230%)}}
.island-rim::after{content:'';position:absolute;bottom:0;right:10%;width:45%;height:1px;background:linear-gradient(90deg,transparent,#f8d99e,transparent)}
#analysisLines{contain:layout style}
@media(max-width:760px){
  .play>.actions,.island-stage,.panel{transform:translateZ(0);backface-visibility:hidden}
  .play>.player,.play>.actions{isolation:isolate}
  #analysisPanel:not([hidden]){height:438px;min-height:0;display:flex;flex-direction:column;contain:layout paint style}
  html[data-window=compact] #analysisPanel:not([hidden]){height:398px}
  #analysisPanel>.panel-title,#analysisPanel>.analysis-status,#analysisPanel>.analysis-note{flex-shrink:0}
  #analysisPanel>.analysis-note{font-size:9px;line-height:1.6;margin-top:10px}
  #analysisLines{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
  .analysis-status{min-height:2.6em}
  #analysisLines .candidate{padding:11px 10px;gap:8px}
  #analysisLines .candidate-body small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6}
  .search-panel .insight{height:3.4em;overflow:hidden}
}

/* Android 1.4.9: stationary coach text, static engine portrait, stable status slots. */
.coach-row{--coach-size:44px;--coach-move-width:70px;--coach-state-width:76px;display:grid;grid-template-columns:var(--coach-size) minmax(0,1fr) var(--coach-move-width) var(--coach-state-width);align-items:center;contain:layout style;isolation:auto;transform:none;backface-visibility:visible}
.coach-row .coach-avatar{width:var(--coach-size);height:var(--coach-size);contain:layout paint;isolation:isolate}
.engine-portrait{display:block;width:39px;height:30px;transform-origin:50% 60%;contain:layout paint}
.engine-portrait img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.coach-signal{position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-radius:50%;background:#fff4c8;opacity:0;will-change:opacity;transition:opacity .18s ease;pointer-events:none}
.coach-avatar{position:relative}
.coach-avatar[data-busy=true] .coach-signal{opacity:.9}
.coach-identity{min-width:0;overflow:hidden;contain:layout paint}
.coach-identity b,.coach-identity small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.coach-row .coach-move,.coach-row .badge{min-width:0;width:100%;box-sizing:border-box;margin-left:0;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;contain:layout paint}
.coach-row #coachMove[hidden]{display:block!important;visibility:hidden}
.coach-row .badge{font-size:10px;padding:6px 5px}
@media(max-width:600px){.coach-row{--coach-size:38px;--coach-move-width:60px;--coach-state-width:68px}.engine-portrait{width:34px;height:27px}}
@media(max-width:760px){html[data-window=compact] .coach-row{--coach-size:33px;--coach-move-width:56px;--coach-state-width:64px;gap:7px}html[data-window=compact] .coach-row .badge{font-size:9px;padding:5px 4px}html[data-window=compact] .engine-portrait{width:30px;height:24px}}

/* APK 1.5.1: a warm, breathing thought symbol inside a fixed 20px icon slot. */
#hint .hint-action-content{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;max-width:100%;vertical-align:middle;pointer-events:none}
#hint .hint-action-icon{position:relative;display:block;flex:0 0 20px;width:20px;height:20px;overflow:hidden;contain:layout paint;transition:opacity .18s ease}
#hint .hint-action-label{display:block;min-width:0;white-space:nowrap;line-height:20px}
#hint .hint-icon-star,#hint .hint-icon-thinking,#hint .hint-icon-arrow{position:absolute;inset:0;display:grid;place-items:center;transition:opacity .18s ease,transform .24s cubic-bezier(.2,.8,.2,1);transform-origin:50% 50%}
#hint .hint-icon-star{opacity:1;transform:scale(.9) rotate(0)}
#hint .hint-icon-thinking{opacity:0;transform:scale(.65) rotate(-35deg)}
#hint .hint-orbit,#hint .hint-core{display:block;width:20px;height:20px;transform-origin:50% 50%}
#hint .hint-action-icon img{display:block;width:20px;height:20px;pointer-events:none}
#hint .hint-icon-arrow{opacity:0;transform:translateX(-3px);font-size:19px;line-height:20px;color:#a68045}
#hint[data-action=thinking] .hint-icon-star{opacity:0;transform:scale(.55) rotate(45deg)}
#hint[data-action=thinking] .hint-icon-thinking{opacity:1;transform:scale(1) rotate(0)}
#hint[data-action=thinking] .hint-orbit{animation:hint-thought-orbit 2.4s linear infinite}
#hint[data-action=thinking] .hint-core{animation:hint-thought-breathe 1.15s cubic-bezier(.45,0,.55,1) infinite alternate}
#hint[data-action=play] .hint-icon-star,#hint[data-action=playing] .hint-icon-star{opacity:0;transform:scale(.7) rotate(45deg)}
#hint[data-action=play] .hint-icon-arrow,#hint[data-action=playing] .hint-icon-arrow{opacity:1;transform:translateX(0)}
#hint:disabled:not([data-action=thinking]) .hint-action-icon{opacity:.48}
#hint:active:not(:disabled) .hint-icon-star{transform:scale(.72) rotate(12deg)}
@keyframes hint-thought-orbit{to{transform:rotate(360deg)}}
@keyframes hint-thought-breathe{from{transform:scale(.82);opacity:.72}to{transform:scale(1);opacity:1}}
.reduce-motion #hint .hint-action-icon *{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){#hint .hint-action-icon *{animation:none!important;transition:none!important}}

/* APK 1.5.2: stationary stat columns and bounded downward rolls. */
.search-panel .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;align-items:start}
.search-panel .stats>div{min-width:0;overflow:hidden;text-align:center}
.search-panel .stats b{display:block;width:100%;height:1.3em;line-height:1.3;min-width:0;font-size:clamp(16px,5.4vw,23px);text-align:center;contain:layout paint}
.search-panel .stats .flap-number{height:1.3em;vertical-align:top;align-items:flex-start}
.search-panel .stats .flap-visual{flex:none}
.search-panel .stats small{display:block;white-space:nowrap;font-size:9px}
/* Only the engine's own turn activates this small, pre-mounted signal. */
.coach-signal{width:6px;height:6px;right:3px;bottom:3px;transform:scale(.7);transition:opacity .2s ease,transform .2s ease}
.coach-avatar[data-busy=true] .coach-signal{animation:coach-thought 1.4s ease-in-out infinite}
@keyframes coach-thought{0%,100%{opacity:.45;transform:scale(.65)}50%{opacity:1;transform:scale(1.15)}}
.reduce-motion .coach-avatar[data-busy=true] .coach-signal{animation:none;transform:none;opacity:.9}
@media(prefers-reduced-motion:reduce){.coach-avatar[data-busy=true] .coach-signal{animation:none;transform:none;opacity:.9}}

/* Center visible glyphs and their captions, not invisible left padding. */
html #sidebarPanels .search-panel .stats>div{display:flex;flex-direction:column;align-items:center;text-align:center;min-width:0}
html #sidebarPanels .search-panel .stats b{display:flex;justify-content:center;align-items:flex-start;width:100%;height:1.3em;line-height:1.3;letter-spacing:0}
html #sidebarPanels .search-panel .stats small{width:100%;text-align:center;line-height:1.5;margin-top:5px}
.flap-row.flap-centered{justify-content:center}
/* One lightweight arrival, using the same easing as the island's evaluation. */
#island[data-tour=move] .island-icon{animation:hint-piece-arrive .3s cubic-bezier(.05,.7,.1,1) both}
@keyframes hint-piece-arrive{from{opacity:0;transform:translateY(5px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
html .island-evaluation{animation:none!important}
.reduce-motion #island[data-tour=move] .island-icon{animation:none}
@media(prefers-reduced-motion:reduce){#island[data-tour=move] .island-icon{animation:none}}

/* Inline prose needs a text baseline: the clipped reel cannot supply one. */
:is(.insight,.analysis-status,.eval-detail) .flap-number{display:inline-grid;vertical-align:baseline;line-height:1.3}
:is(.insight,.analysis-status,.eval-detail) .flap-number::before{content:'\200B';grid-area:1/1;line-height:1.3;visibility:hidden}
:is(.insight,.analysis-status,.eval-detail) .flap-visual{grid-area:1/1}

/* Premove plans never replace the real board position or enter its move history. */
.premove-bar{display:flex;align-items:center;gap:7px;min-height:32px;margin:0 0 7px;color:#87694b;font-size:10px}
.premove-bar[hidden]{display:none}
.premove-bar button{flex:0 0 auto;border:1px solid #bda27555;border-radius:10px;background:#fff4dc66;font-size:10px;padding:5px 7px}
#premoveStatus{flex:1;min-width:0;line-height:1.45}
#premoveToggle[aria-pressed=false]{opacity:.6}
#board .square.premove-from,#board .square.premove-to{background:#d28f7d!important;box-shadow:inset 0 0 0 2px #a7554b66}
#board .square.dark-square.premove-from,#board .square.dark-square.premove-to{background:#b47567!important}
#board .square.premove-selected{box-shadow:inset 0 0 0 3px #9a4944!important}
#board .premove-from>.piece{opacity:.62}
.premove-preview{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:4}
.premove-sprite{display:block;width:86%;height:86%;opacity:.8;pointer-events:none}
.premove-sprite img{display:block;width:100%;height:100%;object-fit:contain}
.premove-order{position:absolute;right:3px;top:3px;z-index:5;min-width:13px;max-width:90%;padding:1px 3px;border-radius:6px;background:#904c43;color:#fff4df;font:600 9px/1.2 system-ui;pointer-events:none;white-space:nowrap;overflow:hidden}
.premove-order[hidden]{display:none}
@media(max-width:420px){.premove-bar{gap:5px;font-size:9px}.premove-bar button{font-size:9px;padding:5px}}

.premove-retiring{position:absolute;inset:0;z-index:6;pointer-events:none;background:#b95f4a55;box-shadow:inset 0 0 0 2px #a7554b66;contain:layout paint}
.premove-retiring .premove-preview{opacity:.8}

/* Shaft below ordinary pieces; target and source dot have separate depth. */
#board .square.selected{z-index:auto}
#board .hint-arrow-layer{z-index:2}
#board .square.hint-to .piece{z-index:1}


/* Short landscape viewport: every core control stays in the first screen. */
@media(orientation:landscape){
 html[data-window=compact]{--land-board: min(calc(100dvh - 126px),44vw)}
 html[data-window=compact] body{padding:0;min-height:100dvh}
 html[data-window=compact] body>header,html[data-window=compact] .intro,html[data-window=compact] .about,html[data-window=compact] footer{display:none}
 html[data-window=compact] main{width:100%;max-width:none;padding:6px 10px;margin:0}
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{display:grid;grid-template-columns:var(--land-board) minmax(0,1fr);grid-template-rows:54px var(--land-board) 32px 16px;gap:3px 12px;height:calc(100dvh - 12px);align-content:start;justify-content:center}
 html[data-window=compact] .layout>.play,html[data-window=compact] .layout[data-stage=welcome]>.play{display:contents;width:auto;max-width:none}
 html[data-window=compact] .island-stage{grid-column:1;grid-row:1;height:54px;min-height:0;padding:0;align-items:center}
 html[data-window=compact] .island{width:100%;max-width:100%;transform:none}
 html[data-window=compact] #islandToggle{min-height:48px;padding:6px 9px;gap:6px}
 html[data-window=compact] .island-copy b{font-size:11px}
 html[data-window=compact] .island-copy small{font-size:8px}
 html[data-window=compact] .island-icon{width:26px;height:26px;flex-basis:26px}
 html[data-window=compact] .island-icon img{max-width:26px;max-height:26px}
 html[data-window=compact] .island-success{left:8px;top:9px}
 html[data-window=compact] .board-shell{grid-column:1;grid-row:2;width:var(--land-board);height:var(--land-board);padding:5px;border-radius:13px;align-self:start}
 html[data-window=compact] #board{width:100%;height:100%;aspect-ratio:1}
 html[data-window=compact] .play>.player,html[data-window=compact] #turnRail{display:none!important}
 html[data-window=compact] .play>.actions{grid-column:1;grid-row:3;gap:4px;margin:0;min-width:0}
 html[data-window=compact] .actions button{padding:4px 5px;font-size:9px;min-width:0;border-radius:10px;white-space:nowrap}
 html[data-window=compact] #hint{gap:3px}
 html[data-window=compact] #hint .hint-icon{width:16px;height:18px;flex-basis:16px}
 html[data-window=compact] .premove-bar{grid-column:1;grid-row:4;margin:0;gap:4px;min-height:0;font-size:8px;padding:0}
 html[data-window=compact] .premove-bar button{font-size:8px;padding:0 3px}
 html[data-window=compact] .layout>aside,html[data-window=compact] .layout:not([data-stage=welcome])>aside{grid-column:2;grid-row:1/-1;display:flex;flex-direction:column;gap:6px;padding:0;max-width:none;min-height:0;min-width:0}
 html[data-window=compact] #sidebarPanels,html[data-window=compact] .layout[data-stage=playing] #sidebarPanels{display:flex;flex-direction:column;gap:6px;height:100%;min-height:0}
 html[data-window=compact] #sidebarPanels>.panel{padding:10px 12px;margin:0;border-radius:16px;min-height:0}
 html[data-window=compact] #sidebarPanels .search-panel{flex:0 0 auto;order:2}
 html[data-window=compact] #sidebarPanels .panel-title{margin-bottom:5px;min-height:0}
 html[data-window=compact] #sidebarPanels .panel-title h2{font-size:12px}
 html[data-window=compact] #sidebarPanels .panel-title>span{font-size:8px}
 html[data-window=compact] #sidebarPanels .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 html[data-window=compact] #sidebarPanels .stats>div{text-align:center;min-width:0}
 html[data-window=compact] #sidebarPanels .stats b{font-size:17px;line-height:1.3}
 html[data-window=compact] #sidebarPanels .stats small{font-size:8px;margin-top:0;line-height:1.3}
 html[data-window=compact] #sidebarPanels .insight{font-size:9px;line-height:1.4;padding-top:4px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
 html[data-window=compact] #sidebarPanels #analysisPanel:not([hidden]){order:1;flex:1;display:flex;flex-direction:column;height:auto;min-height:0;overflow:hidden}
 html[data-window=compact] #analysisLines{flex:1;min-height:0;overflow:auto}
 html[data-window=compact] .candidate{padding:5px 7px;margin-top:4px;gap:6px;border-radius:9px}
 html[data-window=compact] .candidate-body b{font-size:10px;line-height:1.3}
 html[data-window=compact] .candidate-body small{font-size:8px;line-height:1.3;margin-top:2px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
 html[data-window=compact] .candidate-score{font-size:13px}
 html[data-window=compact] .analysis-status{font-size:9px;margin:0 0 4px}
 html[data-window=compact] .analysis-note{display:none}
 html[data-window=compact] #underBoardPanels{display:none}
 html[data-window=compact] #settingsPanel{overflow:auto;min-height:0;max-height:100%;position:relative;top:auto}
 html[data-window=compact] .layout[data-stage=welcome]>aside{display:none}
}
@media(orientation:landscape){
 html[data-window=compact] .island{transform:translateX(-50%);height:50px!important;top:1px}
 html[data-window=compact] #islandToggle{height:48px}
 html[data-window=compact] .intro{display:block;position:absolute;left:calc(var(--land-board) + 22px);right:10px;top:6px;margin:0;height:26px}
 html[data-window=compact] .intro>div:first-child{display:none}
 html[data-window=compact] .intro-tools{display:flex;flex-direction:row;justify-content:flex-end;max-width:none;gap:6px}
 html[data-window=compact] .intro-tools button{font-size:9px;padding:4px 8px}
 html[data-window=compact] .layout>aside,html[data-window=compact] .layout:not([data-stage=welcome])>aside{padding-top:30px}
}
@media(orientation:landscape){
 html[data-window=compact] #sidebarPanels .insight{height:auto;min-height:calc(1.4em + 5px)}
 html[data-window=compact] #analysisLines .candidate{padding:5px 7px;margin-top:4px;gap:6px}
 html[data-window=compact] #sidebarPanels .candidate-body b{font-size:10px;line-height:1.3}
 html[data-window=compact] #sidebarPanels .candidate-body small{font-size:8px;line-height:1.3;margin-top:2px;-webkit-line-clamp:1}
 html[data-window=compact] #sidebarPanels .analysis-status{font-size:9px;line-height:1.3;margin-bottom:4px}
 html[data-window=compact] #sidebarPanels .analysis-note{display:none}
 html[data-window=compact] #sidebarPanels .search-panel .stats small{margin-top:1px}
}
@media(orientation:landscape){
 html[data-window=compact] .layout[data-stage=setup]>aside{display:flex}
 html[data-window=compact] .layout[data-stage=setup] #sidebarPanels{display:none}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] #sidebarPanels .candidate-body small{display:none}
 html[data-window=compact] #analysisLines .candidate{padding:3px 6px;min-height:25px;margin-top:3px}
 html[data-window=compact] #sidebarPanels #analysisPanel{padding:8px 10px}
}
@media(orientation:landscape){
 html[data-window=compact].settings-sheet-open #sidebarPanels,html[data-window=compact].settings-sheet-open .settings-shade{display:none!important}
 html[data-window=compact].settings-sheet-open #settingsPanel:not([hidden]){flex:1;min-height:0;max-height:100%;overflow:auto}
}

@media(orientation:landscape){
 html[data-window=compact]{--land-content:calc(var(--land-board) * 2 + 12px)}
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{width:var(--land-content);max-width:100%;margin:0 auto}
 html[data-window=compact] .intro{left:0;right:0;width:var(--land-content);max-width:calc(100% - 20px);margin:0 auto}
 html[data-window=compact] .layout>aside,html[data-window=compact] .layout:not([data-stage=welcome])>aside{grid-row:2;padding:0;height:100%;align-self:stretch}
 html[data-window=compact] #sidebarPanels,html[data-window=compact] .layout[data-stage=playing] #sidebarPanels{height:100%;gap:6px}
 html[data-window=compact] #sidebarPanels .search-panel{padding:8px 10px;flex:0 0 auto;overflow:visible}
 html[data-window=compact] #sidebarPanels .insight{height:auto;min-height:calc(1.4em + 5px);margin-top:5px;padding-top:4px;padding-bottom:0;line-height:1.4;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
 html[data-window=compact] #sidebarPanels .insight .flap-number{max-height:none}
 html[data-window=compact] #sidebarPanels .panel-title{gap:5px;flex-wrap:wrap}
 html[data-window=compact] #sidebarPanels .candidate-rank{font-size:8px}
 html[data-window=compact] #sidebarPanels .candidate-score{font-size:12px}
 html[data-window=compact] #sidebarPanels .candidate-body b{font-size:10px}
 html[data-window=compact] #sidebarPanels .candidate-body small{display:none}
 html[data-window=compact] #analysisLines .candidate{padding:4px 6px;margin-top:3px;min-height:24px}
 html[data-window=compact] #sidebarPanels .analysis-status{font-size:8px;line-height:1.3;margin-bottom:4px}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] #sidebarPanels .panel-title{margin-bottom:3px}
 html[data-window=compact] #sidebarPanels .panel-title h2{font-size:11px}
 html[data-window=compact] #sidebarPanels .panel-title>span{font-size:7px}
 html[data-window=compact] #sidebarPanels .stats b{font-size:15px}
 html[data-window=compact] #sidebarPanels .stats small{font-size:7px}
 html[data-window=compact] #sidebarPanels .insight{font-size:8px}
 html[data-window=compact] #sidebarPanels .analysis-status{display:none}
 html[data-window=compact] #analysisLines .candidate{min-height:22px;padding:3px 5px}
}

@media(orientation:landscape){
 html[data-window=compact] .layout[data-stage=playing] #sidebarPanels>.search-panel{padding:9px 11px}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact]{--land-board:min(calc(100dvh - 101px),44vw)}
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{grid-template-rows:38px var(--land-board) 26px 16px}
 html[data-window=compact] .island-stage{height:38px}
 html[data-window=compact] .island{height:36px!important}
 html[data-window=compact] #islandToggle{height:34px;min-height:34px;padding:2px 7px}
 html[data-window=compact] .island-copy b{font-size:10px}
 html[data-window=compact] .island-copy small{font-size:7px}
 html[data-window=compact] .island-icon{height:22px;width:22px;flex-basis:22px}
 html[data-window=compact] .island-icon img{max-height:22px;max-width:22px}
 html[data-window=compact] .eval-detail{display:none}
 html[data-window=compact] .island-evaluation{gap:3px}
 html[data-window=compact] #sidebarPanels #analysisPanel .panel-title>span{display:none}
 html[data-window=compact] #sidebarPanels .candidate-score{font-size:10px}
 html[data-window=compact] #sidebarPanels .candidate-body b{font-size:9px;white-space:nowrap}
 html[data-window=compact] #analysisLines .candidate{gap:4px}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] #analysisLines .candidate{min-height:19px;padding:2px 5px;margin-top:2px}
 html[data-window=compact] #analysisLines .candidate:first-child{margin-top:0}
 html[data-window=compact] #sidebarPanels .candidate-rank{margin-top:0}
}

/* Completion badge always fits the king icon slot, independent of island height. */
html .island-success{left:17px;top:50%;width:27px;height:27px;transform:translateY(-50%)}
html .island-success img{width:100%;height:100%;object-fit:contain}
html .island-success::before{inset:-4px}
@media(orientation:landscape){
 html[data-window=compact]{--land-content:calc(var(--land-board) * 2.7 + 24px)}
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{grid-template-columns:minmax(0,.7fr) var(--land-board) minmax(0,1fr);column-gap:12px;text-align:center}
 html[data-window=compact] .board-shell,html[data-window=compact] .island-stage,html[data-window=compact] .play>.actions,html[data-window=compact] .premove-bar{grid-column:2}
 html[data-window=compact] .layout>aside,html[data-window=compact] .layout:not([data-stage=welcome])>aside{grid-column:3}
 html[data-window=compact] .land-player-history>.history-panel{grid-column:1;grid-row:2;height:100%;min-height:0;margin:0;padding:10px 8px;display:flex;flex-direction:column;border-radius:16px;overflow:hidden}
 html[data-window=compact] .land-player-history>.history-panel[hidden]{display:none}
 html[data-window=compact] .history-panel .panel-title{flex-direction:column;gap:4px;margin:0 0 6px;align-items:center;flex-shrink:0}
 html[data-window=compact] .history-panel h2{font-size:11px;margin:0;text-align:center}
 html[data-window=compact] .history-panel .text-btn{font-size:8px;text-align:center}
 html[data-window=compact] .history-head,html[data-window=compact] .history-row{grid-template-columns:18px minmax(0,1fr) minmax(0,1fr);font-size:9px;padding:4px 2px;align-items:center;text-align:center;gap:2px}
 html[data-window=compact] .history-head{font-size:8px;flex-shrink:0}
 html[data-window=compact] #history{flex:1;min-height:0;max-height:none;overflow:auto;overscroll-behavior:contain}
 html[data-window=compact] .history-row>span{min-width:0;overflow-wrap:anywhere}
 html[data-window=compact] .history-panel .empty{font-size:9px;line-height:1.5;padding:8px 0}
 html[data-window=compact] .island-success{left:9px;width:24px;height:24px;top:50%}
 html[data-window=compact] .island-copy,html[data-window=compact] .island-copy b,html[data-window=compact] .island-copy small,html[data-window=compact] .island-evaluation{text-align:center}
 html[data-window=compact] #sidebarPanels .panel-title{justify-content:center;align-items:center;text-align:center}
 html[data-window=compact] #sidebarPanels .panel-title h2,html[data-window=compact] #sidebarPanels .panel-title>span{margin:0;text-align:center}
 html[data-window=compact] #sidebarPanels .analysis-status,html[data-window=compact] #sidebarPanels .insight{text-align:center}
 html[data-window=compact] #analysisLines .candidate,html[data-window=compact] #sidebarPanels .candidate-body,html[data-window=compact] #sidebarPanels .candidate-body b,html[data-window=compact] #sidebarPanels .candidate-body small,html[data-window=compact] #sidebarPanels .candidate-score{text-align:center}
 html[data-window=compact] #sidebarPanels .candidate-rank{align-self:center;text-align:center;margin-top:0}
 html[data-window=compact] .actions button,html[data-window=compact] .premove-bar,html[data-window=compact] .premove-bar button,html[data-window=compact] #premoveStatus,html[data-window=compact] .intro-tools button{text-align:center}
 html[data-window=compact] .settings-heading,html[data-window=compact] #settingsPanel .panel-title{justify-content:center}
 html[data-window=compact] #settingsPanel .mode,html[data-window=compact] #settingsPanel .muted{text-align:center}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] .island-success{left:8px;width:20px;height:20px}
 html[data-window=compact] .land-player-history>.history-panel{padding:8px 6px}
 html[data-window=compact] .history-head,html[data-window=compact] .history-row{font-size:8px;padding:3px 1px}
}
@media(orientation:landscape){
 html[data-window=compact] #sidebarPanels .panel-title{flex-direction:column;gap:2px}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] #sidebarPanels .search-panel .panel-title>span{display:none}
}
@media(orientation:landscape){
 html[data-window=compact] #sidebarPanels .panel-title>span{display:none}
}
/* Retiring selection markers are passive snapshots; the next tap remains immediate. */
.selection-retiring{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2}
.selection-origin-retiring{background:var(--gold-soft);box-shadow:inset 0 0 0 2px #b4c487}
.selection-retiring .move-marker{animation:none!important}
/* Horizontal travel must never widen the document viewport. */
html,body{overflow-x:clip}
/* Keep the icon anchored while the label changes length; preserve its rotation phase. */
#hint .hint-action-content{display:grid;grid-template-columns:20px minmax(0,1fr);width:min(100%,10.5em);gap:6px}
#hint .hint-action-label{text-align:center;overflow:hidden;text-overflow:ellipsis}
#hint .hint-orbit{animation:hint-thought-orbit 2.4s linear infinite;animation-play-state:paused}
#hint .hint-core{animation:hint-thought-breathe 1.15s cubic-bezier(.45,0,.55,1) infinite alternate;animation-play-state:paused}
#hint[data-action=thinking] .hint-orbit,#hint[data-action=thinking] .hint-core{animation-play-state:running}
.island .island-chevron{transform:rotate(0deg);transform-origin:50% 50%;transition:transform .34s cubic-bezier(.16,1,.3,1)}
.island[data-evaluation=true] .island-chevron{transform:rotate(180deg)}
#analysisLines{position:relative}
.analysis-orbit{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3;contain:layout paint}
.analysis-orb{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff6db,#cc9b48 70%);box-shadow:0 1px 5px #b9803b33;will-change:transform}
.analysis-orb.orb-1{background:radial-gradient(circle at 30% 25%,#e9fbf7,#6dabae 70%)}
.analysis-orb.orb-2{background:radial-gradient(circle at 30% 25%,#fff8ec,#de9f85 70%)}

@media(prefers-reduced-motion:reduce){.island .island-chevron{transition:none}}
.reduce-motion .island .island-chevron{transition:none}

/* Only three tiny orbit layers stay promoted while searching. No animated blur. */
.analysis-orb{box-shadow:none;background:radial-gradient(circle at 30% 25%,#fff4d4,#c99b50 75%)}
.analysis-orb.orb-1{background:radial-gradient(circle at 30% 25%,#e4f5ee,#72a7a4 75%)}
.analysis-orb.orb-2{background:radial-gradient(circle at 30% 25%,#fff1e6,#cd9680 75%)}

/* One board-relative unit keeps every annotation proportional across windows. */
#board{container-type:inline-size;--board-unit:1cqw}
#board .coord{font-size:calc(var(--board-unit)*1.65);left:calc(var(--board-unit)*.55);top:calc(var(--board-unit)*.3);line-height:1.1}
#board .coord.file{left:auto;top:auto;right:calc(var(--board-unit)*.55);bottom:calc(var(--board-unit)*.3)}
#board .capture{border-width:calc(var(--board-unit)*.85);box-shadow:0 0 0 calc(var(--board-unit)*.17) var(--gold-edge),inset 0 0 0 calc(var(--board-unit)*.17) var(--gold-edge)}
#board .dot{border-width:calc(var(--board-unit)*.25)}
#board .square.check{box-shadow:inset 0 0 0 calc(var(--board-unit)*.68) #b95e4e}
#board .square.selected{box-shadow:inset 0 0 0 calc(var(--board-unit)*.34) #98701c}
#board .square.hint-from,#board .square.hint-to{box-shadow:inset 0 0 0 calc(var(--board-unit)*.34) #a47a24}
#board .hint-halo{inset:4%;border-width:calc(var(--board-unit)*.34);border-radius:calc(var(--board-unit)*.85);box-shadow:inset 0 0 0 calc(var(--board-unit)*.17) #fff1ad99}
#board .hint-origin-dot{border-width:calc(var(--board-unit)*.17)}
#board .premove-order{font-size:calc(var(--board-unit)*1.5);min-width:calc(var(--board-unit)*2.2);right:calc(var(--board-unit)*.5);top:calc(var(--board-unit)*.5);padding:calc(var(--board-unit)*.17) calc(var(--board-unit)*.5);border-radius:calc(var(--board-unit)*1)}
.hint-edge{position:absolute;inset:-2%;width:104%;height:104%;overflow:visible;pointer-events:none}
.hint-edge rect{fill:none;stroke:#fff0b4;stroke-width:2;stroke-linecap:round;stroke-dasharray:.22 .78;animation:hint-edge-flow 3s linear infinite}
.hint-to .hint-edge rect{animation-delay:-1.5s}
@keyframes hint-edge-flow{to{stroke-dashoffset:-1}}
.reduce-motion .hint-edge rect{animation:none;stroke-dasharray:none;opacity:.65}
@media(prefers-reduced-motion:reduce){.hint-edge rect{animation:none;stroke-dasharray:none;opacity:.65}}
@media(orientation:landscape){
 html[data-window=compact]{--land-board:min(calc(100dvh - 126px),calc((100dvw - 44px) / 2.7),520px)}
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{align-content:center}
}
@media(orientation:landscape) and (min-height:501px){
 html[data-window=compact] .layout,html[data-window=compact] .layout[data-stage=welcome]{grid-template-rows:54px var(--land-board) 40px 22px}
 html[data-window=compact] .island{height:50px!important}
 html[data-window=compact] .actions button{font-size:12px;padding:7px 9px}
 html[data-window=compact] .premove-bar,html[data-window=compact] .premove-bar button{font-size:10px}
 html[data-window=compact] .intro-tools button{font-size:11px;padding:6px 10px}
 html[data-window=compact] #sidebarPanels .panel-title h2{font-size:15px}
 html[data-window=compact] #sidebarPanels .search-panel{padding:15px}
 html[data-window=compact] #sidebarPanels .stats b{font-size:24px}
 html[data-window=compact] #sidebarPanels .stats small,html[data-window=compact] #sidebarPanels .insight{font-size:11px}
 html[data-window=compact] #sidebarPanels #analysisPanel{padding:16px}
 html[data-window=compact] #analysisLines .candidate{padding:12px 8px;margin-top:10px;gap:7px}
 html[data-window=compact] #sidebarPanels .candidate-body b{font-size:12px;white-space:normal}
 html[data-window=compact] #sidebarPanels .candidate-body small{display:-webkit-box;font-size:10px;-webkit-line-clamp:2;line-height:1.5}
 html[data-window=compact] #sidebarPanels .candidate-score{font-size:17px}
 html[data-window=compact] #sidebarPanels .candidate-rank{font-size:10px}
 html[data-window=compact] #sidebarPanels .analysis-status{font-size:10px;display:block}
 html[data-window=compact] .history-head,html[data-window=compact] .history-row{font-size:11px;padding:7px 4px}
 html[data-window=compact] .history-panel h2{font-size:14px}
}

@media(orientation:landscape) and (max-height:340px){html[data-window=compact]{--land-board:min(calc(100dvh - 101px),calc((100dvw - 44px)/2.7))}}

#board .square.premove-from,#board .square.premove-to{box-shadow:inset 0 0 0 calc(var(--board-unit)*.34) #a7554b66}
#board .square.premove-selected{box-shadow:inset 0 0 0 calc(var(--board-unit)*.5) #9a4944!important}
@media(orientation:landscape) and (min-height:501px){
 html[data-window=compact] .play>.actions{display:grid;grid-template-columns:.8fr 2fr 1.2fr}
 html[data-window=compact] .actions .primary{margin-left:0}
 html[data-window=compact] #hint{width:100%}
}

.island[data-classification=best] .island-success::before{background:radial-gradient(circle,#81b64c22,transparent 70%)}
.island[data-classification=great] .island-success::before{background:radial-gradient(circle,#5c8bb022,transparent 70%)}
.island[data-classification=best][data-celebrating=true] .island-rim-pulse{opacity:.35}

/* Ordinary quality badges share the restrained cue motion; only ! / !! play sound. */
.island:is([data-classification=excellent],[data-classification=good]) .island-success::before{background:radial-gradient(circle,#81b64c22,transparent 70%)}
.island:is([data-classification=inaccuracy],[data-classification=mistake],[data-classification=blunder]) .island-success::before{background:radial-gradient(circle,#e9aa3322,transparent 70%)}
.island:is([data-classification=excellent],[data-classification=good],[data-classification=inaccuracy],[data-classification=mistake],[data-classification=blunder])[data-celebrating=true] .island-rim-pulse{opacity:.35}

.island[data-classification=unrated] .island-success::before{background:none}.island[data-classification=unrated][data-celebrating=true] .island-rim-pulse{opacity:.15}

.island:is([data-classification=forced],[data-classification=miss]) .island-success::before{background:radial-gradient(circle,#ce9a5722,transparent 70%)}

/* Crop the supplied icon's dark margins without altering the original bytes. */
html .island-success img[src$="/interesting.jpg"]{clip-path:circle(37.5% at 50% 49.5%);transform:scale(1.3333)}

/* Three real opponents; the advisor remains Stockfish. */
.mode .engine-logo{display:block;width:36px;height:36px;object-fit:contain;border-radius:8px}
.mode small.engine-elo{font-size:10px;color:#8a6b39;letter-spacing:0;margin-top:4px}
.engine-rating-note{font-size:10px;color:#8a755b;line-height:1.6;margin:8px 0 14px}.engine-rating-note a{color:inherit}


/* 1.7.1: bounded logos and one typographic baseline for engine names. */
.coach-row .engine-avatar{min-width:0;min-height:0;overflow:hidden;display:grid;place-items:center;padding:0}
.coach-row .engine-avatar .engine-portrait{width:100%!important;height:100%!important;min-width:0;min-height:0;display:grid;place-items:center}
.coach-row .engine-avatar .engine-portrait img{position:static;width:84%!important;height:84%!important;max-width:100%;object-fit:contain;object-position:center;margin:0;align-self:center;justify-self:center}
#opponent{font-variant-numeric:lining-nums;line-height:1.3}
.play-mode-label{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}
.play-mode-control{display:flex;padding:4px;gap:4px;border:1px solid #d4b77c52;border-radius:22px;background:#f4e4c565;min-width:0}
.play-mode-control button{border:1px solid transparent;border-radius:18px;background:transparent;padding:9px 14px;color:#987f5b;font:inherit;white-space:nowrap;transition:background .18s,color .18s,box-shadow .18s}
.play-mode-control button[aria-pressed=true]{color:#6b512b;border-color:#fff7df;background:linear-gradient(145deg,#fffbed,#f0dbac);box-shadow:0 2px 5px #80571916}
.play-mode-control button:focus-visible{outline:2px solid #a88743;outline-offset:2px}
.settings-content,.settings-options{min-width:0}
#stockfishSettings[hidden]{display:none!important}
#settingsPanel .mode>span{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;min-width:0}
#settingsPanel .mode>div{min-width:0;flex:1}
#settingsPanel .mode .engine-logo{max-width:100%;max-height:100%;object-position:center}
@media(orientation:landscape){
 html[data-window=compact].settings-sheet-open .settings-shade:not([hidden]){display:block!important;position:fixed;inset:0;z-index:119;background:#62462b30}
 html[data-window=compact] #settingsPanel:not([hidden]),html[data-window=compact].settings-sheet-open #settingsPanel:not([hidden]){position:fixed;z-index:120;inset:12px 0 auto;width:min(720px,calc(100vw - 32px));height:auto;max-width:none;max-height:calc(100dvh - 24px);margin:0 auto;padding:14px 18px;display:flex;flex-direction:column;overflow:auto;background:#fff5e5;border-radius:22px;box-shadow:0 12px 36px #66452930;contain:layout style;transform-origin:50% 20%}
 html[data-window=compact] #settingsPanel .settings-heading{justify-content:space-between;margin:0 0 8px;padding-bottom:8px;flex:none}
 html[data-window=compact] #settingsPanel .settings-heading b{font-size:13px}
 html[data-window=compact] #settingsPanel .settings-heading button{width:28px;height:28px}
 html[data-window=compact] #settingsPanel .play-mode-label{margin:0 0 10px;padding:0;border:0;justify-content:space-between}
 html[data-window=compact] #settingsPanel .play-mode-control button{padding:6px 18px;font-size:11px}
 html[data-window=compact] #settingsPanel .settings-content{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;min-height:0;overflow:auto;flex:1}
 html[data-window=compact] #settingsPanel[data-play-mode=free] .settings-content{grid-template-columns:1fr}
 html[data-window=compact] #settingsPanel .panel-title{justify-content:space-between;margin:0 0 6px}
 html[data-window=compact] #settingsPanel .panel-title h2{font-size:11px}
 html[data-window=compact] #settingsPanel .panel-title>span{font-size:8px}
 html[data-window=compact] #settingsPanel .modes{gap:5px;margin-bottom:0}
 html[data-window=compact] #settingsPanel .mode{min-height:45px;padding:5px 8px;gap:8px;text-align:left;border-radius:12px}
 html[data-window=compact] #settingsPanel .mode b{font-size:10px;line-height:1.25}
 html[data-window=compact] #settingsPanel .mode small{font-size:8px;line-height:1.2;margin-top:2px}
 html[data-window=compact] #settingsPanel .mode .engine-elo{margin-top:2px;font-size:8px}
 html[data-window=compact] #settingsPanel .mode>span{flex-basis:28px;width:28px;height:28px}
 html[data-window=compact] #settingsPanel .mode-track{border-radius:12px}
 html[data-window=compact] #settingsPanel .setting-row{margin:0 0 9px;gap:10px;flex-wrap:wrap}
 html[data-window=compact] #settingsPanel .setting-title{font-size:11px}
 html[data-window=compact] #settingsPanel .setting-row small{font-size:8px}
 html[data-window=compact] #settingsPanel .time-picker{flex-basis:110px}
 html[data-window=compact] #settingsPanel .time-trigger{min-height:34px;padding:6px 12px;font-size:11px}
 html[data-window=compact] #settingsPanel .side-control{flex-basis:190px;height:36px}
 html[data-window=compact] #settingsPanel .muted{text-align:left;margin-top:6px;font-size:8px;line-height:1.6}
 html[data-window=compact] #settingsPanel .settings-actions{flex:none;margin:10px 0 0;padding-top:9px;border-top:1px solid #d9c9af55}
 html[data-window=compact] #settingsPanel .settings-actions button{min-height:32px;padding:7px 13px;font-size:11px}
 html[data-window=compact] #settingsPanel .time-options{top:auto;bottom:calc(100% + 4px);max-height:140px;overflow:auto;z-index:5}
 html[data-window=compact] #settingsPanel .time-options button{min-height:30px;padding:5px 9px;font-size:11px}
}
@media(prefers-reduced-motion:reduce){.play-mode-control button{transition:none}}
.side-control label>span{opacity:1}
.side-control label:has(input:checked)>span{opacity:0}
@media(orientation:landscape){
 html[data-window=compact] #settingsPanel .time-options{top:calc(100% + 4px);bottom:auto;left:auto;right:0;width:218px;max-height:none;padding:4px;overflow:visible}
 html[data-window=compact] #settingsPanel .time-options:not([hidden]){display:flex;gap:2px}
 html[data-window=compact] #settingsPanel .time-menu-caption{display:none}
 html[data-window=compact] #settingsPanel .time-options button{width:auto;flex:1;justify-content:center;min-width:0;padding:6px 3px;gap:0}
 html[data-window=compact] #settingsPanel .time-options button i{display:none}
}
@media(orientation:portrait){html[data-window=compact] #settingsPanel[data-play-mode=free][data-presentation=sheet]{height:auto}}

.mode:disabled{opacity:.6;cursor:default}.mode:disabled:hover{filter:none;border-color:#ba94693d}

/* Lite 1.7.2: one continuous soft capsule, rather than two flashing backgrounds. */
.play-mode-control{position:relative;isolation:isolate;display:grid;grid-template-columns:1fr 1fr;width:230px;max-width:76%;gap:4px}
.play-mode-control::before{content:'';position:absolute;inset:4px auto 4px 4px;width:calc((100% - 12px)/2);border:1px solid #fff9e8;border-radius:18px;background:linear-gradient(145deg,#fffbef,#eddfbf);box-shadow:0 2px 7px #80571914;z-index:-1;transition:transform .42s cubic-bezier(.22,.85,.24,1);transform-origin:center}
#settingsPanel[data-play-mode=free] .play-mode-control::before{transform:translateX(calc(100% + 4px));animation:mode-capsule-free .42s ease-out}
#settingsPanel[data-play-mode=engine] .play-mode-control::before{animation:mode-capsule-engine .42s ease-out}
.play-mode-control button[aria-pressed=true]{background:transparent;border-color:transparent;box-shadow:none}
.play-mode-control button{padding-inline:10px;min-width:0}
@keyframes mode-capsule-free{0%,100%{scale:1}40%{scale:1.08 .94}}
@keyframes mode-capsule-engine{0%,100%{scale:1}40%{scale:1.08 .94}}
/* Champagne material matches --gold-surface on the island. Only the rim rotates. */
.analysis-orb,.analysis-orb.orb-1,.analysis-orb.orb-2{background:radial-gradient(circle at 28% 22%,#fffdf3 0%,#f7eed9 20%,#edddba 54%,#dfc797 83%,#b49a69 100%);box-shadow:inset 0 .6px 1px #fffdf5cc,inset 0 -.7px 1px #96774866}
.analysis-orb::after{content:'';position:absolute;inset:-.5px;padding:1px;border-radius:50%;background:conic-gradient(transparent 0 12%,#fffdf5 24%,#e6c17d 33%,transparent 49% 70%,#fff7da 81%,transparent 94%);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;-webkit-mask-composite:xor;animation:orb-edge-glow 2.8s linear infinite;pointer-events:none}
.analysis-orb.orb-1::after{animation-delay:-.93s}.analysis-orb.orb-2::after{animation-delay:-1.86s}
@keyframes orb-edge-glow{to{transform:rotate(1turn)}}
.reduce-motion .analysis-orb::after{animation:none!important}
@media(prefers-reduced-motion:reduce){.analysis-orb::after{animation:none!important}}
.reduce-motion .play-mode-control::before{transition:none!important;animation:none!important}
@media(prefers-reduced-motion:reduce){.play-mode-control::before{transition:none!important;animation:none!important}}

/* 1.7.4: only the background changes shape; content is never stretched. */
html #settingsPanel{isolation:isolate;background:transparent!important;border-color:transparent!important;box-shadow:none!important}
.settings-surface{position:absolute;inset:0;border-radius:inherit;background:#fff5e5;border:1px solid #fffaedc7;box-shadow:0 8px 22px #66452930;z-index:-1;pointer-events:none;transform-origin:50% 0}
html #settingsPanel.settings-morphing{overflow:visible!important}
#settingsPanel.settings-morphing .settings-content{overflow:visible}
@media(orientation:landscape){html[data-window=compact].settings-sheet-open #sidebarPanels{display:flex!important}}
html #settingsPanel::before{content:none}

/* 1.7.5: the transient background is a sibling layer, outside modal clipping. */
html #settingsPanel{z-index:121!important}
.settings-morph-surface{position:fixed;z-index:120;pointer-events:none;background:#fff5e5;border:1px solid #fffaedc7;box-shadow:0 8px 22px #66452930;transform-origin:50% 0;will-change:transform}
#settingsPanel.settings-morphing .settings-surface{visibility:hidden}
.play-mode-control::before{transition-duration:.3s}
#settingsPanel[data-play-mode=free] .play-mode-control::before,#settingsPanel[data-play-mode=engine] .play-mode-control::before{animation-duration:.3s}

.viewport-settling #settingsPanel,.viewport-settling .play-mode-control::before,.viewport-settling .side-thumb{transition:none!important;animation:none!important}
.viewport-settling .island-rim i{animation-play-state:paused!important}
.island-success img[src$="/book.png"]{clip-path:circle(50%)}

/* Avoid intermediate geometry transitions while Android resizes the surface. */
.viewport-settling .island,.viewport-settling .layout,.viewport-settling .board-shell,.viewport-settling .panel{transition:none!important}

/* Let the browser reflow once; do not scroll-anchor to a panel being relocated. */
html.viewport-settling,html.viewport-settling body{overflow-anchor:none}
.viewport-settling .mode-track{transition:none!important}

/* Rotation choreography keeps all boxes in their final layout; animate transforms only. */
html[data-rotation-phase] [data-rotation-role]{pointer-events:none;transform-origin:50% 50%}
/* Keep panels painted while the system rotates. Hiding them until the board
   finishes caused a second blank frame after Android's own rotation. */
html[data-rotation-phase] .mode-track{transition:none!important}
/* High-contrast pure gold, with a travelling specular highlight rather than a pale core. */
.analysis-orb,.analysis-orb.orb-1,.analysis-orb.orb-2{background:radial-gradient(circle at 30% 22%,#ffe691 0%,#ffd64a 18%,#efb80e 52%,#c98806 81%,#895500 100%);box-shadow:inset 0 .7px 1px #fff0a6,inset 0 -.8px 1.2px #7f4a00,0 0 0 .5px #a16b12}
.analysis-orb::before{content:'';position:absolute;inset:1px;border-radius:50%;background:linear-gradient(105deg,transparent 18%,#fff1a4aa 40%,#ffea79 50%,transparent 70%);animation:orb-gold-specular 1.8s ease-in-out infinite alternate;pointer-events:none}
.analysis-orb::after{background:conic-gradient(transparent 0 12%,#fff0a8 24%,#ffd03e 33%,transparent 49% 70%,#ffc71f 81%,transparent 94%)}
.analysis-orb.orb-1::before{animation-delay:-.6s}.analysis-orb.orb-2::before{animation-delay:-1.2s}
@keyframes orb-gold-specular{from{transform:rotate(-45deg);opacity:.45}to{transform:rotate(100deg);opacity:1}}
.reduce-motion .analysis-orb::before{animation:none!important}
@media(prefers-reduced-motion:reduce){.analysis-orb::before{animation:none!important}}
.viewport-settling .analysis-orb::before{animation-play-state:paused!important}

/* Three heads only: no trail, outline or panel-edge line. The broad edge glint remains. */
.analysis-orb,.analysis-orb.orb-1,.analysis-orb.orb-2{border:0;box-shadow:none}
.analysis-orb::after{inset:0;padding:0;border:0;box-shadow:none;mask:none;-webkit-mask:none;background:radial-gradient(ellipse at 78% 22%,#fff0a8cc 0%,#ffdf5880 18%,transparent 44%)}

/* Player identities occupy the spare rows above and below the landscape score sheet. */
.land-player-history{display:none}
@media(orientation:landscape){
 html[data-window=compact] .land-player-history{display:grid;grid-column:1;grid-row:1/4;grid-template-columns:minmax(0,1fr);grid-template-rows:54px minmax(0,1fr) 40px;gap:3px;min-width:0;min-height:0;align-self:stretch}
 html[data-window=compact] .land-player-history>.history-panel{grid-column:1;grid-row:2;height:100%;min-height:0}
 html[data-window=compact] .land-player-slot{display:flex;align-items:center;min-width:0;overflow:hidden}
 html[data-window=compact] .land-player-slot .player{display:flex!important;align-items:center;width:100%;min-width:0;gap:6px;padding:0;text-align:left}
 html[data-window=compact] .land-player-slot .player>div{min-width:0;flex:1;overflow:hidden}
 html[data-window=compact] .land-player-slot .player b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
 html[data-window=compact] .land-player-slot .avatar{--coach-size:30px;width:30px;height:30px;flex:0 0 30px;border-radius:10px}
 html[data-window=compact] .land-player-slot .player small,html[data-window=compact] .land-player-slot .badge,html[data-window=compact] .land-player-slot #coachMove,html[data-window=compact] .land-player-slot #status{display:none!important}
 body[data-configured=false] .land-player-history{visibility:hidden}
}
@media(orientation:landscape) and (max-height:340px){
 html[data-window=compact] .land-player-history{grid-template-rows:38px minmax(0,1fr) 26px}
 html[data-window=compact] .land-player-slot .avatar{--coach-size:24px;width:24px;height:24px;flex-basis:24px;border-radius:8px}
 html[data-window=compact] .land-player-slot .player b{font-size:10px}
}

.history-actions{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.import-launcher{position:fixed;right:20px;bottom:max(22px,env(safe-area-inset-bottom));z-index:6}
.import-launcher button{border-radius:18px;background:#fff4dfed;box-shadow:inset 0 1px #fffaf0,0 5px 18px #80512622;padding:12px 16px;font-size:12px}
.import-launcher[hidden]{display:none}
.import-dialog{width:min(520px,calc(100vw - 28px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;border-radius:24px;background:#fff5e5;padding:24px;color:var(--ink)}
.import-dialog h2{margin:0 0 12px}.import-dialog p{margin:0 0 14px;line-height:1.7;color:#80664e}.import-dialog label{display:block;margin:0 0 6px}
.import-dialog textarea{display:block;width:100%;min-height:150px;max-height:32dvh;resize:vertical;background:#fffaf0;color:#513b30;border:1px solid #d2b783;border-radius:14px;padding:12px;font:13px/1.6 system-ui;user-select:text;-webkit-user-select:text;touch-action:auto}
.import-dialog .import-error{color:#a54a34;font-size:12px;min-height:20px;margin:8px 0}
.import-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.import-actions button{border-radius:14px;padding:10px 14px}
@media(orientation:landscape){.import-launcher,#settingsImport{display:none!important}}

/* Rating light hierarchy: shared by hint, played move and auxiliary phases. */
.island:is([data-classification=brilliant],[data-classification=great],[data-classification=interesting]){--rating-rim:1;--rating-halo:.95}
.island:is([data-classification=best],[data-classification=excellent],[data-classification=book]){--rating-rim:.65;--rating-halo:.55}
.island:is([data-classification=good],[data-classification=inaccuracy],[data-classification=mistake],[data-classification=miss]){--rating-rim:.30;--rating-halo:.22}
.island[data-classification=blunder]{--rating-rim:0;--rating-halo:0}
.island[data-celebrating=true]:is([data-classification=brilliant],[data-classification=great],[data-classification=interesting],[data-classification=best],[data-classification=excellent],[data-classification=book],[data-classification=good],[data-classification=inaccuracy],[data-classification=mistake],[data-classification=miss],[data-classification=blunder]) .island-rim{opacity:var(--rating-rim)}
.island[data-celebrating=true]:is([data-classification=brilliant],[data-classification=great],[data-classification=interesting],[data-classification=best],[data-classification=excellent],[data-classification=book],[data-classification=good],[data-classification=inaccuracy],[data-classification=mistake],[data-classification=miss],[data-classification=blunder]) .island-rim-pulse{opacity:var(--rating-halo)}

/* Giveaway is an auxiliary warning, using the restrained low light tier. */
.island[data-classification=giveaway]{--rating-rim:.30;--rating-halo:.22}
.island[data-classification=giveaway][data-celebrating=true] .island-rim{opacity:var(--rating-rim)}
.island[data-classification=giveaway][data-celebrating=true] .island-rim-pulse{opacity:var(--rating-halo)}

/* Room navigation remains available in both orientations. */
.room-home{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:#795c39;font-size:11px;padding:7px 10px;border:1px solid #fff4d8bd;border-radius:22px;background:#fff5df80;white-space:nowrap}.room-home:focus-visible{outline:2px solid #987541;outline-offset:3px}@media(orientation:landscape){html[data-window=compact] .room-home{font-size:11px;padding:6px 10px}}

/* Plain close glyph: no circular border, background, or focus halo on pointer clicks. */
#settingsPanel #settingsCancel{border:0;border-radius:0;background:transparent;box-shadow:none;}

.principle-link{appearance:none;font:10px system-ui;color:#866238;background:#fff7e599;border:1px solid #c8aa7855;border-radius:10px;padding:3px 7px;cursor:pointer;white-space:nowrap}.engine-card-wrap{position:relative}.engine-card-wrap>.mode{width:100%;padding-right:54px}.engine-card-wrap>.principle-link{position:absolute;right:12px;top:18px}.engine-extra-rating{display:block;font-size:10px;line-height:1.7;color:#8c704c}.engine-card-wrap .mode em{display:none}.engine-details .engine-principle{font-weight:600;color:#70502f}.engine-details p{white-space:pre-line}.desk-engine.unavailable{opacity:1}.desk-engine.unavailable img{opacity:.6}.desk-engine.unavailable>span{color:#9c876d}.desk-engine.unavailable small{color:#a28b70}.desk-engine small:has([data-engine-caption]){display:flex;align-items:center;flex-wrap:wrap;gap:4px}.principle-link:focus-visible{outline:2px solid #9a763c;outline-offset:2px}

.review-navigation{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:112px;border:1px solid #fff7e4bd;border-radius:20px;background:linear-gradient(130deg,#fff6dfad,#e8c58e80);overflow:hidden}.review-navigation[hidden]{display:none!important}.review-navigation button{display:grid;place-items:center;width:39px;min-height:42px;padding:7px;border:0;background:transparent;color:#8a6c3d;border-radius:0}.review-navigation svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}.review-navigation>span{font-size:10px;white-space:nowrap;color:#977d57;min-width:32px;text-align:center}.review-navigation button:active{background:#e1bc7960}.review-navigation button:disabled{opacity:.32}.history-move{border:0;background:transparent;padding:3px 6px;border-radius:7px;font:inherit;color:inherit;white-space:nowrap}.history-move[aria-current=true]{background:#d8ac5d66;color:#654824;box-shadow:inset 0 0 0 1px #bc8e4155}.history-row>span{min-width:0}.review-branches{display:flex;gap:7px;flex-wrap:wrap;margin:5px 0 12px}.review-branches[hidden]{display:none}.review-branches button{border:1px solid #bda17455;background:#fff6df88;border-radius:12px;padding:5px 10px;font-size:11px}.review-branches button[aria-pressed=true]{background:#eacb91aa}.classic-caption{font-size:11px;color:#977658;line-height:1.5}.classic-caption[hidden]{display:none}html[data-window=compact] .review-navigation{min-width:91px;border-radius:17px}html[data-window=compact] .review-navigation button{width:30px;min-height:34px;padding:5px}html[data-window=compact] .review-navigation>span{font-size:9px;min-width:26px}@media(max-width:390px){.review-navigation>span{font-size:9px;min-width:26px}.review-navigation{min-width:95px}.review-navigation button{width:29px}}

.actions .review-navigation button{border:0;background:transparent;box-shadow:none;border-radius:0;padding:6px;transform:none!important}.actions .review-navigation button:disabled{opacity:.32;color:#8a6c3d}.actions .review-navigation button:active:not(:disabled){background:#d9b87b44}.engine-card-wrap .engine-elo{white-space:normal!important}.engine-card-wrap>.mode i{visibility:hidden}@media(orientation:landscape){html[data-window=compact] .study-mode .play>.actions{grid-template-columns:1.25fr 1.75fr 1.15fr}}

/* 1.8.5: reserve usable text width for replay controls; classic games have no model action. */
.classic-mode #new,.classic-mode #hint{display:none!important}
.study-mode .actions #hint .hint-action-label{overflow:visible;text-overflow:clip}
@media(orientation:landscape){
 html[data-window=compact] .study-mode .play>.actions{grid-template-columns:minmax(94px,1fr) minmax(84px,.85fr) minmax(90px,1fr);gap:5px}
 html[data-window=compact] .classic-mode .play>.actions{grid-template-columns:minmax(0,1fr)}
 html[data-window=compact] .study-mode #hint .hint-action-content{grid-template-columns:18px auto;gap:4px;width:auto;max-width:none}
 html[data-window=compact] .study-mode #hint .hint-action-icon,html[data-window=compact] .study-mode #hint .hint-action-icon img{width:18px;height:18px}
 html[data-window=compact] .study-mode #hint{padding-inline:5px;font-size:11px}
 html[data-window=compact] .study-mode .review-navigation{min-width:0;gap:0}
 html[data-window=compact] .study-mode .review-navigation button{width:26px;flex-shrink:0}
}

.classic-mode .play>.actions{justify-content:stretch}.classic-mode .review-navigation{flex:1;justify-content:space-between}

@media(orientation:landscape){html[data-window=compact],html[data-window=compact] body{height:100dvh;overflow:hidden;overscroll-behavior:none}html[data-window=compact] #sidebarPanels{overscroll-behavior:contain}html[data-window=compact] #history{overscroll-behavior:contain}}

[data-engine-card][hidden],.engine-card-wrap[hidden]{display:none!important}

/* Keep the explanation actionable above the disabled opponent card. */
.engine-card-wrap>.principle-link{z-index:2}
