:root{
  --page:#0C1714; --surface:#12241F; --ink:#F1EADB; --muted:#9AA8A0; --line:#2A4239;
  --sq-light:#CBB88A; --sq-dark:#2B5247; --frame:#0A1311;
  --brass:#D4B06A; --brass-ink:#E3C98F; --signal:#E5675C;
  --gold-hi:#E3C98F; --gold-lo:#C9A45C; --hair:rgba(212,176,106,.3);
  --k-b:#A56BD0; --k-g:#4A90D9;
  --piece:#17211E; --piece-edge:#E3C98F;
  --shadow:0 30px 60px -30px rgba(0,0,0,.85);
  --serif:'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --caps:'Cinzel', Georgia, serif;
  --sans:'Schibsted Grotesk', 'Segoe UI', system-ui, -apple-system, sans-serif;
  color-scheme:dark;
}
:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
body{margin:0;overflow-x:clip;background:var(--page);color:var(--ink);font:400 16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;min-height:100%}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--brass);outline-offset:3px}
[hidden]{display:none !important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.app{max-width:1180px;margin:0 auto;padding:18px clamp(16px,4vw,40px) 56px}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:clamp(24px,5vw,56px)}
.brand{display:inline-flex;align-items:center;gap:12px;text-decoration:none}
.brand-mark{display:block;width:40px;height:auto}
.brand-word{display:block;width:150px;height:auto}
body:has(#hub:not([hidden])) .brand-word{display:none}
.icon-btn{display:inline-flex;align-items:center;gap:8px;background:none;border:1px solid var(--hair);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:500;cursor:pointer;color:var(--muted)}
.icon-btn:hover{color:var(--ink);border-color:var(--muted)}
.icon-btn svg{width:18px;height:18px}
.icon-btn[aria-pressed="false"] .wave{display:none}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:14px 22px;font-weight:600;font-size:16px;line-height:1;cursor:pointer;border:1.5px solid transparent;transition:background-color .15s, border-color .15s}
.btn.primary{background:linear-gradient(180deg,var(--gold-hi),var(--gold-lo));color:#0C1714}
.btn.primary:hover{background:linear-gradient(180deg,#EDD9A8,var(--gold-hi))}
.btn.ghost{background:transparent;border-color:rgba(212,176,106,.55);color:var(--brass-ink)}
.btn.ghost:hover{border-color:var(--brass);color:var(--ink)}

/* ---------- Hub ---------- */
.caps{font-family:var(--caps);font-size:13px;letter-spacing:.3em;color:var(--brass);text-transform:uppercase}
.hero{position:relative;margin:0 calc(50% - 50vw);border-bottom:1px solid var(--hair)}
.hero picture,.hero-art{display:block;width:100%;height:auto}
.hero-logo{position:absolute;left:50%;top:3.5%;width:min(26%,520px);height:auto;translate:-50% 0;filter:drop-shadow(0 6px 18px rgba(0,0,0,.65))}
.feature{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,5vw,64px);align-items:center;margin-top:clamp(36px,5vw,64px);padding:clamp(24px,4vw,52px);background:var(--surface);border:1px solid var(--hair);border-radius:18px;box-shadow:var(--shadow)}
.feature h1{font-family:var(--serif);font-weight:600;font-size:clamp(52px,7vw,88px);line-height:.92;letter-spacing:-.01em;margin:14px 0 22px}
.feature h1 span{display:block}
.lede{font-size:clamp(17px,1.6vw,18px);max-width:34em;margin:0 0 28px;color:#B9C4BE}
.feature-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 20px}
.best-note{font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.feature-art{margin:0;justify-self:end;width:min(100%,420px);padding:10px;background:var(--frame);border-radius:10px;box-shadow:0 0 0 1px rgba(212,176,106,.5),var(--shadow)}
.mini{display:block;width:100%;height:auto;border-radius:3px}
.mini .l{fill:var(--sq-light)} .mini .d{fill:var(--sq-dark)}
.mini .route{fill:none;stroke-width:.09;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.8s cubic-bezier(.5,0,.2,1) .35s forwards}
.mini .route.g{animation-delay:.75s}
.mini .stop{opacity:0;animation:fade .3s ease-out forwards}

@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fade{to{opacity:1}}

.workshop{margin-top:clamp(56px,8vw,96px)}
.workshop-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 32px;padding-bottom:18px;margin-bottom:26px;border-bottom:1px solid var(--hair)}
.workshop h2{font-family:var(--serif);font-weight:600;font-size:clamp(32px,4vw,46px);line-height:1.05;margin:8px 0 0}
.workshop-head p{margin:0;color:var(--muted);max-width:26em}
.drills{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.drills li{display:flex;flex-direction:column;gap:10px;padding:22px 20px;background:var(--surface);border:1px solid rgba(212,176,106,.18);border-radius:14px}
.d-name{font-family:var(--serif);font-weight:600;font-size:25px;line-height:1.05}
.d-desc{color:var(--muted);font-size:15px;flex-grow:1}
.d-state{font-family:var(--caps);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-lo)}
.site-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin-top:clamp(56px,8vw,96px);padding-top:24px;border-top:1px solid var(--hair);color:var(--muted);font-size:14px}
.site-foot .caps{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:12px}
.site-foot img{width:26px;height:auto}

/* ---------- Game ---------- */
.game-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;margin-bottom:14px}
body:has(#hub[hidden]) .top{margin-bottom:12px}
body:has(#hub:not([hidden])) .top{margin-bottom:18px}
.game-head h1{font-family:var(--serif);font-weight:600;font-size:clamp(28px,3.4vw,38px);letter-spacing:-.01em;margin:0}
.back{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:6px 0;color:var(--muted);cursor:pointer;font-weight:500}
.back:hover{color:var(--ink)}
.back svg{width:16px;height:16px}
.game-grid{--bw:max(300px,min(664px,calc(100vh - 230px)));display:grid;grid-template-columns:minmax(0,var(--bw)) minmax(260px,340px);grid-template-areas:"board panel" "results panel";column-gap:clamp(20px,3.5vw,44px);row-gap:6px;align-items:start;justify-content:start}
.board-col{grid-area:board;min-width:0}
.panel{grid-area:panel}
.results{grid-area:results;min-width:0;display:grid;gap:18px}

.board-frame{width:100%;padding:clamp(6px,1.1vw,11px);background:var(--frame);border-radius:12px;box-shadow:0 0 0 1px rgba(212,176,106,.5),var(--shadow)}
@supports (height:100dvh){.game-grid{--bw:max(300px,min(664px,calc(100dvh - 230px)))}}
.board{position:relative;width:100%;aspect-ratio:1;border-radius:4px;overflow:hidden;container-type:inline-size;touch-action:none;user-select:none;-webkit-user-select:none}
.squares{position:absolute;inset:0;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr)}
.sq{position:relative;border:0;margin:0;padding:0;background:var(--sq-light);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sq.dark{background:var(--sq-dark)}
.sq:focus-visible{outline:3px solid var(--brass);outline-offset:-3px;z-index:2}
.sq::before{content:"";position:absolute;inset:0;pointer-events:none}
.sq.goal::before{background:repeating-linear-gradient(135deg,color-mix(in oklab,var(--brass) 30%,transparent) 0 7%,transparent 7% 14%)}
.sq.last::before{background:color-mix(in oklab,var(--brass) 36%,transparent)}
.sq.from::before{background:color-mix(in oklab,var(--brass) 58%,transparent)}
.sq.homegoal{box-shadow:inset 0 0 0 .5cqi var(--kc),inset 0 0 2.6cqi color-mix(in oklab,var(--kc) 75%,transparent);animation:breathe 1.6s ease-in-out infinite}
@keyframes breathe{50%{box-shadow:inset 0 0 0 .5cqi var(--kc),inset 0 0 1cqi color-mix(in oklab,var(--kc) 40%,transparent)}}
.sq.hint::after{content:"";position:absolute;left:50%;top:50%;width:28%;height:28%;translate:-50% -50%;border-radius:50%;background:rgba(20,32,27,.3);pointer-events:none;transition:width .12s,height .12s}
.sq.dark.hint::after{background:rgba(241,234,219,.38)}
.sq.hint:hover::after{width:36%;height:36%}
.sq.closed{--nc:rgba(88,96,92,.8)}
.sq.dark.closed{--nc:rgba(214,218,212,.85)}
.sq.closed::after{content:"";position:absolute;left:50%;top:50%;width:38%;height:38%;translate:-50% -50%;border-radius:50%;box-sizing:border-box;border:.6cqi solid var(--nc);background:linear-gradient(135deg,transparent 45%,var(--nc) 45% 55%,transparent 55%);pointer-events:none}
.mk{position:absolute;inset:0;pointer-events:none;display:none}
.sq[data-mk] .mk{display:block}
.sq[data-mk="wp"] .mk::before,.sq[data-mk="wpdone"] .mk::before{content:"";position:absolute;left:50%;top:50%;width:40%;height:40%;translate:-50% -50%;rotate:45deg;border:.55cqi solid var(--kc);border-radius:2px;box-shadow:0 0 1.4cqi color-mix(in oklab,var(--kc) 60%,transparent)}
.sq[data-mk="wpdone"] .mk::before{width:24%;height:24%;background:var(--kc);opacity:.5;box-shadow:none}
.sq[data-mk="first"] .mk::before{content:"";position:absolute;inset:13%;border-radius:50%;border:.5cqi dashed var(--kc)}
.sq[data-mk="first"] .mk::after{content:"1st";position:absolute;right:6%;top:5%;font-size:2.1cqi;font-weight:700;line-height:1;color:var(--kc)}
.fx{position:absolute;inset:0;background:var(--signal);opacity:0;pointer-events:none}
.sq.gone{cursor:not-allowed}
.sq.gone .mk{display:block}
.sq.gone .mk::before{content:"";position:absolute;left:14%;top:18%;width:72%;height:72%;border-radius:50%;background:#3B2419;box-shadow:inset 0 -.7cqi 0 #5A331F,0 0 0 .35cqi var(--piece-edge);animation:char .4s ease-out}
.sq.gone .cf,.sq.gone .cr{opacity:.35}
@keyframes char{from{opacity:0}}
.fxcv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.trail .sol{fill:none;stroke-width:.09;stroke-linecap:round;stroke-linejoin:round}
.trail.reviewing line:not(.sol){opacity:.5;stroke-width:.055}
.trail.reviewing circle{opacity:.4 !important}
.trail.only-b [data-k="g"],.trail.only-g [data-k="b"]{display:none}
.review-bar{display:flex;align-items:center;gap:8px;margin-top:12px;padding:6px;background:var(--surface);border:1px solid var(--hair);border-radius:999px}
.rb-btn{flex:none;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid rgba(212,176,106,.45);border-radius:50%;background:transparent;color:var(--brass-ink);cursor:pointer}
.rb-btn:hover:not(:disabled){border-color:var(--brass);color:var(--ink)}
.rb-btn:disabled{opacity:.35;cursor:default}
.rb-btn svg{width:18px;height:18px}
.rb-main{border:0;background:linear-gradient(180deg,var(--gold-hi),var(--gold-lo));color:#0C1714}
.rb-main:hover:not(:disabled){color:#0C1714;background:linear-gradient(180deg,#EDD9A8,var(--gold-hi))}
.rb-label{flex:1 1 auto;min-width:0;text-align:center;font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.review-bar .i-play,.review-bar.paused .i-pause{display:none}
.review-bar.paused .i-play{display:block}
.pieces .piece{transition:opacity .35s}
.pieces.only-b .piece:not(.bishop)[data-k="g"],.pieces.only-g .piece:not(.bishop)[data-k="b"]{opacity:0}
.aim{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}
.aim line{stroke:var(--signal);stroke-width:.05;stroke-dasharray:.12 .1;stroke-linecap:round;opacity:.6}
.piece.bishop,.arrow{pointer-events:none;z-index:4}
.ascend{position:absolute;left:0;top:0;width:12.5%;height:12.5%;pointer-events:none;z-index:5;--piece:#FFFFFF}
.ascend .rig{opacity:.88}
.ascend .rig svg{filter:drop-shadow(0 0 1cqi rgba(255,255,255,.9))}
.asc-halo{position:absolute;left:34%;top:-16%;width:44%;height:auto;overflow:visible}
.asc-halo ellipse{fill:none;stroke:#F2C94C;stroke-width:8;filter:drop-shadow(0 0 .6cqi rgba(242,201,76,.9))}
.asc-cloud{position:absolute;left:-12%;bottom:-22%;width:124%;height:auto;overflow:visible}
.asc-cloud path{fill:#FFFFFF;stroke:var(--piece-edge);stroke-width:3;stroke-linejoin:round}
.board.dead .squares,.board.dead .pieces,.board.dead .fxcv,.board.dead .trail{filter:grayscale(.75) brightness(.92);transition:filter 1.4s ease}
.piece.bishop{--kc:var(--piece-edge)}
.arrow{position:absolute;left:0;top:0;width:12.5%;height:12.5%}
.arrow svg{width:100%;height:100%;overflow:visible}
.bp-part{fill:#2F3A36;stroke:var(--piece-edge);stroke-width:3;stroke-linejoin:round}
.bp-hi{fill:none;stroke:#5E6E67;stroke-width:3;stroke-linecap:round}
.bp-eye{fill:#FBF8EF;stroke:var(--piece-edge);stroke-width:1.5}
.bp-pupil{fill:var(--piece-edge)}
.bp-brow,.bp-slit{fill:none;stroke:#FBF8EF;stroke-width:2.8;stroke-linecap:round}
.ar-shaft{fill:#C9A36B;stroke:var(--piece-edge);stroke-width:2.5}
.ar-head{fill:#DCE3E1;stroke:var(--piece-edge);stroke-width:2.5;stroke-linejoin:round}
.ar-feather{fill:var(--signal);stroke:var(--piece-edge);stroke-width:2.5;stroke-linejoin:round}
.ar-speed{stroke:var(--piece-edge);stroke-width:2.5;stroke-linecap:round;opacity:.5}
.fx.on{animation:redflash .95s ease-out}
@keyframes redflash{0%,34%,68%{opacity:.88}17%,51%,100%{opacity:0}}
.cf,.cr{position:absolute;font-size:2.05cqi;font-weight:700;line-height:1;pointer-events:none}
.cf{right:6%;bottom:5%}
.cr{left:6%;top:5%}
.sq.light .cf,.sq.light .cr{color:var(--sq-dark)}
.sq.dark .cf,.sq.dark .cr{color:var(--sq-light)}

.trail{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.trail line{stroke-width:.075;stroke-linecap:round}
.trail circle{stroke:none}
.trail .fresh{stroke-dasharray:1;stroke-dashoffset:1;animation:draw .28s ease-out forwards}

.pieces{position:absolute;inset:0;pointer-events:none}
.piece{position:absolute;left:0;top:0;width:12.5%;height:12.5%;pointer-events:auto;cursor:grab;touch-action:none;z-index:1;will-change:transform;transition:scale .12s}
.rig{position:absolute;inset:0;transform-origin:50% 92%}
.rig svg{position:absolute;left:4%;bottom:3%;width:92%;height:92%;overflow:visible;filter:drop-shadow(0 .5cqi .6cqi rgba(0,0,0,.35))}
.kn-part{fill:var(--piece);stroke:var(--piece-edge);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
.kn-mane path{fill:var(--kc);stroke:var(--piece-edge);stroke-width:3;stroke-linejoin:round}
.kn-eye ellipse,.kn-nostril{fill:var(--piece-edge)}
.kn-glint{fill:#fff}
.kn-brow,.kn-mouth{fill:none;stroke:var(--piece-edge);stroke-width:2.2;stroke-linecap:round}
.kn-head,.kn-jaw,.kn-mane,.kn-ear,.kn-eye{transform-box:view-box}
.kn-head{transform-origin:58px 40px}
.kn-jaw{transform-origin:50px 46px}
.kn-mane{transform-origin:68px 44px}
.kn-ear{transform-origin:60px 16px}
.kn-eye{transform-origin:50px 25px}
.piece.ghost{pointer-events:none;opacity:.6;z-index:2}
.piece.ghost::before{background:transparent;border:.35cqi dashed var(--kc)}
.piece::before{content:"";position:absolute;left:19%;right:19%;bottom:9%;height:12%;border-radius:50%;background:var(--kc);z-index:-1;box-shadow:0 0 0 .3cqi rgba(0,0,0,.18)}
.piece.sel::before{box-shadow:0 0 0 .55cqi color-mix(in oklab,var(--kc) 45%,transparent),0 0 2.4cqi var(--kc)}
.piece.dragging{cursor:grabbing;z-index:5;scale:1.14}
.piece.done{cursor:default}
.piece.done::before{background:var(--brass);box-shadow:0 0 1.8cqi var(--brass)}

.overlay{position:absolute;inset:0;z-index:6;display:grid;place-items:center;padding:5%;background:color-mix(in oklab,var(--page) 52%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.overlay.clear{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none}
.par-flash{display:grid;justify-items:center;padding:3cqi 8cqi 3.5cqi;background:color-mix(in oklab,var(--surface) 94%,transparent);border-radius:14px;box-shadow:0 20px 50px -20px rgba(0,0,0,.45);animation:parflash 2s ease forwards}
.par-flash .par-label,.par-flash .par-unit{font-size:clamp(14px,3.2cqi,20px);font-weight:600;color:var(--muted)}
.par-flash .par-num{font-family:var(--serif);font-size:20cqi;line-height:1.05;color:var(--ink)}
@keyframes parflash{0%{opacity:0;scale:.92}12%{opacity:1;scale:1}85%{opacity:1;scale:1}100%{opacity:0;scale:.97}}
.count{font-family:var(--serif);font-size:36cqi;line-height:1;color:var(--ink);-webkit-text-stroke:.5cqi #0C1714;paint-order:stroke fill;text-shadow:0 1.5cqi 3cqi rgba(0,0,0,.35);animation:pop 1s cubic-bezier(.2,.8,.3,1) forwards}
.count.go{color:var(--brass);font-size:26cqi}
@keyframes pop{0%{scale:1.7;opacity:0}18%{scale:1;opacity:1}78%{opacity:1}100%{scale:.86;opacity:0}}
.card{display:flex;flex-direction:column;background:var(--surface);color:var(--ink);border-radius:14px;padding:clamp(18px,5cqi,32px);width:min(100%,430px);max-height:100%;overflow:hidden;box-shadow:0 20px 50px -20px rgba(0,0,0,.45)}
.card-body{flex:1 1 auto;min-height:0;overflow:auto}
.card-actions{flex:none;display:flex;flex-wrap:wrap;gap:10px;padding-top:14px}
.card{position:relative}
.card-close{position:absolute;top:10px;right:10px;width:36px;height:36px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);cursor:pointer}
.card-close:hover{background:color-mix(in oklab,var(--ink) 10%,transparent);color:var(--ink)}
.card-close svg{width:18px;height:18px}
.result h2{padding-right:36px}
.card h2{font-family:var(--serif);font-weight:600;font-size:clamp(24px,5cqi,32px);line-height:1.1;margin:0 0 12px}
.card p{margin:0 0 12px;font-size:15px}
.card .small{color:var(--muted);font-size:14px}
.result .big{font-size:clamp(40px,11cqi,64px);font-weight:700;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:4px 0 8px}
.result .pb{font-weight:600;color:var(--brass-ink)}
.rstats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}
.rstats dt{font-size:13px;color:var(--muted)}
.rstats dd{margin:0;font-weight:700;font-size:20px;font-variant-numeric:tabular-nums}
.rstats small{font-weight:500;color:var(--muted);font-size:13px}
.splits{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums;margin-bottom:16px}
.splits th{font-weight:500;color:var(--muted);text-align:left;padding:4px 0}
.splits td{padding:6px 0;border-top:1px solid var(--line)}
.splits td:first-child{display:flex;align-items:center;gap:8px}
@container (max-width:600px){.card .splits{display:none}.card p{font-size:14px;line-height:1.45}}
@container (max-width:460px){.card{padding:16px}.card h2{font-size:20px;margin-bottom:8px}.card p{font-size:13px;line-height:1.4;margin-bottom:8px}.card .small{display:none}.result .big{font-size:40px}.rstats{margin:10px 0}.card .btn{padding:11px 16px;font-size:15px}}

.status{margin:14px 2px 0;min-height:3em;font-size:15px;color:var(--muted);max-width:60ch}
.status[data-tone="bad"]{color:var(--signal);font-weight:600}
.status[data-tone="good"]{color:var(--ink);font-weight:600}

.panel{display:flex;flex-direction:column;gap:22px}
.rules{border:1px solid var(--line);border-radius:12px;padding:10px 16px 14px;margin:0;display:grid;gap:12px;min-width:0}
.rules legend{padding:0 6px;font-family:var(--serif);font-weight:600;font-size:22px}
.rules:disabled .switch,.rules:disabled .rep{opacity:.55}
.rules:disabled label{cursor:not-allowed}
.switch{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:500}
.switch input,.seg input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.knob{position:relative;flex:none;width:40px;height:22px;border-radius:999px;background:var(--line);transition:background-color .15s}
.knob::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.3);transition:translate .15s}
.switch input:checked + .knob{background:var(--gold-lo)}
.switch input:checked + .knob::after{translate:18px 0}
.switch input:focus-visible + .knob{outline:3px solid var(--brass);outline-offset:2px}
.rep{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;font-weight:500}
.seg{display:inline-flex;border:1.5px solid var(--line);border-radius:8px;overflow:hidden}
.seg label{position:relative;cursor:pointer}
.seg span{display:block;min-width:30px;padding:6px 7px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.seg label + label span{border-left:1.5px solid var(--line)}
.seg input:checked + span{background:var(--gold-lo);color:#0C1714}
.seg input:focus-visible + span{outline:3px solid var(--brass);outline-offset:-3px}
.rules-note{margin:0;font-size:13px;color:var(--muted)}
.trail.off{display:none}
.plate{background:var(--surface);color:var(--ink);border:1px solid var(--hair);border-radius:14px;padding:20px 24px 18px}
.clock{display:block;font-weight:700;font-size:clamp(46px,5.6vw,64px);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.plate-sub{display:block;margin-top:8px;font-size:14px;color:var(--muted)}
.tracks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 32px}
.t-name{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:10px}
.pip{display:inline-block;flex:none;width:10px;height:10px;border-radius:50%;background:var(--kc)}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr)}
.steps li{position:relative;padding-top:20px;font-size:13px;line-height:1.3;color:var(--muted)}
.steps li::before{content:"";position:absolute;top:2px;left:0;width:14px;height:14px;border-radius:50%;border:2px solid var(--line);background:var(--surface);z-index:1}
.steps li:not(:last-child)::after{content:"";position:absolute;top:8px;left:14px;right:0;height:2px;background:var(--line)}
.steps li.done::before{background:var(--kc);border-color:var(--kc)}
.steps li.done:has(+ li.done)::after{background:var(--kc)}
.steps li.now{color:var(--ink);font-weight:600}
.steps li.now::before{border-color:var(--kc)}
.t-req{margin:-4px 0 10px 18px;font-size:13px;color:var(--muted)}
.t-req:empty{display:none}
.split{display:block;font-variant-numeric:tabular-nums;font-weight:500;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stats dt{font-size:13px;color:var(--muted)}
.stats dd{margin:2px 0 0;font-weight:700;font-size:22px;line-height:1.1;font-variant-numeric:tabular-nums}
.stats small{font-size:12px;font-weight:500;color:var(--muted)}
.sheet h2{font-family:var(--serif);font-weight:600;font-size:24px;margin:0}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.btn-sm{padding:8px 14px;font-size:14px}
.pgn{max-height:170px;overflow:auto;font-size:15px;line-height:2;font-variant-numeric:tabular-nums}
.pgn .tok{display:inline-block;white-space:nowrap;margin-right:10px}
.pgn .n{color:var(--muted);margin-right:4px}
.pgn .m{font-weight:600;border-bottom:2px solid var(--kc);padding-bottom:1px}
.pgn .c{color:var(--muted);font-size:14px;margin-right:10px}
.pgn .c.bad{color:var(--signal)}
.pgn .c.end{color:var(--ink);font-weight:600}
.pgn .empty{color:var(--muted);font-size:14px}
.lv-name{font-weight:600}
.lv-desc{margin:0;font-size:14px;line-height:1.45;color:var(--muted)}
.plate{position:relative;transition:background-color .3s}
.plate.low{background:#5A1F1B;border-color:var(--signal)}
.pen-pop{position:absolute;right:20px;top:16px;font-weight:700;font-size:20px;color:#FFD48A;opacity:0;pointer-events:none}
.pen-pop.on{animation:penpop 1.2s ease-out}
@keyframes penpop{0%{opacity:0;translate:0 8px}15%{opacity:1;translate:0 0}70%{opacity:1}100%{opacity:0;translate:0 -12px}}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.nudge{border-color:var(--signal);color:var(--signal)}
.btn.confirm{background:var(--signal);border-color:var(--signal);color:#fff}
.panel-actions{display:flex;flex-wrap:wrap;gap:8px}
.panel-actions .btn{padding:11px 12px;font-size:14px;white-space:nowrap}

#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}
::view-transition-old(root),::view-transition-new(root){animation-duration:.28s}

@media (max-width:900px){
  .feature{grid-template-columns:1fr}
  .feature-art{justify-self:center}
  .game-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"board" "panel" "results";row-gap:22px}
  .results{max-width:600px}
  .board-frame{width:min(100%,600px)}
  .panel{max-width:600px}
}
@media (max-width:700px){
  .hero-logo{width:min(80%,440px);top:4.5%}
}
@media (max-width:620px){
  .tracks{grid-template-columns:1fr}
  .drills li{grid-template-columns:1fr auto}
  .d-desc{grid-column:1 / -1;grid-row:2}
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-delay:0s !important;transition:none !important}
}

/* ---------- Knight Route ---------- */
.drills .playable{padding:0;border-color:rgba(212,176,106,.5)}
.d-link{display:flex;flex-direction:column;gap:10px;height:100%;box-sizing:border-box;padding:22px 20px;color:inherit;text-decoration:none;border-radius:14px}
.d-link:hover{background:color-mix(in oklab,var(--brass) 8%,transparent)}
.d-link .d-state{color:var(--brass)}
.sq[data-mk="target"] .mk::before{content:"";position:absolute;inset:10%;border-radius:50%;border:.7cqi solid var(--brass);box-shadow:0 0 0 .35cqi rgba(12,23,20,.55),0 0 2.4cqi var(--brass);animation:target 1.4s ease-in-out infinite}
.sq[data-mk="target"] .mk::after{content:"Next";position:absolute;inset:25% 8% 23%;display:flex;align-items:flex-end;justify-content:center;font:600 1.9cqi/1 var(--caps);letter-spacing:.06em;text-transform:uppercase;color:var(--brass-ink);text-shadow:0 0 .35cqi #0C1714,0 0 .35cqi #0C1714,0 0 .8cqi #0C1714;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 22'%3E%3Cpath d='M3.5 16.5 2 5.5l6 4.5L13 2l5 8 6-4.5-1.5 11z' fill='%23D4B06A' stroke='%230C1714' stroke-width='1.5' stroke-linejoin='round'/%3E%3Crect x='3.5' y='17.6' width='19' height='3' rx='1.2' fill='%23D4B06A' stroke='%230C1714' stroke-width='1.3'/%3E%3C/svg%3E") center top / 34% auto no-repeat}
/* At Level 1 a target one move away fills softly instead of showing a move dot under the crown. */
.sq.hint[data-mk="target"]::after{display:none}
.sq.hint[data-mk="target"] .mk::before{background:color-mix(in oklab,var(--brass) 26%,transparent)}
@keyframes target{50%{inset:16%}}
.sq[data-mk="start"] .mk::before{content:"";position:absolute;inset:34%;border-radius:50%;background:rgba(241,234,219,.35)}
.target-now{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:2px 16px;padding:16px 20px;border:1px solid var(--hair);border-radius:14px}
.target-now .caps{grid-column:1 / -1;font-size:11px}
.target-sq{font-family:var(--serif);font-weight:600;font-size:44px;line-height:1}
.target-sub{color:var(--muted);font-size:14px}
.legs{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.legs th{text-align:left;font-weight:500;color:var(--muted);padding:4px 8px 6px 0}
.legs td{padding:7px 8px 7px 0;border-top:1px solid var(--line)}
.legs td.over{color:var(--signal);font-weight:600}
.legs td.on{color:var(--brass-ink);font-weight:600}
.legs .empty{color:var(--muted)}
.legs .live td{color:var(--muted)}
.legs-wrap{max-height:340px;overflow:auto}
.legs thead th{position:sticky;top:0;background:var(--page)}

/* ---------- Knight Sight ---------- */
.sq.danger::before{background:rgba(229,103,92,.3)}
.sq[data-mk="visited"] .mk::before{content:"";position:absolute;left:50%;top:50%;width:16%;height:16%;translate:-50% -50%;border-radius:50%;background:var(--brass);opacity:.6}
.piece.queen{pointer-events:none;z-index:3;--kc:var(--piece-edge)}

/* ---------- Plan first and Blind (target drills) ---------- */
.trail .walked{stroke:var(--brass);stroke-opacity:.75}
.trail .planned{stroke:var(--ink);stroke-opacity:.85;stroke-dasharray:.16 .12}
.trail .plan-step circle{fill:#0C1714;stroke:var(--ink);stroke-width:.035}
.trail .plan-step text{fill:var(--ink);font:700 .22px var(--sans);text-anchor:middle;dominant-baseline:central}
.piece.vanish{opacity:0;transition-delay:.45s}
