:root{
  --paper:#efe9da; --paper-hi:#f8f4ea;
  --ink:#17161a; --ink-soft:#5d574c;
  --sq-light:#f2ecdf; --sq-dark:#b3a98f;
  --red:#c43a2b; --ochre:#c8901f;
  --hair:rgba(23,22,26,.16); --hair-soft:rgba(23,22,26,.08);
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;
  --chess:"Segoe UI Symbol","Apple Symbols","Noto Sans Symbols 2","DejaVu Sans",sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.55;
  background-image:repeating-linear-gradient(to bottom,transparent 0 31px,var(--hair-soft) 31px 32px)}
h1,h2,h3{letter-spacing:-.02em;line-height:1.12;margin:0}
p{margin:0}
a{color:var(--ink)}
.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:99;background:var(--ink);color:var(--paper);padding:8px 12px}

.topbar{height:6px;background:var(--red)}
.site{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--ink)}
.site__in{display:flex;align-items:center;gap:24px;padding:10px 0;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink)}
.brand__mark{width:27px;height:27px;background:var(--red);color:var(--paper-hi);display:grid;place-items:center;
  font-family:var(--chess);font-size:17px;line-height:1}
.brand__name{font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:.95rem}
.nav{display:flex;gap:18px;margin-left:auto;flex-wrap:wrap}
.nav a{font-size:.83rem;font-weight:600;color:var(--ink-soft);text-decoration:none;padding-bottom:2px;border-bottom:2px solid transparent}
.nav a:hover,.nav a[aria-current]{color:var(--ink);border-bottom-color:var(--red)}

.pagehead{padding:22px 0 14px;border-bottom:1px solid var(--hair)}
.pagehead h1{font-size:clamp(1.35rem,3.2vw,1.9rem);font-weight:800}
.pagehead p{margin-top:6px;color:var(--ink-soft);font-size:.94rem;max-width:70ch}
.crumbs{font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:9px}
.crumbs a{color:var(--ink-soft)}

.resume{display:none;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0 0;
  padding:11px 14px;background:var(--paper-hi);border:1px solid var(--ink)}
.resume.on{display:flex}
.resume p{font-size:.9rem}
.resume button{font:inherit;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  padding:8px 12px;cursor:pointer;border:1px solid var(--ink);background:transparent;color:var(--ink)}
.resume button.go{background:var(--red);border-color:var(--red);color:var(--paper-hi)}

.play{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:clamp(22px,4vw,50px);align-items:start;padding:24px 0 40px}
@media (max-width:960px){.play{grid-template-columns:minmax(0,1fr)}}
.figure{margin:0;width:min(100%,600px)}
.grid{display:grid;grid-template-columns:16px 18px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 18px;gap:0 10px}
.scale{grid-column:1;grid-row:1;position:relative;background:var(--ink);border:1px solid var(--ink)}
.scale__fill{position:absolute;left:0;right:0;bottom:0;height:50%;background:var(--paper-hi);transition:height .4s ease}
.scale__needle{position:absolute;left:-3px;right:-3px;bottom:50%;height:2px;background:var(--red);transition:bottom .4s ease}
.scale__tick{position:absolute;left:0;width:6px;height:1px;background:var(--ochre)}
.ranks,.files{display:grid;font-family:var(--mono);font-size:.64rem;color:var(--ink-soft)}
.ranks{grid-column:2;grid-row:1;grid-template-rows:repeat(8,1fr);place-items:center}
.files{grid-column:3;grid-row:2;grid-template-columns:repeat(8,1fr);place-items:center}
.board{grid-column:3;grid-row:1;position:relative;display:grid;
  grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);
  aspect-ratio:1;outline:2px solid var(--ink);user-select:none;touch-action:manipulation}
