:root{--ink: rgba(244, 236, 224, .82);--ink-soft: rgba(244, 236, 224, .5)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:#0b0907;overflow:hidden;font-family:Geist,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:default}#scene.grab{cursor:grab}#scene.grabbing{cursor:grabbing}#veil{position:fixed;inset:0;background:#0b0907;pointer-events:none;transition:opacity 1.6s ease}#veil.gone{opacity:0}#status{position:fixed;left:0;right:0;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 54px);margin:0;text-align:center;font-size:13px;letter-spacing:.01em;color:var(--ink-soft);pointer-events:none;transition:opacity .6s ease}.glass{position:fixed;color:var(--ink);background:radial-gradient(120% 80% at 20% 0%,#ffffff29,#fff0 55%),linear-gradient(180deg,#fffaf21f,#fffaf20a);-webkit-backdrop-filter:blur(24px) saturate(170%);backdrop-filter:blur(24px) saturate(170%);border:1px solid rgba(255,255,255,.2);box-shadow:inset 0 1px #ffffff6b,inset 0 -1px 1px #ffffff1a,inset 0 0 22px #ffffff0d,0 18px 50px #00000059}#top-right{position:fixed;top:max(20px,env(safe-area-inset-top));right:20px;display:flex;gap:8px;z-index:3}#top-right .glass,#top-left .glass{position:relative}#top-left{position:fixed;top:max(20px,env(safe-area-inset-top));left:20px;display:flex;gap:8px;z-index:3}#menu{height:42px;padding:0 20px;border-radius:999px;font:inherit;font-size:14px;font-weight:500;cursor:pointer;opacity:0;transition:opacity .6s ease,transform .2s ease;z-index:3}#menu.shown{opacity:1}#menu:active{transform:scale(.96)}#menu:focus-visible{outline:2px solid var(--ink);outline-offset:3px}#view-buttons{position:fixed;left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 86px);display:flex;gap:8px;transform:translate(-50%);z-index:3}#recenter,#center{position:relative;height:40px;display:none;align-items:center;gap:8px;padding:0 18px 0 15px;border-radius:999px;font:inherit;font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer}#recenter.shown,#center.shown{display:flex;animation:rise .3s cubic-bezier(.2,.9,.25,1) both}#recenter:active,#center:active{transform:scale(.96)}#center:focus-visible,#recenter:focus-visible{outline:2px solid var(--ink);outline-offset:3px}#scrim{position:fixed;inset:0;background:#0806042e;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:4}#sheet{z-index:5;display:flex;flex-direction:column;gap:14px;padding:18px 20px 20px;border-radius:28px;font-size:14px;opacity:0;pointer-events:none;top:calc(max(20px,env(safe-area-inset-top)) + 54px);right:20px;width:340px;max-height:calc(100dvh - 110px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;transform:translateY(-8px) scale(.98);transform-origin:top right;transition:opacity .28s ease,transform .36s cubic-bezier(.2,.9,.25,1)}body.sheet-open #sheet{opacity:1;pointer-events:auto;transform:none}body.sheet-open #scrim,body.start-open #scrim{opacity:1;pointer-events:auto}body.start-open #scrim{background:#08060452}#start{z-index:6;display:flex;flex-direction:column;gap:16px;top:50%;left:50%;width:340px;max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding:20px;border-radius:28px;font-size:14px;opacity:0;pointer-events:none;transform:translate(-50%,-48%) scale(.98);transition:opacity .3s ease,transform .4s cubic-bezier(.2,.9,.25,1)}body.start-open #start{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}#start:focus{outline:none}body.start-open #status,body.start-open #view-buttons{opacity:0!important;pointer-events:none}#sheet.dragging{transition:none}.panel::-webkit-scrollbar{display:none}.panel>*{flex-shrink:0}.panel .handle{display:none}.panel .section{display:flex;flex-direction:column;gap:12px}.panel .section+.section{padding-top:16px;border-top:1px solid rgba(255,255,255,.12)}.panel h2{display:flex;align-items:center;gap:7px;margin:0 0 -2px;font-size:12.5px;font-weight:500;color:var(--ink-soft)}.panel h2 .icon{opacity:.8}.panel .with-icon{display:inline-flex;align-items:center;gap:10px}.panel .with-icon .icon{color:var(--ink-soft);flex:none}.panel .toggle-row{display:flex;align-items:center;justify-content:space-between;min-height:34px;cursor:pointer}.panel .switch{-webkit-appearance:none;appearance:none;position:relative;width:46px;height:28px;margin:0;border-radius:999px;background:#ffffff29;box-shadow:inset 0 0 0 1px #ffffff1a;transition:background .25s ease;cursor:pointer}.panel .switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:999px;background:linear-gradient(180deg,#fffdf9,#efe8de);box-shadow:0 2px 6px #0000004d;transition:transform .25s cubic-bezier(.2,.9,.25,1)}.panel .switch:checked{background:#f6efe4b3}.panel .switch:checked:after{transform:translate(18px)}.panel .switch:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.panel .row{display:flex;flex-direction:column;gap:6px}.panel .label{display:flex;justify-content:space-between;color:var(--ink)}.panel .value{color:var(--ink-soft)}.panel input[type=range]{--p: 50%;-webkit-appearance:none;appearance:none;width:100%;height:22px;margin:0;background:transparent;cursor:pointer;touch-action:pan-y}.panel input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:999px;background:linear-gradient(90deg,rgba(255,248,236,.85) var(--p),rgba(255,255,255,.16) var(--p))}.panel input[type=range]::-moz-range-track{height:5px;border-radius:999px;background:linear-gradient(90deg,rgba(255,248,236,.85) var(--p),rgba(255,255,255,.16) var(--p))}.panel input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:20px;margin-top:-7.5px;border-radius:999px;background:linear-gradient(180deg,#fffdf9,#efe8de);box-shadow:0 2px 8px #0000004d,inset 0 1px #fff}.panel input[type=range]::-moz-range-thumb{width:30px;height:20px;border:0;border-radius:999px;background:linear-gradient(180deg,#fffdf9,#efe8de);box-shadow:0 2px 8px #0000004d}.panel input[type=range]:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:999px}.panel .nav-row,.panel .option{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:0 2px;color:var(--ink);background:none;text-align:left}.panel .nav-row>span:first-child,.panel .option>span{flex:1}.panel .nav-row svg{color:var(--ink-soft)}.panel .list{display:flex;flex-direction:column}.panel .option+.option{border-top:1px solid rgba(255,255,255,.1)}.panel .option .check{opacity:0;transform:scale(.6);transition:opacity .2s ease,transform .35s cubic-bezier(.3,1.6,.5,1)}.panel .option[aria-selected=true] .check{opacity:1;transform:none}.panel .option .piece{color:var(--ink-soft);transition:color .2s ease,transform .3s cubic-bezier(.3,1.5,.5,1)}.panel .option[aria-selected=true] .piece{color:var(--ink);transform:scale(1.12)}.panel .option{gap:12px}.panel .option:active,.panel .nav-row:active{opacity:.7}.panel button{font:inherit;cursor:pointer;border:0}.panel button.primary,.panel button.quiet{display:inline-flex;align-items:center;justify-content:center;gap:8px}.panel button.primary{padding:12px 18px;border-radius:999px;font-weight:500;color:#14100c;background:#f6efe4;box-shadow:0 6px 18px #00000040,inset 0 1px #fff}.panel button.primary:active{transform:scale(.98)}.panel button.quiet{align-self:center;padding:6px 10px;color:var(--ink-soft);background:none}.panel button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}@media(max-width:699px){#start{top:auto;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));width:auto;border-radius:32px;transform:translateY(105%)}body.start-open #start{transform:none}#sheet{top:auto;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));width:auto;max-height:78dvh;padding-top:8px;border-radius:32px;transform:translateY(105%);transform-origin:bottom center;transition:opacity .2s ease,transform .42s cubic-bezier(.2,.9,.25,1)}.panel .handle{display:block;align-self:center;width:40px;height:5px;margin:2px 0;padding:10px 40px;background:#ffffff59;background-clip:content-box;border-radius:999px;box-sizing:content-box;touch-action:none;cursor:grab}body.sheet-open #status{opacity:0!important}}@media(prefers-reduced-motion:reduce){#sheet,#scrim,#menu{transition-duration:.01s}}.glass{border-color:transparent}.glass:before{content:"";position:absolute;inset:-1px;padding:1px;border-radius:inherit;background:linear-gradient(150deg,#ffffff8c,#ffffff14 35%,#ffffff0a 65%,#ffffff47);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}body.start-open #start>*,body.sheet-open #sheet>*{animation:rise .5s cubic-bezier(.2,.9,.25,1) both}#start>:nth-child(2),#sheet>:nth-child(2){animation-delay:.04s}#start>:nth-child(3),#sheet>:nth-child(3){animation-delay:.08s}#start>:nth-child(4),#sheet>:nth-child(4){animation-delay:.12s}#start>:nth-child(5),#sheet>:nth-child(5){animation-delay:.16s}#start .title{display:flex;align-items:center;justify-content:space-between;margin:2px 0 -2px}#start h1{margin:0;font-size:18px;font-weight:500;letter-spacing:-.01em}#start .close{display:grid;place-items:center;width:30px;height:30px;padding:0;border-radius:999px;color:var(--ink-soft);background:#ffffff14}#start .close[hidden]{display:none}.panel .sides{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.panel .side{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 6px 12px;border-radius:18px;color:var(--ink-soft);background:#ffffff0d;box-shadow:inset 0 0 0 1px #ffffff14;transition:background .25s ease,box-shadow .25s ease,color .25s ease,transform .2s ease}.panel .side .king{transition:transform .35s cubic-bezier(.3,1.5,.5,1);filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}.panel .side[aria-checked=true]{color:var(--ink);background:#ffffff24;box-shadow:inset 0 0 0 1.5px #f6efe48c,0 8px 24px #00000040}.panel .side[aria-checked=true] .king{transform:translateY(-2px) scale(1.08)}.panel .side:active{transform:scale(.97)}.panel .side:focus-visible{outline:2px solid var(--ink);outline-offset:2px}@media(prefers-reduced-motion:reduce){body.start-open #start>*,body.sheet-open #sheet>*{animation:none}.panel .side .king,.panel .option .piece,.panel .option .check{transition:none}}#undo,#hint,#moves{height:42px;border-radius:999px;font:inherit;font-size:14px;font-weight:500;cursor:pointer;opacity:0;transition:opacity .6s ease,transform .2s ease;z-index:3}#undo,#hint{width:42px;display:grid;place-items:center;padding:0}#moves{display:flex;align-items:center;gap:8px;padding:0 18px 0 14px}#undo.shown,#moves.shown,#hint.shown{opacity:1}#undo.shown:disabled,#hint.shown:disabled{opacity:.4;cursor:default}#hint.busy svg{animation:think .9s ease-in-out infinite alternate}@keyframes think{0%{opacity:.45}to{opacity:1}}#undo:not(:disabled):active,#moves:active{transform:scale(.95)}#undo:focus-visible,#moves:focus-visible{outline:2px solid var(--ink);outline-offset:3px}body.history-open #moves{background:#fffaf233}#history{z-index:3;top:calc(max(20px,env(safe-area-inset-top)) + 52px);left:20px;width:248px;padding:10px 8px 10px 14px;border-radius:22px;font-size:14px;opacity:0;pointer-events:none;transform:translateY(-6px) scale(.98);transform-origin:top left;transition:opacity .25s ease,transform .32s cubic-bezier(.2,.9,.25,1)}body.history-open #history{opacity:1;pointer-events:auto;transform:none}#history .empty{margin:6px 0;color:var(--ink-soft)}#history .moves{list-style:none;margin:0;padding:0 6px 0 0;max-height:min(46vh,340px);overflow-y:auto;scrollbar-width:none;font-variant-numeric:tabular-nums}#history .moves::-webkit-scrollbar{display:none}#history .moves li{display:grid;grid-template-columns:2.4em 1fr 1fr;align-items:center;min-height:30px}#history .moves li+li{border-top:1px solid rgba(255,255,255,.07)}#history .n{color:var(--ink-soft)}#history .m{padding:3px 8px;border-radius:8px;justify-self:start}#history .m.last{background:#fffaf229}@media(max-width:699px){#history{width:auto;right:20px}#history .moves{max-height:24vh}}.plate{left:50%;display:flex;align-items:center;gap:10px;height:40px;padding:0 16px 0 10px;border-radius:999px;font-size:14px;color:var(--ink-soft);opacity:0;pointer-events:none;transform:translate(-50%);transition:opacity .6s ease,background .3s ease,color .3s ease;z-index:2}body.plates-shown .plate{opacity:1}#plate-top{top:max(20px,env(safe-area-inset-top))}#plate-bottom{bottom:max(18px,env(safe-area-inset-bottom))}.plate .who{display:grid;place-items:center}.plate .caps{display:inline-flex;align-items:center;gap:1px;min-height:18px}.plate .caps:empty{display:none}.plate .cap{display:inline-flex;align-items:center}.plate .cap.light{color:#f4ece0}.plate .cap.dark{color:#17110c;filter:drop-shadow(0 0 .6px rgba(244,236,224,.9))}.plate .cap .n{margin:0 4px 0 -1px;font-size:11px;color:var(--ink-soft)}.plate .lead{font-size:12.5px}.plate .lead:empty{display:none}.plate .time{min-width:3.4em;text-align:right;font-weight:500;font-variant-numeric:tabular-nums}.plate.active{color:var(--ink);background:#fffaf233}.plate.low .time{color:#ffc29e}.plate.flagged .time{color:#ff9a8a}@media(max-width:699px){#plate-top{top:calc(max(20px,env(safe-area-inset-top)) + 54px)}}#evalbar{right:20px;top:50%;width:12px;height:min(44vh,360px);padding:0;border-radius:999px;opacity:0;pointer-events:none;transform:translateY(-50%);transition:opacity .4s ease;z-index:2}body.coach-on.plates-shown #evalbar,body.stepping #evalbar{opacity:1}#evalbar .fill{position:absolute;left:0;right:0;bottom:0;height:50%;background:linear-gradient(180deg,#fbf4e8,#e9dcc4);transition:height .6s cubic-bezier(.2,.9,.25,1)}#evalbar .score{position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}#evalbar .fill{border-radius:999px}.plate .rating{display:none;align-items:center;gap:6px;font-size:13px;font-weight:500;white-space:nowrap}.plate.rated .rating{display:inline-flex;animation:rise .35s cubic-bezier(.2,.9,.25,1) both}.plate .rating:before{content:"";width:8px;height:8px;border-radius:999px;background:currentColor}.plate .rating[data-tone=best]{color:#9fd39a}.plate .rating[data-tone=great]{color:#b6dca0}.plate .rating[data-tone=good]{color:#d6dea8}.plate .rating[data-tone=inaccuracy]{color:#f2d27a}.plate .rating[data-tone=mistake]{color:#f2a65a}.plate .rating[data-tone=blunder]{color:#ef7a68}body.review-open #scrim{opacity:1;pointer-events:auto;background:#08060452}#review{z-index:6;display:flex;flex-direction:column;gap:16px;top:50%;left:50%;width:360px;max-height:calc(100dvh - 40px);overflow-y:auto;scrollbar-width:none;padding:20px;border-radius:28px;font-size:14px;opacity:0;pointer-events:none;transform:translate(-50%,-48%) scale(.98);transition:opacity .3s ease,transform .4s cubic-bezier(.2,.9,.25,1)}body.review-open #review{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}body.review-open #review>*{animation:rise .5s cubic-bezier(.2,.9,.25,1) both}#review .title h1{margin:2px 0 0;font-size:19px;font-weight:500;letter-spacing:-.01em}#review .working{margin:-6px 0 0;color:var(--ink-soft)}#review .progress{height:5px;border-radius:999px;background:#ffffff1f;overflow:hidden}#review .progress-fill{width:0;height:100%;border-radius:inherit;background:#f6efe4;transition:width .3s ease}#review .accuracy{display:grid;grid-template-columns:1fr 1fr;gap:8px}#review .score-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;padding:12px;border-radius:18px;background:#ffffff0f;box-shadow:inset 0 0 0 1px #ffffff14}#review .score-card .king{grid-row:span 2}#review .acc{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}#review .who-name{color:var(--ink-soft);font-size:12.5px}#review .graph-wrap{margin-top:4px;border-radius:12px;overflow:hidden;background:#17110c8c}#review .graph{display:block;width:100%;height:64px}#review .tally{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}#review .tally-row{display:flex;align-items:center;gap:8px;min-height:26px}#review .t-name{flex:1}#review .t-n{font-variant-numeric:tabular-nums;color:var(--ink-soft)}#review .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.panel button.secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 14px;border-radius:999px;font-weight:500;color:var(--ink);background:#ffffff1a;box-shadow:inset 0 0 0 1px #ffffff24}.panel button.quiet.left{align-self:flex-start;padding-left:0}.dot{width:9px;height:9px;border-radius:999px;flex:none;background:currentColor}.dot.best{color:#9fd39a}.dot.great{color:#b6dca0}.dot.good{color:#d6dea8}.dot.inaccuracy{color:#f2d27a}.dot.mistake{color:#f2a65a}.dot.blunder{color:#ef7a68}#review-bar{left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 54px);display:flex;align-items:center;gap:6px;height:46px;padding:0 6px;border-radius:999px;font-size:14px;opacity:0;pointer-events:none;transform:translate(-50%) translateY(6px);transition:opacity .3s ease,transform .3s ease;z-index:3}body.stepping #review-bar{opacity:1;pointer-events:auto;transform:translate(-50%)}#review-bar button{font:inherit;border:0;cursor:pointer;color:var(--ink)}#review-bar .glass-btn{display:grid;place-items:center;width:36px;height:36px;border-radius:999px;background:#ffffff1a}#review-bar .glass-btn:disabled{opacity:.35;cursor:default}#review-bar .step-label{display:inline-flex;align-items:center;gap:7px;min-width:150px;justify-content:center;white-space:nowrap}#review-bar .step-label .num{font-weight:500;font-variant-numeric:tabular-nums}#review-bar .done{padding:0 14px;height:36px;border-radius:999px;background:#f6efe4;color:#14100c!important;font-weight:500}body.stepping #top-left,body.stepping #view-buttons{opacity:0!important;pointer-events:none}@media(max-width:699px){#review{top:auto;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));width:auto;border-radius:32px;transform:translateY(105%)}body.review-open #review{transform:none}#review-bar .step-label{min-width:120px}}#end-banner{left:50%;top:max(19%,calc(env(safe-area-inset-top) + 150px));display:flex;flex-direction:column;align-items:center;gap:4px;padding:18px 34px 16px;border-radius:26px;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.92);transition:opacity .45s ease,transform .6s cubic-bezier(.2,1.2,.3,1);z-index:5}body.ended #end-banner{opacity:1;transform:translate(-50%,-50%)}#end-banner strong{font-size:30px;font-weight:500;letter-spacing:-.02em;color:var(--ink)}#end-banner span{font-size:14px;color:var(--ink-soft)}#end-banner[data-tone=win] span{color:#b6dca0}#end-banner[data-tone=loss] span{color:#f2a68f}#end-banner[data-tone=win]{box-shadow:inset 0 1px #ffffff6b,0 18px 50px #00000059,0 0 60px #b6dca02e}@media(prefers-reduced-motion:reduce){#end-banner{transition:opacity .3s ease}}
