:root{--bg:#0f1020;--surface:#191b30;--border:#2c2f4d;--text:#eef0ff;--muted:#9da2c4;--accent:#c8f031;--on-accent:#141a00;--good:#5ee6a8;--warn:#f5b041;--bad:#e5534b;--series-1:#3987e5;--series-2:#d95926;--grid:#232640;--logo-motion:#8b87f0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--tabbar-h:64px;--safe-bottom:env(safe-area-inset-bottom,0px);--sticky-top:0px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:10px 16px}button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}button.ghost{background:#00000059}button.big{width:100%;margin-top:24px;padding:16px;font-size:1.15rem}.page{max-width:560px;margin:0 auto;padding:32px 16px 48px}.page h1{margin:0 0 8px;font-size:2rem}.page h2{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:28px 0 10px;font-size:1rem}.lede{color:var(--muted);margin:0;line-height:1.5}.donate{margin-top:var(--space-4)}.row{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.choices{gap:10px;display:grid}.choice{text-align:left;gap:4px;padding:14px 16px;display:grid}.choice span{color:var(--muted);font-size:.9rem}.choice.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.build{gap:4px;margin:14px 0;display:grid}.build span{color:var(--muted);font-size:.9rem}.segmented{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:6px;display:grid}.segmented button{padding:10px 6px;font-size:.9rem}.segmented button.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.toggle{align-items:center;gap:10px;margin:10px 0;display:flex}select{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 8px}.disclaimer{color:var(--muted);text-align:center;margin-top:16px;font-size:.85rem}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:20px 0;display:grid}.stats div{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:12px;align-content:center;justify-items:center;padding:16px 8px;display:grid}.stats b{font-size:2rem}.stats span{color:var(--muted)}.faults{gap:8px;margin:0;padding:0;list-style:none;display:grid}.faults li{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:space-between;padding:12px 14px;display:flex}.hint.small{color:var(--muted);font-size:.85rem}button.danger{color:var(--bad)}button:disabled{opacity:.5;cursor:default}.title-row{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.title-row h1{margin:0}.title-row button{border-radius:999px;flex:none;padding:7px 14px;font-size:.9rem}.since-last{color:var(--muted);margin:8px 0 0}.since-last b{color:var(--text)}.since-last .up{color:var(--good)}.since-last .down{color:var(--warn)}.account{gap:10px;line-height:1.5;display:grid}.account p{margin:0}.row.tight{margin-top:0}.history{gap:8px;margin:0;padding:0;list-style:none;display:grid}.history button{text-align:left;gap:2px;width:100%;padding:12px 14px;display:grid}.history .when{color:var(--muted);font-size:.85rem}.history button span:last-child{color:var(--muted);font-size:.9rem}.bronze{--tier:#c98a4b}.silver{--tier:#c3cad6}.gold{--tier:#f2c94c}.platinum{--tier:#8fe3f0}.title-row.section{margin:28px 0 10px}.title-row.section h2{margin:0}.level-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:14px;margin:20px 0 0;padding:14px 16px;display:flex}.level-num{border:3px solid var(--accent);text-align:center;border-radius:50%;flex:none;place-content:center;width:64px;height:64px;line-height:1;display:grid}.level-num b{font-size:1.6rem}.level-num span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.level-info{flex:1;gap:6px;min-width:0;display:grid}.level-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.level-head b{font-size:1.15rem}.level-head span{color:var(--muted);font-size:.85rem}.xp-bar,.meter{background:var(--border);border-radius:999px;height:8px;display:block;overflow:hidden}.xp-bar i,.meter i{border-radius:inherit;background:var(--accent);height:100%;display:block}.xp-bar i{transition:width 1.2s cubic-bezier(.2,.8,.2,1)}.meter{width:100%;height:4px}.meter i{background:var(--muted)}.badges{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.badges+.hint.small,.badges+.badges{margin-top:12px}.hint.small+.badges{margin-top:6px}.badge{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;align-content:start;justify-items:center;gap:4px;min-width:0;padding:10px 6px;display:grid}.badge b{overflow-wrap:anywhere;font-size:.8rem;font-weight:600;line-height:1.2}.badge small{color:var(--muted);font-size:.7rem}.badge-ring{border:3px solid var(--tier);background:radial-gradient(circle, color-mix(in srgb, var(--tier) 22%, transparent), transparent 70%);border-radius:50%;place-content:center;width:48px;height:48px;font-size:1.5rem;line-height:1;display:grid}.badge-ring.big{border-width:4px;width:84px;height:84px;font-size:2.6rem}.badge.locked b{color:var(--muted)}.badge.locked .badge-ring,.badge-ring.locked{filter:grayscale();opacity:.4}.sheet-backdrop{z-index:10;background:#0009;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border:1px solid var(--border);width:100%;max-width:560px;padding:24px 16px max(24px, env(safe-area-inset-bottom));text-align:center;border-bottom:0;border-radius:16px 16px 0 0;justify-items:center;gap:8px;display:grid}.sheet h2{margin:6px 0 0;font-size:1.3rem}.sheet p{margin:0;line-height:1.45}.sheet .meter{max-width:240px;height:6px}.sheet .row{justify-content:center;margin-top:8px}.tier-line{color:var(--muted);font-size:.85rem}.set-progress{background:var(--surface);border:1px solid var(--border);border-radius:12px;gap:8px;margin-top:16px;padding:14px 16px;display:grid}.set-progress .level-head b{color:var(--accent)}.level-up{color:var(--accent);margin:0;font-size:1.25rem;font-weight:700;animation:.5s ease-out .6s both pop}@keyframes pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.xp-bar i{transition:none}.level-up{animation:none}}.insights{gap:8px;margin:0;padding:0;list-style:none;display:grid}.insights li{align-items:flex-start;gap:10px;line-height:1.45;display:flex}.insights i{border-radius:50%;flex:none;place-content:center;width:1.4em;height:1.4em;margin-top:1px;font:700 .8rem system-ui;display:grid}.insights .warn i{background:var(--warn);color:#241600}.insights .good i{background:var(--good);color:#04241a}.insights .info i{background:var(--border);color:var(--text)}.coach{background:var(--surface);border:1px solid var(--border);border-radius:12px;gap:10px;padding:16px;line-height:1.5;display:grid}.coach p{margin:0}.coach button:disabled{opacity:.5;cursor:default}.coach-headline{font-size:1.15rem;font-weight:600}.fix{border-top:1px solid var(--border);gap:4px;padding-top:10px;display:grid}.tag{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:8px;font-size:.75rem;display:inline-block}.error{color:var(--bad)}.chart{margin:0 0 22px}.chart figcaption{gap:2px;margin-bottom:8px;display:grid}.chart figcaption span{color:var(--muted);font-size:.85rem}.chart-body{width:100%;position:relative}.chart svg{touch-action:pan-y;display:block;overflow:visible}.chart text{fill:var(--muted);font-size:11px}.chart .grid{stroke:var(--grid);stroke-width:1px}.chart .band{fill:#ffffff0b}.chart .band-label.warn,.chart .flag{fill:var(--warn);font-weight:700}.chart .ref line{stroke:var(--muted);stroke-width:1px}.chart .ref text{paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}.chart .ref.warn line{stroke:var(--warn)}.chart .fault-zone{fill:var(--warn);opacity:.07}.chart .series-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .series-line.s1{stroke:var(--series-1)}.chart .series-line.faint{opacity:.45}.chart .dot{stroke:var(--bg);stroke-width:2px}.chart .dot.s1{fill:var(--series-1)}.chart .dot.flagged{fill:var(--warn)}.chart .crosshair{stroke:var(--muted);stroke-width:1px}.chart .bar.s1{fill:var(--series-1)}.chart .bar.s2{fill:var(--series-2)}.legend{gap:14px;margin-bottom:6px;font-size:.85rem;display:flex}.legend span{align-items:center;gap:6px;display:flex}.swatch{border-radius:3px;width:10px;height:10px;display:inline-block}.swatch.s1{background:var(--series-1)}.swatch.s2{background:var(--series-2)}.tooltip{border:1px solid var(--border);white-space:nowrap;pointer-events:none;background:#090a16;border-radius:8px;padding:6px 10px;font-size:.85rem;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.chart .cursor{stroke:var(--accent);stroke-width:2px;pointer-events:none}.clickable{cursor:pointer}.rep-table tr.clickable:hover td{background:#ffffff0a}.faults li>button{text-align:left;background:0 0;border:0;flex:1;justify-content:space-between;gap:12px;margin:-12px -14px;padding:12px 14px;display:flex}.faults small{color:var(--accent);margin-left:8px;font-weight:500}.replay-section{scroll-margin-top:12px}.replay{gap:10px;display:grid}.replay-view{background:#000;border-radius:12px;width:100%;max-height:70vh;position:relative;overflow:hidden}.replay-hud{pointer-events:none;justify-content:space-between;gap:8px;padding:10px;display:flex;position:absolute;top:0;left:0;right:0}.timeline{background:var(--surface);border:1px solid var(--border);cursor:pointer;touch-action:none;border-radius:8px;height:30px;position:relative;overflow:hidden}.timeline:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.timeline .seg{opacity:.6;border-radius:4px;position:absolute;top:7px;bottom:7px}.timeline .seg.good{background:var(--good)}.timeline .seg.warn{background:var(--warn)}.timeline .seg.bad{background:var(--bad)}.timeline .seg.active{opacity:1;box-shadow:0 0 0 2px var(--text)}.timeline .seg i{background:#00000059;border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:2px;bottom:2px}.timeline .unrecorded{background:repeating-linear-gradient(45deg,#0000 0 4px,#ffffff12 4px 8px);position:absolute;top:0;bottom:0;right:0}.timeline .playhead{background:var(--accent);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.replay-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.replay-controls button{min-width:44px;padding:8px 12px}.replay-time{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.9rem}.replay-options{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.replay-options .toggle{margin:0}.segmented.speeds{grid-template-columns:repeat(3,auto);margin:0}.rep-chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font-variant-numeric:tabular-nums;border-radius:999px;min-width:36px;padding:4px 10px;font-size:.85rem}.chip.good{color:var(--good)}.chip.warn{color:var(--warn)}.chip.bad{color:var(--bad)}.chip.active{border-color:currentColor;box-shadow:inset 0 0 0 1px}.rep-table summary{cursor:pointer;color:var(--muted)}.table-scroll{margin-top:10px;overflow-x:auto}.rep-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.85rem}.rep-table th,.rep-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}.rep-table th{color:var(--muted);font-weight:500}.live{background:#000;position:fixed;inset:0;overflow:hidden}.stage{position:absolute;inset:0;transform:scaleX(-1)}.stage video,.stage canvas{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.hud-top,.hud-bottom{padding:16px;padding-top:max(16px, env(safe-area-inset-top));gap:12px;display:flex;position:absolute;left:0;right:0}.hud-top{justify-content:space-between;align-items:flex-start;top:0}.hud-bottom{padding-bottom:max(16px, env(safe-area-inset-bottom));flex-direction:column;align-items:flex-start;bottom:0}.hud-right{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.reps{background:#0000008c;border-radius:14px;padding:8px 16px;display:grid}.reps-count{font-size:3rem;font-weight:700;line-height:1}.reps-label{color:var(--muted);font-size:.85rem}.pill{background:#0000008c;border-radius:999px;padding:6px 12px;font-size:.9rem}.pill.good{color:var(--good)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}.metrics{background:#0000008c;border-radius:8px;padding:6px 10px;font:.8rem ui-monospace,monospace}.controls{justify-content:flex-end;gap:10px;width:100%;display:flex}.cue{text-align:center;background:#000000b3;border-radius:14px;max-width:calc(100% - 32px);padding:14px 22px;font-size:clamp(1.3rem,4vw,2rem);font-weight:700;position:absolute;bottom:140px;left:50%;transform:translate(-50%)}.cue.good{color:var(--good)}.cue.warn{color:var(--warn)}.overlay-msg{text-align:center;background:#0009;place-content:center;padding:16px;display:grid;position:absolute;inset:0}.hint{color:var(--muted)}.hint.floating{text-align:center;background:#0000008c;border-radius:10px;margin:0;padding:10px;position:absolute;top:120px;left:16px;right:16px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent)}a.button{text-align:center;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:10px 16px;text-decoration:none;display:inline-block}a.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.text-link{color:var(--accent);font-weight:500;text-decoration:none}.shell .page{padding-top:var(--space-5);padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--space-6))}.tabbar{z-index:5;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{min-height:48px;color:var(--muted);align-content:center;justify-items:center;gap:2px;font-size:.75rem;font-weight:500;text-decoration:none;display:grid}.tabbar a.active{color:var(--accent)}.tabbar .logo{display:none}.icon-btn{width:44px;height:44px;color:var(--text);border-radius:50%;flex:none;place-content:center;font-size:1.4rem;line-height:1;text-decoration:none;display:inline-grid}.icon-btn:hover{background:var(--surface)}.app-header{margin:calc(-1 * var(--space-2)) 0 var(--space-3);align-items:center;display:flex}.logo{align-items:center;gap:var(--space-2);min-height:44px;color:var(--text);text-decoration:none;display:inline-flex}.logo-word{letter-spacing:.01em;font-family:Bahnschrift,DIN Condensed,Arial Narrow,system-ui,sans-serif;font-size:1.4rem;font-style:italic;font-weight:800;font-stretch:75%;line-height:1}.logo-word b{color:var(--accent);font-weight:600}.hero h1,.welcome h1{letter-spacing:-.01em;margin:var(--space-2) 0 var(--space-3);font-size:1.9rem;line-height:1.15}.hero .text-link{margin-top:var(--space-3);padding:var(--space-2) 0;display:inline-block}.steps{margin:var(--space-4) 0 0;gap:var(--space-3);padding:0;list-style:none;display:grid}.steps li{gap:var(--space-3);align-items:flex-start;line-height:1.45;display:flex}.steps i{background:var(--surface);border:1px solid var(--border);width:28px;height:28px;color:var(--accent);border-radius:50%;flex:none;place-content:center;font-size:.9rem;font-style:normal;font-weight:700;display:grid}.steps div{gap:2px;display:grid}.steps span{color:var(--muted);font-size:.95rem}.welcome .level-card{margin-top:0}.last-set{color:var(--muted);margin:var(--space-3) 0 0;line-height:1.5}.last-set b{color:var(--text)}.streak{color:var(--good)}.settings-summary{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-4);min-height:48px;padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:12px;font-size:.9rem;text-decoration:none;display:flex}.settings-summary .text-link{flex:none}.choice{min-height:64px}.start-bar .big{margin-top:var(--space-5)}@media (width<=767.98px) and (height>=640px){.shell .page.has-start{padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 112px)}.start-bar{z-index:4;left:0;right:0;bottom:calc(var(--tabbar-h) + var(--safe-bottom));padding:var(--space-3) var(--space-4);background:linear-gradient(transparent, var(--bg) 35%);position:fixed}.start-bar .big{max-width:528px;margin:0 auto;display:block}}.about-page p{margin:0 0 var(--space-3);line-height:1.55}.about-page .steps{margin-top:0}.about-footer{gap:var(--space-1);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border);display:grid}.about-page .about-footer p{margin:0}.cards{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.cards li{gap:var(--space-1);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:12px;display:grid}.cards span{color:var(--muted);font-size:.9rem;line-height:1.45}.tips{gap:var(--space-2);margin:0;padding-left:1.2em;line-height:1.45;display:grid}.toggle{min-height:44px}.empty{gap:var(--space-4);justify-items:start;display:grid}.segmented.sticky{z-index:3;top:var(--sticky-top);margin:0 calc(-1 * var(--space-4));padding:var(--space-2) var(--space-4);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky}.show-all{width:100%;margin-top:var(--space-3)}.menu{position:relative}.menu summary{cursor:pointer;list-style:none}.menu summary::-webkit-details-marker{display:none}.menu-items{z-index:6;min-width:220px;padding:var(--space-1);background:var(--surface);border:1px solid var(--border);border-radius:12px;display:grid;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0006}.menu-items button{text-align:left;background:0 0;border:0;min-height:44px}.menu-items button:hover{background:var(--border)}@media (width>=768px){:root{--sticky-top:var(--tabbar-h)}.tabbar{height:var(--tabbar-h);border-top:0;border-bottom:1px solid var(--border);justify-content:center;gap:var(--space-2);padding:0;display:flex;position:sticky;top:0;bottom:auto}.tabbar a{gap:var(--space-2);padding:0 var(--space-4);grid-auto-flow:column;font-size:.95rem}.tabbar a.active{box-shadow:inset 0 -2px 0 var(--accent)}.tabbar .logo{margin-right:var(--space-5);color:var(--text);display:inline-flex}.app-header{display:none}.shell .page{padding-top:var(--space-6);padding-bottom:var(--space-6)}.page.wide{max-width:960px}.chart-grid{column-gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}
