:root{--ink:#17201e;--muted:#61706a;--paper:#f3f4ef;--line:#cbd0c8;--green:#1e5c4d;--lime:#c9e765;--dark:#102b25;--warm:#e8e1d4}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 Manrope,Arial,sans-serif}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1240px)/2));background:rgba(243,244,239,.94);position:sticky;top:0;z-index:2;backdrop-filter:blur(12px)}.brand{font-weight:800;color:var(--ink);text-decoration:none;letter-spacing:-.06em;font-size:1.22rem;display:flex;gap:9px;align-items:center}.brand-mark{width:27px;height:27px;background:var(--green);color:var(--lime);display:grid;place-items:center;border-radius:50%;font:500 .85rem 'DM Mono',monospace;letter-spacing:0}nav{display:flex;gap:28px;margin-left:auto;margin-right:34px}nav a{color:var(--muted);text-decoration:none;font-size:.88rem;font-weight:700}.ghost,.filter,.text-button,.icon-button{font:700 .82rem Manrope,sans-serif;border:1px solid var(--line);background:transparent;color:var(--ink);padding:10px 14px;border-radius:5px;cursor:pointer}.ghost:hover,.filter:hover{border-color:var(--green);color:var(--green)}main{max-width:1240px;margin:auto;padding:76px 24px 48px}.intro{max-width:740px;margin-bottom:50px}.eyebrow{font:500 .72rem 'DM Mono',monospace;letter-spacing:.08em;color:var(--green);margin:0 0 12px}h1{font-size:clamp(2.7rem,7vw,5.8rem);line-height:.98;letter-spacing:-.07em;margin:0;font-weight:800}h1 em{font-family:Georgia,serif;font-weight:400;letter-spacing:-.06em;color:var(--green)}.lede{color:var(--muted);font-size:1.06rem;max-width:580px;margin:25px 0 0}.research{background:var(--dark);padding:22px;border-radius:10px}.searchbar{display:flex;gap:12px;align-items:center}.search-label{font:500 .72rem 'DM Mono',monospace;letter-spacing:.08em;color:var(--lime)}input{flex:1;background:transparent;border:0;border-bottom:1px solid #547168;color:#fff;font:500 1rem Manrope,sans-serif;padding:12px 4px;outline:none}input::placeholder{color:#a9bab4}.primary{background:var(--lime);color:var(--dark);border:0;padding:12px 17px;border-radius:5px;font:800 .85rem Manrope,sans-serif;cursor:pointer}.primary span{padding-left:13px;color:#4b644f}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:19px}.filter{border-color:#466159;color:#d9e5df;padding:7px 11px;font-size:.75rem}.filter.active{background:#335e53;border-color:#335e53;color:var(--lime)}.results-wrap{margin-top:30px}.result-head{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.85rem;margin-bottom:12px}.result-head strong{color:var(--ink)}.text-button{padding:0;border:0;color:var(--green)}.workbench{display:grid;grid-template-columns:minmax(290px,.84fr) minmax(0,1.6fr);border:1px solid var(--line);background:#f9faf6}.game-list{border-right:1px solid var(--line);max-height:570px;overflow:auto}.game{padding:18px 19px;border-bottom:1px solid var(--line);cursor:pointer;transition:.15s}.game:hover,.game.selected{background:#e5ecdc}.game-title{font-size:.91rem;font-weight:800;letter-spacing:-.03em;display:flex;justify-content:space-between}.game-sub{font:500 .75rem 'DM Mono',monospace;color:var(--muted);margin-top:5px}.game-tag{margin-top:12px;font-size:.72rem;color:var(--green);font-weight:700}.game-detail{padding:24px 28px}.detail-top{display:flex;justify-content:space-between;color:var(--green);font:500 .76rem 'DM Mono',monospace}.icon-button{font-size:1.25rem;border:0;padding:0}.game-detail h2{font-size:1.7rem;letter-spacing:-.06em;margin:7px 0 0}.game-meta{color:var(--muted);margin:3px 0 24px;font-size:.86rem}.board-row{display:flex;gap:22px;align-items:center}.board{width:min(360px,55%);aspect-ratio:1;display:grid;grid-template-columns:repeat(8,1fr);box-shadow:0 5px 19px #12241c22}.square{display:grid;place-items:center;font-size:clamp(1.1rem,3.1vw,2rem);font-family:Georgia,serif}.light{background:#eddfc7}.dark{background:#7b9d72}.position-info{max-width:210px}.position-info strong{font:700 1.25rem 'DM Mono',monospace;letter-spacing:-.08em}.position-info p{font-size:.8rem;color:var(--muted);margin:8px 0}.moves{font:500 .8rem 'DM Mono',monospace;line-height:2;color:#42554e;margin-top:22px;border-top:1px solid var(--line);padding-top:12px}.moves b{color:var(--ink)}.detail-actions{margin-top:18px;display:flex;gap:8px}.stats{margin-top:62px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr)}.stats div{padding:28px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:.78rem}.stats div:last-child{border:0}.stat-number{font:800 2rem Manrope,sans-serif;letter-spacing:-.08em;color:var(--green)}footer{max-width:1240px;margin:auto;border-top:1px solid var(--line);padding:23px 24px;color:var(--muted);display:flex;justify-content:space-between;font:500 .72rem 'DM Mono',monospace}@media(max-width:700px){.topbar{height:64px}.topbar nav{display:none}main{padding:45px 16px}.intro{margin-bottom:34px}.searchbar{flex-wrap:wrap}.search-label{width:100%}input{min-width:0}.workbench{grid-template-columns:1fr}.game-list{border-right:0;max-height:280px}.game-detail{padding:21px}.board-row{align-items:flex-start}.board{width:60%}.position-info{width:40%}.stats{grid-template-columns:1fr}.stats div{border-right:0;border-bottom:1px solid var(--line)}.stats div:last-child{border:0}footer{padding:20px 16px}.topbar{padding:0 16px}}
 .source-note{margin-top:62px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px 0;max-width:800px}.source-note h2{font-size:1.45rem;letter-spacing:-.05em;margin:0}.source-note p:not(.eyebrow){color:var(--muted);max-width:690px}.source-note a{color:var(--green);font-size:.85rem;font-weight:800}
/* Product polish: a calm, repeatable rhythm across the workbench. */
:root{--radius-sm:6px;--radius-md:10px;--focus:#176899;--shadow-soft:0 12px 32px rgba(16,43,37,.08)}
button,select,input,textarea{font:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
button:disabled{cursor:not-allowed}
main{padding-top:40px}.intro{max-width:900px;margin-bottom:28px}.intro h1{font-size:clamp(2.5rem,6vw,4.8rem)}.lede{margin-top:16px}.data-status{margin:10px 0 0;color:var(--muted);font:500 .74rem 'DM Mono',monospace}
.research{padding:18px 20px;border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.searchbar{gap:14px}.searchbar input{min-width:180px}
.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 14px;margin-top:16px;padding-top:16px;border-top:1px solid #35594f}.filter-grid label,.position-search label,.material-toolbar label,.setup-toolbar label,.tool-dialog>label{display:flex;flex-direction:column;gap:4px;color:#d9e5df;font-size:.74rem;font-weight:700}.filter-grid label.check,.position-search label.check,.material-toolbar label.check,.setup-toolbar label.check,.tool-dialog label.check{flex-direction:row;align-items:center;gap:7px}.filter-grid input,.filter-grid select{width:100%;min-width:0;padding:7px 4px;font-size:.84rem}.filter-grid select{border:0;border-bottom:1px solid #547168;background:transparent;color:#fff}.filters{margin-top:14px}
.results-wrap{margin-top:24px}.result-head{min-height:32px}.result-head p{margin:0}.result-actions{display:flex;gap:14px;flex-wrap:wrap}.workbench{border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-soft)}.library,.game-list{background:#f7f8f4}.game{padding:14px 16px}.game.selected{box-shadow:inset 3px 0 0 var(--green)}.game-title{font-size:.86rem}.game-sub{font-size:.7rem}.game-tag{margin-top:8px;font-size:.68rem}.game-detail{background:#fbfcf8}.detail-top{align-items:center}.read-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#e8f1e4;color:var(--green);font:700 .65rem 'DM Mono',monospace;white-space:nowrap}.board-stage{gap:10px}.position-info{padding:8px 0 0}.tools-bar{border-top:1px solid var(--line);padding-top:8px}.tool-btn{border-radius:999px}.stats{margin-top:34px}.tool-dialog{box-shadow:0 18px 55px rgba(16,43,37,.2)}
@media(max-width:1100px){.filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){main{padding-top:28px}.intro h1{font-size:clamp(2.35rem,14vw,3.6rem)}.research{padding:16px}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px}.searchbar .primary{width:100%}.result-head{align-items:flex-start;gap:10px;flex-direction:column}.result-actions{gap:10px}.game-detail{padding:16px}.board-stage{gap:7px}.tools-bar{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.tool-btn{flex:none}}
@media(max-width:430px){.filter-grid{grid-template-columns:1fr}.board-stage{grid-template-columns:12px minmax(0,1fr)!important}.eval-bar{grid-column:1;grid-row:1}.board-shell{grid-column:2;grid-row:1}.notation-box,.engine-box{grid-column:1/-1}.board-stage .position-info{grid-column:1/-1}.library-head{padding-left:12px;padding-right:12px}}
.topbar{height:60px}.intro{display:grid;grid-template-columns:minmax(330px,.8fr) minmax(300px,1.2fr);column-gap:30px;align-items:end;margin-bottom:14px}.intro .eyebrow{grid-column:1/-1;margin-bottom:3px}.intro h1{font-size:clamp(1.8rem,3vw,2.5rem);white-space:nowrap}.intro h1 br{display:none}.intro h1 em{margin-left:.18em}.intro .lede{margin:0;font-size:.9rem;line-height:1.4}.intro .data-status{grid-column:2;margin-top:4px;font-size:.67rem}.research{padding:12px 16px}.search-filters{margin-top:8px;border-top:1px solid #35594f}.search-filters>summary{display:flex;align-items:center;gap:10px;padding-top:8px;color:#fff;cursor:pointer;font-weight:800}.search-filters>summary span{color:#9fb7af;font-size:.74rem;font-weight:500}.search-filters .filter-grid{border-top:0;padding-top:12px}.results-wrap{margin-top:12px}.result-head{margin-bottom:8px}
@media(max-width:700px){.intro{display:block}.intro .lede{margin-top:10px}.intro .data-status{margin-top:8px}.search-filters>summary span{display:none}}
main{padding-top:16px}
@media(min-width:1051px){.intro{grid-template-columns:minmax(520px,.9fr) minmax(420px,1.1fr)}}
@media(max-width:1050px){.intro{display:block}.intro .lede{margin-top:8px}.intro .data-status{margin-top:5px}}
