:root{
  --bg:#F1F3F7; --panel:#FFFFFF; --ink:#151924; --ink-2:#4B5468; --ink-3:#727C91; --line:#D3D9E4; --line-2:#E5E9F0;
  --par:#6532CC; --par-bg:#EDE6FB; --nor-bg:#E3E7EE;
  --y:#FFD328; --g:#1BA457; --o:#FF8718; --b:#2B67DE; --r:#E03636; --w:#FFFFFF; --mute:#3A4152; --mk:#7A2BE0; --lay:#5F6F96;
  --plastic:#161922; --onst:#151924; --hid:#E3E7EE; --hid-line:#9AA4B6; --arrow:#161922; --dot:#FFFFFF; --good:#12804A; --bad:#C92A2A;
  --f-sans:"Rubik",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0F1218; --panel:#171B24; --ink:#E9ECF3; --ink-2:#A6AFC1; --ink-3:#7F899D; --line:#2B3241; --line-2:#202632;
    --par:#BBA5FF; --par-bg:#2B2350; --nor-bg:#252C39;
    --y:#F5CB2B; --g:#22AE61; --o:#FF8F2B; --b:#3F7AEF; --r:#EA4646; --w:#EEF1F6; --mute:#2A303D; --mk:#8A3FF0; --lay:#4B5878;
    --plastic:#05070B; --onst:#151924; --hid:#222935; --hid-line:#5A657A; --arrow:#161922; --dot:#FFFFFF; --good:#3CCB7F; --bad:#FF6B6B;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0F1218; --panel:#171B24; --ink:#E9ECF3; --ink-2:#A6AFC1; --ink-3:#7F899D; --line:#2B3241; --line-2:#202632;
  --par:#BBA5FF; --par-bg:#2B2350; --nor-bg:#252C39;
  --y:#F5CB2B; --g:#22AE61; --o:#FF8F2B; --b:#3F7AEF; --r:#EA4646; --w:#EEF1F6; --mute:#2A303D; --mk:#8A3FF0; --lay:#4B5878;
  --plastic:#05070B; --onst:#151924; --hid:#222935; --hid-line:#5A657A; --arrow:#161922; --dot:#FFFFFF; --good:#3CCB7F; --bad:#FF6B6B;
  color-scheme:dark;
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-sans);font-size:14px}button,a,input{ -webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.4;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--par);outline-offset:4px}a{color:inherit}button{border:0}header{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;border-bottom:1px solid var(--line);background:var(--bg)}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font-size:28px;letter-spacing:-1.4px;font-weight:700}.brand-icon{color:var(--par);font-size:38px;line-height:1}.brand-sub{font-size:10px;letter-spacing:1.8px;font-weight:500;color:var(--ink-3);border-left:1px solid var(--line);margin-left:16px;padding-left:22px}.header-actions{display:flex;align-items:center;gap:18px}.badge{font-size:12px;color:var(--ink-2);display:flex;gap:7px;align-items:center}.dot,.save-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-3);display:inline-block}.badge.connected .dot{background:var(--par)}.badge.connected{color:var(--par)}.connect{background:var(--par);color:var(--bg);border-radius:7px;padding:12px 15px;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600}.connect svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.connect:hover,.primary:hover{background:var(--par)}.icon-button{background:transparent;font-size:22px;color:var(--ink-2);padding:4px 8px}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:calc(100vh - 84px)}aside{border-right:1px solid var(--line);padding:32px 18px;display:flex;flex-direction:column;gap:18px;background:var(--bg)}.aside-heading{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:1.6px;color:var(--ink-3);padding:0 12px}.small-icon{background:transparent;font-size:22px;color:var(--ink-2)}.session-button{background:transparent;border-radius:7px;padding:14px 12px;display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;font-size:12px;color:var(--ink-2);gap:8px;margin-bottom:4px}.session-button span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-button.active{background:var(--par-bg);color:var(--par)}.session-button span:last-child{font-size:10px;color:var(--ink-3)}.session-button:hover{background:var(--nor-bg)}.aside-bottom{margin-top:auto;padding:50px 10px 0;display:flex;flex-direction:column;gap:9px}.aside-bottom p{font-size:10px;color:var(--ink-3);display:flex;gap:7px;align-items:center;margin:0 0 6px}.save-dot{background:var(--good);width:5px;height:5px}.text-button{background:none;padding:3px 0;color:var(--ink-2);font-size:11px;text-align:left}.text-button:hover{color:var(--par)}main{max-width:1200px;width:100%;padding:36px 48px 24px;margin:0 auto}.session-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:30px}.eyebrow{font-size:9px;letter-spacing:2px;color:var(--ink-2);font-weight:600}h1{font-size:26px;font-weight:500;letter-spacing:-.8px;margin:9px 0 0}.subtle{background:var(--panel);border:1px solid var(--line);border-radius:5px;color:var(--ink-2);padding:7px 11px;font-size:11px}.subtle:hover{background:var(--nor-bg)}.scramble-card{border:1px solid var(--line);background:var(--panel);border-radius:9px;padding:20px 24px 15px;min-height:160px}.scramble-heading{display:flex;align-items:center;justify-content:space-between;color:var(--ink-2);font-size:9px;letter-spacing:1.4px;gap:15px}.scramble-heading>div{display:flex;gap:20px}.scramble-heading .text-button{font-size:10px;letter-spacing:0}.scramble-heading span[aria-hidden]{margin-left:5px}#scramble{font-family:var(--f-mono);font-size:17px;letter-spacing:.25px;line-height:1.8;margin:14px 0 8px;color:var(--ink);word-spacing:4px;min-height:61px}#scramble-note{font-size:9px;color:var(--ink-3);margin:0}.timer-area{text-align:center;min-height:300px;padding:42px 0 27px;position:relative;user-select:none;touch-action:manipulation}.timer-area>.eyebrow{font-size:9px;letter-spacing:2px}.timer-face{display:block;margin:4px auto 0;padding:0 20px;background:transparent;color:var(--ink);line-height:1.2;min-width:310px;font-family:var(--f-mono);font-size:clamp(72px,8vw,126px);font-weight:400;letter-spacing:-8px;font-variant-numeric:tabular-nums;touch-action:manipulation}.timer-face.ready{color:var(--par)}.timer-face.holding{color:var(--bad)}#timer-hint{font-size:10px;color:var(--ink-3);margin:16px 0 12px}kbd{font:inherit;background:var(--nor-bg);color:var(--ink-2);padding:3px 6px;border:1px solid var(--line);border-radius:4px;margin:0 3px}.penalties{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;min-height:25px}.penalties>span{font-size:8px;letter-spacing:1px;color:var(--ink-3);margin-right:5px}.penalties button{font-size:10px;padding:4px 10px;background:var(--nor-bg);color:var(--ink-2);border-radius:4px}.penalties button.active{background:var(--par);color:var(--bg)}.penalties .delete-result{background:transparent;color:var(--ink-3);margin-left:5px}.stats{display:grid;grid-template-columns:repeat(5,1fr);border-block:1px solid var(--line);padding:22px 0 24px}.stats>div{padding-left:24px;border-right:1px solid var(--line)}.stats>div:first-child{padding-left:0}.stats>div:last-child{border:0}.stats span{display:block;font-size:8px;letter-spacing:1.4px;color:var(--ink-3)}.stats strong{display:block;margin-top:10px;font-size:24px;letter-spacing:-.8px;font-weight:500;font-variant-numeric:tabular-nums}.stats>div:first-child strong{color:var(--par)}.history{padding-top:29px;min-height:220px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.section-heading h2{font-size:15px;font-weight:500;margin:0}.section-heading>div{display:flex;gap:20px;align-items:center}#history-caption{font-size:10px;color:var(--ink-3)}.empty{text-align:center;padding:26px 0;color:var(--ink-3)}.empty>span{font-size:30px;color:var(--ink-3)}.empty h3{font-size:13px;font-weight:500;color:var(--ink-2);margin:9px 0}.empty p{font-size:11px;line-height:1.8;margin:0;color:var(--ink-3)}.table-wrap{max-height:400px;overflow:auto;margin-top:16px}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:12px}th{font-size:8px;font-weight:500;letter-spacing:1.1px;color:var(--ink-2);text-align:left;padding:10px 14px;border-bottom:1px solid var(--line)}td{padding:11px 14px;border-bottom:1px solid var(--line-2);color:var(--ink-2)}td:nth-child(2){font-size:14px;color:var(--ink)}td:first-child{color:var(--ink-3)}td:last-child{text-align:right}td button{background:none;font:inherit;color:inherit;padding:2px}td .source-tag{font-size:8px;color:var(--par);letter-spacing:.5px;margin-left:8px}.result-row:hover{background:var(--nor-bg)}footer{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:var(--ink-3);border-top:1px solid var(--line);padding-top:17px;margin-top:26px}footer .text-button{font-size:9px}.notice{padding:13px 16px;border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:6px;font-size:12px;line-height:1.6;margin-bottom:18px}#chart:not(:empty){height:115px;margin:18px 0 0}#chart svg{width:100%;height:100%;overflow:visible}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--panel);color:var(--ink);padding:14px 20px;box-shadow:0 6px 30px #0005;border-radius:8px;font-size:12px;z-index:20;max-width:90vw;display:flex;gap:20px;align-items:center}#toast button{background:none;color:var(--par);font-weight:700;text-decoration:underline}dialog{width:min(480px,calc(100vw - 30px));border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:27px;border-radius:13px;box-shadow:0 20px 100px #0009;max-height:90vh}dialog::backdrop{background:#080c07bd;backdrop-filter:blur(5px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:15px}.dialog-heading h2{font-size:21px;font-weight:500;margin:0;letter-spacing:-.5px}.dialog-heading .icon-button{font-size:28px}.setting{display:flex;align-items:center;justify-content:space-between;padding:17px 0;border-bottom:1px solid var(--line);gap:20px}.setting strong{font-size:13px;font-weight:500}.setting p,.dialog-note{font-size:11px;line-height:1.7;color:var(--ink-2)}.setting p{margin:5px 0 0}.setting input{accent-color:var(--par);width:17px;height:17px;cursor:pointer}.primary{border:0;background:var(--par);color:var(--bg);border-radius:6px;padding:11px 24px;font-weight:600;display:block;margin:22px 0 0 auto;font-size:12px}.help-list{padding-left:20px;color:var(--ink-2);font-size:13px;line-height:1.8}.help-list li{margin-bottom:12px}.help-links{display:flex;gap:15px;font-size:10px;color:var(--par);margin-top:18px}#input-label{display:block;font-size:12px;color:var(--ink-2);margin-bottom:9px}#input-value{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:12px;font-size:16px}#input-error{font-size:12px;color:var(--bad)}.solve-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:24px}#solve-info p{font-size:12px;line-height:1.8;color:var(--ink-2)}#solve-info .scramble-detail{font-family:var(--f-mono);color:var(--ink);word-spacing:3px}#solve-info strong{font-size:34px;color:var(--par);font-weight:400}.timing .scramble-card,.timing aside,.timing .history,.timing .stats,.timing .session-heading,.timing footer{opacity:.15;pointer-events:none}.timing .timer-area{color:var(--par)}body.timing #settings,body.timing #connect{pointer-events:none;opacity:.3}[hidden]{display:none!important}@media(min-width:1500px){main{padding-top:48px}.timer-area{padding-top:55px;min-height:340px}}@media(max-width:1000px){header{padding-inline:23px}.shell{grid-template-columns:170px 1fr}main{padding:28px 26px}aside{padding-inline:8px}.brand-sub{display:none}.stats>div{padding-left:13px}.stats strong{font-size:21px}#history-caption{display:none}#scramble{font-size:15px;word-spacing:2px}.timer-face{font-size:100px}}@media(max-width:700px){header{height:70px;padding-inline:17px}.brand{font-size:25px}.header-actions{gap:10px}.badge{display:none}.connect{padding:10px;font-size:10px}.shell{display:block}aside{border-right:0;border-bottom:1px solid var(--line);padding:10px 16px;gap:7px;display:block}.aside-heading{display:none}#sessions{display:flex;gap:5px;overflow:auto}.session-button{width:auto;min-width:110px;padding:9px 12px;margin:0}.aside-bottom{padding:8px 0 0;display:flex;flex-direction:row;gap:18px;justify-content:flex-end}.aside-bottom p{margin:0 auto 0 0;font-size:8px}.aside-bottom .text-button{font-size:9px}main{padding:23px 18px}.session-heading{margin-bottom:20px}h1{font-size:23px}.scramble-card{padding:15px;min-height:170px}.scramble-heading{font-size:8px;align-items:flex-start}.scramble-heading>div{gap:12px;flex-shrink:0}.scramble-heading .text-button{font-size:9px}#scramble{font-size:14px;line-height:1.85}.timer-area{padding-top:32px;min-height:265px}.timer-face{font-size:95px;letter-spacing:-6px;min-width:0}.stats{padding:18px 0}.stats span{font-size:6px;letter-spacing:.8px}.stats strong{font-size:18px}.stats>div{padding-left:9px}#timer-hint{font-size:9px}.history{padding-top:23px}th,td{padding-inline:8px}th:nth-child(5),td:nth-child(5){display:none}.empty{padding-top:28px}.session-heading .subtle{font-size:9px;padding:6px}.eyebrow{font-size:8px}.stats>div:last-child{padding-right:0}footer{font-size:8px}.table-wrap{max-height:350px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Same masthead, typography and controls as the surrounding trainers. */
header{height:auto;min-height:158px;padding:16px 0 26px;background:var(--bg);border-bottom:2px solid var(--ink);gap:24px;align-items:center}
.timer-mast{display:flex;flex-direction:column;gap:14px}.timer-mast .eyebrow{font:12px var(--f-mono);letter-spacing:.14em;color:var(--ink-2)}
.timer-mast h1{font-size:clamp(32px,5.6vw,54px);font-weight:700;letter-spacing:-.02em;line-height:1.12;margin:0}
.timer-mast p{color:var(--ink-2);font-size:17px;line-height:1.55;margin:0}
.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:12px}.connect{background:var(--ink);color:var(--bg);padding:12px 16px;border:1px solid var(--ink);border-radius:7px;font:500 13px var(--f-sans)}
.connect:hover{background:var(--ink-2)}.icon-button{color:var(--ink-2)}.shell{min-height:700px;grid-template-columns:200px minmax(0,1fr)}
aside{padding-top:28px;padding-left:0;padding-right:18px}.aside-heading{font:10px var(--f-mono);letter-spacing:.08em;padding:0 8px}
.session-button{font-size:13px}.aside-bottom{padding-left:5px;padding-right:5px}.aside-bottom p{font-size:11px}.aside-bottom .text-button{font-size:12px}
main{padding:28px 0 20px 28px;max-width:none}.session-heading .eyebrow{font:11px var(--f-mono);letter-spacing:.1em}.session-heading h2{font-size:23px;font-weight:600;margin:9px 0 0}
.subtle{font-size:12px;padding:8px 12px;border-radius:7px;background:var(--panel)}.scramble-heading{font-family:var(--f-mono);font-size:10px;letter-spacing:.08em}
#scramble{font-size:17px;letter-spacing:0;line-height:1.8}#scramble-note{font-size:11px}.text-button{font-size:12px}.scramble-heading .text-button{font-size:12px}
.timer-area{min-height:285px;padding-top:32px}.timer-area>.eyebrow{font:11px var(--f-mono);letter-spacing:.1em}.timer-face{font-size:clamp(78px,8.5vw,116px);letter-spacing:-5px;font-weight:500;line-height:1.25}#timer-hint{font-size:12px;line-height:1.8}
.stats span{font:10px var(--f-mono);letter-spacing:.04em}.stats strong{font:500 25px var(--f-mono);letter-spacing:-1px}.stats>div:first-child strong{color:var(--par)}
.section-heading h2{font-size:22px;font-weight:600}.empty h3{font-size:16px}.empty p{font-size:13px}.empty>span{font-size:32px}.history{padding-top:30px}#history-caption{font-size:11px}
.penalties>span{font:10px var(--f-mono)}.penalties button{font-size:12px}.notice{font-size:13px}.dialog-heading h2{font-weight:600}.primary{background:var(--ink);color:var(--bg)}.primary:hover{background:var(--ink-2)}
footer{font-size:11px}footer .text-button{font-size:11px}#toast{border:1px solid var(--line);font-size:13px;color:var(--ink)}
@media(max-width:850px){header{align-items:flex-start}.timer-mast p{font-size:14px}.header-actions{max-width:190px}.badge{display:none}.shell{grid-template-columns:170px minmax(0,1fr)}main{padding-left:22px}.stats strong{font-size:20px}.stats span{font-size:8px}}
@media(max-width:700px){header{padding-top:6px;min-height:0;padding-bottom:24px;gap:10px}.header-actions{max-width:155px}.connect{font-size:11px;padding:10px}.timer-mast p{max-width:200px}.shell{display:block}aside{padding:15px 0;border-bottom:1px solid var(--line)}main{padding:24px 0}.session-heading{margin-bottom:22px}.session-heading h2{font-size:23px}.session-heading .eyebrow{font-size:9px}.timer-face{font-size:90px;letter-spacing:-5px}.timer-area{min-height:270px;padding-top:32px}.scramble-card{padding:15px}#scramble{font-size:15px}.stats strong{font-size:18px}.stats span{font-size:7px}.scramble-heading{font-size:8px}.scramble-heading .text-button{font-size:10px}.aside-bottom{padding-top:12px}.aside-bottom .text-button{font-size:10px}.aside-bottom p{font-size:9px}.stats>div{padding-left:8px}.section-heading h2{font-size:20px}}

.cleanup-row{display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding-top:16px}.cleanup-row>span{font-size:11px;color:var(--ink-3)}#gan-status{font-size:12px;margin:8px auto;max-width:560px}#input-note-label{display:block;margin:14px 0 8px;font-size:12px;color:var(--ink-2)}#input-note{width:100%;font:inherit;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;color:var(--ink)}.setting input[type=number]{width:85px;min-width:85px;height:auto;padding:8px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:5px}

.manual-check{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-size:12px;margin-top:14px}.manual-check input{accent-color:var(--par)}

.stat-delete{display:block;margin-top:8px;padding:0;background:none;color:var(--ink-3);font:11px var(--f-sans);text-decoration:underline;text-underline-offset:3px}.stat-delete:hover{color:var(--bad)}

.best-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.best-actions .stat-delete{display:inline-block}.best-times{padding:24px 0;border-bottom:1px solid var(--line)}.best-times-note{font-size:11px;color:var(--ink-3)}.best-times-list{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}.best-times-list li{min-width:0}.best-time-entry{display:grid;grid-template-columns:24px 80px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:11px 0;background:transparent;border-bottom:1px solid var(--line-2);text-align:left;color:var(--ink)}.best-time-entry:hover{color:var(--par)}.best-rank,.best-time-number{font:10px var(--f-mono);color:var(--ink-3)}.best-time-entry strong{font:500 17px var(--f-mono)}.best-time-date{font-size:11px;color:var(--ink-2)}.best-time-number{font-size:9px}.best-times>p{font-size:13px;color:var(--ink-2);margin:16px 0 0}@media(max-width:850px){.best-times-list{grid-template-columns:1fr}.best-time-entry{grid-template-columns:24px 90px minmax(0,1fr) auto}.best-times .section-heading{flex-wrap:wrap}.best-actions{gap:10px}}

.timing .best-times{opacity:.15;pointer-events:none}

.chart-toolbar{display:flex;flex-direction:column;gap:10px;padding-top:22px}.chart-range-controls{display:flex;flex-wrap:wrap;gap:6px}.chart-range{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:6px;padding:7px 11px;font:11px var(--f-sans)}.chart-range:hover{border-color:var(--par);color:var(--par)}.chart-range.active{background:var(--par-bg);border-color:var(--par);color:var(--par)}#chart-summary{font-size:11px;color:var(--ink-3)}#chart:not(:empty){height:245px;margin-top:12px;position:relative}.chart-axis{font:10px var(--f-mono);fill:var(--ink-3)}.chart-tooltip{position:absolute;z-index:2;pointer-events:none;max-width:225px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 10px;color:var(--ink);font-size:11px;box-shadow:0 3px 16px #0003;line-height:1.5}.chart-empty{display:flex;align-items:center;justify-content:center;height:100%;margin:0;color:var(--ink-3);font-size:13px;border-bottom:1px solid var(--line)}@media(max-width:700px){.chart-range{font-size:10px;padding:6px 9px}#chart:not(:empty){height:210px}.chart-axis{font-size:11px}}

.slow-times{padding:20px 0;border-bottom:1px solid var(--line)}.slow-times h3{margin:0;font-size:18px;font-weight:500}.slow-times .best-times-list{max-height:380px;overflow-y:auto}.slow-times #over50-more{margin-top:14px}.section-heading #over50-toggle{white-space:nowrap}@media(max-width:700px){.section-heading>div{gap:12px}.section-heading #over50-toggle{font-size:11px}}
