:root,[data-theme=light]{--paper:#f4f0e6;--paper2:#faf7ef;--paper3:#ece6d8;--ink:#2b2721;--soft:#5a5348;--mute:#6f675b;--brass:#8a6a2f;--rule:#e2d8c4;--edge:#ddd3bd;--good:#4f7a4a;--warn:#a8762c;--bad:#b4503c;--shadow:#3c2d1938;--scrim:#2b27216b}[data-theme=dark]{--paper:#25211c;--paper2:#2d2823;--paper3:#36302a;--ink:#d9d1c1;--soft:#b3aa9a;--mute:#948a79;--brass:#c9a45a;--rule:#3b342d;--edge:#433b33;--good:#7fb069;--warn:#d9a441;--bad:#e0655a;--shadow:#00000080;--scrim:#00000080}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.65;transition:background .2s,color .2s}select,button,input{font-family:inherit}.app{max-width:1180px;padding:12px 8px calc(56px + 120px + 16px + env(safe-area-inset-bottom));margin:0 auto}header{margin-bottom:10px}.layout{grid-template-columns:1fr;gap:18px;display:grid}.layout>*{min-width:0}h1{font-family:Georgia,Iowan Old Style,Times New Roman,serif}header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:14px;display:flex;position:relative}h1{letter-spacing:.2px;margin:0;font-size:23px;font-weight:400}h1 em{color:var(--brass);font-style:normal}.controls{flex-wrap:wrap;gap:6px;display:flex}select,button{background:var(--paper2);color:var(--soft);border:1px solid var(--edge);border-radius:2px;min-height:34px;padding:6px 10px;font-size:12.5px}button{cursor:pointer}button.primary{background:var(--brass);border-color:var(--brass);color:var(--paper2);font-weight:600}button:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.boardwrap{width:100%;margin:0 auto;position:relative}.frame{background:var(--frame);box-shadow:0 1px 0 var(--board-edge),0 14px 30px var(--shadow);border-radius:3px;padding:10px}.board{aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:none;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:100%;display:grid;position:relative;box-shadow:inset 0 0 0 1px #00000059,inset 0 2px 10px #00000047}.sq{cursor:pointer;justify-content:center;align-items:center;line-height:1;display:flex;position:relative}.sq.light{background:var(--sq-light)}.sq.dark{background:var(--sq-dark)}.board:after{content:"";z-index:1;pointer-events:none;filter:url(#grain);opacity:var(--grain);mix-blend-mode:multiply;background:#fff;position:absolute;inset:0}.sq.last:after{content:"";background:var(--mark);position:absolute;inset:0}.sq.sel:after{content:"";background:var(--sel);position:absolute;inset:0}.sq.target:after{content:"";background:var(--dot);z-index:2;border-radius:50%;width:26%;height:26%;position:absolute}.sq.target.cap:after{border:4px solid var(--dot);background:0 0;width:88%;height:88%}.sq.danger{box-shadow:inset 0 0 0 3px #b4503c}.sq.check{background:radial-gradient(circle,#b4503cd9 0%,#b4503c59 62%,#0000 78%)}.pc{z-index:3;filter:drop-shadow(0 2px 2px #281c0c66);pointer-events:none;width:82%;height:82%;position:relative}.coord{z-index:4;opacity:.75;pointer-events:none;font-size:9.5px;font-weight:700;position:absolute}.coord.f{bottom:2px;right:3px}.coord.r{top:2px;left:3px}.light .coord{color:var(--coord-on-light)}.dark .coord{color:var(--coord-on-dark)}.arrows{pointer-events:none;z-index:5;width:100%;height:100%;position:absolute;inset:0}.drag-ghost{z-index:60;pointer-events:none;will-change:transform;position:fixed;top:0;left:0}.drag-ghost svg{filter:drop-shadow(0 10px 10px #281c0c73)drop-shadow(0 2px 2px #281c0c4d);width:100%;height:100%;transform:scale(1.12)}body.dragging,body.dragging .sq{cursor:grabbing}.optbtn{background:var(--paper2);height:34px;color:var(--soft);border:1px solid var(--edge);cursor:pointer;border-radius:2px;align-items:center;gap:7px;padding:0 12px;font-size:12.5px;display:inline-flex}.optbtn.on{border-color:var(--brass);color:var(--brass)}.gear{width:15px;height:15px;stroke:var(--brass);fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.headright{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.accountbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.accountbar .acctopt{align-items:center;gap:5px;display:inline-flex}.acctbtn{white-space:nowrap;height:34px;padding:0 12px;font-size:12.5px}.acctwho{text-overflow:ellipsis;white-space:nowrap;max-width:22ch;overflow:hidden}.acctmsg{color:var(--brass)}.optback{z-index:39;position:fixed;inset:0}.optpanel{z-index:40;background:var(--paper2);border:1px solid var(--edge);width:356px;max-width:calc(100vw - 32px);box-shadow:0 18px 40px var(--shadow);border-radius:3px;max-height:calc(100vh - 90px);padding:16px 18px 20px;position:absolute;top:44px;right:0;overflow:auto}.optpanel select,.optpanel button{width:100%;margin-bottom:6px}.optpanel .optrow{gap:6px;display:flex}.optpanel .optrow button{margin-bottom:0}.opthead{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.opthead h2{margin:0;font-size:17px;font-weight:400}.optpanel h3{letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:16px 0 7px;font-size:11px;font-weight:600}.optpanel h3:first-of-type{margin-top:4px}.linkish{color:var(--brass);cursor:pointer;background:0 0;border:none;width:auto;min-height:0;padding:0;font-size:12.5px}.swatches{grid-template-columns:repeat(5,1fr);align-items:start;gap:8px;margin-bottom:12px;display:grid}.setswatches{grid-template-columns:repeat(2,1fr);align-items:start;gap:8px;display:grid}.swatch,.setsw{cursor:pointer;text-align:center;background:0 0;border:none;flex-direction:column;align-items:stretch;width:auto;min-width:0;min-height:0;margin:0;padding:0;display:flex}.swatch .chip{aspect-ratio:1;box-shadow:0 1px 2px var(--shadow);border-radius:2px;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;padding:2px;display:grid;overflow:hidden}.swatch.on .chip{outline:2px solid var(--brass);outline-offset:2px}.setsw .setrow{border:1px solid var(--edge);background:linear-gradient(90deg,var(--sq-light) 50%,var(--sq-dark) 50%);--sq-light:#e8d7b5;--sq-dark:#9c7a52;border-radius:2px;justify-content:center;align-items:center;height:44px;display:flex}.setsw .setrow .pc{width:22px;height:22px}.setsw.on .setrow{border-color:var(--brass);box-shadow:0 0 0 1px var(--brass)}.swname{color:var(--soft);white-space:nowrap;text-overflow:ellipsis;margin-top:6px;margin-left:-4px;margin-right:-4px;font-size:10.5px;display:block;overflow:hidden}.swatch.on .swname,.setsw.on .swname{color:var(--brass);font-weight:600}@media (width<=640px){.optpanel{border:none;border-top:1px solid var(--edge);border-radius:12px 12px 0 0;width:auto;max-width:none;max-height:88vh;padding:18px 16px 28px;position:fixed;inset:auto 0 0;overflow:auto}.optpanel select,.optpanel button{min-height:44px}.optback{background:var(--scrim)}.acctwho{max-width:16ch}}.introback{z-index:70;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.intro{background:var(--paper2);border:1px solid var(--edge);width:100%;max-width:460px;max-height:calc(100vh - 40px);box-shadow:0 24px 60px var(--shadow);border-radius:3px;padding:22px 24px 24px;overflow:auto}.introhead{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.intro h2{margin:0 0 2px;font-size:19px;font-weight:400}.intro p{margin:12px 0 0}.introx{color:var(--mute);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:20px;line-height:1}.introx:hover{color:var(--ink)}.intro #introBtn{width:100%;min-height:40px;margin-top:20px}.status{letter-spacing:.14em;text-transform:uppercase;color:var(--mute);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:12px;font-size:11px;display:flex}.moves{white-space:nowrap;color:var(--soft);scrollbar-width:none;gap:12px;margin:8px 0 0;padding:4px 0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;list-style:none;display:flex;overflow-x:auto}.moves::-webkit-scrollbar{display:none}.moves li{flex:none;align-items:baseline;gap:5px;display:flex}.moves .num{color:var(--mute)}.moves .mv.cur{color:var(--brass);background:var(--paper3);border-radius:2px;padding:0 4px;font-weight:600}@media (width>=900px){.moves{white-space:normal;flex-wrap:wrap;row-gap:2px;max-height:120px;overflow:auto}}.coach{flex-direction:column;display:flex}.note{border-bottom:1px solid var(--rule);margin:0 0 22px;padding:0 0 22px}.note:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.note h3{letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin:0 0 8px;font-size:11px;font-weight:600}.note p{margin:0 0 12px}.note p:last-child{margin-bottom:0}.note ul{margin:8px 0;padding-left:20px}.note li{margin:5px 0}.verdict{border-left:none;padding-left:0}.tag{letter-spacing:.1em;text-transform:uppercase;background:0 0;border-radius:0;margin:0 8px 0 0;padding:0;font-size:12px;font-weight:600;display:inline-block}.tag.good{color:var(--good)}.tag.meh{color:var(--warn)}.tag.bad{color:var(--bad)}.san{color:var(--brass);font-weight:500}.line{color:var(--mute);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;line-height:1.9}.small{color:var(--soft);font-size:13px}.checklist{background:0 0;border:none}.checklist ol{color:var(--soft);margin:6px 0 0;padding-left:18px;font-size:14.5px}.checklist li{margin:6px 0}.section>summary{cursor:pointer;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);align-items:center;gap:7px;font-size:11px;font-weight:600;display:flex}.section>summary::-webkit-details-marker{display:none}.section>summary::marker{content:""}.chev{flex:none;width:10px;height:10px;transition:transform .15s}.section[open]>summary .chev{transform:rotate(90deg)}.sectitle{white-space:nowrap;flex:none}.secsum{text-overflow:ellipsis;white-space:nowrap;letter-spacing:normal;text-transform:none;min-width:0;color:var(--soft);flex:1;font-weight:400;overflow:hidden}.speakbtn{width:auto;min-height:0;color:var(--mute);cursor:pointer;background:0 0;border:none;flex:none;padding:2px}.speakbtn:hover{color:var(--brass)}.speakbtn svg{width:15px;height:15px;display:block}.speakbtn.speaking{color:var(--brass)}@media (prefers-reduced-motion:no-preference){.speakbtn.speaking svg{animation:1s ease-in-out infinite alternate pulse}}@keyframes pulse{0%{opacity:.55}to{opacity:1}}.secbody{padding-top:9px}.reveal{text-align:left;width:auto;min-width:0;min-height:0;color:var(--brass);font:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;margin:0;padding:0;overflow:hidden}.ai{border-left:2px solid var(--rule);margin:10px 0 0;padding-left:14px}.ailabel{color:var(--brass);font-weight:600}.aiwait{color:var(--mute)}.err{border:1px solid var(--edge);color:var(--soft);background:0 0;border-radius:2px;padding:12px 14px}@media (prefers-reduced-motion:no-preference){.note{animation:.25s fade}}@keyframes fade{0%{opacity:0}to{opacity:1}}.playerbar{min-height:28px;color:var(--soft);align-items:center;gap:8px;min-width:0;padding:4px 2px;font-size:13px;display:flex}.playerbar .pname{color:var(--ink);font-weight:600}.playerbar .taken{align-items:center;gap:0;min-width:0;display:inline-flex;overflow:hidden}.playerbar .taken .pc{filter:none;width:16px;height:16px;margin-right:-4px}.playerbar .lead{color:var(--mute);margin-left:6px;font-size:12px}.playerbar.opponent{margin-bottom:6px}.playerbar.player{margin-top:6px}.tabbar{z-index:30;background:var(--paper2);border-top:1px solid var(--edge);height:56px;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar .tab{min-height:0;color:var(--mute);letter-spacing:.04em;background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 0;font-size:11px;display:flex}.tabbar .tab svg{width:22px;height:22px}.tabbar .tab.on{color:var(--brass)}.drawer{left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:25;background:var(--paper2);border-top:1px solid var(--edge);height:85vh;box-shadow:0 -10px 30px var(--shadow);border-radius:12px 12px 0 0;flex-direction:column;transition:transform .25s;display:flex;position:fixed;transform:translateY(calc(85vh - 120px))}.drawer.open{transform:none}.drawer .handle{width:100%;min-height:120px;color:var(--soft);text-align:center;cursor:pointer;touch-action:none;background:0 0;border:none;border-radius:12px 12px 0 0;flex-direction:column;flex:none;align-items:center;gap:8px;padding:10px 16px 12px;font-size:13px;display:flex}.drawer .grip{background:var(--edge);border-radius:2px;width:36px;height:4px}.drawer .headline{-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.drawer .drawerbody{flex:1;min-height:0;padding:0 16px 24px;overflow:auto}@media (width>=900px){.app{padding:34px 40px 44px}header{margin-bottom:22px}.layout{grid-template-columns:minmax(320px,560px) 1fr;align-items:start;gap:52px}.tabbar{background:0 0;border:none;gap:6px;height:auto;margin-top:6px;padding:0;display:inline-flex;position:static}.tabbar .tab{border:1px solid var(--edge);background:var(--paper2);height:34px;color:var(--soft);letter-spacing:0;border-radius:2px;flex-direction:row;flex:none;gap:7px;padding:0 12px;font-size:12.5px}.tabbar .tab svg{width:15px;height:15px}.tabbar .tab.on{border-color:var(--brass);color:var(--brass)}.drawer{height:auto;box-shadow:none;background:0 0;border:none;border-radius:0;transition:none;display:block;position:static;transform:none}.drawer .handle{display:none}.drawer .drawerbody{padding:0;overflow:visible}#reviewPanel{grid-template:"board back""board summary""board graph""board moves""board card"1fr"stepper."/minmax(320px,560px) 1fr;grid-column:1/-1;align-items:start;gap:0 52px;display:grid}#reviewPanel>#reviewBackBtn{grid-area:back}#reviewPanel>.summary{grid-area:summary}#reviewPanel>.evalgraph{grid-area:graph}#reviewPanel>.boardwrap{grid-area:board}#reviewPanel>.stepper{grid-area:stepper}#reviewPanel>ol.moves{grid-area:moves}#reviewPanel>.plycard{grid-area:card}#reviewPanel>#gameList{grid-area:1/1/auto/-1;max-width:720px}}.boardrow{align-items:stretch;gap:6px;display:flex}.boardrow .boardwrap{flex:1;min-width:0}.evalbar{background:#2a2622;border-radius:3px;flex:none;width:10px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #00000059}.evalbar .fill{background:#f0ede6;transition:height .4s;position:absolute;bottom:0;left:0;right:0}.evalbar.black-bottom{background:#f0ede6}.evalbar.black-bottom .fill{background:#2a2622}.evalbar.busy .fill{opacity:.7}:root{--badge-good:#254d24;--badge-warn:#63430f;--badge-bad:#78301f}.badge{z-index:4;color:#fff;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;width:38%;height:38%;font-size:11px;font-weight:700;line-height:1;display:flex;position:absolute;top:-6%;right:-6%;box-shadow:0 0 0 2px #ffffffeb,0 1px 3px #0006}.badge.good{background:var(--badge-good)}.badge.meh{background:var(--badge-warn)}.badge.bad{background:var(--badge-bad)}.badge.inline{vertical-align:middle;width:18px;height:18px;box-shadow:none;color:var(--paper);margin-right:8px;font-size:10px;display:inline-flex;position:static}.badge.inline.good{background:var(--good)}.badge.inline.meh{background:var(--warn)}.badge.inline.bad{background:var(--bad)}.statusline{align-items:center;display:inline-flex}@media (width>=900px){.badge{font-size:13px}}.move-ghost{z-index:50;pointer-events:none;will-change:transform;transition:transform .15s;position:absolute;top:0;left:0}.move-ghost .pc{width:82%;height:82%;margin:9%;display:block}@media (prefers-reduced-motion:reduce){.move-ghost{transition:none}}.evalgraph{border:1px solid var(--edge);background:var(--paper2);cursor:pointer;border-radius:3px;width:100%;height:80px;margin:10px 0;display:block}.evalgraph .area{fill:var(--brass);fill-opacity:.35;stroke:var(--brass);stroke-width:1.2px;vector-effect:non-scaling-stroke}.evalgraph .mid{stroke:var(--rule);stroke-width:1px;vector-effect:non-scaling-stroke}.evalgraph .cursor{stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.evalgraph .mark line{stroke-linecap:round;vector-effect:non-scaling-stroke}.evalgraph .mark .ring{stroke:#fff;stroke-width:8px}.evalgraph .mark .dot{stroke-width:6px}.evalgraph .mark.meh .dot{stroke:var(--warn)}.evalgraph .mark.bad .dot{stroke:var(--bad)}.gamelist{margin:0;padding:0;list-style:none}.gamerow{text-align:left;grid-template-columns:auto 1fr auto;align-items:baseline;gap:4px 12px;width:100%;min-height:0;margin-bottom:6px;padding:10px 12px;display:grid}.gamerow .when{color:var(--mute);font-size:12px}.gamerow .who{color:var(--ink);font-weight:600}.gamerow .res{color:var(--soft);grid-column:2;font-size:12.5px}.gamerow .acc{color:var(--brass);grid-area:1/3;font-weight:600}.gamerow .marks{color:var(--soft);grid-area:2/3;font-size:12px}.summary{color:var(--soft);flex-wrap:wrap;align-items:center;gap:6px 14px;margin:8px 0 4px;font-size:13px;display:flex}.summary .acc{color:var(--ink);font-size:22px;font-weight:600}.summary .count{align-items:center;gap:4px;display:inline-flex}.stepper{justify-content:center;align-items:center;gap:6px;margin:10px 0;display:flex}.stepper button{width:44px;min-height:44px;padding:0}.stepper .plyno{text-align:center;min-width:80px;color:var(--mute);font-size:12.5px}.plycard{min-height:28px;margin:6px 0 12px;font-size:14px}.plycard .tag{margin-right:6px}.moves button.mv{min-height:0;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0 4px}@media (width<=640px){.moves button.mv{padding:4px 6px}}.moves .mv .badge.inline{width:14px;height:14px;margin-right:4px;font-size:8px}#reviewPanel{outline:none}#reviewPanel #board{margin-top:4px}#reviewPanel .board{touch-action:auto}#reviewPanel .sq{cursor:default}