.sq{position:relative;display:flex;align-items:center;justify-content:center;font-family:var(--chess);
  font-size:min(7.2vmin,42px);line-height:1;border:0;padding:0;margin:0;cursor:pointer;overflow:hidden;
  background:var(--sq-light);color:var(--ink);-webkit-font-smoothing:antialiased}
.sq.d{background:var(--sq-dark)}
.sq.w{color:var(--paper-hi);-webkit-text-stroke:1.4px var(--ink);paint-order:stroke fill}
.sq:focus-visible{outline:3px solid var(--ochre);outline-offset:-3px;z-index:3}
.sq.prev::before{content:"";position:absolute;inset:0;background:var(--ochre);opacity:.32}
.sq.on::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 3px var(--red)}
.sq.hint{outline:3px dashed var(--red);outline-offset:-3px;z-index:2}
.sq.check{background:var(--red)}
.sq .dot{position:absolute;width:22%;height:22%;border-radius:50%;background:rgba(23,22,26,.3);pointer-events:none}
.sq .ring{position:absolute;inset:7%;border-radius:50%;box-shadow:inset 0 0 0 4px rgba(23,22,26,.28);pointer-events:none}
.caption{margin-top:15px;padding-top:11px;border-top:1px solid var(--hair);font-size:.93rem}
.caption b{font-weight:700}
.foot{margin-top:6px;font-family:var(--mono);font-size:.69rem;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.foot b{color:var(--red);font-weight:400}

.rail{display:flex;flex-direction:column;gap:24px}
@media (min-width:961px){.rail{border-left:1px solid var(--hair);padding-left:clamp(18px,2.4vw,30px)}}
.eyebrow{font-family:var(--mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:9px}
.turn{display:flex;align-items:center;gap:10px;font-size:1.12rem;font-weight:700}
.chip{width:13px;height:13px;flex:none;border:2px solid var(--ink);background:var(--paper-hi)}
.chip.black{background:var(--ink)}
.score{margin-top:5px;font-family:var(--mono);font-size:.75rem;color:var(--ink-soft)}
.taken{margin-top:11px;display:grid;gap:4px;font-family:var(--chess);font-size:1rem;line-height:1.1}
.taken div{display:flex;align-items:center;gap:8px;min-height:19px}
.taken i{font-family:var(--mono);font-size:.59rem;font-style:normal;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);width:50px;flex:none}
.taken u{text-decoration:none;font-family:var(--mono);font-size:.69rem;color:var(--red)}
.taken .glyphs{color:var(--ink-soft)}
.tally{margin-top:11px;padding-top:9px;border-top:1px solid var(--hair);font-family:var(--mono);font-size:.68rem;color:var(--ink-soft)}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:13px}
.field label{font-family:var(--mono);font-size:.61rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.field select{font:inherit;font-size:.89rem;padding:8px 9px;color:var(--ink);background:var(--paper-hi);border:1px solid var(--ink);border-radius:0}
.field select:focus-visible{outline:3px solid var(--ochre);outline-offset:1px}
.acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.acts button{font:inherit;font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:11px 6px;cursor:pointer;border:1px solid var(--ink);border-radius:0;background:transparent;color:var(--ink);
  transition:background .12s,color .12s}
.acts button:hover:not(:disabled){background:var(--ink);color:var(--paper)}
.acts button:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
.acts button:disabled{opacity:.35;cursor:default}
.acts button.go{background:var(--red);border-color:var(--red);color:var(--paper-hi)}
.acts button.go:hover:not(:disabled){background:var(--ink);border-color:var(--ink)}
.sheetbox{max-height:290px;overflow:auto;border-top:1px solid var(--hair)}
.sheet{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.81rem}
.sheet td{padding:5px 4px;border-bottom:1px solid var(--hair)}
.sheet td.n{width:2.4rem;color:var(--ochre)}
.sheet tr.now td{background:rgba(200,144,31,.22)}
.sheet .none{color:var(--ink-soft)}
.promo{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(23,22,26,.84);z-index:6}
.promo.on{display:flex}
.promo>div{display:flex;border:2px solid var(--paper)}
.promo button{font-family:var(--chess);font-size:2rem;line-height:1;width:56px;height:56px;cursor:pointer;
  background:var(--sq-light);border:0;border-right:1px solid var(--ink);color:var(--ink)}
.promo button:last-child{border-right:0}
.promo button:hover{background:var(--ochre)}

.sec{padding:clamp(28px,4vw,46px) 0;border-top:1px solid var(--hair)}
.sec h2{font-size:clamp(1.15rem,2.6vw,1.5rem);font-weight:800;margin-bottom:18px}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,52px)}
@media (max-width:820px){.cols2{grid-template-columns:1fr}}
.prose p+p,.prose ul,.prose h3{margin-top:14px}
.prose{max-width:74ch;font-size:.96rem}
.prose h3{font-size:1.02rem;font-weight:800}
.prose ul{padding-left:20px;color:var(--ink-soft)}
.prose li+li{margin-top:5px}
.prose p{color:var(--ink-soft)}
.prose a{color:var(--ink)}
.levels{width:100%;border-collapse:collapse}
.levels th{font-family:var(--mono);font-size:.61rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);
  text-align:left;padding:0 10px 8px 0;border-bottom:2px solid var(--ink);font-weight:400}
