.topbar{z-index:10;padding:calc(14px + env(safe-area-inset-top,0px)) calc(var(--gutter) + env(safe-area-inset-right,0px)) 14px calc(var(--gutter) + env(safe-area-inset-left,0px));background:var(--bar);color:var(--bar-ink);justify-content:space-between;align-items:center;gap:16px;display:flex;position:sticky;top:0}.topbar__start,.topbar__actions{align-items:center;gap:14px;min-width:0;display:flex}.topbar__brand{min-width:0;min-height:var(--touch);color:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-content:center;justify-items:start;padding:0;display:grid}.topbar__brand:focus-visible{outline:3px solid var(--bar-ink);outline-offset:4px;border-radius:var(--radius-hairline)}.topbar__name{font-family:var(--font-display);font-weight:800;font-size:var(--text-section);letter-spacing:.02em;text-transform:uppercase;line-height:1}.topbar__album{font-size:var(--text-caption);letter-spacing:.12em;text-transform:uppercase;color:#b8c2d1;white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.midi-pill{min-height:var(--touch);border-radius:var(--radius-pill);border:2px solid var(--bar-line);color:inherit;transition:transform .12s var(--ease-out);font-weight:700;font-size:var(--text-small);white-space:nowrap;background:0 0;align-items:center;gap:8px;padding:0 16px;display:inline-flex}.midi-pill--off{border-style:solid;border-color:var(--bar-danger);color:var(--bar-danger-ink)}@media (height<=500px),(width<=640px){.topbar{padding-top:calc(8px + env(safe-area-inset-top,0px));padding-bottom:8px}.topbar__name{font-size:var(--text-card)}.topbar__album{display:none}.midi-pill{font-size:var(--text-caption);padding:0 12px}}.midi-pill:active{transform:scale(.97)}@media (hover:hover) and (pointer:fine){.midi-pill:hover{background:#ffffff14}}.midi-pill--on{border-color:var(--bar-ok)}.midi-pill--on .midi-pill__state{background:var(--bar-ok)}.midi-pill__state{color:#14181f;background:#8f9bb0;border-radius:50%;place-items:center;width:20px;height:20px;margin-left:-6px;display:grid}.midi-pill--off .midi-pill__state{background:var(--bar-danger)}@media (width<=520px){.midi-pill{padding:0 10px}.midi-pill__label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}:root[data-theme=dark] .topbar{border-bottom:1px solid #ffffff1a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .topbar{border-bottom:1px solid #ffffff1a}}.mascot{flex:none;overflow:visible}.mascot__body{transform-box:fill-box;transform-origin:50% 100%}.mascot--wait .mascot__body{animation:3.2s ease-in-out infinite mascot-breathe}.mascot--wait .mascot__eyes{transform-box:fill-box;transform-origin:50%;animation:4.6s infinite mascot-blink}.mascot--success .mascot__body{animation:mascot-hop .42s var(--ease-out) both}.mascot--almost .mascot__body{animation:mascot-tilt .52s var(--ease-out) both}.mascot--celebrate .mascot__body{animation:mascot-cheer .9s var(--ease-out) 2 both}.mascot--celebrate .mascot__spark{transform-box:fill-box;transform-origin:50%;animation:1.2s ease-in-out infinite alternate mascot-spark}.mascot--enough .mascot__body{animation:4s ease-in-out infinite mascot-sway;transform:rotate(-4deg)}.mascot--enough .mascot__zz{animation:3s ease-in-out infinite mascot-zz}@keyframes mascot-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.02,.985)}}@keyframes mascot-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes mascot-hop{0%{transform:translateY(0)scale(1)}30%{transform:translateY(-10%)scale(.97,1.03)}70%{transform:translateY(0)scale(1.03,.97)}to{transform:translateY(0)scale(1)}}@keyframes mascot-tilt{0%{transform:rotate(0)}60%{transform:rotate(7deg)}to{transform:rotate(5deg)}}@keyframes mascot-cheer{0%,to{transform:translateY(0)rotate(0)}35%{transform:translateY(-14%)rotate(-5deg)}65%{transform:translateY(-4%)rotate(4deg)}}@keyframes mascot-spark{0%{transform:scale(.85)rotate(-10deg)}to{transform:scale(1.1)rotate(10deg)}}@keyframes mascot-sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(-1deg)}}@keyframes mascot-zz{0%,to{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.mascot--still .mascot__body,.mascot--still .mascot__eyes,.mascot--still .mascot__spark,.mascot--still .mascot__zz{animation:none}@media (prefers-reduced-motion:reduce){.mascot__body,.mascot__eyes,.mascot__spark,.mascot__zz{animation:none!important}}.sticker{background:var(--paper);padding:var(--sticker-border);border-radius:var(--radius-sticker);box-shadow:var(--shadow-sticker);transform:rotate(var(--tilt,0deg));position:relative}.sticker__face{border-radius:var(--radius-chip);background:var(--team);height:100%;color:var(--team-ink);flex-direction:column;padding:clamp(12px,1.6vw,20px);display:flex;position:relative;overflow:hidden}.sticker__face:after{content:"";pointer-events:none;background:linear-gradient(135deg,#ffffff38 0 18%,#0000 34%);position:absolute;inset:0}.sticker__num{font-family:var(--font-display);opacity:.92;font-size:clamp(32px,4vw,54px);font-weight:800;line-height:1}.slot{border:3px dashed var(--slot-line);border-radius:var(--radius-sticker);color:var(--slot-ink);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:relative}.slot__num{font-family:var(--font-display);font-size:clamp(32px,4vw,54px);font-weight:800;line-height:1}@keyframes sticker-land{0%{opacity:0;transform:translateY(-28px) rotate(calc(var(--tilt) - 8deg)) scale(.9);box-shadow:var(--shadow-lift)}60%{opacity:1;transform:translateY(0) rotate(calc(var(--tilt) + 1.5deg)) scale(1.06);box-shadow:var(--shadow-lift)}to{transform:rotate(var(--tilt)) scale(1);box-shadow:var(--shadow-sticker)}}@keyframes sticker-fade{0%{opacity:0}}.sticker--landing{animation:sticker-land .38s var(--ease-out) both}@media (prefers-reduced-motion:reduce){.sticker--landing{animation:.15s ease-out both sticker-fade}}.badge{width:var(--size);height:var(--size);border:3px dashed var(--slot-line);color:var(--slot-line);border-radius:50%;flex:none;place-items:center;display:grid}.badge--earned{border:4px solid var(--paper);background:var(--badge);color:#fff;box-shadow:var(--shadow-sticker)}.badge--earned svg{fill:#ffffff40}.gate{--team:#14181f;gap:14px;display:grid}.gate__lock{color:#fff;background:#14181f;border-radius:50%;place-items:center;width:64px;height:64px;display:grid}.gate__question{font-family:var(--font-display);font-size:clamp(30px,9vw,44px);font-weight:800;line-height:1.05}.gate__input{border:3px solid var(--control-line);border-radius:var(--radius-control);width:100%;min-width:0;min-height:64px;font-family:var(--font-display);font-weight:800;font-size:var(--text-headline);letter-spacing:.04em;color:#14181f;background:#fff;padding:0 18px}.gate__input:focus-visible{border-color:var(--focus);outline:none}.gate__input[aria-invalid]{border-color:var(--danger)}.gate__wrong{color:var(--danger);font-weight:700}@media (width<=480px),(height<=520px){.gate{gap:10px}.gate__lock{display:none}.gate__question{font-size:var(--text-card)}.gate__input{min-height:48px;font-size:var(--text-card);border-width:2px;padding:0 12px}.gate__wrong{font-size:var(--text-label)}}.mypieces{gap:12px;display:grid}.mypieces__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 18px;display:flex}.mypieces__add{flex-wrap:wrap;gap:10px;display:flex}.mypieces__help{color:var(--ink-muted);max-width:64ch}.mypieces__notice{align-items:flex-start;gap:8px;font-weight:700;display:flex}.mypieces__notice--ok{color:var(--ok-ink)}.mypieces__notice--error{color:var(--danger-ink)}.mypieces__list{gap:10px;padding:0;list-style:none;display:grid}.mypieces__row{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);flex-wrap:wrap;align-items:center;gap:12px 18px;padding:14px 18px;display:flex}.mypieces__name{flex:1;min-width:0;display:grid}.mypieces__title{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);overflow-wrap:anywhere}.mypieces__file{color:#4a5568;font-size:var(--text-caption);overflow-wrap:anywhere}.mypieces__actions{flex-wrap:wrap;gap:8px;display:flex}.mypieces__actions .icon-btn{border-color:var(--control-line);color:#14181f}.scan__pages{flex-wrap:wrap;gap:14px;padding:0;list-style:none;display:flex}.scan__page{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);grid-template-columns:auto auto;align-items:center;gap:8px 10px;padding:10px;display:grid}.scan__page img{object-fit:cover;border-radius:var(--radius-control);grid-column:1/-1;width:150px;height:200px}.scan__page-name{font-weight:700}.scan__status{align-items:flex-start;gap:8px;max-width:64ch;font-weight:700;display:flex}.scan__status--bad{color:var(--danger-ink)}.scan__photo{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);gap:8px;padding:12px;display:grid}.scan__bar{max-width:100%;max-height:30vh;margin:0 auto;display:block}.scan__doubt{color:#b3261e;align-items:center;gap:6px;font-weight:700;display:flex}.classsongs__photos{gap:12px;max-height:70vh;display:grid;overflow:auto}.classsongs__photos img{width:100%;height:auto}.songed{width:min(100%,760px);padding:28px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));gap:24px;margin:0 auto;display:grid}.songed h1{font-size:var(--text-screen)}.songed__note{color:var(--ink-muted);max-width:60ch}.songed__row{grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) auto;align-items:end;gap:18px;display:grid}.songed__sections,.songed__order{border:0;gap:14px;min-width:0;margin:0;padding:0;display:grid}.songed__section{border-radius:var(--radius-sticker);border:2px dashed var(--slot-line);gap:8px;padding:14px;display:grid}.songed__section-head{align-items:center;gap:10px;display:flex}.songed__name{flex:1;min-width:0;min-height:48px}.songed__chart{resize:vertical;min-height:72px;font-family:var(--font-display);font-size:var(--text-card);letter-spacing:.02em;padding:12px 16px}.songed__preview{color:var(--ink-muted);overflow-wrap:anywhere;font-weight:700}.songed__add{flex-wrap:wrap;gap:8px;display:flex}.songed__chips{flex-wrap:wrap;gap:8px;min-height:48px;margin:0;padding:0;list-style:none;display:flex}.songed__chip{border-radius:var(--radius-pill);background:var(--ink);color:var(--ground);align-items:center;gap:4px;padding-left:14px;font-weight:700;display:inline-flex}.songed__chip-x{width:var(--touch);height:var(--touch);border-radius:var(--radius-pill);color:inherit;background:0 0;border:0;place-items:center;display:grid}.songed__actions{flex-wrap:wrap;gap:12px;display:flex}@media (width<=600px){.songed__row{grid-template-columns:1fr 1fr}}.practice__stage.song__stage{align-content:safe center;justify-items:stretch;place-items:initial;gap:16px;width:min(100%,1200px);margin:0 auto;position:relative;overflow-y:auto}.song__head{justify-content:space-between;align-items:center;gap:16px;display:flex}.song__section{font-size:var(--text-headline)}.song__pass{color:var(--ink-muted)}.song__next{justify-items:end;display:grid}.song__next-label{font-size:var(--text-label);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-weight:700}.song__next-chord{font-family:var(--font-display);font-weight:800;font-size:var(--text-numeral);line-height:1}.song__chart{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.song__bar{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;min-height:96px;box-shadow:var(--shadow-sticker);border:3px solid #0000;align-content:center;justify-items:center;gap:4px;padding:10px;display:grid;position:relative}.song__chords{font-family:var(--font-display);font-weight:800;font-size:var(--text-headline);white-space:pre;line-height:1}.song__bar.is-now{border-color:var(--team);box-shadow:0 0 0 4px var(--team), var(--shadow-lift)}.song__bar.is-ok{border-color:var(--ok)}.song__bar.is-late{border-color:var(--star-deep);border-style:dashed}.song__bar.is-bad{border-color:var(--danger)}.song__mark{font-size:var(--text-caption);align-items:center;gap:4px;font-weight:700;display:inline-flex}.song__bar.is-ok .song__mark{color:var(--ok)}.song__bar.is-bad .song__mark{color:var(--danger)}.song__score{width:100%}.song__ready{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px 24px;display:flex}.song__ready>.btn{min-height:64px;font-size:var(--text-card);padding:0 36px}.song__tempo{align-items:center;gap:10px;display:flex}.song__bpm{text-align:center;min-width:9ch;font-weight:700}.song__count{justify-items:center;display:grid}.song__count .piece__count{color:var(--ink)}.song__beat{left:var(--gutter);right:var(--gutter);background:var(--team);transform-origin:0;height:4px;animation:song-bar var(--bar) linear both;position:absolute;top:0}@keyframes song-bar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.song__beat{opacity:.6;animation:none;transform:none}}@media (width<=700px){.song__chart{grid-template-columns:repeat(2,minmax(0,1fr))}.song__bar{min-height:72px}.song__chords{font-size:var(--text-card)}}.song__kpis{flex-wrap:wrap;gap:16px 40px;display:flex}.song__kpi{font-weight:700;display:grid}.song__kpi-num{font-family:var(--font-display);font-weight:800;font-size:var(--text-numeral);line-height:1}.song__hard-title{font-size:var(--text-card)}.song__hard{gap:6px;margin:0;padding:0;list-style:none;display:grid}.song__hard li{align-items:baseline;gap:12px;display:flex}.song__hard-chord{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);min-width:4ch}.home__strip{background:var(--team);height:10px}.home__main{padding:28px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));flex:1;align-content:start;gap:28px;display:grid}.home__hello{align-items:center;gap:20px;display:flex}.home__sticker{--sticker-border:8px;flex:none;width:116px;height:148px}.home__sticker .sticker__face{align-items:center;padding:8px}.home__sticker .sticker__num{font-size:var(--text-card);align-self:flex-start}.home__hello h1{font-size:var(--text-display)}.home__mode{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-top:6px;font-weight:700}.home__album{gap:14px;display:grid}.home__album h2{font-size:var(--text-section);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.home__passed{font-family:var(--font-body);font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-pill);background:var(--ink);color:var(--ground);padding:4px 12px;font-weight:700}.home__slots{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:22px;margin:0;padding:0;list-style:none;display:grid}[data-mode=petits] .home__slots{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.home__slot{aspect-ratio:3/4;position:relative}.home__slot.sticker{transform:none}.home__mark{font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;font-weight:700}.home__slot.slot{border-color:color-mix(in srgb, var(--team) 55%, var(--slot-line));padding:12px}.home__slot .sticker__face{justify-content:space-between}.home__open{z-index:1;border-radius:inherit;background:0 0;border:0;position:absolute;inset:0}.home__open:focus-visible{outline:4px solid var(--focus);outline-offset:2px}.home__slot:has(.home__open:active){transform:scale(.97)}.home__title{font-family:var(--font-display);font-weight:800;font-size:var(--text-lead);overflow-wrap:anywhere;line-height:1.05}[data-mode=petits] .home__title{text-transform:uppercase;font-size:var(--text-card)}.home__slot .stars .icon,.home__slot .stars svg{width:24px;height:24px}.home__slot .star{color:#ffffff8c}.home__slot .star--on{color:#fff}.home__slot--next.slot{border-style:solid;border-width:4px;border-color:var(--team);color:var(--ink);background:color-mix(in srgb, var(--team) 8%, transparent)}.home__slot--next.slot .slot__num{color:var(--team)}.home__slot--locked.slot{opacity:.55}.home__soon{color:var(--ink-muted);max-width:60ch}@media (hover:hover) and (pointer:fine){.home__slot:has(.home__open:hover){box-shadow:var(--shadow-lift)}}[data-mode=petits] .home__hello h1{text-transform:uppercase}.home__hello{flex-wrap:wrap}.home__hello-text{flex:1;min-width:220px}.home__progress{flex-wrap:wrap;align-items:center;gap:16px 24px;display:flex}.week{gap:6px;display:grid}.week__label,.goal__text{font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-weight:700}.week__days{gap:8px;margin:0;padding:0;list-style:none;display:flex}.week__days li{justify-items:center;gap:2px;display:grid}.week__dot{border:2px dashed var(--slot-line);border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.week__days li.is-played .week__dot{border-style:solid;border-color:var(--team);background:var(--team);color:var(--team-ink)}.week__days li.is-today .week__day{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.week__day{font-size:var(--text-caption);color:var(--ink-muted);text-transform:uppercase;font-weight:700}.goal{gap:6px;min-width:220px;display:grid}.goal__text{justify-content:space-between;gap:14px;display:flex}.goal__streak{color:var(--ink)}.goal__track{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--team) 18%, transparent);height:14px;position:relative}.goal__track i{border-radius:var(--radius-pill);background:var(--team);height:100%;transition:width .3s var(--ease-out);display:block}.goal__check{background:var(--team);width:26px;height:26px;color:var(--team-ink);border:3px solid var(--ground);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;right:-6px;translate:0 -50%}.enough,.promote{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);flex-wrap:wrap;align-items:center;gap:18px 24px;padding:20px 24px;display:flex}.enough>div,.promote>div{flex:1;min-width:220px}.enough h2,.promote h2{font-size:var(--text-headline)}.enough p,.promote p{color:#4a5568;margin-top:4px}[data-mode=petits] .enough h2,[data-mode=petits] .promote h2{text-transform:uppercase}.stickers{gap:14px;display:grid}.stickers h2{font-size:var(--text-section)}.stickers__grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.stickers__grid li{text-align:center;justify-items:center;gap:6px;display:grid}.stickers__name{font-family:var(--font-display);font-weight:800;font-size:var(--text-lead);line-height:1.05}.stickers__grid li:not(.is-earned) .stickers__name{color:var(--ink-muted)}.stickers__desc{font-size:var(--text-caption);color:var(--ink-muted)}[data-mode=petits] .stickers__name{text-transform:uppercase}.unlock{border:2px dashed var(--slot-line);border-radius:var(--radius-sticker);flex-wrap:wrap;align-items:center;gap:12px 18px;margin-bottom:16px;padding:14px 18px;display:flex}.unlock p{flex:1;min-width:200px}.home__mascot{margin:-8px 0}.score{color:#14181f;border-radius:var(--radius-sticker);background:#fff;width:100%;overflow:hidden}.score svg{display:block}.keys{--white-w:calc(100% / var(--whites));-webkit-user-select:none;user-select:none;height:100%;min-height:60px;position:relative}.keys--interactive{touch-action:none;cursor:pointer}.key{box-sizing:border-box;transition:background-color 40ms linear;position:absolute;top:0}.key--white{left:calc(var(--i) * var(--white-w));width:var(--white-w);border-radius:0 0 var(--radius-hairline) var(--radius-hairline);background:#fff;border:1px solid #b9c2cf;border-top:0;height:100%}.key--black{left:calc(var(--i) * var(--white-w) - var(--white-w) * .31);width:calc(var(--white-w) * .62);border-radius:0 0 var(--radius-hairline) var(--radius-hairline);z-index:1;background:#14181f;height:62%}.key--on.key--white{background:var(--key-on,var(--team));border-color:var(--key-on,var(--team))}.key--on.key--black{background:color-mix(in srgb, var(--key-on,var(--team)) 82%, #14181f)}.key__band{border-radius:var(--radius-hairline);background:var(--band);pointer-events:none;height:28%;position:absolute;bottom:3px;left:3px;right:3px}.key--hint.key--white{box-shadow:inset 0 0 0 4px var(--team);background:color-mix(in srgb, var(--team) 18%, #fff)}.key--hint.key--black{background:var(--team);box-shadow:inset 0 0 0 3px #fff}.key--ok.key--white,.key--ok.key--black{background:#0f7a5a;border-color:#0f7a5a}.key--bad.key--white,.key--bad.key--black{background:repeating-linear-gradient(135deg, #b3261e 0 6px, var(--danger-deep) 6px 12px);border-color:#b3261e}.key__mark{text-align:center;font-size:var(--text-micro);color:#4a5568;pointer-events:none;font-weight:700;position:absolute;bottom:6px;left:0;right:0}.key--on .key__mark{color:var(--key-on-ink,#fff)}.key--middle:before{content:"";pointer-events:none;z-index:1;background:#14181f;border-radius:50%;width:10px;height:10px;margin-left:-5px;position:absolute;bottom:28px;left:50%}.key--middle.key--on:before,.key--middle.key--ok:before,.key--middle.key--bad:before{background:#fff}.practice{background:var(--ground);grid-template-rows:auto 1fr auto;height:100dvh;display:grid}.practice__bar{padding:calc(8px + env(safe-area-inset-top,0px)) calc(var(--gutter) + env(safe-area-inset-right,0px)) 8px calc(var(--gutter) + env(safe-area-inset-left,0px));background:var(--team);color:var(--team-ink);align-items:center;gap:16px;min-height:64px;display:flex}.practice__bar .icon-btn{border-color:#ffffff73}.practice__title{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.practice__steps{flex-wrap:wrap;justify-content:flex-end;gap:5px;max-width:50%;margin:0 0 0 auto;padding:0;list-style:none;display:flex}.practice__steps li{border-radius:var(--radius-hairline);border:2px dashed #ffffff8c;width:14px;height:14px}.practice__steps li.is-done{background:#fff;border-style:solid;border-color:#fff}.practice__steps li.is-current{border-style:solid;border-color:#fff}.practice__streak{white-space:nowrap;font-weight:700}.practice__stage{min-height:0;padding:12px var(--gutter);align-content:center;place-items:center;gap:8px;display:grid}.flash{width:min(100%, calc(200px * var(--score-scale,2)));position:relative}.flash__score{box-shadow:var(--shadow-sticker);transition:box-shadow .16s var(--ease-out)}.flash--ok .flash__score{box-shadow:0 0 0 5px #0f7a5a, var(--shadow-sticker)}.flash--bad .flash__score{box-shadow:0 0 0 5px #b3261e, var(--shadow-sticker)}.flash__badge{color:#fff;width:60px;height:60px;box-shadow:var(--shadow-sticker);animation:badge-in .26s var(--ease-out);border-radius:50%;place-items:center;display:grid;position:absolute;top:-18px;right:-18px}.flash__badge--ok{background:#0f7a5a}.flash__badge--bad{background:#b3261e}@keyframes badge-in{0%{opacity:0;transform:scale(.5)}60%{opacity:1;transform:scale(1.12)}to{transform:scale(1)}}.practice__card{width:100%;animation:card-in var(--card-in,.2s) var(--ease-out) both;justify-items:center;display:grid}.practice__card.is-leaving{animation:card-out var(--card-out,.14s) cubic-bezier(.55, 0, 1, .45) both}@keyframes card-in{0%{opacity:0;transform:translate(40px)}}@keyframes card-out{to{opacity:0;transform:translate(-40px)}}@media (prefers-reduced-motion:reduce){.practice__card{animation-name:card-fade-in}.practice__card.is-leaving{animation-name:card-fade-out}@keyframes card-fade-in{0%{opacity:0}}@keyframes card-fade-out{to{opacity:0}}}.namecard{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;min-width:min(100%,360px);box-shadow:var(--shadow-sticker);justify-content:center;align-items:center;gap:16px;padding:28px 48px;display:flex;position:relative}.namecard__name{font-family:var(--font-display);font-weight:800;font-size:var(--text-glyph);text-transform:uppercase;line-height:1}.namecard--ok{color:#fff;background:#0f7a5a}.namecard--bad{box-shadow:0 0 0 5px #b3261e, var(--shadow-sticker)}.practice__msg{min-height:44px;font-family:var(--font-display);font-weight:800;font-size:var(--text-message);text-align:center}.practice__msg--ok{color:var(--ok)}.practice__msg--bad{color:var(--ink)}[data-mode=petits] .practice__msg,[data-mode=petits] .practice__title{text-transform:uppercase}.practice__keys{height:clamp(110px,24vh,200px);padding:0 calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px))}.practice__keys .keys{border-top:6px solid var(--ink)}.practice__loading{padding:40px var(--gutter);font-weight:700}.results{min-height:100dvh;padding:32px var(--gutter);place-items:center;display:grid}.results__main{flex-wrap:wrap;justify-content:center;align-items:center;gap:40px;max-width:1000px;display:flex}.results__sticker{justify-items:center;gap:12px;display:grid;position:relative}.results__card{width:220px;height:290px}.results__avatar{flex:1;place-items:center;display:grid}.results__lesson{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);text-transform:uppercase;line-height:1.05}.results__new{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);text-transform:uppercase;background:var(--star);color:#14181f;border-radius:var(--radius-pill);padding:4px 14px}.results__text{justify-items:start;gap:12px;max-width:520px;display:grid}.results__text h1{font-size:var(--text-display)}[data-mode=petits] .results__text h1{text-transform:uppercase}.stars{gap:8px;display:flex}.star{color:var(--slot-line)}.star--on{color:var(--star-deep)}.star--on svg{fill:var(--star)}.results__stat,.results__gate{color:var(--ink-muted);font-weight:700}.results__gate--ok{color:var(--ok)}.results__actions{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}@media (height<=500px){.practice__bar{min-height:52px}.practice__title{font-size:var(--text-lead)}.results__card{width:160px;height:210px}}.results__placement{gap:6px;margin:0;padding:0;font-weight:700;list-style:none;display:grid}.results__placement li{align-items:center;gap:8px;display:flex}.results__placement li.is-skipped{color:var(--ok)}.echo__start{min-height:72px;font-size:var(--text-card);padding:0 40px}.echo__listen{aspect-ratio:1;background:var(--team);width:clamp(140px,26vh,220px);color:var(--team-ink);box-shadow:var(--shadow-sticker);transition:transform .12s var(--ease-out), background-color .16s var(--ease-out);border:0;border-radius:50%;place-items:center;display:grid}.echo__listen:active:not(:disabled){transform:scale(.96)}.echo__listen.is-playing{cursor:default;animation:.65s ease-in-out infinite pulse}.echo__listen.is-ok{background:#0f7a5a;animation:none}@keyframes pulse{50%{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.echo__listen.is-playing{animation:none}}.echo__slots{gap:18px;margin:0;padding:0;list-style:none;display:flex}.echo__slots li{border:4px dashed var(--slot-line);border-radius:50%;width:44px;height:44px}.echo__slots li.is-done{border-style:solid;border-color:var(--team);background:var(--team)}.dyn__card{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);border:0;align-content:center;justify-items:center;gap:8px;min-width:min(100%,340px);min-height:clamp(220px,44vh,340px);padding:20px 40px;display:grid;position:relative}.dyn__card.is-ok{box-shadow:0 0 0 5px #0f7a5a, var(--shadow-sticker)}.dyn__card svg{width:auto;max-height:30vh}.dyn__word{font-family:var(--font-display);text-transform:uppercase;font-weight:800;line-height:1}.dyn__card--f .dyn__word{font-size:var(--text-glyph-sm)}.dyn__card--p .dyn__word{letter-spacing:.08em;font-size:clamp(30px,5vh,44px)}.dyn__meter{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--ink) 10%, transparent);width:min(100%,520px);height:44px;position:relative}.dyn__zone{border-radius:var(--radius-pill);place-items:center;display:grid;position:absolute;top:0;bottom:0}.dyn__zone--p{width:var(--soft);background:var(--dyn-soft);left:0}.dyn__zone--f{left:var(--loud);background:#f2c94c;right:0}.dyn__needle{border-radius:var(--radius-hairline);background:var(--ink);width:6px;transition:left .12s var(--ease-out);margin-left:-3px;position:absolute;top:-8px;bottom:-8px}.dyn__blocked{text-align:center;justify-items:center;gap:16px;max-width:52ch;font-weight:700;display:grid}.piece__stage{align-content:center}.piece__score{width:min(100%,1200px);position:relative}.piece__lines{gap:14px;display:grid}.piece__score .score{box-shadow:var(--shadow-sticker)}.piece__overlay{border-radius:var(--radius-sticker);background:#ffffffb8;align-content:center;place-items:center;gap:10px;display:grid;position:absolute;inset:0}.piece__overlay .btn{min-height:64px;font-size:var(--text-card);padding:0 36px}.piece__bpm{color:#4a5568;font-weight:700}.piece__count{font-family:var(--font-display);font-weight:800;font-size:var(--text-glyph);color:#14181f;line-height:1}.piece__ball{background:var(--team);width:26px;height:26px;animation:ball var(--beat) cubic-bezier(.33, 0, .67, 1) both;border-radius:50%;position:absolute;top:-34px;right:18px;box-shadow:0 6px 10px -4px #14181f66}@keyframes ball{0%{transform:translateY(26px)scaleY(.8)}50%{transform:translateY(-14px)scaleY(1)}to{transform:translateY(26px)scaleY(.8)}}@media (prefers-reduced-motion:reduce){.piece__ball{animation:ball-blink var(--beat) steps(2) both}@keyframes ball-blink{0%{opacity:1}to{opacity:.35}}}.piece__fingers{margin-left:8px}.piece__fingers .toggle label{color:inherit;align-items:center;min-height:40px}.piece__fingers .toggle__track{border-color:#ffffffb3;margin-top:0}.piece__fingers .toggle__thumb{background:#fffc}.piece__fingers .toggle input:checked+label .toggle__track{background:#fff;border-color:#fff}.piece__fingers .toggle input:checked+label .toggle__thumb{background:var(--team)}.results__tendency{font-weight:700}@media (width<=760px){.piece__fingers .toggle__label{font-size:0}}.practice__track{border-radius:var(--radius-pill);border:2px solid #ffffffb3;width:min(40%,360px);height:14px;margin-left:auto;overflow:hidden}.practice__track i{height:100%;transition:width .2s var(--ease-out);background:#fff;display:block}.results__achievements{justify-items:start;gap:10px;display:grid}.results__achievements ul{flex-wrap:wrap;gap:16px;margin:0;padding:0;list-style:none;display:flex}.results__achievements li{font-family:var(--font-display);font-weight:800;font-size:var(--text-lead);align-items:center;gap:10px;display:flex}.results__achievements .badge--earned{animation:sticker-fade .3s var(--ease-out) both}[data-mode=petits] .results__achievements li{text-transform:uppercase}.practice__keys .key__mark{font-size:var(--text-label);bottom:8px}.practice__keys .key__band~.key__mark{bottom:calc(28% + 8px)}.chordcard{flex-direction:column;align-items:center;gap:18px;display:flex}.chordcard__main{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;min-width:min(100%,320px);box-shadow:var(--shadow-sticker);flex-direction:column;align-items:center;padding:20px 56px;display:flex;position:relative}.chordcard__main--ok{background:var(--ok);color:#fff}.chordcard__main--bad{box-shadow:0 0 0 5px var(--danger), var(--shadow-sticker)}.chordcard__symbol{font-family:var(--font-display);font-weight:800;font-size:var(--text-glyph);line-height:1}.chordcard__local{font-family:var(--font-display);font-weight:700;font-size:var(--text-message);opacity:.75}.chordcard__badge{position:absolute;top:10px;right:10px}.chordcard__row{flex-wrap:wrap;justify-content:center;gap:8px;padding:0;list-style:none;display:flex}.chordcard__row li{min-width:var(--touch);border-radius:var(--radius-control);border:2px solid var(--slot-line);font-family:var(--font-display);font-weight:800;font-size:var(--text-card);text-align:center;color:var(--ink-muted);padding:6px 14px}.chordcard__row li.is-done{color:var(--ink)}.chordcard__row li.is-current{border-color:var(--team);background:var(--team);color:var(--team-ink)}@media (prefers-reduced-motion:no-preference){.chordcard__row li{transition:background-color .16s var(--ease-out), border-color .16s var(--ease-out)}}.practice__mascot{margin:-6px 0 -10px 4px;display:flex}.practice__steps+.practice__mascot,.practice__track+.practice__mascot{margin-left:12px}.results__sticker:has(.results__party){grid-template-columns:auto auto;grid-template-areas:"cromi card"".new"}.results__sticker>.sticker{grid-area:card}.results__sticker>.results__new{grid-area:new}.results__party{z-index:1;grid-area:cromi;align-self:end;margin:0 -34px 18px 0;position:relative}.results__mascot{display:block}.results__burst{position:absolute;top:30%;left:50%}.results__burst svg{opacity:0;position:absolute;top:-13px;left:-11px;overflow:visible}@media (prefers-reduced-motion:no-preference){.results__burst svg{animation:burst 1.3s cubic-bezier(.23, 1, .32, 1) var(--delay) both}}@keyframes burst{0%{opacity:0;transform:translate(0)scale(.4)rotate(0)}15%{opacity:1}70%{opacity:1}to{opacity:0;transform:translate(var(--dx), var(--dy)) scale(1) rotate(var(--r))}}@media (height<=520px){.results__mascot{width:84px;height:auto}.results__party{margin:0 -22px 12px 0}}.editor{padding:32px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));flex:1;grid-template-columns:minmax(200px,300px) minmax(0,680px);justify-content:center;align-items:start;gap:clamp(24px,4vw,56px);display:grid}.editor__preview{position:sticky;top:110px}.editor__sticker{height:clamp(300px,52vh,420px)}.editor__avatar{flex:1;place-items:center;display:grid}.editor__name{font-family:var(--font-display);font-weight:800;font-size:var(--text-title);text-transform:uppercase;overflow-wrap:anywhere;line-height:1}.editor__meta{font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;margin-top:6px;font-weight:700}.editor__form{gap:26px;display:grid}.editor__form h1{font-size:var(--text-display)}.field{display:grid}.field__input{border-radius:var(--radius-control);border:2px solid var(--control-line);background:var(--paper);color:#14181f;min-height:56px;font-size:var(--text-lead);padding:0 16px;font-weight:700}.field__input::placeholder{color:var(--slot-ink);font-weight:500}.field__input:focus-visible{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px #2357d940}.field__input[aria-invalid]{border-color:var(--danger)}.field__error{color:var(--danger-ink);margin-top:8px;font-weight:700}.field__help{color:var(--ink-muted);max-width:60ch;margin-top:10px}.editor__swatches{flex-wrap:wrap;gap:10px;display:flex}.choice{position:relative}.choice input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.choice__tile{border-radius:var(--radius-control);border:3px dashed var(--slot-line);background:var(--paper);place-items:center;width:60px;height:60px;display:grid}.choice input:checked+.choice__tile{border-style:solid;border-color:var(--ink);box-shadow:0 0 0 3px var(--paper) inset}.choice input:focus-visible+.choice__tile{outline:3px solid var(--focus);outline-offset:3px}.editor__chip{border-radius:var(--radius-chip);background:var(--team);width:38px;height:38px}.editor__actions{flex-wrap:wrap;gap:12px;padding-top:8px;display:flex}.editor__spacer{flex:1}@media (width<=760px){.editor{grid-template-columns:minmax(0,1fr)}.editor__preview{display:none}}.editor__practice{border:0;border-top:2px solid color-mix(in srgb, var(--ink) 14%, transparent);gap:18px;min-width:0;margin:0;padding:22px 0 0;display:grid}.editor__practice>legend{font-family:var(--font-display);font-weight:800;font-size:var(--text-section);float:left;width:100%;margin-bottom:4px;padding:0}.screen{flex-direction:column;min-height:100dvh;display:flex}.picker{padding:clamp(20px, 4.5vh, 44px) calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(28px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));flex-direction:column;flex:1;gap:clamp(16px,3.5vh,32px);display:flex}.picker__title{font-size:var(--text-display)}.picker__hl{color:var(--accent-ink)}.picker__grid{grid-template-columns:repeat(auto-fill,minmax(clamp(136px,15vw,220px),1fr));grid-auto-rows:clamp(230px,100dvh - 300px,440px);gap:clamp(18px,2.2vw,28px);margin:0;padding:0;list-style:none;display:grid}.picker__cell{min-width:0}.picker__sticker,.picker__add-slot{height:100%}.picker__sticker{transition:transform .16s var(--ease-out), box-shadow .16s var(--ease-out)}.picker__sticker:has(.picker__open:active){transform:rotate(var(--tilt)) scale(.97)}@media (hover:hover) and (pointer:fine){.picker__sticker:has(.picker__open:hover){box-shadow:var(--shadow-lift);transform:rotate(0)translateY(-4px)}}.picker__open{z-index:1;border-radius:inherit;background:0 0;border:0;position:absolute;inset:0}.picker__open:focus-visible{outline-offset:-8px;outline:4px solid #fff}.picker__avatar{flex:1;place-items:center;min-height:0;display:grid}.picker__avatar svg{width:min(150px,100%);height:auto;max-height:100%}.picker__name{font-family:var(--font-display);text-transform:uppercase;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:clamp(30px,3.4vw,46px);font-weight:800;line-height:1;display:-webkit-box;overflow:hidden}.picker__name[data-long]{font-size:var(--text-card)}.picker__meta{font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;margin-top:6px;font-weight:700}.picker__progress{font-size:var(--text-label);margin-top:4px;font-weight:500}.picker__add{border-radius:inherit;color:inherit;font-weight:700;font-size:var(--text-small);letter-spacing:.06em;text-transform:uppercase;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:12px;display:flex;position:absolute;inset:0}.picker__add-slot>.slot__num{display:none}.picker__add .slot__num{margin-bottom:6px}.picker__add:active{background:#14181f0d}@media (hover:hover) and (pointer:fine){.picker__add:hover{color:var(--ink);background:#14181f0a}}@media (orientation:portrait){.picker__grid{grid-auto-rows:auto}.picker__cell{aspect-ratio:5/7}}@media (height<=500px){.picker{gap:12px;padding-top:14px}.picker__title{font-size:var(--text-screen)}.picker__grid{grid-auto-rows:clamp(200px,100dvh - 150px,300px)}.picker__meta{font-size:var(--text-caption)}}.connect{--key-on:var(--star);--key-on-ink:#14181f;padding:24px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(28px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));flex:1;grid-template-columns:minmax(280px,380px) minmax(0,1fr);grid-template-areas:"side live""keys keys";align-items:start;gap:24px clamp(20px,3vw,40px);display:grid}.connect h2{font-size:var(--text-section)}.connect__side{grid-area:side;gap:20px;display:grid}.status{border-radius:var(--radius-sticker);border:3px dashed var(--slot-line);justify-items:start;gap:12px;padding:20px;display:grid}.status p{color:var(--ink-muted);max-width:48ch}.status__icon{background:var(--ink);width:56px;height:56px;color:var(--ground);border-radius:50%;place-items:center;display:grid}.status--connected{border-style:solid;border-color:var(--ok);background:var(--paper);color:#14181f}.status--connected p{color:#4a5568}.status--connected .status__icon{background:var(--ok);color:#fff}.status--denied,.status--error,.status--unsupported{border-style:solid;border-color:var(--danger)}.status--denied .status__icon,.status--error .status__icon,.status--unsupported .status__icon{background:var(--danger);color:#fff}.status__device{width:100%;display:grid}.status__device select{min-height:var(--touch);border-radius:var(--radius-control);border:2px solid var(--control-line);color:#14181f;background:#fff;padding:0 12px;font-weight:700}.calib{justify-items:start;gap:12px;display:grid}.calib__help{color:var(--ink-muted);max-width:48ch}.calib__result{align-items:center;gap:8px;font-weight:700;display:flex}.calib__warn{color:var(--danger-ink);max-width:48ch;font-weight:700}.calib__prompt{font-family:var(--font-display);font-weight:800;font-size:var(--text-section);max-width:20ch;line-height:1.1}.calib__arrow{color:var(--ink)}.calib__arrow[data-side=high]{transform:scaleX(-1)}.live{grid-area:live;gap:14px;min-width:0;display:grid}.live__head,.onscreen__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.live__pedal{border-radius:var(--radius-pill);border:2px dashed var(--slot-line);min-height:36px;font-weight:700;font-size:var(--text-label);align-items:center;padding:0 14px;display:inline-flex}.live__pedal--on{border-style:solid;border-color:var(--ink);background:var(--ink);color:var(--ground)}.live__strip{border-top:4px solid var(--ink);height:64px}.live__empty{color:var(--ink-muted)}.live__log{margin:0;padding:0;list-style:none;display:grid}.live__log li{border-bottom:1px solid color-mix(in srgb, var(--ink) 12%, transparent);font-variant-numeric:tabular-nums;grid-template-columns:5.5ch 3.5ch minmax(60px,1fr) 3.5ch 9ch 8ch;align-items:center;gap:12px;padding:6px 0;display:grid}.live__log li:first-child .live__note{background:var(--ink);color:var(--ground);border-radius:var(--radius-chip);padding:0 6px}.live__note{font-family:var(--font-display);font-weight:800;font-size:var(--text-card);justify-self:start}.live__midi,.live__vnum,.live__gap,.live__src{color:var(--ink-muted);font-size:var(--text-label)}.live__vel{border-radius:var(--radius-hairline);background:color-mix(in srgb, var(--ink) 12%, transparent);height:8px}.live__vel i{border-radius:var(--radius-hairline);background:var(--ink);height:100%;display:block}.live__latency{font-weight:700}.onscreen{grid-area:keys;gap:12px;display:grid}.onscreen__shift{align-items:center;gap:10px;display:flex}.onscreen__shift .icon-btn{border-color:var(--control-line);color:var(--ink)}.onscreen__next svg{transform:scaleX(-1)}.onscreen__range{text-align:center;min-width:9ch;font-weight:700}.onscreen__keys{border-top:6px solid var(--ink);height:clamp(140px,26vh,220px)}.onscreen__hint{color:var(--ink-muted)}.onscreen__oct{color:var(--ink);font-weight:700}@media (width<=860px){.connect{grid-template-columns:minmax(0,1fr);grid-template-areas:"side""live""keys"}.live__log li{grid-template-columns:5.5ch 3.5ch minmax(40px,1fr) 3.5ch 8ch}.live__gap{display:none}}.mic{gap:12px;display:grid}.mic__tag{border-radius:var(--radius-pill);font-size:var(--text-caption);vertical-align:middle;text-transform:uppercase;letter-spacing:.04em;border:2px solid;margin-left:6px;padding:2px 8px;display:inline-block}.mic__live{align-items:center;gap:16px;display:flex}.mic__meter{border-radius:var(--radius-pill);background:var(--ground-dot);flex:1;height:14px;overflow:hidden}.mic__meter i{background:var(--ink);height:100%;display:block}.mic__note{min-width:4ch;font-family:var(--font-display);font-weight:800;font-size:var(--text-section);text-align:right}.tests{justify-items:start;gap:12px;display:grid}.tests__sub{font-size:var(--text-card);margin-top:6px}.tests__row{flex-wrap:wrap;gap:10px;display:flex}.tests__velocities{color:var(--ink-muted);min-height:1.4em;font-weight:700}.settings{--team:var(--ink);--team-ink:var(--ground);width:min(820px,100%);padding:32px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(48px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));gap:30px;margin:0 auto;display:grid}.settings h1{font-size:var(--text-display)}.settings__group{border-top:2px solid color-mix(in srgb, var(--ink) 14%, transparent);gap:16px;padding-top:24px;display:grid}.settings__group h2{font-size:var(--text-section)}.settings__help{color:var(--ink-muted);max-width:62ch}.settings__row{flex-wrap:wrap;gap:12px;display:flex}.settings__profiles{gap:10px;margin:0;padding:0;list-style:none;display:grid}.settings__profiles li{border-bottom:1px solid color-mix(in srgb, var(--ink) 14%, transparent);align-items:center;gap:16px;padding:10px 0;display:flex}.settings__mini{--sticker-border:4px;--radius-sticker:8px;flex:none;width:64px;height:80px}.settings__mini .sticker__face{align-items:center;padding:4px}.settings__mini .sticker__num{font-size:var(--text-label);align-self:flex-start}.settings__pname{font-family:var(--font-display);font-weight:800;font-size:var(--text-section);text-transform:uppercase;overflow-wrap:anywhere;flex:1;min-width:0}.settings__pmode{font-size:var(--text-caption);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-weight:700}.settings__notice{align-items:center;gap:8px;font-weight:700;display:inline-flex}.settings__notice--ok{color:var(--ok-ink)}.settings__notice--error{color:var(--danger-ink)}@media (width<=560px){.settings__pmode{display:none}}.sound{--team:var(--ink);--team-ink:var(--ground);padding:24px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));flex:1;align-content:start;gap:28px;display:grid}.sound h1{font-size:var(--text-display)}.sound h2{font-size:var(--text-section)}.sound__staff{gap:12px;display:grid}.sound__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;display:flex}.sound__toggles{flex-wrap:wrap;gap:8px 24px;display:flex}.sound__staff .score{box-shadow:var(--shadow-sticker)}.sound__help{color:var(--ink-muted);max-width:60ch}.sound__grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:24px;display:grid}.panel{border-radius:var(--radius-sticker);border:3px dashed var(--slot-line);justify-items:start;gap:14px;padding:20px;display:grid}.panel__status{align-items:center;gap:8px;font-weight:700;display:flex}.panel__status--error{color:var(--danger-ink)}.metro__beats{align-items:center;gap:14px;min-height:48px;display:flex}.metro__dot{border:3px solid var(--ink);border-radius:50%;width:28px;height:28px;transition:background-color 60ms linear}.metro__dot--accent{width:40px;height:40px}.metro__dot--on{background:var(--ink)}.metro__tempo{align-items:center;gap:12px;width:100%;display:flex}.metro__tempo .icon-btn{border-color:var(--control-line);color:var(--ink)}.metro__slider{flex:1;justify-items:center;gap:4px;display:grid}.metro__bpm{font-family:var(--font-display);font-weight:800;font-size:var(--text-numeral);line-height:1}.metro__slider input{width:100%;accent-color:var(--ink);min-height:32px}.latency__prompt{font-family:var(--font-display);font-weight:800;font-size:var(--text-section);line-height:1.1}.latency__warn{color:var(--danger-ink);font-weight:700}.family{width:min(1100px,100%);padding:28px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(44px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));gap:24px;margin:0 auto;display:grid}.family h1{font-size:var(--text-display)}.family__list{gap:0;margin:0;padding:0;list-style:none;display:grid}.family__row{border-bottom:1px solid color-mix(in srgb, var(--ink) 14%, transparent);grid-template-columns:auto minmax(160px,1fr) minmax(180px,auto) minmax(260px,auto);align-items:center;gap:16px 28px;padding:18px 0;display:grid}.family__sticker{--sticker-border:6px;width:84px;height:104px}.family__sticker .sticker__face{align-items:center;padding:6px}.family__sticker .sticker__num{font-size:var(--text-body);align-self:flex-start}.family__who{gap:2px;display:grid}.family__name{font-family:var(--font-display);font-weight:800;font-size:var(--text-headline);text-transform:uppercase;line-height:1}.family__mode,.family__level{font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-weight:700}.family__level{letter-spacing:0;text-transform:none;font-weight:500}.family__facts{gap:4px;font-weight:700;display:grid}@media (width<=900px){.family__row{grid-template-columns:auto 1fr}.family__facts,.family__time{grid-column:2}}.family__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;display:flex}.stats{--team:var(--ink);--team-ink:var(--ground);--viz-1:#2a78d6;--plot:1;width:min(980px,100%);padding:28px calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(44px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));gap:28px;margin:0 auto;display:grid}:root[data-theme=dark] .stats{--viz-1:#3987e5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .stats{--viz-1:#3987e5}}.stats h1{font-size:var(--text-display)}.stats h2{font-size:var(--text-section)}.kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.kpi{border-radius:var(--radius-sticker);background:var(--paper);color:#14181f;box-shadow:var(--shadow-sticker);gap:4px;padding:16px 18px;display:grid}.kpi__label{font-size:var(--text-caption);letter-spacing:.06em;text-transform:uppercase;color:#4a5568;font-weight:700}.kpi__value{font-family:var(--font-display);font-weight:800;font-size:var(--text-numeral);line-height:1}.kpi__unit{font-size:var(--text-lead)}.chart{gap:10px;display:grid}.chart__help{color:var(--ink-muted);max-width:64ch}.bars{border-bottom:1px solid color-mix(in srgb, var(--ink) 25%, transparent);grid-template-columns:repeat(7,1fr);align-items:end;gap:2px;height:220px;margin-top:28px;padding-bottom:26px;display:grid;position:relative}.bars__col{outline-offset:2px;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;display:flex;position:relative}.bars__bar{border-radius:var(--radius-hairline) var(--radius-hairline) 0 0;background:var(--viz-1);width:min(56px,70%);min-height:0;transition:filter .12s var(--ease-out)}.bars__col:hover .bars__bar,.bars__col:focus-visible .bars__bar{filter:brightness(1.15)}.bars__label{font-size:var(--text-caption);color:var(--ink-muted);text-transform:capitalize;font-weight:700;position:absolute;bottom:-24px}.bars__value{font-weight:700;font-size:var(--text-caption);font-variant-numeric:tabular-nums;margin-bottom:4px}.bars__goal{border-top:2px dashed color-mix(in srgb, var(--ink) 55%, transparent);pointer-events:none;margin-bottom:26px;position:absolute;left:0;right:0}.bars__goal span{font-size:var(--text-caption);color:var(--ink-muted);font-weight:700;position:absolute;top:-22px;right:0}.bars__tip,.line__tip{white-space:nowrap;border-radius:var(--radius-chip);background:var(--ink);color:var(--ground);font-size:var(--text-caption);pointer-events:none;z-index:2;padding:6px 10px;font-weight:700;position:absolute;bottom:calc(100% + 6px);left:50%;translate:-50%}.bars__tip{display:none;top:-10px;bottom:auto}.bars__col:hover .bars__tip,.bars__col:focus-visible .bars__tip{display:block}.line{position:relative}.line svg{width:100%;height:auto;display:block;overflow:visible}.line__grid{stroke:color-mix(in srgb, var(--ink) 14%, transparent);stroke-width:1px}.line__axis{fill:var(--ink-muted);font-size:var(--text-chart);font-weight:700}.line__path{fill:none;stroke:var(--viz-1);stroke-width:2px;stroke-linejoin:round}.line__dot{fill:var(--viz-1);stroke:var(--ground);stroke-width:2px}.line__value{fill:var(--ink);font-size:var(--text-chart);font-weight:700}.line__cross{stroke:color-mix(in srgb, var(--ink) 45%, transparent);stroke-width:1px}.line__hit{fill:#0000;outline:none}.line__hit:focus-visible{fill:color-mix(in srgb, var(--focus) 10%, transparent)}.line__tip{top:-8px;bottom:auto}.heat{gap:10px;display:grid}.heat__keys{border-top:6px solid var(--ink);height:150px}.heat__keys .key__band{height:40%}.heat__legend{font-size:var(--text-caption);color:var(--ink-muted);align-items:center;gap:6px;font-weight:700;display:flex}.heat__legend i{border-radius:var(--radius-hairline);width:34px;height:14px}.weak{gap:8px;margin:0;padding:0;list-style:none;display:grid}.weak li{grid-template-columns:7ch 1fr auto;align-items:center;gap:14px;display:grid}.weak__note{font-family:var(--font-display);font-weight:800;font-size:var(--text-card)}.weak__bar{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--ink) 12%, transparent);height:10px}.weak__bar i{border-radius:var(--radius-pill);background:var(--viz-1);height:100%;display:block}.weak__pct{color:var(--ink-muted);font-weight:700}.chart__table summary{cursor:pointer;min-height:var(--touch);align-items:center;font-weight:700;display:flex}.chart__table table{border-collapse:collapse;font-variant-numeric:tabular-nums;margin:8px 0 18px}.chart__table th,.chart__table td{text-align:left;border-bottom:1px solid color-mix(in srgb, var(--ink) 12%, transparent);padding:6px 18px 6px 0}.account{width:min(100%,520px);padding:clamp(32px, 9vh, 96px) calc(var(--gutter) + env(safe-area-inset-right,0px)) calc(40px + env(safe-area-inset-bottom,0px)) calc(var(--gutter) + env(safe-area-inset-left,0px));align-content:start;gap:22px;margin:0 auto;display:grid}.account__title{font-size:var(--text-display)}.account__hl{color:var(--accent-ink)}.account__help{color:var(--ink-muted);max-width:48ch}.account__form{gap:18px;display:grid}.account__form .btn{justify-self:start}.account__error{color:var(--danger-ink);align-items:center;gap:8px;font-weight:700;display:flex}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-zTViEIzf.woff2)format("woff2"),url(/assets/barlow-vietnamese-500-normal-GNfB7rCE.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-DOaysfXq.woff2)format("woff2"),url(/assets/barlow-latin-ext-500-normal-CJPcKP2Q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-vietnamese-700-normal-D6euyNzi.woff2)format("woff2"),url(/assets/barlow-vietnamese-700-normal-4Jt4k04K.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-ext-700-normal-BLuWmldJ.woff2)format("woff2"),url(/assets/barlow-latin-ext-700-normal-CctuGmmz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-700-normal-A9pxMQ4z.woff2)format("woff2"),url(/assets/barlow-latin-700-normal-__SGTsZ1.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-vietnamese-800-normal-CpjukuLw.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-800-normal-BZxKbt5V.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-latin-ext-800-normal-DGNyg4u8.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-800-normal-gY_0Gifi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/barlow-condensed-latin-800-normal-BKzMuPgK.woff2)format("woff2"),url(/assets/barlow-condensed-latin-800-normal-e9GbPXiK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground:#e8edf4;--ground-dot:#d3dbe7;--ink:#14181f;--ink-muted:#4a5568;--slot-line:#8f9bb0;--slot-ink:#5d6a7e;--paper:#fff;--bar:#14181f;--bar-ink:#fff;--star:#f2c94c;--ok:#0f7a5a;--danger:#b3261e;--focus:#2357d9;--control-line:#c5cedb;--ok-ink:#0f7a5a;--danger-ink:#b3261e;--accent-ink:#2357d9;--bar-line:#3a4352;--bar-ok:#3fae85;--bar-danger:#e0a19b;--bar-danger-ink:#ffd9d4;--star-deep:#c99a12;--danger-deep:#8f1d17;--dyn-soft:#bfd9f2;--team:#2357d9;--team-ink:#fff;--font-display:"Barlow Condensed", "Arial Narrow", sans-serif;--font-body:"Barlow", system-ui, sans-serif;--text-chart:11px;--text-micro:12px;--text-caption:14px;--text-label:15px;--text-small:16px;--text-body:18px;--text-lead:22px;--text-card:26px;--text-section:30px;--text-headline:34px;--text-screen:40px;--text-numeral:44px;--text-title:clamp(30px, 3.4vw, 46px);--text-display:clamp(44px, 6vw, 76px);--text-message:clamp(24px, 3.5vh, 34px);--text-glyph:clamp(80px, 17vh, 160px);--text-glyph-sm:clamp(56px, 9vh, 88px);--radius-sticker:14px;--radius-control:12px;--radius-chip:8px;--radius-hairline:4px;--radius-pill:999px;--sticker-border:12px;--shadow-sticker:0 2px 0 #00000014, 0 14px 28px -12px #14181f59;--shadow-lift:0 4px 2px -2px #0000001a, 0 22px 36px -14px #14181f66;--ease-out:cubic-bezier(.23, 1, .32, 1);--gutter:clamp(16px, 3.5vw, 48px);--touch:48px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--ground:#12161d;--ground-dot:#1d232d;--ink:#e8edf4;--ink-muted:#9aa6b8;--slot-line:#5d6a7e;--slot-ink:#9aa6b8;--paper:#f4f6fa;--bar:#0b0e13;--ok-ink:#6fd3a6;--danger-ink:#ff9c92;--accent-ink:#7ea6ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#12161d;--ground-dot:#1d232d;--ink:#e8edf4;--ink-muted:#9aa6b8;--slot-line:#5d6a7e;--slot-ink:#9aa6b8;--paper:#f4f6fa;--bar:#0b0e13;--ok-ink:#6fd3a6;--danger-ink:#ff9c92;--accent-ink:#7ea6ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}[data-team=tomato]{--team:#d13a26}[data-team=cobalt]{--team:#2357d9}[data-team=pitch]{--team:#0f7a5a}[data-team=heather]{--team:#7a3fa0}[data-team=amber]{--team:#b35f0e}[data-team=lagoon]{--team:#0b7482}[data-team=berry]{--team:#b8336e}[data-team=slate]{--team:#2b3443}*,:before,:after{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none}body{min-height:100dvh;font-family:var(--font-body);font-weight:500;font-size:var(--text-body);color:var(--ink);background-color:var(--ground);background-image:radial-gradient(var(--ground-dot) 1.2px, transparent 1.3px);font-variant-numeric:tabular-nums;background-size:14px 14px;margin:0;line-height:1.4}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;text-wrap:balance;margin:0;font-weight:800;line-height:1}p{margin:0}::selection{background:var(--star);color:#14181f}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:var(--radius-chip)}button,a,[role=button]{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit;font-size:max(16px,1em)}#root{min-height:100dvh}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