.levels td{padding:10px 10px 10px 0;border-bottom:1px solid var(--hair);font-size:.91rem;vertical-align:top}
.levels td.lv{font-family:var(--mono);font-weight:700;color:var(--red);width:3.2rem}
.levels td.elo{font-family:var(--mono);color:var(--ink-soft);width:6.2rem}
.faq details{border-bottom:1px solid var(--hair);padding:13px 0}
.faq summary{cursor:pointer;font-weight:700;font-size:.98rem;list-style:none;display:flex;gap:12px;align-items:baseline}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--red);font-family:var(--mono);font-weight:400}
.faq details[open] summary::before{content:"\2212"}
.faq p{margin-top:8px;padding-left:24px;color:var(--ink-soft);font-size:.93rem;max-width:70ch}
.readmore{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:760px){.readmore{grid-template-columns:1fr}}
.readmore a{display:block;border-top:2px solid var(--ink);padding-top:11px;text-decoration:none}
.readmore b{display:block;font-size:.98rem;font-weight:800;margin-bottom:4px}
.readmore span{font-size:.88rem;color:var(--ink-soft)}
.readmore a:hover b{color:var(--red)}

.foot-site{background:var(--ink);color:var(--paper);padding:40px 0 26px;margin-top:20px}
.foot-cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:28px}
@media (max-width:860px){.foot-cols{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.foot-cols{grid-template-columns:1fr}}
.foot-site h4{font-family:var(--mono);font-size:.61rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ochre);margin:0 0 11px;font-weight:400}
.foot-site p,.foot-site li{font-size:.85rem;color:rgba(239,233,218,.72)}
.foot-site ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.foot-site a{color:rgba(239,233,218,.72);text-decoration:none;border-bottom:1px solid rgba(239,233,218,.26)}
.foot-site a:hover{color:var(--paper-hi);border-bottom-color:var(--ochre)}
.foot-bottom{margin-top:30px;padding-top:14px;border-top:1px solid rgba(239,233,218,.18);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.63rem;letter-spacing:.05em;color:rgba(239,233,218,.5)}

.err{padding:clamp(40px,9vw,110px) 0;text-align:left}
.err b{display:block;font-family:var(--mono);font-size:4rem;color:var(--red);line-height:1}
.err h1{margin-top:14px;font-size:clamp(1.4rem,3.4vw,2rem);font-weight:800}
.err p{margin-top:12px;max-width:52ch;color:var(--ink-soft)}
.err a{margin-top:20px;display:inline-block;background:var(--red);color:var(--paper-hi);text-decoration:none;
  padding:11px 16px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
