.browser-advisory{background:rgb(var(--surface-rgb) / .95);color:var(--text);border-bottom:1px solid rgb(var(--text-rgb) / .12);align-items:center;gap:12px;padding:10px 14px;font-size:.95rem;line-height:1.35;display:flex}.browser-advisory__text{flex:1;margin:0}.browser-advisory__dismiss{min-width:32px;min-height:32px;padding:0 8px;font-size:1.2rem;line-height:1}.docs-mode,.docs-standalone{min-height:100%;padding:max(16px, env(safe-area-inset-top)) 16px 32px}.docs-standalone{max-width:720px;margin:0 auto}.docs-shell{grid-template-columns:minmax(200px,260px) minmax(0,1fr);align-items:start;gap:28px;max-width:1040px;margin:0 auto;display:grid}@media (width<=720px){.docs-shell{grid-template-columns:1fr;gap:16px}}.protected-block{margin:1.25rem 0}.protected-block__reveal{min-height:var(--touch);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text);font-family:var(--font-body);cursor:pointer;justify-content:center;align-items:center;padding:0 20px;font-size:.95rem;display:inline-flex}.protected-block__reveal:hover{border-color:var(--accent);color:var(--accent)}.protected-block__reveal:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.protected-block__hint{color:var(--text-muted);margin:6px 0 0;font-size:.8rem}.spoiler-block{margin:1.25rem 0}.spoiler-block__reveal{min-height:var(--touch);border:1px dashed var(--border-strong);border-radius:var(--radius-pill);color:var(--text-dim);font-family:var(--font-body);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:8px;padding:0 18px;font-size:.95rem;display:inline-flex}.spoiler-block__reveal:hover{border-color:var(--accent);color:var(--accent)}.spoiler-block__reveal:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.spoiler-block__icon{color:var(--accent)}.spoiler-block__hint{color:var(--text-muted);margin:6px 0 0;font-size:.8rem}.spoiler-block__title{color:var(--text-dim);margin:0 0 6px;font-size:.95rem}.spoiler-block__body{border-left:2px solid var(--accent);padding-left:14px}.docs-sidebar{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);flex-direction:column;gap:14px;padding:12px;display:flex;position:sticky;top:16px}@media (width<=720px){.docs-sidebar{position:static}}.docs-home{align-self:flex-start}.docs-group{flex-direction:column;display:flex}.docs-group-toggle{cursor:pointer;width:100%;color:var(--text-muted);text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:8px;padding:8px;transition:background .15s,color .15s;display:flex}.docs-group-toggle:hover{background:rgb(var(--surface-rgb) / .06);color:var(--text)}.docs-group-chevron{flex:none;font-size:.7rem;line-height:1;transition:transform .2s}.docs-group.is-open .docs-group-chevron{transform:rotate(90deg)}.docs-group-title{letter-spacing:.08em;text-transform:uppercase;flex:1;font-size:.72rem;font-weight:600}.docs-group-count{border-radius:var(--radius-pill);text-align:center;min-width:1.4em;color:var(--text-muted);background:rgb(var(--surface-rgb) / .08);flex:none;padding:1px 6px;font-size:.66rem}.docs-group-body{grid-template-rows:0fr;transition:grid-template-rows .22s;display:grid}.docs-group.is-open .docs-group-body{grid-template-rows:1fr}@media (prefers-reduced-motion:reduce){.docs-group-body{transition:none}}.docs-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.docs-group-body>.docs-list{overflow:hidden}.docs-link{color:var(--text-dim);border-radius:10px;align-items:center;gap:8px;padding:7px 10px;font-size:.92rem;text-decoration:none;transition:background .15s,color .15s;display:flex}.docs-link:hover{background:rgb(var(--surface-rgb) / .06);color:var(--text)}.docs-link.is-active{background:rgb(var(--accent-rgb) / .16);color:var(--text);font-weight:600}.docs-badge{border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.04em;color:var(--reward);background:rgb(var(--reward-rgb) / .16);margin-left:auto;padding:1px 6px;font-size:.62rem}.docs-content{min-width:0}.docs-content-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.docs-empty{color:var(--text-dim);padding:32px 8px}.prose{color:var(--text);overflow-wrap:break-word;font-size:1rem;line-height:1.65}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-display);margin:1.6em 0 .6em;line-height:1.25}.prose h1{margin-top:0;font-size:1.9rem}.prose h2{font-size:1.45rem}.prose h3{font-size:1.2rem}.prose p{margin:.8em 0}.prose a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.doc-link-planned{color:var(--text-muted);text-underline-offset:2px;cursor:default;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.prose :is(h1,h2,h3,h4) a{color:inherit;text-decoration:none}.prose ul,.prose ol{margin:.8em 0;padding-left:1.4em}.prose li{margin:.3em 0}.prose img{border-radius:var(--radius);max-width:100%;height:auto;margin:1em 0;display:block}.prose blockquote{border-left:3px solid var(--border-strong);color:var(--text-dim);margin:1em 0;padding:.4em 1em}.prose code{background:rgb(var(--surface-rgb) / .09);border-radius:6px;padding:.12em .36em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em}.prose pre{border-radius:var(--radius);border:1px solid var(--border);background:rgb(var(--bg-rgb) / .5);margin:1em 0;padding:14px 16px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;margin:1em 0;font-size:.94rem}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:8px 10px}.prose th{background:var(--surface-raised)}.prose hr{border:none;border-top:1px solid var(--border);margin:1.6em 0}.back-button{padding-inline:10px}.theme-switcher{border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.theme-switcher-icon{color:var(--text-dim);font-size:.9rem}.theme-switcher-select{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;max-width:12ch;padding-right:4px;font-size:.82rem}.theme-switcher-select option{color:#111}.theme-switcher-select optgroup{color:#111;font-style:italic}.app-footer-tag{z-index:40;font-size:.65rem;line-height:1.4;font-family:var(--font-body);color:var(--text-dim);opacity:.35;cursor:pointer;background:0 0;border:none;padding:2px 6px;transition:opacity .12s;position:fixed;bottom:4px;left:6px}.app-footer-tag:hover,.app-footer-tag:focus-visible{opacity:.9}.app-footer-panel{z-index:41;border-radius:var(--radius);background:var(--surface-raised);border:1px solid var(--border-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);flex-direction:column;gap:10px;width:min(280px,100vw - 24px);padding:12px;display:flex;position:fixed;bottom:26px;left:6px;box-shadow:0 8px 24px #00000059}.app-footer-panel-head{color:var(--text);justify-content:space-between;align-items:center;font-size:.8rem;font-weight:600;display:flex}.app-footer-close{min-height:unset;padding:2px 6px}.app-footer-build{grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:.72rem;display:grid}.app-footer-build dt{color:var(--text-dim)}.app-footer-build dd{color:var(--text);word-break:break-word;margin:0}.app-footer-checks{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin:0;padding:8px 0 0;list-style:none;display:flex}.app-footer-check{align-items:flex-start;gap:8px;font-size:.72rem;display:flex}.app-footer-check-glyph{text-align:center;flex:none;width:1.2em;font-weight:700}.app-footer-check.is-ok .app-footer-check-glyph{color:var(--success)}.app-footer-check.is-warn .app-footer-check-glyph{color:var(--reward)}.app-footer-check.is-error .app-footer-check-glyph{color:var(--danger)}.app-footer-check-text{flex-direction:column;display:flex}.app-footer-check-label{color:var(--text);font-weight:600}.app-footer-check-detail{color:var(--text-dim)}.app-footer-devlogin{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:8px;display:flex}.app-footer-devlogin-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:.72rem;font-weight:600}.app-footer-field{color:var(--text-dim);flex-direction:column;gap:2px;font-size:.72rem;display:flex}.app-footer-field input{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;padding:5px 8px;font-size:.78rem}.app-footer-field input:focus-visible{outline:2px solid var(--focus-ring,var(--accent));outline-offset:1px}.app-footer-devlogin-submit{align-self:flex-start;font-size:.75rem}.app-footer-devlogin-error{color:var(--danger);margin:0;font-size:.72rem}.dev-bar{border-top:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .2));margin-top:12px;padding-top:12px}.dev-bar-head{cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;padding:0;display:flex}.dev-bar-title{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim,var(--text));align-items:baseline;gap:4px;font-size:.72rem;display:inline-flex}.dev-bar-caret{font-size:.62rem;transition:transform .15s;display:inline-block}.dev-bar-caret-open{transform:rotate(90deg)}.dev-bar-cap{letter-spacing:.04em;text-transform:uppercase;color:var(--on-accent,#000);background:rgb(var(--accent-rgb,255 122 61) / .85);border-radius:999px;padding:1px 6px;font-size:.62rem}.dev-bar-section{margin-top:8px}.dev-bar-section-head{cursor:pointer;width:100%;font:inherit;text-align:left;background:0 0;border:none;align-items:center;gap:4px;margin:0 0 4px;padding:0;display:flex}.dev-bar-section-title{color:var(--text-dim,var(--text));margin:0;font-size:.7rem}.dev-bar-section-flat{margin-top:8px}.dev-bar-row{flex-wrap:wrap;gap:4px;display:flex}.dev-bar .dev-bar-btn{min-height:0;padding:2px 8px;font-size:.72rem;line-height:1.35}.dev-bar-flash{color:var(--text-dim,var(--text));margin:10px 0 0;font-size:.72rem}.landing{gap:28px}.landing-topbar{min-height:var(--touch);justify-content:space-between;align-items:center;gap:12px;display:flex}.landing-account-cluster{align-items:center;gap:8px;display:flex}.landing-progression{align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.landing-auth{align-items:center;display:flex}.landing-head{text-align:center;margin-top:8px}.landing-tagline{color:var(--text-dim);margin:6px 0 0}.landing-coins{color:var(--reward);letter-spacing:.5px;font:inherit;cursor:pointer;background:rgb(var(--reward-rgb) / .12);border:1px solid rgb(var(--reward-rgb) / .35);border-radius:999px;margin:10px 0 0;padding:4px 12px;font-weight:600;transition:background .15s}.landing-coins:hover{background:rgb(var(--reward-rgb) / .2)}.landing-games{flex-direction:column;gap:14px;display:flex}.game-card{appearance:none;cursor:pointer;text-align:left;border-radius:var(--radius);border:1px solid var(--border);background:rgb(var(--surface-rgb) / .05);width:100%;color:var(--text);align-items:center;gap:16px;padding:18px 20px;transition:transform .12s,background .12s,border-color .12s;display:flex}.game-card:hover{background:rgb(var(--surface-rgb) / .09);border-color:rgb(var(--surface-rgb) / .32)}.game-card:active{transform:translateY(1px)scale(.995)}.game-glyph{background:var(--surface);width:48px;height:48px;color:var(--reward);border-radius:12px;flex:none;place-items:center;font-size:1.5rem;display:grid}.game-card.is-locked{opacity:.72}.game-card.is-locked .game-glyph{color:var(--text-muted)}.game-lock-cost{font-variant-numeric:tabular-nums;color:var(--reward);background:rgb(var(--reward-rgb) / .12);border-radius:var(--radius-pill);flex:none;padding:4px 10px;font-weight:600}.game-text{flex-direction:column;gap:3px;display:flex}.game-title{font-size:1.1rem;font-weight:600}.game-blurb{color:var(--text-dim);font-size:.88rem;line-height:1.35}.landing-journey{appearance:none;cursor:pointer;text-align:left;border-radius:var(--radius);border:1px solid rgb(var(--accent-rgb) / .4);background:rgb(var(--accent-rgb) / .08);width:100%;color:var(--text);align-items:center;gap:16px;padding:18px 20px;transition:transform .12s,background .12s,border-color .12s;display:flex}.landing-journey:hover{background:rgb(var(--accent-rgb) / .14);border-color:rgb(var(--accent-rgb) / .6)}.landing-journey:active{transform:translateY(1px)scale(.995)}.journey-glyph{background:rgb(var(--accent-rgb) / .16);width:48px;height:48px;color:var(--accent);border-radius:12px;flex:none;place-items:center;font-size:1.5rem;display:grid}.landing-toys{text-align:center;margin-top:4px}.toys-label{text-transform:uppercase;letter-spacing:2px;color:var(--text-muted);margin:0 0 8px;font-size:.72rem}.toys-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.toy-chip{appearance:none;cursor:pointer;border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .16);color:var(--text-dim);background:0 0;padding:6px 14px;font-size:.82rem;transition:color .12s,border-color .12s}.toy-chip:hover{color:var(--text);border-color:var(--border-strong)}.landing-legal{justify-content:center;align-items:center;gap:10px;margin-top:auto;padding:28px 0 12px;font-size:.76rem;display:flex}.landing-legal-link{color:var(--text-muted);text-decoration:none;transition:color .12s}.landing-legal-link:hover,.landing-legal-link:focus-visible{color:var(--text);text-decoration:underline}.landing-legal-sep{color:var(--text-muted)}.account-menu{position:relative}.account-menu-trigger{align-items:center;gap:.375rem;display:flex}.account-role-badge{letter-spacing:.04em;background:rgb(var(--accent-rgb) / .25);color:var(--text);border-radius:999px;padding:.1rem .35rem;font-size:.6rem;font-weight:700}.account-menu-panel{background:var(--surface);min-width:12rem;color:var(--text);border:1px solid var(--border-strong);box-shadow:0 8px 24px rgb(var(--bg-rgb) / .35);z-index:20;border-radius:10px;padding:.625rem .75rem;position:absolute;top:calc(100% + .375rem);right:0}.account-menu-email{opacity:.75;word-break:break-all;margin:0 0 .5rem;font-size:.8rem}.account-menu-panel .btn-ghost{width:100%;display:block}.account-menu-panel .btn-ghost+.btn-ghost{margin-top:.4rem}.auth-signin-wrap{flex-direction:column;align-items:flex-end;gap:.25rem;display:flex}.auth-error{color:var(--danger,#e33);margin:0;font-size:.75rem}.lang-switcher{border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.lang-switcher-icon{color:var(--text-dim);font-size:.9rem}.lang-switcher-select{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;max-width:12ch;padding-right:4px;font-size:.82rem}.lang-switcher-select option{color:#111}.start-gate{flex-direction:column;align-items:center;gap:14px;display:flex}.display-title{font-family:var(--font-display);letter-spacing:.5px;margin:0;font-size:clamp(2.4rem,9vw,3.4rem);font-style:italic;font-weight:600}.start-tagline{color:var(--text-dim);max-width:22ch;margin:0}.start-hint{color:var(--text-dim);margin:4px 0 0;font-size:.85rem}.start-button{min-width:180px}.coinim-range{align-items:center;gap:8px;margin-left:6px;display:inline-flex}.coinim-range input[type=range]{accent-color:var(--reward,#f5c542)}.coinim-range-val{color:var(--text-dim,#9aa0ad);font-size:.75rem;font-family:var(--font-mono,ui-monospace, monospace);white-space:nowrap}.coinim-cap{text-transform:capitalize}.coinim-showcase{margin:4px 0 24px}.coinim-podiums{grid-template-columns:repeat(3,1fr);align-items:end;gap:14px;max-width:640px;display:grid}.coinim-podium{flex-direction:column;align-items:center;margin:0;display:flex}.coinim-podium-coin{height:96px;filter:drop-shadow(0 6px 10px rgb(var(--shadow-rgb,0 0 0) / .35));z-index:1;justify-content:center;align-items:center;display:flex}.coinim-podium.is-hero .coinim-podium-coin{height:108px}.coinim-podium-svg{display:inline-flex}.coinim-podium-q{border:2px dashed rgb(var(--text-rgb,128 128 128) / .4);width:78px;height:78px;color:var(--text-dim,#9aa0ad);font-size:2.6rem;font-weight:800;font-family:var(--font-display,inherit);border-radius:50%;justify-content:center;align-items:center;display:flex}.coinim-podium-base{background:linear-gradient(var(--surface-raised,#8080800f), var(--surface,#80808005));border:.5px solid var(--border,#8080803d);width:100%;max-width:150px;height:40px;box-shadow:0 6px 16px rgb(var(--shadow-rgb,0 0 0) / .22);border-radius:10px 10px 6px 6px;margin-top:-8px}.coinim-podium.is-hero .coinim-podium-base{max-width:170px;height:58px}.coinim-podium-cap{text-align:center;flex-direction:column;align-items:center;gap:1px;margin-top:10px;display:flex}.coinim-podium-rank{font-size:.82rem;font-weight:700}.coinim-podium-note{color:var(--text-dim,#9aa0ad);font-size:.68rem;font-family:var(--font-mono,ui-monospace, monospace)}.coinim-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.coinim-card{border-radius:var(--radius,10px);border:.5px solid var(--border,#8080803d);background:var(--surface,#8080800d);color:var(--text,inherit);flex-direction:column;display:flex;overflow:hidden}.coinim-card-title{margin:0;padding:12px 14px 2px;font-size:.95rem}.coinim-card-desc{color:var(--text-dim,#9aa0ad);margin:0;padding:0 14px 10px;font-size:.76rem;line-height:1.4}.coinim-stage{border-radius:var(--radius,10px);touch-action:manipulation;border:.5px solid #8080803d;height:240px;margin:0 12px;position:relative;overflow:hidden}.coinim-stage.is-dark{color:#f4f6fa;background:#12151d}.coinim-stage.is-light{color:#2b2440;background:#f3eef7}.coinim-counter{color:inherit;background:#80808029;border:.5px solid #80808052;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-weight:800;display:inline-flex;position:absolute;top:10px;right:10px}.coinim-counter-glyph{color:var(--reward,#f5c542);display:inline-flex}.coinim-counter-val{font-variant-numeric:tabular-nums;text-align:right;min-width:2ch}.coinim-counter.is-award{animation:.42s ease-out coinim-pulse}@keyframes coinim-pulse{0%{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0);transform:scale(1)}35%{box-shadow:0 0 0 4px rgb(var(--reward-rgb,245 197 66) / .18);transform:scale(1.14)}to{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0);transform:scale(1)}}.coinim-fire{min-height:40px;padding:8px 18px;font-weight:700;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.coinim-fire:active{transform:translate(-50%)scale(.96)}.coinim-spawn{color:var(--text-dim,#9aa0ad);font-size:.72rem;font-family:var(--font-mono,ui-monospace, monospace);margin:0;padding:8px 14px 12px}.coinim-legend{color:var(--text-dim,#9aa0ad);margin:20px 0 0;font-size:.75rem;line-height:1.5}.coinim-legend code{font-family:var(--font-mono,ui-monospace, monospace);font-size:.9em}@media (prefers-reduced-motion:reduce){.coinim-counter.is-award{animation:none}}.gallery{max-width:960px;color:var(--text,#e8eaf0);font-family:var(--font-body,system-ui, sans-serif);margin:0 auto;padding:24px 20px 64px}.gallery-head{align-items:center;gap:16px;margin-bottom:20px;display:flex}.gallery-titles{flex-direction:column;gap:2px;display:flex}.gallery-title{font-size:1.3rem;font-family:var(--font-display,inherit);margin:0}.gallery-sub{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim,#9aa0ad);margin:0;font-size:.75rem}.gallery-controls{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:20px;display:flex}.gallery-controls-label{color:var(--text-dim,#9aa0ad);margin-right:4px;font-size:.75rem}.gallery-controls .gallery-size{min-height:0;padding:3px 10px;font-size:.8rem}.gallery-controls .gallery-size.is-active{color:var(--on-accent,#000);background:rgb(var(--accent-rgb,255 122 61) / .9);border-color:#0000}.gallery-body{border-radius:var(--radius,10px)}.gallery-body.is-dark{color:#f4f6fa;background:#12151d;padding:8px 16px 16px}.gallery-family{border-top:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .16));padding:16px 0}.gallery-family:first-child{border-top:none}.gallery-family-head{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:12px;display:flex}.gallery-family-title{margin:0;font-size:1rem}.gallery-family-note{color:var(--text-dim,#9aa0ad);font-size:.72rem;font-family:var(--font-mono,ui-monospace, monospace)}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;display:grid}.gallery-cell{border-radius:var(--radius,10px);border:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .14));background:var(--surface-raised,rgb(var(--text-rgb,255 255 255) / .04));flex-direction:column;align-items:center;gap:8px;margin:0;padding:12px 8px;display:flex}.gallery-body.is-dark .gallery-cell{background:#ffffff0d;border-color:#ffffff24}.gallery-swatch{justify-content:center;align-items:center;width:100%;display:flex}.gallery-name{text-align:center;color:var(--text-dim,#9aa0ad);font-size:.68rem;font-family:var(--font-mono,ui-monospace, monospace);word-break:break-word}.gallery-body.is-dark .gallery-name{color:#c7ccd6}.char-gallery-controls-gap{margin-left:12px}.char-gallery-note{color:var(--text-dim,#9aa0ad);margin:0 0 16px;font-size:.78rem;line-height:1.5}.char-gallery-note code{font-family:var(--font-mono,ui-monospace, monospace);font-size:.9em}.char-gallery-stage{border-radius:var(--radius,10px);padding:8px 16px 16px}.char-gallery-stage.is-dark{color:#f4f6fa;background:#12151d}.char-gallery-stage.is-light{color:#2b2440;background:#f3eef7}.char-gallery-name{text-transform:capitalize}.char-gallery-hero{justify-content:center;align-items:center;min-height:200px;padding:16px 0 8px;display:flex}.char-gallery-states{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:12px;display:grid}.char-gallery-state-cell{border-radius:var(--radius,10px);cursor:pointer;color:inherit;background:#80808014;border:.5px solid #80808047;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;display:flex}.char-gallery-state-cell.is-active{border-color:rgb(var(--accent-rgb,255 122 61) / .9);box-shadow:0 0 0 1px rgb(var(--accent-rgb,255 122 61) / .6)}.char-gallery-swatch{justify-content:center;align-items:center;width:100%;display:flex}.char-gallery-state-label{text-transform:capitalize;font-size:.72rem;font-family:var(--font-mono,ui-monospace, monospace)}.char-gallery-beats{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.char-gallery-beat-row{border-radius:var(--radius,10px);border:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .14));background:var(--surface-raised,rgb(var(--text-rgb,255 255 255) / .04));justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.char-gallery-beat-meta{flex-direction:column;gap:4px;min-width:0;display:flex}.char-gallery-beat-line{font-size:.9rem;font-weight:600}.char-gallery-beat-sub{color:var(--text-dim,#9aa0ad);font-size:.72rem;font-family:var(--font-mono,ui-monospace, monospace)}.char-gallery-tags{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.char-gallery-tag{background:rgb(var(--accent-rgb,255 122 61) / .16);color:var(--text,inherit);border-radius:999px;padding:1px 7px;font-size:.66rem}.char-gallery-play{flex:none;min-height:0;padding:4px 12px;font-size:.8rem}.harmony{--h-glass:#cfe0ff;--h-glass-dim:#9fb4e6;--h-edge:#e6f0ff;--h-reflect:#fff;--h-face:#fbf6ff;--h-base:#3a356a;--h-base-stroke:#8fa0d8;--h-core-purple:#9b7cf0;--h-core-gold:#f0c86a;--h-core-emerald:#4fc8a0;--h-core-indigo:#5b5aa8;--h-core-attentive:#c3d2ff;--h-ray-rose:#ff6b7d;--h-ray-emerald:#5fd7a0;--h-ray-blue:#7cb0ff;display:block}:root[data-theme-mode=light] .harmony{--h-glass:#c3b6ec;--h-glass-dim:#8a7cc8;--h-edge:#6a5fb0;--h-reflect:#fff;--h-face:#3a2f70;--h-base:#b9b2e0;--h-base-stroke:#5a4fa0;--h-core-purple:#7d5fe0;--h-core-gold:#e0a83a;--h-core-emerald:#1f9e78;--h-core-indigo:#6a5fb0;--h-core-attentive:#7d5fe0;--h-ray-rose:#d1425a;--h-ray-emerald:#1f9e78;--h-ray-blue:#3f6fd1}.harmony-core{transform-box:fill-box;transform-origin:50%;transition:fill .6s;animation:3.6s ease-in-out infinite harmony-breathe}@keyframes harmony-breathe{0%,to{opacity:.4;transform:scale(.9)}50%{opacity:.64;transform:scale(1.08)}}.harmony-beams{transform-box:fill-box;transform-origin:50%;animation:5.5s ease-in-out infinite harmony-refract,3.6s ease-in-out infinite harmony-beam-pulse}@keyframes harmony-refract{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes harmony-beam-pulse{0%,to{opacity:.35}50%{opacity:.9}}.harmony-think-mouth{animation:1.5s ease-in-out infinite harmony-think-wave}@keyframes harmony-think-wave{0%,to{d:path("M55,87 q3,-2 5,0 t5,0")}50%{d:path("M55,87 q3,2 5,0 t5,0")}}@media (prefers-reduced-motion:reduce){.harmony-core,.harmony-beams,.harmony-think-mouth{animation:none}}.noise{--n-core:#e8482f;--n-facet-orange:#ff7a3d;--n-facet-amber:#ffb23f;--n-facet-deep:#c8341f;--n-facet-warm:#ff8f3f;--n-bolt:#fff3b0;--n-bolt-bright:#fff9d8;--n-nub:#ffd23f;--n-eye:#fff;--n-pupil:#1b2138;--n-outline:#1b2138;--n-flash:#fff;--n-glow-red:#ff5a3c;--n-glow-amber:#ffb23f;--n-glow-orange:#ff8f3f;--n-glow-ember:#ff7a3d;display:block}:root[data-theme-mode=light] .noise{--n-core:#e07a54;--n-facet-orange:#e79a68;--n-facet-amber:#eab971;--n-facet-deep:#c05a3e;--n-facet-warm:#e6935f;--n-bolt:#a9631a;--n-bolt-bright:#c98a1a;--n-nub:#c98a1a;--n-eye:#3a1f14;--n-pupil:#3a1f14;--n-outline:#5a2f22;--n-flash:#c98a1a;--n-glow-red:#c98a1a;--n-glow-amber:#c98a1a;--n-glow-orange:#c98a1a;--n-glow-ember:#c98a1a}.noise-bolt{animation:3s ease-in-out infinite noise-pulse}@keyframes noise-pulse{0%,to{filter:none}50%{filter:brightness(1.12)}}.noise-think-mouth{animation:1.5s ease-in-out infinite noise-think-wave}@keyframes noise-think-wave{0%,to{d:path("M55,81 q2.5,-2 5,0 t5,0")}50%{d:path("M55,81 q2.5,2 5,0 t5,0")}}@media (prefers-reduced-motion:reduce){.noise-bolt,.noise-think-mouth{animation:none}}.riff{--r-shell:#2a4a5c;--r-shell-edge:#5fe0d0;--r-outline:#122735;--r-screen:#161a2e;--r-screen-edge:#0e1120;--r-face:#d6fff6;--r-face-bright:#eafffb;--r-teal:#3fe0c8;--r-magenta:#ff5fd0;--r-coral:#ff8a5c;--r-wheel:#232946;--r-wheel-rim:#3fe0c8;--r-trail:#ff9a5c;--r-trail-dim:#ffb27c;--r-spark:#ffcf6a;display:block}:root[data-theme-mode=light] .riff{--r-shell:#7fb8b0;--r-shell-edge:#0f5a54;--r-outline:#0f3a38;--r-screen:#22284a;--r-screen-edge:#0e1120;--r-face:#eafff9;--r-face-bright:#fff;--r-teal:#12857a;--r-magenta:#c43f8f;--r-coral:#e0663a;--r-wheel:#b9c4d0;--r-wheel-rim:#12857a;--r-trail:#e0742e;--r-trail-dim:#c8641f;--r-spark:#e0a02e}.riff-trail{transition:opacity .3s}.riff--resting .riff-trail{opacity:.5}.riff--celebrating .riff-trail{opacity:1}.riff-body,.riff-arms,.riff-trail{transform-box:fill-box;transform-origin:50%}.riff--idle .riff-body,.riff--idle .riff-arms,.riff--attentive .riff-body,.riff--attentive .riff-arms,.riff--encouraging .riff-body,.riff--encouraging .riff-arms{animation:4s ease-in-out infinite riff-bob}.riff-stars{animation:3.2s ease-in-out infinite riff-twinkle}.riff--celebrating .riff-sparks{animation:1.1s ease-in-out infinite riff-twinkle}@keyframes riff-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes riff-twinkle{0%,to{opacity:1}50%{opacity:.72}}.riff-wheel{transform-box:fill-box;transform-origin:50%}.riff--celebrating .riff-wheel{animation:.9s linear infinite riff-roll}.riff--thinking .riff-wheel{animation:3.4s cubic-bezier(.65,0,.35,1) infinite riff-roll-hiccup}@keyframes riff-roll{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes riff-roll-hiccup{0%{transform:rotate(0)}10%{transform:rotate(55deg)}22%{transform:rotate(55deg)}32%{transform:rotate(130deg)}46%{transform:rotate(130deg)}56%{transform:rotate(215deg)}70%{transform:rotate(215deg)}82%{transform:rotate(300deg)}92%{transform:rotate(300deg)}to{transform:rotate(360deg)}}.riff-arm{transform-box:fill-box;transform-origin:bottom}.riff--celebrating .riff-arm{animation:.55s ease-in-out infinite riff-flail}.riff--celebrating .riff-arm--r{animation-duration:.72s;animation-delay:.16s}@keyframes riff-flail{0%,to{transform:rotate(-11deg)skew(6deg)}50%{transform:rotate(13deg)skew(-6deg)}}.riff-think-mouth{animation:1.5s ease-in-out infinite riff-think-wave}@keyframes riff-think-wave{0%,to{d:path("M54,93 q3,-2.5 6,0 t6,0")}50%{d:path("M54,93 q3,2.5 6,0 t6,0")}}@media (prefers-reduced-motion:reduce){.riff .riff-body,.riff .riff-arms,.riff .riff-arm,.riff .riff-wheel,.riff .riff-trail,.riff .riff-stars,.riff .riff-sparks,.riff .riff-think-mouth{animation:none}}.tempo{--t-body:#b49a76;--t-base:#c8b48f;--t-face-inset:#232946;--t-slot:#161a2e;--t-ivory:#f2ead6;--t-edge:#f2ead6;--t-glint:#f9f4e6;--t-outline:#161a2e;--t-cheek:#ff8f83;--t-cyan:#5fd7e6;--t-magenta:#ff6bd0;--t-gold:#e8b44f;display:block}:root[data-theme-mode=light] .tempo{--t-body:#a98a63;--t-base:#c0aa82;--t-face-inset:#2e3560;--t-slot:#2b2440;--t-ivory:#f2ead6;--t-edge:#6b543a;--t-glint:#f9f4e6;--t-outline:#3a2f24;--t-cheek:#e8685c;--t-cyan:#159aa8;--t-magenta:#c43f8f;--t-gold:#c98a1a}:root[data-theme-mode=light] .tempo-ring{opacity:1}:root[data-theme-mode=light] .tempo-edge{opacity:.55}.tempo-rings{transform-box:fill-box;transform-origin:50%;animation:3.2s ease-in-out infinite tempo-sway}@keyframes tempo-sway{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}.tempo-firework{transform-box:fill-box;transform-origin:50%;animation:1.7s ease-out infinite tempo-burst}.tempo-firework--magenta{animation-duration:2.1s;animation-delay:.3s}@keyframes tempo-burst{0%{opacity:.3;transform:scale(.5)}35%{opacity:1;transform:scale(1.14)}70%{opacity:.9;transform:scale(.96)}to{opacity:.85;transform:scale(1.05)}}.tempo-think-mouth{animation:1.5s ease-in-out infinite tempo-think-wave}@keyframes tempo-think-wave{0%,to{d:path("M56,91 q2,-2 4,0 t4,0")}50%{d:path("M56,91 q2,2 4,0 t4,0")}}@media (prefers-reduced-motion:reduce){.tempo-rings,.tempo-firework,.tempo-think-mouth{animation:none}}.character-overlay{z-index:60;background:rgb(var(--bg-rgb,20 22 40) / .62);cursor:pointer;width:100%;font:inherit;color:inherit;text-align:center;appearance:none;border:0;justify-content:center;align-items:center;padding:24px;animation:.18s ease-out overlay-fade;display:flex;position:fixed;inset:0}.character-overlay-stage{text-align:center;flex-direction:column;align-items:center;gap:8px;animation:.32s cubic-bezier(.22,1,.36,1) overlay-pop;display:flex}.character-overlay-stage .harmony{filter:drop-shadow(0 12px 32px #00000059);width:auto;height:min(42vh,380px)}.character-overlay-line{max-width:22ch;color:var(--text,#fff);text-shadow:0 1px 8px #00000059;margin:4px 0 0;font-size:clamp(1.1rem,1rem + 1.4vw,1.6rem);font-weight:600;line-height:1.3;display:block}.character-overlay-hint{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim,rgb(var(--text-rgb,255 255 255) / .6));opacity:.75;margin:8px 0 0;font-size:.8rem;display:block}@keyframes overlay-fade{0%{opacity:0}to{opacity:1}}@keyframes overlay-pop{0%{opacity:0;transform:scale(.86)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}@media (prefers-reduced-motion:reduce){.character-overlay,.character-overlay-stage{animation:none}}.ng{max-width:960px;color:var(--text,#e8eaf0);font-family:var(--font-body,system-ui, sans-serif);margin:0 auto;padding:24px 20px 64px}.ng-head{align-items:center;gap:16px;margin-bottom:20px;display:flex}.ng-titles{flex-direction:column;gap:2px;display:flex}.ng-title{font-size:1.3rem;font-family:var(--font-display,inherit);margin:0}.ng-sub{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim,#9aa0ad);margin:0;font-size:.75rem}.ng-controls{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:20px;display:flex}.ng-controls-label{color:var(--text-dim,#9aa0ad);margin-right:4px;font-size:.75rem}.ng-controls .ng-ctrl{min-height:0;padding:3px 10px;font-size:.8rem}.ng-controls .ng-ctrl.is-active{color:var(--on-accent,#000);background:rgb(var(--accent-rgb,255 122 61) / .9);border-color:#0000}.ng-body{border-radius:var(--radius,10px)}.ng-body.is-dark{--text:#f4f6fa;--text-dim:#aeb4c0;color:#f4f6fa;background:#12151d;padding:8px 16px 16px}.ng-section{border-top:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .16));padding:16px 0}.ng-section:first-child{border-top:none}.ng-section-head{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:12px;display:flex}.ng-section-title{margin:0;font-size:1rem}.ng-section-note{color:var(--text-dim,#9aa0ad);font-size:.72rem;font-family:var(--font-mono,ui-monospace, monospace)}.ng-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.ng-cell{border-radius:var(--radius,10px);border:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .14));background:var(--surface-raised,rgb(var(--text-rgb,255 255 255) / .04));flex-direction:column;align-items:center;gap:8px;margin:0;padding:14px 10px;display:flex}.ng-body.is-dark .ng-cell{background:#ffffff0d;border-color:#ffffff24}.ng-swatch{justify-content:center;align-items:center;width:100%;margin:0 auto;display:flex}.ng-swatch .staff-figure-svg,.ng-swatch .pentagram-svg{max-width:100%}.ng-name{text-align:center;color:var(--text-dim,#9aa0ad);word-break:break-word;font-size:.72rem}.ng-body.is-dark .ng-name{color:#c7ccd6}.ng-nv-grid{flex-wrap:wrap;gap:11px;display:flex}.ng-nv-cell{border-radius:var(--radius,10px);border:.5px solid var(--border,rgb(var(--text-rgb,255 255 255) / .14));background:var(--surface-raised,rgb(var(--text-rgb,255 255 255) / .04));flex-direction:column;align-items:center;gap:6px;width:114px;margin:0;padding:11px 13px;display:flex}.ng-body.is-dark .ng-nv-cell{background:#ffffff0d;border-color:#ffffff24}.ng-nv-svg{width:88px;height:auto;overflow:visible}.ng-nv-caption{text-align:center;flex-direction:column;align-items:center;gap:1px;display:flex}.ng-nv-name{color:var(--text,#e8eaf0);font-size:.86rem;font-weight:600}.ng-nv-sub{color:var(--text-dim,#9aa0ad);font-size:.72rem}.ng-body.is-dark .ng-nv-sub{color:#c7ccd6}.pentagram{flex-direction:column;align-items:center;gap:.35rem;margin:0;display:flex}.pentagram-svg{width:100%;max-width:240px;height:auto;overflow:visible}.pentagram-line,.pentagram-ledger{stroke:var(--text-dim);stroke-width:1.2px}.pentagram-stem{stroke:var(--text);stroke-width:1.6px}.pentagram-head{fill:var(--text)}.pentagram-clef{font-family:var(--music-font);fill:var(--text);dominant-baseline:middle;font-size:48px}.pentagram-accidental{fill:var(--text);dominant-baseline:middle;text-anchor:middle;font-size:15px}.pentagram-caption{color:var(--text-dim);letter-spacing:.02em;font-size:.85rem}.staff-figure{flex-direction:column;align-items:center;gap:.35rem;margin:0;display:flex}.staff-figure-svg{width:100%;max-width:300px;height:auto;overflow:visible}.staff-figure-line,.staff-figure-ledger{stroke:var(--text-dim);stroke-width:1.2px}.staff-figure-stem{stroke:var(--text);stroke-width:1.6px}.staff-figure-flag,.staff-figure-perc-clef rect{fill:var(--text)}.staff-figure-xhead line{stroke:var(--text);stroke-width:2px;stroke-linecap:round}.staff-figure-head.is-filled{fill:var(--text)}.staff-figure-head.is-hollow{fill:none;stroke:var(--text);stroke-width:2px}.staff-figure-clef{font-family:var(--music-font);fill:var(--text);dominant-baseline:middle;font-size:48px}.staff-figure-accidental,.staff-figure-rest{font-family:var(--music-font);fill:var(--text);dominant-baseline:middle;text-anchor:middle;font-size:24px}.staff-figure-caption{color:var(--text-dim);letter-spacing:.02em;font-size:.85rem}.ss{max-width:860px;margin:0 auto;padding:24px 20px 64px}.ss-head{align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.ss-titles{flex-direction:column;gap:4px;display:flex}.ss-title{font-family:var(--font-display);margin:0;font-size:1.9rem}.ss-sub{color:var(--text-dim);max-width:60ch;margin:0;font-size:.82rem}.ss-body{flex-direction:column;gap:20px;display:flex}.ss-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);padding:18px 18px 16px;transition:border-color .2s,box-shadow .2s}.ss-card.is-playing{border-color:rgb(var(--accent-rgb) / .55);box-shadow:0 0 0 1px rgb(var(--accent-rgb) / .35)}.ss-card-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.ss-card-titles{flex-direction:column;gap:4px;display:flex}.ss-card-title{font-family:var(--font-display);margin:0;font-size:1.25rem}.ss-card-blurb{color:var(--text-dim);max-width:62ch;margin:0;font-size:.85rem}.ss-card-transport{flex-shrink:0}.ss-play,.ss-stop{min-width:88px}.ss-roll{background:rgb(var(--bg-rgb) / .55);border:1px solid var(--border);border-radius:10px;width:100%;height:160px;display:block}.ss-roll-guide{stroke:var(--border);stroke-width:1px;vector-effect:non-scaling-stroke}.ss-roll-note{opacity:.9}.ss-roll-playhead{stroke:var(--text);stroke-width:1.5px;vector-effect:non-scaling-stroke;opacity:.85}.ss-controls{flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:14px;display:flex}.ss-voice-pick{align-items:center;gap:8px;font-size:.85rem;display:inline-flex}.ss-voice-swatch{border-radius:3px;flex-shrink:0;width:12px;height:12px}.ss-voice-label{color:var(--text-dim)}.ss-voice-pick select,.ss-tempo input{accent-color:var(--accent)}.ss-voice-pick select{background:var(--surface);color:var(--text);border:1px solid var(--border);font:inherit;border-radius:8px;padding:4px 8px;font-size:.85rem}.ss-tempo{flex-direction:column;gap:4px;min-width:180px;font-size:.85rem;display:inline-flex}.ss-tempo-label{color:var(--text-dim);gap:6px;display:flex}.ss-tempo-value{color:var(--text);font-variant-numeric:tabular-nums}.ss-range-note{color:var(--text-muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.78rem}@media (width<=560px){.ss-card-head{flex-direction:column}.ss-range-note{margin-left:0}}.admin-panel{max-width:960px;margin:0 auto;padding:1.5rem 1rem}.admin-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.admin-header h1{margin:0;font-size:1.5rem}.admin-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1.5rem;display:grid}.admin-stat-card{background:var(--surface-1,#f4f4f5);text-align:center;border-radius:8px;padding:.75rem 1rem}.admin-stat-value{font-size:1.75rem;font-weight:700;line-height:1.2}.admin-stat-label{opacity:.7;margin-top:.25rem;font-size:.8rem}.admin-toolbar{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.admin-toolbar input,.admin-toolbar select{font:inherit;border:1px solid var(--border,#d4d4d8);background:var(--surface-0,#fff);color:inherit;border-radius:6px;padding:.4rem .6rem}.admin-toolbar input{flex:1;min-width:180px}.admin-table-wrap{overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border,#e4e4e7);white-space:nowrap;padding:.5rem .75rem}.admin-table th{opacity:.7;text-transform:uppercase;letter-spacing:.03em;font-size:.8rem;font-weight:600}.admin-table tbody tr{cursor:pointer}.admin-table tbody tr:hover{background:var(--surface-1,#f4f4f5)}.status-badge{border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.status-badge[data-status=active]{color:#166534;background:#dcfce7}.status-badge[data-status=dormant]{color:#854d0e;background:#fef9c3}.status-badge[data-status=at-risk]{color:#991b1b;background:#fee2e2}.status-badge[data-status=never-active]{color:#52525b;background:#e4e4e7}.role-badge{text-transform:uppercase;border-radius:4px;padding:.1rem .4rem;font-size:.7rem;font-weight:600;display:inline-block}.role-badge[data-role=admin]{color:#1e40af;background:#dbeafe}.role-badge[data-role=teacher]{color:#6b21a8;background:#f3e8ff}.admin-detail{margin-top:1rem}.admin-detail-header{align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.admin-detail-header h2{margin:0;font-size:1.25rem}.admin-detail-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.admin-detail-field{flex-direction:column;gap:.15rem;display:flex}.admin-detail-field .label{text-transform:uppercase;letter-spacing:.04em;opacity:.6;font-size:.75rem;font-weight:600}.admin-detail-field .value{font-size:.95rem}.admin-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1rem;font-size:.875rem;display:flex}.admin-pagination button{font:inherit;cursor:pointer;border:1px solid var(--border,#d4d4d8);background:var(--surface-0,#fff);color:inherit;border-radius:6px;padding:.3rem .7rem}.admin-pagination button:disabled{opacity:.4;cursor:default}.admin-loading,.admin-empty,.admin-error{text-align:center;opacity:.6;padding:2rem}.admin-error{color:#dc2626;opacity:1}.cards-shell{flex-direction:column;max-width:640px;min-height:100%;margin:0 auto;padding:16px;display:flex}.cards-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.cards-title{font-family:var(--font-display);font-size:1.1rem;font-weight:600}.cards-progress{font-variant-numeric:tabular-nums;color:var(--text-dim);text-align:right;min-width:3.5em;font-size:.9rem}.cards-dev{gap:4px;display:inline-flex}.cards-dev-btn{appearance:none;cursor:pointer;border:1px solid var(--border);background:rgb(var(--surface-rgb) / .08);color:var(--text-dim);border-radius:6px;padding:2px 7px;font-size:.85rem;line-height:1.2}.cards-dev-btn:hover{border-color:var(--border-strong);color:var(--text)}.cards-body{flex:1;justify-content:center;align-items:center;padding:12px 0;display:flex}.card-panel{background:rgb(var(--surface-rgb) / .05);border:1px solid rgb(var(--surface-rgb) / .12);border-radius:var(--radius);flex-direction:column;gap:18px;width:100%;padding:28px 24px;animation:.18s card-in;display:flex}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.card-topic{letter-spacing:.08em;text-transform:uppercase;color:var(--reward);background:rgb(var(--reward-rgb) / .12);border-radius:var(--radius-pill);align-self:flex-start;padding:4px 10px;font-size:.72rem}.teach-front{font-family:var(--font-display);margin:0;font-size:1.35rem;line-height:1.45}.teach-note{color:var(--text-dim);margin:0;font-size:.98rem;line-height:1.5}.card-listen{align-self:flex-start}.quiz-prompt{margin:0;font-size:1.15rem;line-height:1.45}.quiz-choices{flex-direction:column;gap:10px;display:flex}.quiz-choice{appearance:none;cursor:pointer;text-align:left;min-height:var(--touch);background:rgb(var(--surface-rgb) / .06);border:1px solid rgb(var(--surface-rgb) / .18);color:var(--text);border-radius:12px;padding:13px 16px;font-size:1rem;transition:background .12s,border-color .12s,transform 80ms}.quiz-choice:hover:not(:disabled){background:rgb(var(--surface-rgb) / .12);border-color:var(--border-strong)}.quiz-choice:active:not(:disabled){transform:translateY(1px)}.quiz-choice:disabled{cursor:default}.quiz-choice.is-correct{background:rgb(var(--success-rgb) / .18);border-color:var(--success);color:var(--text)}.quiz-choice.is-wrong{background:rgb(var(--danger-rgb) / .16);border-color:var(--danger)}.quiz-choices-staff{flex-flow:wrap}.quiz-choice-staff-wrap{flex:45%;min-width:150px;display:flex;position:relative}.quiz-choice-staff{text-align:center;flex:1;justify-content:center;align-items:center;padding:12px;display:flex}.quiz-choice-play{appearance:none;cursor:pointer;background:var(--text);width:28px;height:28px;color:var(--surface);border-radius:var(--radius-pill);border:none;justify-content:center;align-items:center;padding:0;font-size:.72rem;line-height:1;display:flex;position:absolute;top:6px;right:6px}.quiz-choice-play:hover{background:var(--accent);color:var(--on-accent)}.quiz-choice-play:active{transform:translateY(1px)}.quiz-feedback{flex-direction:column;gap:12px;display:flex}.quiz-verdict{margin:0;font-size:1.05rem;font-weight:700}.quiz-verdict.is-correct{color:var(--success)}.quiz-verdict.is-wrong{color:var(--danger)}.quiz-explain{color:var(--text-dim);margin:0;font-size:.98rem;line-height:1.5}.summary-title{font-family:var(--font-display);margin:0;font-size:1.6rem}.summary-sub{color:var(--text-dim);margin:0}.cards-stat{flex-direction:column;gap:4px;display:flex}.cards-stat-value{font-family:var(--font-display);font-size:1.7rem;font-weight:700}.cards-stat-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem}.lesson-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.lesson-header-left{align-items:center;gap:12px;min-width:0;display:flex}.lesson-header-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}@media (width<=640px){.lesson-header{row-gap:14px}.lesson-header-left{flex:100%;justify-content:space-between}.lesson-header-left .lp-picker{flex:auto;min-width:0}.lesson-header-right{flex-wrap:nowrap;flex:100%;justify-content:space-between;align-items:center;gap:12px}.lesson-header-right>*{align-self:center}.lesson-header-right .master-volume{flex:auto;min-width:0}}.coin-counter{border-radius:var(--radius-pill);background:var(--surface);align-items:center;gap:6px;padding:8px 14px;font-weight:700;display:inline-flex;position:relative}.coin-glyph{color:var(--reward);font-size:1.15rem}.coin-gain{color:var(--reward);white-space:nowrap;pointer-events:none;margin-bottom:2px;font-size:.95rem;font-weight:800;animation:1.2s ease-out forwards coin-gain-float;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}@keyframes coin-gain-float{0%{opacity:0;transform:translate(-50%,6px)scale(.85)}20%{opacity:1;transform:translate(-50%)scale(1.05)}to{opacity:0;transform:translate(-50%,-18px)scale(1)}}.coin-counter.is-award{animation:.42s ease-out coin-counter-pulse}@keyframes coin-counter-pulse{0%{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0);transform:scale(1)}35%{box-shadow:0 0 0 4px rgb(var(--reward-rgb,245 197 66) / .18);transform:scale(1.14)}to{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0);transform:scale(1)}}@media (prefers-reduced-motion:reduce){.coin-gain{animation-name:coin-gain-fade;animation-duration:.9s}@keyframes coin-gain-fade{0%{opacity:0}25%{opacity:1}to{opacity:0}}.coin-counter.is-award{animation-name:coin-counter-pulse-reduced;animation-duration:.5s}@keyframes coin-counter-pulse-reduced{0%{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0)}40%{box-shadow:0 0 0 3px rgb(var(--reward-rgb,245 197 66) / .16)}to{box-shadow:0 0 0 0 rgb(var(--reward-rgb,245 197 66) / 0)}}}.master-volume{border-radius:var(--radius-pill);background:var(--surface);border:1px solid rgb(var(--reward-rgb) / .35);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.master-volume-mute{color:var(--reward);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:.9rem;line-height:1;display:inline-flex}.master-volume-slider{width:72px;accent-color:var(--reward);cursor:pointer}.lp-picker{display:inline-block;position:relative}.lp-trigger{appearance:none;cursor:pointer;border-radius:var(--radius-pill);border:1px solid var(--border);background:rgb(var(--surface-rgb) / .06);max-width:260px;color:var(--text);align-items:center;gap:10px;padding:6px 10px 6px 6px;transition:background .12s,border-color .12s;display:inline-flex}.lp-trigger:hover{background:rgb(var(--surface-rgb) / .12);border-color:var(--border-strong)}.lp-badge{border-radius:var(--radius-pill);background:var(--accent);color:#fff;min-width:30px;height:30px;font-family:var(--font-display);flex:none;place-items:center;padding:0 8px;font-size:.85rem;font-weight:700;display:grid}.lp-trigger-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.lp-name{color:var(--reward);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.lp-sub{color:var(--text-dim);font-size:.72rem}.lp-chevron{color:var(--text-dim);flex:none;transition:transform .15s}.lp-chevron.is-open{transform:rotate(180deg)}.lp-menu{z-index:60;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);width:max(280px,100%);max-height:min(60vh,420px);margin:0;padding:6px;list-style:none;animation:.14s lp-drop;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 18px 40px -12px #00000080}@keyframes lp-drop{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.lp-item{appearance:none;cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;transition:background .1s;display:flex}.lp-item:hover{background:rgb(var(--surface-rgb) / .1)}.lp-item.is-current{background:rgb(var(--accent-rgb) / .12);outline:1px solid rgb(var(--accent-rgb) / .5)}.lp-dot{background:var(--border-strong);border-radius:50%;flex:none;width:9px;height:9px}.lp-dot.is-solid{background:var(--success)}.lp-dot.is-learning{background:var(--reward)}.lp-dot.is-new{background:var(--border-strong)}.lp-item-badge{border-radius:var(--radius-pill);background:rgb(var(--surface-rgb) / .12);min-width:28px;height:24px;color:var(--text);font-family:var(--font-display);flex:none;place-items:center;padding:0 7px;font-size:.78rem;font-weight:700;display:grid}.lp-item-text{flex-direction:column;flex:1;min-width:0;line-height:1.2;display:flex}.lp-item-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.lp-item-sub{color:var(--text-dim);font-size:.72rem}.lp-current-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);flex:none;font-size:.62rem;font-weight:700}.drumpad{flex-direction:column;gap:18px;max-width:620px;margin:0 auto;padding:20px 18px 40px;display:flex}.drumpad-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.drumpad-title{font-family:var(--font-display);margin:0;font-size:1.25rem}.drumpad-header-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.drumpad-practice{color:var(--text-dim);white-space:nowrap;font-size:.85rem}.drumpad-controls{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;display:flex}.drumpad-kit{flex-direction:column;gap:4px;display:flex}.drumpad-field-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.68rem}.drumpad-select{min-height:var(--touch);border-radius:var(--radius);border:1px solid rgb(var(--surface-rgb) / .4);background:var(--surface);color:var(--text);font-family:var(--font-body);padding:0 12px}.drumpad-difficulty,.mini-met-meter{gap:8px;display:flex}.chip-toggle{min-height:var(--touch);border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .4);background:var(--surface);color:var(--text-dim);font-family:var(--font-body);cursor:pointer;padding:0 14px;transition:background .1s,color .1s}.chip-toggle.is-selected{background:var(--accent);color:var(--on-accent);border-color:#0000}.mini-metronome{border-radius:var(--radius);background:var(--surface);flex-direction:column;gap:12px;padding:14px;display:flex}.mini-met-tempo{align-items:center;gap:10px;display:flex}.mini-met-step{min-width:var(--touch);min-height:var(--touch);background:var(--bg);color:var(--text);cursor:pointer;border:none;border-radius:50%;font-size:1.4rem;line-height:1}.mini-met-step:disabled{opacity:.4;cursor:default}.mini-met-slider{flex:1;min-width:120px}.mini-met-bpm{font-family:var(--font-display);text-align:right;min-width:68px;color:var(--text-dim);font-size:.95rem}.mini-met-row{align-items:center;gap:10px;display:flex}.mini-met-play{background:var(--accent);width:56px;height:56px;color:var(--on-accent);cursor:pointer;box-shadow:0 2px 10px rgb(var(--bg-rgb) / .35);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:transform 60ms,background .1s;display:inline-flex}.mini-met-play:active{transform:scale(.94)}.mini-met-play.is-running{background:var(--reward)}.mini-met-caption{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.72rem}.mini-met-beats{align-items:center;gap:8px;margin-left:auto;display:flex}.mini-beat-dot{background:rgb(var(--surface-rgb) / .5);width:12px;height:12px;box-shadow:inset 0 0 0 1px rgb(var(--text-rgb) / .2);border-radius:50%;transition:transform 50ms}.mini-beat-dot.is-downbeat{box-shadow:inset 0 0 0 1px rgb(var(--accent-rgb) / .6)}.mini-beat-dot.is-active{background:var(--reward);transform:scale(1.35)}.drumpad-hint{color:var(--text-dim);text-align:center;min-height:1.2em;font-size:.88rem}.drumpad-pads{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.drumpad-pads .pad{min-height:118px}@media (width<=380px){.drumpad-pads{grid-template-columns:repeat(2,1fr)}}.timer{align-items:center;gap:8px;display:inline-flex}.timer-clock{font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--text);text-align:center;min-width:3.2em;font-size:.95rem}.timer-btn{appearance:none;min-height:var(--touch);border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .4);background:var(--surface);color:var(--text-dim);font-family:var(--font-body);cursor:pointer;padding:0 12px;font-size:.8rem;transition:background .1s,color .1s,border-color .1s}.timer-btn:hover{background:rgb(var(--surface-rgb) / .1);border-color:rgb(var(--surface-rgb) / .6)}.timer-btn[aria-pressed=true]{background:var(--accent);color:var(--on-accent);border-color:#0000}.pad{min-height:96px;min-width:var(--touch);border-radius:var(--radius);background:var(--surface);color:var(--on-accent);font-family:var(--font-display);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:transform 50ms,filter 50ms,box-shadow .1s;display:flex;position:relative;overflow:hidden}.pad:active:not(:disabled){filter:brightness(1.1);transform:scale(.97)}.pad:disabled{opacity:.5;cursor:default}.pad-label{font-size:1.4rem;line-height:1.05}.pad-key{font-family:var(--font-body);letter-spacing:.1em;opacity:.7;border:1px solid rgb(var(--bg-rgb) / .4);border-radius:6px;padding:1px 6px;font-size:.7rem}.pad--looping{filter:saturate(.85)brightness(.9)}.pad--looping.pad--active{filter:none;box-shadow:0 0 0 2px var(--on-accent) inset, 0 0 14px var(--glow)}.pad-icon{opacity:.95;line-height:0;display:inline-flex}.pad-loop-badge{border-radius:var(--radius-pill);font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--on-accent);background:rgb(var(--bg-rgb) / .28);box-shadow:inset 0 0 0 1.5px rgb(var(--bg-rgb) / .45);opacity:.75;align-items:center;gap:5px;padding:3px 10px;font-size:.72rem;display:inline-flex}.pad-loop-badge.is-on{background:rgb(var(--bg-rgb) / .55);box-shadow:inset 0 0 0 1.5px var(--on-accent), 0 0 12px var(--glow);opacity:1;animation:1.1s ease-in-out infinite pad-loop-pulse}.pad-loop-text{line-height:1}@keyframes pad-loop-pulse{0%,to{filter:brightness()}50%{filter:brightness(1.35)}}@media (prefers-reduced-motion:reduce){.pad-loop-badge.is-on{animation:none}}.pad-flash{background:var(--text);opacity:0;pointer-events:none;animation:.16s ease-out pad-hit-flash;position:absolute;inset:0}@keyframes pad-hit-flash{0%{opacity:.65}to{opacity:0}}.voice-selector{border-radius:var(--radius-pill);background:var(--surface);border:1px solid rgb(var(--reward-rgb) / .35);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.voice-selector-icon{color:var(--reward);font-size:.9rem}.voice-selector-select{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;max-width:12ch;padding-right:4px;font-size:.82rem}.voice-selector-sm .voice-selector-select{max-width:10ch;font-size:.75rem}.voice-selector-select option{color:#111}.voice-selector-select optgroup{color:#111;font-style:italic}.round-panel{background:var(--surface);border-radius:var(--radius);box-shadow:0 20px 50px -30px var(--shadow);flex-direction:column;gap:18px;padding:22px;display:flex}.round-prompt{text-align:center;color:var(--text-dim);margin:0}.round-progress{color:var(--text-dim);justify-content:space-between;align-items:center;font-size:.9rem;display:flex}.round-status{font-family:var(--font-display);color:var(--text);font-style:italic}.round-status.is-correct{color:var(--success)}.round-status.is-wrong{color:var(--danger)}.round-hint{text-align:center;color:var(--text-dim);margin:0;font-size:.82rem}.round-hint.is-hidden{visibility:hidden}.notes-in-play{text-align:center;color:var(--text-dim);margin:0;font-size:.85rem}.notes-in-play strong{color:var(--text);font-family:var(--font-display);letter-spacing:.03em;font-style:italic}.pad-controls{justify-content:center;align-items:center;gap:8px;margin-bottom:10px;display:flex}.notation-toggle{border:1px solid rgb(var(--surface-rgb) / .24);border-radius:999px;display:inline-flex;overflow:hidden}.notation-seg{appearance:none;cursor:pointer;color:var(--text);font-family:var(--font-display);background:0 0;border:none;padding:5px 14px;font-size:.8rem;font-weight:600;transition:background .14s,color .14s}.notation-seg+.notation-seg{border-left:1px solid rgb(var(--surface-rgb) / .24)}.notation-seg[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.dim-toggle{appearance:none;cursor:pointer;border:1px solid rgb(var(--surface-rgb) / .24);color:var(--text);font-family:var(--font-display);background:0 0;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:.8rem;font-weight:600;transition:background .14s,color .14s,border-color .14s;display:inline-flex}.dim-toggle[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.dim-bulb{flex:none}.replay-controls{justify-content:center;gap:10px;display:flex}.summary-panel{text-align:center;align-items:center}.summary-title{font-family:var(--font-display);margin:0;font-style:italic}.summary-stats{justify-content:center;gap:22px;display:flex}.stat{flex-direction:column;gap:2px;display:flex}.stat-value{color:var(--reward);font-size:1.5rem;font-weight:700}.stat-label{color:var(--text-dim);font-size:.78rem}.cadence-guide{flex-direction:column;align-items:center;gap:6px;display:flex}.cadence-caption{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.72rem}.cadence-chips{gap:8px;display:flex}.cadence-chip{background:var(--bg);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;min-width:52px;padding:6px 10px;transition:transform .12s,background .12s,border-color .12s;display:flex}.cadence-chip.is-active{background:var(--reward);border-color:var(--reward);color:var(--on-accent);transform:translateY(-2px)}.cadence-root{font-family:var(--font-display);font-style:italic;font-weight:700}.cadence-roman{opacity:.75;font-size:.7rem}.solfege-pad{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.solfege-btn{appearance:none;cursor:pointer;min-height:64px;min-width:var(--touch);border:1px solid rgb(var(--surface-rgb) / .16);background:var(--bg);color:var(--text);font-family:var(--font-display);border-radius:14px;font-size:1.15rem;font-weight:600;transition:transform .1s,background .14s,border-color .14s}.solfege-btn:active:not(:disabled){transform:translateY(1px)scale(.98)}.solfege-btn:disabled{cursor:default}.solfege-btn.is-dimmed{opacity:.4}.solfege-btn.is-dimmed:hover:not(:disabled){opacity:.7}.solfege-btn.is-correct{background:var(--success);border-color:var(--success);color:var(--on-accent)}.solfege-btn.is-wrong{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.how-it-works{background:var(--surface);border-radius:var(--radius);border:1px solid rgb(var(--surface-rgb) / .1);padding:4px 18px}.how-it-works>summary{cursor:pointer;padding:12px 0;font-weight:600;list-style-position:inside}.how-body{color:var(--text-dim);padding-bottom:8px;font-size:.9rem;line-height:1.55}.how-body p{margin:0 0 10px}.how-body strong{color:var(--text)}.how-note{opacity:.85;border-top:1px solid rgb(var(--surface-rgb) / .12);padding-top:10px;font-size:.82rem}.exam-shell{flex-direction:column;max-width:640px;min-height:100%;margin:0 auto;padding:16px;display:flex}.exam-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.exam-header-right{align-items:center;gap:10px;display:flex}.exam-progress{font-variant-numeric:tabular-nums;color:var(--text-dim);text-align:right;min-width:3.5em;font-size:.9rem}.exam-body{flex:1;justify-content:center;align-items:center;padding:12px 8px;display:flex}.exam-panel{background:rgb(var(--surface-rgb) / .05);border:1px solid rgb(var(--surface-rgb) / .12);border-radius:var(--radius);flex-direction:column;gap:18px;width:100%;padding:28px 24px;animation:.18s exam-in;display:flex}@keyframes exam-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.exam-topic{letter-spacing:.08em;text-transform:uppercase;color:var(--reward);background:rgb(var(--reward-rgb) / .12);border-radius:var(--radius-pill);align-self:flex-start;padding:4px 10px;font-size:.72rem}.exam-prompt{margin:0;font-size:1.15rem;line-height:1.45}.exam-listen{align-self:flex-start}.exam-choices{flex-direction:column;gap:10px;display:flex}.exam-choice{appearance:none;cursor:pointer;text-align:left;min-height:var(--touch);background:rgb(var(--surface-rgb) / .06);border:1px solid rgb(var(--surface-rgb) / .18);color:var(--text);border-radius:12px;padding:13px 16px;font-size:1rem;transition:background .12s,border-color .12s,transform 80ms}.exam-choice:hover{background:rgb(var(--surface-rgb) / .12);border-color:var(--border-strong)}.exam-choice:active{transform:translateY(1px)}.exam-choices-staff{flex-flow:wrap}.exam-choice-staff{text-align:center;flex:45%;justify-content:center;align-items:center;min-width:150px;padding:12px;display:flex}.exam-summary,.exam-empty{text-align:center;align-items:center}.exam-title{font-family:var(--font-display);margin:0;font-size:1.6rem}.exam-sub{color:var(--text-dim);margin:0}.exam-verdict{letter-spacing:.02em;margin:0;font-size:1.15rem;font-weight:700}.exam-verdict.is-pass{color:var(--success)}.exam-verdict.is-fail{color:var(--reward)}.exam-stats{justify-content:center;gap:28px;display:flex}.exam-stat{flex-direction:column;gap:4px;display:flex}.exam-stat-value{font-family:var(--font-display);font-size:1.7rem;font-weight:700}.exam-stat-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem}.exam-shell-multi{max-width:none;padding:0}.exam-shell-multi>.exam-header{max-width:640px;margin:0 auto;padding:12px 16px 0}.exam-shell-multi>.exam-body{width:100%;max-width:900px;margin:0 auto}.multi-quiz{flex-direction:column;gap:12px;width:100%;max-width:640px;margin:0 auto;padding:12px 16px;display:flex}.multi-quiz-progress{font-variant-numeric:tabular-nums;color:var(--text-dim);align-self:flex-end;margin:0;font-size:.9rem}.multi-summary-table{border-collapse:collapse;width:100%;margin:12px 0 4px;font-size:.9rem}.multi-summary-table th,.multi-summary-table td{text-align:left;border-bottom:1px solid rgb(var(--surface-rgb) / .12);padding:6px 8px}.multi-summary-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);font-size:.72rem;font-weight:600}.multi-summary-table td:nth-child(2),.multi-summary-table td:nth-child(3),.multi-summary-table td:nth-child(4){font-variant-numeric:tabular-nums;text-align:right}.multi-summary-table tr.is-skipped td{color:var(--text-dim);font-style:italic}.exam-summary-note{color:var(--text-dim);margin:4px 0 0;font-size:.85rem}.exam-bar{background:rgb(var(--surface-rgb) / .9);border-bottom:1px solid rgb(var(--surface-rgb) / .15);-webkit-backdrop-filter:blur(6px);justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;font-size:.85rem;display:flex}.exam-bar.is-floating{z-index:40;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 8px #00000026}.exam-bar-left{align-items:center;gap:10px;min-width:0;display:flex}.exam-bar-count{font-variant-numeric:tabular-nums;color:var(--text-dim);white-space:nowrap;font-weight:600}.exam-bar-dots{gap:6px;margin:0;padding:0;list-style:none;display:flex}.exam-bar-dot{background:rgb(var(--surface-rgb) / .25);border-radius:50%;width:10px;height:10px;transition:background .15s,transform .15s}.exam-bar-dot.is-done{background:var(--success,#4ade80)}.exam-bar-dot.is-current{background:var(--reward,#fbbf24);box-shadow:0 0 0 3px rgb(var(--reward-rgb,251 191 36) / .25);transform:scale(1.3)}.exam-bar-dot.is-halftime{background:rgb(var(--surface-rgb) / .35);border-radius:2px;align-self:center;width:3px;height:12px}.exam-bar-dot.is-halftime.is-done{background:rgb(var(--surface-rgb) / .55)}.exam-bar-dot.is-halftime.is-current{background:var(--text);box-shadow:none;transform:none}.exam-bar-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.exam-bar-right{flex-shrink:0;gap:6px;display:flex}.exam-bar-skip,.exam-bar-exit{min-height:32px;padding:4px 12px;font-size:.8rem}.exam-shell-playing{padding-top:52px}.exam-intro{text-align:center;align-items:center;gap:20px;max-width:520px;margin:0 auto}.exam-intro-figure{filter:drop-shadow(0 4px 12px #0003);justify-content:center;display:flex}.exam-intro-content{flex-direction:column;gap:10px;display:flex}.exam-intro-line{font-family:var(--font-display);color:var(--text);margin:0;font-size:1.4rem}.exam-intro-hint{color:var(--text-dim);margin:0;line-height:1.5}.exam-intro-mic{color:var(--reward,#fbbf24);background:rgb(var(--reward-rgb,251 191 36) / .1);border-radius:8px;margin:0;padding:8px 12px;font-size:.85rem}.exam-intro-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.pulse{flex-direction:column;gap:14px;max-width:820px;margin:0 auto;padding:16px 20px 40px;display:flex;position:relative}.pulse-practice{color:var(--text-dim);white-space:nowrap;font-size:.8rem}.pulse-setup{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 14px;display:flex}.pulse-mode{border-radius:var(--radius-pill);background:rgb(var(--surface-rgb) / .09);border:1px solid var(--border);padding:3px;display:inline-flex}.pulse-mode-option{color:var(--text-dim);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:none;min-height:32px;padding:8px 14px;font-size:.85rem;font-weight:600}.pulse-mode-option.is-selected{background:var(--accent);color:var(--on-accent)}.pulse-mode-option:disabled{cursor:default;opacity:.7}.pulse-tempo{align-items:center;gap:8px;display:flex}.pulse-tempo-step{border:1px solid var(--border);background:rgb(var(--surface-rgb) / .09);min-width:40px;min-height:40px;color:var(--text);cursor:pointer;border-radius:12px;font-size:1.2rem}.pulse-tempo-step:disabled{opacity:.4;cursor:default}.pulse-tempo-value{color:var(--text-dim);text-align:center;flex-direction:column;min-width:84px;font-size:.8rem;line-height:1.15;display:flex}.pulse-tempo-value strong{font-family:var(--font-display);color:var(--text);font-size:1.3rem;font-style:italic}.pulse-tempo-name{color:var(--reward);font-family:var(--font-display)}.pulse-options-toggle{border:1px solid var(--border);background:rgb(var(--surface-rgb) / .09);min-width:40px;min-height:40px;color:var(--text-dim);cursor:pointer;border-radius:12px;font-size:1.05rem;transition:color .12s,border-color .12s}.pulse-options-toggle.is-open{color:var(--accent);border-color:rgb(var(--accent-rgb) / .6)}.pulse-options-toggle:disabled{opacity:.4;cursor:default}.pulse-options{border:1px solid var(--border);background:rgb(var(--surface-rgb) / .05);border-radius:14px;flex-direction:column;gap:12px;padding:12px 14px;display:flex}.pulse-options-eyebrow{letter-spacing:1px;color:var(--text-muted);font-size:.6rem}.pulse-tempo-coarse{flex-direction:column;gap:6px;display:flex}.pulse-tempo-slider{width:100%;accent-color:var(--success)}.pulse-switches{flex-direction:column;gap:6px;width:100%;min-width:0;display:flex}.pulse-switch{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:10px;min-height:32px;padding:2px 0;display:flex}.pulse-switch:disabled{opacity:.55;cursor:default}.pulse-switch-text{flex-direction:column;line-height:1.15;display:flex}.pulse-switch-label{font-size:.85rem;font-weight:600}.pulse-switch-hint{color:var(--text-muted);max-width:240px;font-size:.68rem}.pulse-switch-knob{border-radius:var(--radius-pill);background:rgb(var(--surface-rgb) / .3);flex:none;width:40px;height:22px;transition:background .15s;position:relative}.pulse-switch-knob:after{content:"";background:var(--surface);border:1px solid var(--border-strong);border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:2px;left:2px}.pulse-switch.is-on .pulse-switch-knob{background:var(--success)}.pulse-switch.is-on .pulse-switch-knob:after{background:rgb(var(--surface-rgb) / .95);transform:translate(18px)}@media (width<=720px){.pulse{gap:12px}.pulse-setup{justify-content:center;gap:10px}.pulse-status,.pulse-best{padding:0 8px}.pulse-stats{grid-template-columns:repeat(4,1fr);gap:6px}.pulse-stat{padding:9px 3px}.pulse-stat-value{font-size:1.15rem}}@media (orientation:landscape) and (height<=520px){.pulse{gap:8px;padding-top:8px;padding-bottom:16px}.pulse-hero{min-height:60px}.pulse-hero-ms{font-size:2.4rem}}.pattern-strip{border:1px solid var(--border);background:rgb(var(--surface-rgb) / .04);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:12px;padding:10px 14px 16px;display:block}.pattern-strip.is-previewing{border-color:rgb(var(--accent-rgb) / .7);box-shadow:0 0 14px rgb(var(--accent-rgb) / .25)}.pattern-strip-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.pattern-strip-preview{color:var(--reward);white-space:nowrap;margin-left:auto;font-size:.72rem}.pattern-strip-eyebrow{letter-spacing:1px;color:var(--text-muted);font-size:.6rem}.pattern-strip-label{color:var(--text-dim);font-size:.75rem}.pattern-strip-track{height:18px;position:relative}.pattern-strip-line{border-top:1px solid var(--border);position:absolute;top:50%;left:0;right:0}.pattern-tick{background:rgb(var(--surface-rgb) / .4);width:1px;position:absolute;top:50%;transform:translate(-50%,-50%)}.pattern-tick.is-bar{background:rgb(var(--surface-rgb) / .62);width:1.5px;height:14px}.pattern-tick.is-beat{height:10px}.pattern-tick.is-sub{background:rgb(var(--surface-rgb) / .25);height:6px}.pattern-dot{background:var(--accent);width:12px;height:12px;box-shadow:0 0 0 2px rgb(var(--surface-rgb) / .25);border-radius:50%;transition:transform 90ms,box-shadow 90ms;position:absolute;top:50%;transform:translate(-50%,-50%)}.pattern-dot.is-hit{background:var(--reward);box-shadow:0 0 0 3px rgb(var(--reward-rgb) / .45), 0 0 14px rgb(var(--reward-rgb) / .8);transform:translate(-50%,-50%)scale(1.45)}.pattern-playhead{background:rgb(var(--surface-rgb) / .9);width:2px;box-shadow:0 0 8px rgb(var(--accent-rgb) / .6);pointer-events:none;position:absolute;top:-6px;bottom:-6px;transform:translate(-50%)}.pulse-status{text-align:center;letter-spacing:.5px;color:var(--text-dim);margin:0;font-size:.78rem;font-weight:600}.pulse-countdown{color:var(--reward)}.accuracy-bar{background:linear-gradient(to right, var(--danger) 0%, var(--reward) 25%, var(--success) 50%, var(--reward) 75%, var(--danger) 100%);border-radius:8px;height:16px;position:relative}.accuracy-perfect{border:1px dashed rgb(var(--surface-rgb) / .45);border-radius:6px;position:absolute;top:-3px;bottom:-3px}.accuracy-spot{background:rgb(var(--surface-rgb) / .18);border-radius:4px;position:absolute;top:-1px;bottom:-1px}.accuracy-center{background:rgb(var(--surface-rgb) / .55);width:1px;position:absolute;top:-6px;bottom:-6px;left:50%}.accuracy-marker{background:var(--bg);border:1px solid rgb(var(--surface-rgb) / .7);border-radius:3px;width:5px;animation:.22s ease-out accuracy-marker-pop;position:absolute;top:-8px;bottom:-8px;transform:translate(-50%)}@keyframes accuracy-marker-pop{0%{transform:translate(-50%)scaleY(1.35)}to{transform:translate(-50%)scaleY(1)}}.accuracy-labels{letter-spacing:1px;color:var(--text-muted);justify-content:space-between;margin-top:8px;font-size:.62rem;display:flex}.accuracy-label-on{color:var(--success);font-weight:700}.pulse-hero{text-align:center;min-height:92px}.pulse-hero-ms{font-family:var(--font-display);color:var(--text-dim);font-size:3rem;font-style:italic;font-weight:600;line-height:1.1;display:block}.pulse-hero.is-spotOn .pulse-hero-ms,.pulse-hero.is-onTime .pulse-hero-ms{color:var(--success)}.pulse-hero.is-earlyLate .pulse-hero-ms{color:var(--reward)}.pulse-hero.is-miss .pulse-hero-ms{color:var(--danger)}.pulse-hero-sub{justify-content:center;gap:14px;font-size:.85rem;display:flex}.pulse-hero-label{color:var(--text);font-weight:600}.pulse-hero-streak{color:var(--reward);font-weight:600}.pulse-start{align-self:center;min-width:140px}.pulse-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;display:grid}.pulse-stat{border:1px solid var(--border);background:rgb(var(--surface-rgb) / .09);text-align:center;border-radius:14px;padding:12px 8px}.pulse-stat-value{font-family:var(--font-display);color:var(--text);font-size:1.4rem;font-style:italic;font-weight:700;display:block}.pulse-stat.is-good .pulse-stat-value{color:var(--success)}.pulse-stat.is-bad .pulse-stat-value{color:var(--danger)}.pulse-stat.is-reward .pulse-stat-value{color:var(--reward)}.pulse-stat-label{letter-spacing:.5px;color:var(--text-muted);margin-top:4px;font-size:.6rem;display:block}.pulse-best{text-align:center;color:var(--text-dim);margin:0;font-size:.78rem}.pulse-run-card{flex-direction:column;gap:12px;display:flex}.pulse-run-best-badge{letter-spacing:1px;color:var(--on-accent);background:var(--reward);border-radius:var(--radius-pill);align-self:flex-start;padding:3px 10px;font-size:.62rem;font-weight:700}.pulse-run-stats{grid-template-columns:1fr 1fr;gap:8px 16px;margin:0;display:grid}.pulse-run-stats dt{letter-spacing:.5px;color:var(--text-muted);text-transform:uppercase;font-size:.65rem}.pulse-run-stats dd{font-family:var(--font-display);color:var(--text);margin:2px 0 0;font-size:1.15rem;font-style:italic;font-weight:700}.pulse-run-actions{flex-wrap:wrap;gap:8px;display:flex}.character-panel{z-index:40;background:linear-gradient(160deg, var(--surface), var(--bg));border:1px solid var(--border-strong);border-radius:var(--radius);width:min(94%,570px);box-shadow:0 10px 30px rgb(var(--bg-rgb) / .5);animation:.16s ease-out character-panel-in;position:absolute;top:6px;left:50%;transform:translate(-50%)}@keyframes character-panel-in{0%{opacity:0;transform:translate(-50%)translateY(-8px)}to{opacity:1;transform:translate(-50%)}}.character-panel-tap{width:100%;color:inherit;font:inherit;text-align:inherit;cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:0;display:block}.character-panel-body{align-items:center;gap:18px;padding:18px 24px;display:flex}.character-panel-figure{flex:none}.character-panel-content{flex-direction:column;gap:10px;min-width:0;display:flex}.character-panel-line{font-family:var(--font-display);color:var(--text);font-size:1.35rem;font-style:italic;line-height:1.3}.character-panel-close{min-width:36px;min-height:36px;color:var(--text-dim);cursor:pointer;border-radius:var(--radius-pill);z-index:1;background:0 0;border:none;font-size:.9rem;position:absolute;top:4px;right:6px}.character-panel-close:hover{color:var(--text);background:rgb(var(--surface-rgb) / .08)}.metrono-dots{min-height:calc(var(--mdot-size,22px) + 12px);flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;display:flex}.metrono-dot{appearance:none;border-radius:var(--radius-pill);border:2px solid #0000;padding:0;transition:transform 80ms,background-color .12s,box-shadow .12s,border-color .12s}button.metrono-dot{cursor:pointer}button.metrono-dot:hover{filter:brightness(1.08)}.metrono-dot.is-tick{background:var(--reward);border-color:rgb(var(--reward-rgb) / .7);box-shadow:0 0 9px -1px rgb(var(--reward-rgb) / .5)}.metrono-dot.is-tack{background:rgb(var(--accent-rgb) / .85);border-color:var(--accent);box-shadow:0 0 7px -1px rgb(var(--accent-rgb) / .4)}.metrono-dot.is-tock{background:rgb(var(--surface-rgb) / .14);border-color:rgb(var(--accent-rgb) / .55);box-shadow:none}.metrono-dot.is-silent{border-style:dashed;border-color:rgb(var(--surface-rgb) / .32);box-shadow:none;background:0 0}.metrono-dot.is-sub{opacity:.82}.metrono-dot.is-active{animation:.2s mdot-pulse}.metrono-dot.is-tick.is-active{box-shadow:0 0 0 4px rgb(var(--reward-rgb) / .4), 0 0 12px 0 rgb(var(--reward-rgb) / .55)}.metrono-dot.is-tack.is-active{background:var(--accent);box-shadow:0 0 0 4px rgb(var(--accent-rgb) / .35), 0 0 12px 0 rgb(var(--accent-rgb) / .5)}.metrono-dot.is-tock.is-active{background:rgb(var(--accent-rgb) / .75);border-color:var(--accent);box-shadow:0 0 0 4px rgb(var(--accent-rgb) / .28)}.metrono-dot.is-silent.is-active{background:rgb(var(--surface-rgb) / .16);border-color:rgb(var(--surface-rgb) / .5);box-shadow:0 0 0 4px rgb(var(--surface-rgb) / .12)}@keyframes mdot-pulse{0%{transform:scale(1.4)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.metrono-dot,.metrono-dot.is-active{transition:none;animation:none}}.tap-target-wrap{position:relative}.tap-target{background:linear-gradient(var(--accent), rgb(var(--accent-rgb) / .82));width:100%;min-height:96px;color:rgb(var(--surface-rgb) / .98);cursor:pointer;box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4);touch-action:manipulation;-webkit-user-select:none;user-select:none;border:none;border-radius:20px;position:relative;overflow:hidden}.tap-target:disabled{cursor:default;filter:saturate(.35)brightness(.75);box-shadow:none}.tap-target:active:not(:disabled){transform:translateY(1px)scale(.995)}.tap-target-label{letter-spacing:1.5px;font-size:1.5rem;font-weight:800;display:block}.tap-target-hint{color:rgb(var(--surface-rgb) / .75);margin-top:4px;font-size:.72rem;display:block}.tap-meter{background:rgb(var(--bg-rgb) / .3);border-radius:2px;height:4px;position:absolute;bottom:7px;left:14px;right:14px}.tap-meter-fill{background:var(--reward);border-radius:2px;height:100%;transition:width .18s;display:block}.is-warm .tap-target{box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4), 0 0 16px rgb(var(--reward-rgb) / .4)}.is-hot .tap-target{border:1px solid rgb(var(--reward-rgb) / .75);box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4), 0 0 26px rgb(var(--reward-rgb) / .6)}.is-blazing .tap-target{border:2px solid var(--reward);box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4), 0 0 40px rgb(var(--reward-rgb) / .8), 0 0 80px rgb(var(--accent-rgb) / .5)}.is-blazing .tap-target:not(:disabled){animation:1.1s ease-in-out infinite tap-blaze}@keyframes tap-blaze{0%,to{box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4), 0 0 40px rgb(var(--reward-rgb) / .8), 0 0 80px rgb(var(--accent-rgb) / .5)}50%{box-shadow:0 10px 24px rgb(var(--bg-rgb) / .4), 0 0 52px rgb(var(--reward-rgb) / .95), 0 0 110px rgb(var(--accent-rgb) / .65)}}.tap-flames{pointer-events:none;z-index:1;height:0;position:absolute;top:0;left:10px;right:10px}.tap-flame{transform-origin:50% 100%;transform:translateX(-50%) scale(var(--flame-scale,1));filter:drop-shadow(0 0 6px rgb(var(--reward-rgb) / .55));animation:.9s ease-in-out infinite alternate tap-flame-flicker;position:absolute;bottom:0}@keyframes tap-flame-flicker{0%{transform:translateX(-50%) scale(var(--flame-scale,1)) scaleY(.96) rotate(-2deg)}to{transform:translateX(-50%) scale(var(--flame-scale,1)) scaleY(1.06) rotate(2.5deg)}}.rhythm{flex-direction:column;gap:22px;max-width:560px;margin:0 auto;padding:20px 18px 40px;display:flex}.rhythm-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.rhythm-controls{justify-content:space-between;align-items:center;gap:12px;margin-top:4px;display:flex}.rhythm-practice{color:var(--text-dim);letter-spacing:.03em;white-space:nowrap;font-size:.85rem}.rhythm-prelisten-badge{letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border-radius:var(--radius-pill);color:var(--text-dim);background:rgb(var(--surface-rgb) / .14);border:1px solid rgb(var(--surface-rgb) / .28);padding:3px 9px;font-size:.72rem}.rhythm-prelisten-badge.is-auto{color:var(--reward);background:rgb(var(--reward-rgb) / .14);border-color:rgb(var(--reward-rgb) / .4)}.rhythm-level{flex-direction:column;align-items:center;line-height:1.1;display:flex}.rhythm-level-id{font-family:var(--font-display);font-size:1.05rem}.rhythm-level-label{color:var(--text-dim);font-size:.78rem}.rhythm-bpm{color:var(--text-dim);letter-spacing:.04em;text-align:right;min-width:64px;font-size:.85rem}.rep-chips{align-items:center;gap:4px;display:inline-flex}.rep-chip{border:1px solid rgb(var(--surface-rgb) / .5);width:18px;height:18px;color:var(--text-dim);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:2px;line-height:0;display:inline-flex}.rep-chip.is-passed{border-color:var(--reward);background:var(--reward);color:var(--bg)}.rep-chip.is-failed{opacity:.4}.beat-grid{background:var(--bg);border-radius:var(--radius);flex-direction:column;gap:8px;padding:10px 0;display:flex;position:relative;overflow:hidden}.grid-beat-line{background:rgb(var(--surface-rgb) / .08);width:1px;position:absolute;top:0;bottom:0}.grid-beat-line.is-bar{background:rgb(var(--surface-rgb) / .22);width:2px}.grid-playhead{background:var(--text);width:2px;box-shadow:0 0 8px var(--glow);transition:left 30ms linear;position:absolute;top:0;bottom:0}.beat-lane{flex-direction:column;display:flex;position:relative}.lane-name{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);padding:2px 8px 0;font-size:.68rem}.beat-lane-track{background:var(--surface);border-radius:10px;height:62px;position:relative}.lane-kick .beat-lane-track{box-shadow:inset 0 0 0 1px rgb(var(--accent-rgb) / .35)}.lane-snare .beat-lane-track{box-shadow:inset 0 0 0 1px rgb(var(--reward-rgb) / .35)}.staff-line{background:rgb(var(--surface-rgb) / .28);border-radius:1px;height:2px;position:absolute;bottom:31px;left:0;right:0}.onset-note{margin-left:-.15em;font-size:30px;line-height:0;position:absolute;bottom:17px}.onset-note .music-glyph{display:block}.lane-kick .onset-note{color:var(--accent)}.lane-snare .onset-note{color:var(--reward)}.onset-rest{color:rgb(var(--text-rgb,255 255 255) / .45);margin-left:-.15em;font-size:26px;line-height:0;position:absolute;bottom:17px}.onset-rest .music-glyph{display:block}.lane-timesig{color:var(--text);pointer-events:none;flex-direction:column;align-items:center;font-size:22px;line-height:.55;display:flex;position:absolute;bottom:8px;left:32px}.lane-timesig .music-glyph{display:block}.tap-dot{border-radius:var(--radius-pill);background:rgb(var(--surface-rgb) / .75);width:8px;height:8px;margin-left:-4px;position:absolute;bottom:4px}.tap-dot.is-perfect{background:var(--success);box-shadow:0 0 6px var(--success)}.tap-dot.is-good{background:var(--reward)}.tap-dot.is-miss,.tap-dot.is-ghost{background:var(--danger)}.tap-dot.is-wrongVoice{box-shadow:inset 0 0 0 2px var(--danger);background:0 0}.lane-pulse{opacity:0;pointer-events:none;background:currentColor;border-radius:10px;animation:.18s ease-out lane-flash;position:absolute;inset:0}.lane-kick .lane-pulse{color:var(--accent)}.lane-snare .lane-pulse{color:var(--reward)}@keyframes lane-flash{0%{opacity:.4}to{opacity:0}}.rhythm-pads{grid-template-columns:1fr 1fr;gap:14px;display:grid}.rhythm-pads .pad{min-height:132px}.rhythm-pads .pad .pad-label{font-size:1.5rem}.rhythm-stage{text-align:center;justify-content:center;align-items:center;min-height:168px;display:flex}.rhythm-cue{flex-direction:column;align-items:center;gap:16px;display:flex}.rhythm-cue-text{color:var(--text-dim);max-width:320px;margin:0}.rhythm-cue-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.rhythm-play{min-width:160px;min-height:56px;font-size:1.2rem}.rhythm-status{font-family:var(--font-display);color:var(--text-dim);margin:0;font-size:1.3rem}.rhythm-count{font-family:var(--font-display);color:var(--reward);margin:0;font-size:4.5rem;line-height:1;animation:.2s ease-out count-pop}@keyframes count-pop{0%{opacity:.4;transform:scale(1.4)}to{opacity:1;transform:scale(1)}}.rhythm-summary{flex-direction:column;align-items:center;gap:16px;width:100%;display:flex}.summary-verdict{font-family:var(--font-display);margin:0;font-size:1.5rem}.summary-verdict.is-pass{color:var(--success)}.summary-verdict.is-fail{color:var(--danger)}.summary-stats{flex-wrap:wrap;justify-content:center;gap:22px;display:flex}.rhythm-stat{flex-direction:column;align-items:center;display:flex}.rhythm-stat-value{font-family:var(--font-display);font-size:1.8rem;line-height:1}.rhythm-stat-label{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;margin-top:4px;font-size:.75rem}.summary-drift{color:var(--text-dim);margin:0;font-size:.9rem}.summary-breakdown{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.chip{border-radius:var(--radius-pill);background:var(--surface);color:var(--text);padding:4px 10px;font-size:.78rem}.chip.is-perfect{background:rgb(var(--success-rgb) / .25)}.chip.is-good{background:rgb(var(--reward-rgb) / .25)}.chip.is-miss,.chip.is-ghost,.chip.is-wrongVoice{background:rgb(var(--danger-rgb) / .22)}.summary-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.music-glyph{font-family:var(--music-font);letter-spacing:0;font-style:normal;font-weight:400;line-height:1;display:inline-block}.subdivision-triplet{white-space:nowrap;position:relative}.subdivision-three{font-family:var(--font-display,serif);vertical-align:.5em;margin-left:.06em;font-size:.48em;font-weight:700}.kit-switcher-wrap{flex-direction:column;align-items:flex-end;gap:4px;display:inline-flex}.kit-switcher{border-radius:var(--radius-pill);background:var(--surface);border:1px solid rgb(var(--reward-rgb) / .35);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.kit-switcher-lock{color:var(--text-dim);white-space:nowrap;font-size:.72rem}.kit-switcher-icon{color:var(--reward);font-size:.9rem}.kit-switcher-select{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;max-width:12ch;padding-right:4px;font-size:.82rem}.kit-switcher-select:disabled{opacity:.5;cursor:default}.kit-switcher-select option{color:#111}.kit-switcher-select optgroup{color:#111;font-style:italic}.zapper-root{min-height:100vh;color:var(--text);flex-direction:column;align-items:center;gap:1.5rem;padding:2rem 1rem;display:flex}.zapper-header{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:640px;display:flex}.zapper-header-right{align-items:center;gap:12px;display:flex}.zapper-title-row{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:640px;display:flex}.zapper-title{font-family:var(--font-display);margin:0;font-size:1.75rem}.zapper-legal{color:var(--text-dim);text-align:center;max-width:40ch;margin:0;font-size:.85rem}.zapper-live{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:480px;display:flex}.zapper-hero{justify-content:center;align-items:center;width:100%;min-height:96px;display:flex}.zapper-slot{border:1px dashed var(--border);border-radius:var(--radius);background:rgb(var(--surface-rgb) / .04);flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;padding:12px;display:flex;position:relative}.zapper-slot-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-size:.7rem}.zapper-target-track{min-height:220px}.zapper-scorebar{min-height:56px}.zapper-hero{flex-direction:column;gap:.5rem}.zapper-hint{color:var(--text-dim);letter-spacing:.03em;min-height:1.25em;font-size:.85rem}.zapper-progress{color:var(--text-dim);letter-spacing:.05em;font-size:.85rem}.zapper-score{font-family:var(--font-display);color:var(--reward);font-size:1.25rem;font-weight:700}.zapper-endcard{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);flex-direction:column;align-items:center;gap:12px;width:100%;padding:16px;display:flex}.zapper-endcard-text{text-align:center;color:var(--text);margin:0}.zapper-endcard-actions{gap:10px;display:flex}.zapper-controls-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.zapper-track-picker{align-items:center;gap:6px;display:inline-flex}.zapper-control-label{color:var(--text-dim);letter-spacing:.05em;font-size:.8rem}.zapper-track-select{appearance:none;cursor:pointer;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);min-height:32px;color:var(--text);font:inherit;padding:.3rem .6rem;font-size:.9rem}.zapper-track-select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.tuner-cents-strip{width:100%;height:26px;margin-top:8px;position:relative}.tuner-cents-strip.dim{opacity:.4}.tuner-cents-strip-track{border-radius:var(--radius-pill);height:10px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.cents-band{height:100%;display:block}.cents-band-red-left{background:rgb(var(--danger-rgb) / .45);width:30%}.cents-band-yel-left{background:rgb(var(--reward-rgb) / .6);width:15%}.cents-band-green{background:rgb(var(--success-rgb) / .95);width:10%}.cents-band-yel-right{background:rgb(var(--reward-rgb) / .6);width:15%}.cents-band-red-right{background:rgb(var(--danger-rgb) / .45);width:30%}.cents-center-line{background:rgb(var(--text-rgb) / .55);width:1.5px;position:absolute;top:-4px;bottom:-4px;left:50%;transform:translate(-50%)}.cents-marker{border-left:7px solid #0000;border-right:7px solid #0000;border-top:11px solid var(--success);width:0;height:0;filter:drop-shadow(0 0 4px rgb(var(--success-rgb) / .6));will-change:left;transition:left 60ms linear;position:absolute;top:0;transform:translate(-50%)}.dual-note{font-family:var(--font-display);color:var(--text);justify-content:center;align-items:center;gap:.75rem;line-height:1;display:flex}.dual-note__col{flex-direction:column;align-items:center;gap:.25rem;display:flex}.dual-note__divider{background:rgb(var(--text-rgb) / .18);align-self:stretch;width:1px}.dual-note__caption{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:.55rem}.dual-note__read{letter-spacing:.02em;font-weight:600}.dual-note__heard{color:var(--text-muted);opacity:.75;font-weight:500}.dual-note--hero .dual-note__read{font-size:5rem}.dual-note--hero .dual-note__heard{font-size:2rem}.dual-note--hero.dual-note--dual{min-height:5.5rem}.dual-note--hero.dual-note--single{min-height:5rem}.dual-note--hud .dual-note__read{font-size:1.5rem}.dual-note--hud .dual-note__heard{font-size:.85rem}.dual-note.zapper-note--masked .dual-note__read,.dual-note.zapper-note--masked .dual-note__heard{color:var(--text-dim)}.dual-note.zapper-note--revealed .dual-note__read{color:var(--text)}.dual-note.zapper-note--zapped .dual-note__read{color:var(--success);transition:transform .12s ease-out,color .12s;transform:scale(1.05)}.dual-note.zapper-note--missed .dual-note__read{color:var(--text-dim);text-decoration:line-through}.dual-note.in-tune .dual-note__read{color:var(--success)}.dual-note.dim .dual-note__read,.dual-note.dim .dual-note__heard{color:var(--text-dim);opacity:.5}.fork-btn-wrap{display:inline-flex;position:relative}.fork-btn{appearance:none;cursor:pointer;min-height:var(--touch);height:var(--touch);background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--radius-pill);color:var(--text);font:inherit;align-items:center;gap:8px;padding:0 14px;transition:background .12s,border-color .12s;display:inline-flex}.fork-btn:hover:not(:disabled){background:rgb(var(--surface-rgb) / .08);border-color:rgb(var(--surface-rgb) / .55)}.fork-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.fork-btn svg{width:20px;height:20px;color:var(--reward)}.fork-btn-key{font-family:var(--font-body);color:var(--text);letter-spacing:.02em;font-size:1rem;font-weight:700}.fork-btn-caret{color:var(--text-dim);margin-left:2px;font-size:.7rem}.mic-gate{text-align:center;flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:480px;display:flex}.mic-gate-hint{color:var(--text-dim);margin:0;font-size:.9rem}.mic-gate-error p{color:var(--text);margin:0}.tuner-transp-popover{z-index:30;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);flex-direction:column;gap:10px;width:20rem;min-width:20rem;max-width:min(340px,100vw - 32px);padding:14px;display:flex;position:absolute;bottom:calc(100% + 10px);left:0;box-shadow:0 12px 32px #00000073}.tuner-transp-section-label{letter-spacing:.1em;color:var(--text-muted);padding:2px 4px;font-size:.7rem}.tuner-transp-list{flex-direction:column;gap:2px;display:flex}.tuner-transp-row{appearance:none;color:rgb(var(--text-rgb) / .8);text-align:left;cursor:pointer;font:inherit;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;font-size:.95rem;display:flex}.tuner-transp-row:hover,.tuner-transp-row:focus-visible{background:rgb(var(--surface-rgb) / .06);outline:none}.tuner-transp-row.is-selected{background:rgb(var(--accent-rgb) / .18);border-color:rgb(var(--accent-rgb) / .8);color:var(--text);font-weight:700}.tuner-transp-row-label{flex:auto}.tuner-transp-row-key{color:var(--text-muted);text-align:right;min-width:3ch;font-size:.85rem;font-weight:600}.tuner-transp-row.is-selected .tuner-transp-row-key{color:var(--accent)}.tuner-transp-divider{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}.tuner-transp-ref-row{flex-wrap:nowrap;align-items:center;gap:6px;display:flex}.tuner-transp-a4-chip{appearance:none;cursor:pointer;border-radius:var(--radius-pill);border:1px solid var(--border);min-height:32px;color:var(--text-dim);font:inherit;background:0 0;padding:.35rem .7rem;font-size:.9rem;font-weight:700}.tuner-transp-a4-chip:hover,.tuner-transp-a4-chip:focus-visible{border-color:var(--border-strong);outline:none}.tuner-transp-a4-chip.is-selected{background:var(--reward);color:var(--on-accent);border-color:var(--reward)}.tuner-transp-stepper{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.tuner-transp-step-btn{min-width:32px;min-height:32px;padding:0;font-size:1rem;line-height:1}.tuner-transp-step-value{text-align:center;min-width:3.5ch;color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}.progression-shell{flex-direction:column;gap:8px;max-width:820px;min-height:100%;margin:0 auto;padding:16px;display:flex}.progression-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.progression-title{font-family:var(--font-display);font-size:1.15rem;font-weight:600}.progression-level{font-variant-numeric:tabular-nums;color:var(--reward);background:rgb(var(--reward-rgb) / .12);border-radius:var(--radius-pill);padding:4px 12px;font-weight:700}.progression-character{flex-direction:column;align-items:center;gap:12px;padding:8px 0 4px;display:flex}.progression-legend{color:var(--text-dim);flex-wrap:wrap;justify-content:center;gap:8px 18px;font-size:.82rem;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.dot{border-radius:50%;width:10px;height:10px;display:inline-block}.dot.is-solid{background:var(--success)}.dot.is-learning{background:var(--reward)}.dot.is-new{background:var(--border-strong)}.progression-tracks{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-top:8px;display:grid}.track-heading{font-family:var(--font-display);border-bottom:1px solid var(--border);margin:0 0 10px;padding-bottom:6px;font-size:1rem}.track-nodes{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.node-chip{text-align:left;cursor:pointer;width:100%;min-height:var(--touch);background:rgb(var(--surface-rgb) / .05);border:1px solid var(--border);border-left:4px solid var(--border-strong);color:var(--text);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;transition:background .12s,transform 80ms,border-color .12s;display:flex}.node-chip:hover:not(:disabled){background:rgb(var(--surface-rgb) / .1)}.node-chip:active:not(:disabled){transform:translateY(1px)}.node-chip.is-solid{border-left-color:var(--success)}.node-chip.is-learning{border-left-color:var(--reward)}.node-chip.is-new{border-left-color:var(--border-strong)}.node-chip.is-locked{opacity:.5;cursor:default}.node-state{text-align:center;flex:none;width:1.1em}.node-text{flex-direction:column;flex:1;min-width:0;display:flex}.node-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.node-sub{color:var(--text-dim);font-size:.75rem}.node-badge{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);flex:none;font-size:.68rem}.is-solid .node-badge{color:var(--success)}.is-learning .node-badge{color:var(--reward)}.progression-foot{text-align:center;color:var(--text-muted);margin:16px 0 4px;font-size:.8rem}.progression-exam{margin-top:4px}.exam-callout{border-radius:var(--radius);background:rgb(var(--reward-rgb) / .08);border:1px solid rgb(var(--reward-rgb) / .22);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.exam-callout-text{flex-direction:column;flex:1;gap:3px;min-width:12em;display:flex}.exam-callout-title{font-family:var(--font-display);font-size:1rem;font-weight:600}.exam-callout-sub{color:var(--text-dim);font-size:.82rem;line-height:1.4}.exam-callout-cta{flex:none}.exam-scope-list{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.exam-scope-btn{border-radius:var(--radius-pill);border:1px solid var(--border);padding:6px 12px;font-size:.82rem}.character-radar{width:100%;max-width:340px;height:auto;overflow:visible}.radar-ring{fill:none;stroke:var(--border);stroke-width:1px}.radar-spoke{stroke:var(--border);stroke-width:1px}.radar-area{fill:rgb(var(--accent-rgb) / .22);stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;transition:all .24s}.radar-dot{fill:var(--accent);stroke:var(--surface);stroke-width:1.5px}.radar-label-name{fill:var(--text);font-size:.82rem;font-weight:600}.radar-label-lv{fill:var(--reward);font-size:.72rem;font-weight:700}.radar-fallback{flex-direction:column;gap:6px;display:flex}.radar-fallback-row{color:var(--text);justify-content:space-between;gap:16px;display:flex}.metronome{text-align:center;flex-direction:column;gap:16px;max-width:460px;margin:0 auto;padding:24px 20px 40px;display:flex}.metronome-header{text-align:left;justify-content:space-between;align-items:center;gap:12px;display:flex}.metronome-header-left{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.metronome-header-right{align-items:center;gap:12px;display:flex}.metronome-title{font-family:var(--font-display);margin:0;font-size:1.6rem}.timesig{justify-content:center;display:flex}.timesig-fraction{flex-direction:row;align-items:center;gap:2px;display:inline-flex}.ts-slash{font-family:var(--font-display);color:var(--text-dim);font-size:1.9rem;line-height:1}.ts-select{appearance:none;color:var(--text);font-family:var(--font-display);font-variant-numeric:tabular-nums;text-align:center;text-align-last:center;border-radius:var(--radius);cursor:pointer;background:0 0;border:none;padding:2px 10px;font-size:1.9rem;line-height:1.05;transition:background .12s}.ts-select:hover{background:var(--surface-raised)}.ts-select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.metronome-tempo{justify-content:center;align-items:baseline;gap:8px;margin-top:4px;display:flex}.tempo-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:4.5rem;line-height:1}.tempo-unit{color:var(--text-dim);letter-spacing:.08em;font-size:.9rem}.tempo-name{appearance:none;cursor:pointer;border-radius:var(--radius-pill);color:var(--reward);font-family:var(--font-display);letter-spacing:.02em;background:0 0;border:none;align-self:center;align-items:center;gap:6px;padding:4px 10px;font-size:1.25rem;transition:background .12s;display:inline-flex}.tempo-name:hover{background:rgb(var(--reward-rgb) / .12)}.tempo-name-hint{color:var(--text-dim);font-size:.75rem}.tempo-feel{color:var(--text-dim);align-self:center;max-width:34ch;margin:-6px 0 0;font-size:.9rem;line-height:1.4}.tempo-adjust{align-items:center;gap:14px;display:flex}.tempo-step{appearance:none;width:var(--touch);height:var(--touch);border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .28);background:var(--surface);color:var(--text);cursor:pointer;touch-action:none;flex:none;justify-content:center;align-items:center;font-size:1.6rem;line-height:1;transition:background .12s,border-color .12s,transform 80ms;display:flex}.tempo-step:hover:not(:disabled){background:rgb(var(--surface-rgb) / .1);border-color:rgb(var(--surface-rgb) / .5)}.tempo-step:active:not(:disabled){transform:scale(.94)}.tempo-step:disabled{opacity:.35;cursor:default}.tempo-slider{flex:auto;min-width:0}.metronome-play{appearance:none;border-radius:var(--radius-pill);cursor:pointer;width:96px;height:96px;color:var(--on-accent);background:var(--accent);box-shadow:0 12px 28px -10px rgb(var(--accent-rgb) / .9);border:none;justify-content:center;align-self:center;align-items:center;margin:4px 0;transition:transform .12s,filter .12s,background .16s;display:flex}.metronome-play svg{margin-left:3px}.metronome-play.is-running{background:var(--reward);box-shadow:0 12px 28px -10px rgb(var(--reward-rgb) / .9)}.metronome-play.is-running svg{margin-left:0}.metronome-play:hover{filter:brightness(1.06)}.metronome-play:active{transform:scale(.96)}.field-label{color:var(--text-dim);letter-spacing:.04em;margin-bottom:8px;font-size:.85rem;display:block}.subdivision-options{justify-content:center;gap:10px;display:flex}.subdivision-option{appearance:none;max-width:84px;min-height:var(--touch);border-radius:var(--radius);border:1px solid rgb(var(--surface-rgb) / .2);background:var(--surface);color:var(--text);cursor:pointer;flex:1 1 0;justify-content:center;align-items:center;transition:border-color .12s,background .12s,color .12s;display:flex}.subdivision-option:hover{border-color:rgb(var(--surface-rgb) / .5)}.subdivision-option.is-selected{background:var(--surface-raised);border-color:var(--accent);color:var(--reward);box-shadow:0 0 0 1px var(--accent) inset}.subdivision-option .music-glyph{line-height:1;transform:translateY(.36em)}.volume{align-items:center;gap:12px;display:flex}.volume-icon{color:var(--text-dim);flex:none}.volume-slider{flex:auto;min-width:0}.path-shell{flex-direction:column;gap:14px;max-width:560px;min-height:100%;margin:0 auto;padding:16px;display:flex}.path-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.path-title{font-family:var(--font-display);font-size:1.15rem;font-weight:600}.path-admin-badge{letter-spacing:.08em;color:var(--danger,#e0575b);border-radius:var(--radius-pill);border:1px solid;padding:2px 8px;font-size:.68rem;font-weight:700}.path-jump{cursor:pointer;color:var(--accent);background:rgb(var(--accent-rgb) / .1);border:1px solid rgb(var(--accent-rgb) / .4);border-radius:var(--radius-pill);align-self:center;padding:8px 16px;font-weight:600}.path-jump:hover{background:rgb(var(--accent-rgb) / .16)}.path-track{flex-direction:column;align-items:center;gap:4px;margin:0;padding:0;list-style:none;display:flex}.path-step-wrap{justify-content:center;width:100%;display:flex}.path-step{text-align:left;cursor:pointer;width:100%;max-width:420px;min-height:var(--touch);border-radius:var(--radius-pill);background:rgb(var(--surface-rgb) / .05);border:1px solid var(--border);color:var(--text);align-items:center;gap:12px;padding:12px 16px;transition:background .12s,transform 80ms,border-color .12s;display:flex}.path-step:hover:not(:disabled){background:rgb(var(--surface-rgb) / .1)}.path-step:active:not(:disabled){transform:translateY(1px)}.path-step.is-mastered{border-color:var(--success);color:var(--success)}.path-step.is-current{border-color:var(--accent);background:rgb(var(--accent-rgb) / .1)}.path-step.is-open{border-color:var(--border-strong)}.path-step.is-locked{opacity:.45;cursor:default}.path-step-marker{text-align:center;flex:none;width:1.4em;font-weight:700}.path-step-text{flex-direction:column;flex:1;min-width:0;display:flex}.path-step-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.path-step-sub{color:var(--text-dim);font-size:.75rem}.shop{flex-direction:column;gap:18px;max-width:640px;margin:0 auto;padding:24px 20px 48px;display:flex}.shop-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.shop-title{font-family:var(--font-display);color:var(--text);align-items:center;gap:8px;margin:0;font-size:1.7rem;display:inline-flex}.shop-title-glyph{color:var(--reward);flex-shrink:0}.shop-wallet{background:var(--surface-raised);border:1px solid var(--border);border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:18px;display:flex}.shop-balance{align-items:baseline;gap:8px;margin:0;display:flex}.shop-balance-glyph{color:var(--reward);flex-shrink:0}.shop-balance-num{font-family:var(--font-display);color:var(--reward);font-size:2.6rem;font-weight:700;line-height:1}.shop-balance-label{color:var(--text-dim);font-size:.95rem}.shop-ledger{color:var(--text-muted);margin:0;font-size:.85rem}.shop-tagline{color:var(--text-dim);text-align:center;margin:0;font-size:.95rem}.shop-note{background:rgb(var(--reward-rgb) / .12);border:1px solid rgb(var(--reward-rgb) / .35);color:var(--text);text-align:center;border-radius:12px;margin:0;padding:10px 14px;font-size:.9rem}.shop-tier{flex-direction:column;gap:12px;display:flex}.shop-tier-head{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;padding-bottom:4px;display:flex}.shop-tier-title{font-family:var(--font-display);color:var(--text);margin:0;font-size:1.2rem}.shop-tier-blurb{color:var(--text-muted);margin:0;font-size:.85rem}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.shop-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:18px 14px 16px;display:flex;position:relative}.shop-card-affordable{border-color:rgb(var(--accent-rgb) / .45)}.shop-card-owned{border-color:rgb(var(--success-rgb) / .5);background:rgb(var(--success-rgb) / .08)}.shop-card-locked{opacity:.72}.shop-card-focus{border-color:var(--accent);box-shadow:0 0 0 2px rgb(var(--accent-rgb) / .4)}.shop-card-preview{color:var(--accent);background:var(--surface-raised);border-radius:12px;place-items:center;width:3rem;height:3rem;font-size:2rem;display:grid}.shop-card-name{color:var(--text);font-weight:600}.shop-card-cat{background:var(--surface-raised);border:1px solid var(--border);color:var(--text-dim);letter-spacing:.02em;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;display:inline-flex}.shop-card-price{color:var(--reward);justify-content:center;align-items:center;font-size:.95rem;font-weight:600;display:inline-flex}.shop-card-action .shop-card-price{color:var(--text-muted)}.shop-card-action{border-color:rgb(var(--accent-rgb) / .25)}.shop-card-owned .shop-card-price{color:var(--success)}.shop-card-badge{color:var(--success);font-weight:700;position:absolute;top:8px;right:10px}.shop-buy,.shop-cancel{width:100%;padding:8px 10px;font-size:.9rem}.shop-card-confirm{flex-direction:column;gap:6px;width:100%;display:flex}.theme-editor{max-width:640px;min-height:100%;padding:max(20px, env(safe-area-inset-top)) 18px 40px;flex-direction:column;gap:16px;margin:0 auto;display:flex}.theme-editor-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.theme-editor-title{font-family:var(--font-display);margin:0;font-size:clamp(1.8rem,6vw,2.6rem);font-style:italic;font-weight:600}.theme-editor-tagline{color:var(--text-dim);max-width:60ch;margin:0;font-size:.9rem}.theme-editor-basefrom{color:var(--text-dim);align-items:center;gap:10px;font-size:.9rem;display:flex}.theme-editor-mode{color:var(--text-dim);align-items:center;gap:8px;font-size:.9rem;display:flex}.theme-editor-select,.theme-editor-name,.theme-editor-json{appearance:none;background:var(--bg);color:var(--text);border:1px solid var(--border);font-family:var(--font-body);border-radius:10px;padding:8px 10px;font-size:.9rem}.theme-editor-select option,.theme-editor-select optgroup{color:#111;background-color:#fff}.theme-editor-groups{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.theme-editor-group{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-raised);flex-direction:column;gap:8px;margin:0;padding:8px 14px 14px;display:flex}.theme-editor-group legend{font-family:var(--font-display);color:var(--reward);padding:0 6px;font-size:.95rem;font-style:italic}.theme-editor-swatch{align-items:center;gap:10px;font-size:.85rem;display:flex}.theme-editor-swatch input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;flex:none;width:34px;height:34px;padding:0}.theme-editor-swatch-label{flex:1}.theme-editor-swatch-hex{color:var(--text-muted);font-variant-numeric:tabular-nums;text-transform:uppercase;font-size:.78rem}.theme-editor-preview{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;align-items:center;gap:10px;padding:14px;display:flex}.te-chip{border-radius:var(--radius-pill);color:var(--on-accent);padding:6px 12px;font-size:.82rem;font-weight:600}.te-success{background:var(--success)}.te-danger{background:var(--danger)}.te-reward{background:var(--reward)}.theme-editor-saverow{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.theme-editor-name{flex:160px;min-width:120px}.theme-editor-note{color:var(--text-dim);margin:0;font-size:.85rem}.theme-editor-subhead{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin:0 0 4px;font-size:.72rem}.theme-editor-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.theme-editor-saved-item{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);align-items:stretch;display:inline-flex;overflow:hidden}.theme-editor-saved-item button{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;padding:7px 6px 7px 14px;font-size:.85rem}.theme-editor-saved-item .theme-editor-del{color:var(--text-dim);padding:0 12px}.theme-editor-saved-item .theme-editor-del:hover{color:var(--danger)}.theme-editor-io>summary{cursor:pointer;color:var(--text-dim);padding:6px 0;font-size:.85rem}.theme-editor-json{resize:vertical;width:100%;margin-top:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.theme-editor-io-actions{gap:10px;margin-top:8px;display:flex}.tuner-root{min-height:100vh;color:var(--text);flex-direction:column;align-items:center;gap:1.5rem;padding:2rem 1rem;display:flex}.tuner-header{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:640px;display:flex}.tuner-header-right{align-items:center;gap:12px;display:flex}.tuner-title-row{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:640px;display:flex}.tuner-title{font-family:var(--font-display);margin:0;font-size:1.75rem}.tuner-mode-toggle{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-pill);align-items:center;gap:2px;padding:3px;display:inline-flex}.tuner-mode-option{appearance:none;cursor:pointer;font:inherit;color:var(--text-dim);border-radius:var(--radius-pill);background:0 0;border:0;justify-content:center;align-items:center;padding:4px 10px;font-size:.85rem;font-weight:600;transition:background .12s,color .12s;display:inline-flex}.tuner-mode-option svg{width:22px;height:22px;display:block}.tuner-mode-option:hover:not(.is-active){color:var(--text)}.tuner-mode-option:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.tuner-mode-option.is-active{background:var(--accent);color:var(--on-accent)}.tuner-legal{color:var(--text-dim);text-align:center;max-width:40ch;margin:0;font-size:.85rem}.tuner-live{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:480px;display:flex}.tuner-live-row{justify-content:center;align-items:center;gap:12px;width:100%;display:flex}.tuner-note-block{flex-direction:column;align-items:center;gap:4px;margin:0 auto;display:flex}.tuner-controls-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.tuner-cents-chip{background:var(--surface-raised);color:var(--text);border-radius:var(--radius-pill);text-align:center;min-width:4rem;padding:.25rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.1rem}.tuner-note-sub{color:var(--text-dim);text-align:center;min-height:1.2em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.tuner-listening{color:var(--text-dim);text-align:center;margin:0;font-size:.9rem;font-style:italic}.tuner-error p{text-align:center;color:var(--text)}.tuner-poc-row{border-top:1px dashed var(--border);opacity:.75;justify-content:flex-end;width:100%;margin-top:4px;padding-top:4px;display:flex}.tuner-scaling-poc{color:var(--text-dim);opacity:.7;align-items:center;gap:6px;font-size:.75rem;display:inline-flex}.tuner-scaling-poc-label{letter-spacing:.04em;text-transform:uppercase}.tuner-scaling-poc-select{appearance:auto;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:2px 6px;font-size:.8rem}.tuner-scaling-poc-select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.tuner-trace-slot{width:100%;min-height:200px;display:flex}.tuner-gauge{flex-direction:column;align-items:center;gap:.35rem;width:100%;display:flex;position:relative}.tuner-gauge.is-dim{opacity:.4}.tuner-gauge-svg{width:100%;max-width:400px;height:auto;display:block}.gauge-band{pointer-events:none}.gauge-band-red{stroke:var(--danger);opacity:.8}.gauge-band-gold{stroke:var(--reward);opacity:.85}.gauge-band-green{stroke:var(--success);opacity:1}.gauge-baseline{stroke:rgb(var(--text-rgb) / .14);stroke-width:1.5px}.gauge-needle{stroke:var(--text);stroke-width:4px}.gauge-pivot{fill:var(--surface-raised);stroke:var(--text);stroke-width:2px}.gauge-cents-chip{background:var(--surface-raised);color:var(--text);border-radius:var(--radius-pill);text-align:center;min-width:4rem;padding:.25rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.1rem}.tuner-trace-panel{border-radius:var(--radius);background:rgb(var(--surface-rgb) / .04);border:1px solid rgb(var(--text-rgb) / .14);width:100%;height:100%;min-height:200px;position:relative;overflow:hidden}.tuner-trace-panel.dim{opacity:.5}.tuner-trace-svg{width:100%;height:100%;display:block}.trace-band{pointer-events:none}.trace-band-gold{fill:var(--reward);opacity:.1}.trace-band-green{fill:var(--success);opacity:.22}.trace-centre-line{stroke:rgb(var(--text-rgb) / .25);stroke-width:1.2px}.trace-ribbon{stroke:#79c5bf}.trace-label{color:rgb(var(--text-rgb) / .35);pointer-events:none;letter-spacing:.02em;font-size:.7rem;position:absolute;left:10px}.trace-label-earlier{top:6px}.trace-label-now{bottom:6px}.synthlab{max-width:760px;min-height:100%;padding:max(20px, env(safe-area-inset-top)) 18px 32px;flex-direction:column;gap:18px;margin:0 auto;display:flex}.synthlab-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.synthlab-header-right{align-items:center;gap:10px;display:flex}.synthlab-title{font-family:var(--font-display);margin:0;font-size:clamp(1.8rem,6vw,2.6rem);font-style:italic;font-weight:600}.synthlab-tagline{color:var(--text-dim);max-width:60ch;margin:0;font-size:.9rem}.synthlab-tagline kbd{background:var(--surface);border:1px solid rgb(var(--surface-rgb) / .2);font-family:var(--font-body);border-radius:6px;padding:1px 6px;font-size:.78rem;display:inline-block}.synth-tabs{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.synth-tab{appearance:none;cursor:pointer;border-radius:var(--radius-pill);border:1px solid var(--border);background:rgb(var(--bg-rgb) / .4);min-height:40px;color:var(--text-dim);font-family:var(--font-display);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;padding:6px 14px;font-size:.9rem;font-style:italic;transition:color .12s,border-color .12s,background .12s}.synth-tab.is-on{color:var(--text);border-color:var(--accent);background:rgb(var(--accent-rgb) / .16);box-shadow:inset 0 0 0 1px var(--accent)}.synth-tabs-hint{color:var(--text-dim);margin:0;font-size:.78rem}.synthlab-controls{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;display:grid}.control-group{border:1px solid var(--border);border-radius:var(--radius);background:rgb(var(--bg-rgb) / .4);flex-direction:column;gap:10px;margin:0;padding:10px 14px 14px;display:flex}.control-group legend{font-family:var(--font-display);color:var(--reward);padding:0 6px;font-size:.95rem;font-style:italic}.control{flex-direction:column;gap:4px;display:flex}.control-label{color:var(--text-dim);justify-content:space-between;align-items:baseline;font-size:.78rem;display:flex}.control-value{color:var(--text);font-variant-numeric:tabular-nums}.control input[type=range]{width:100%;accent-color:var(--accent)}.control select{appearance:none;background:var(--bg);color:var(--text);border:1px solid rgb(var(--surface-rgb) / .2);font-family:var(--font-body);border-radius:8px;padding:6px 8px;font-size:.85rem}@media (width>=560px){.synthlab-controls .control-group{min-height:18rem}}.keyboard{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;height:150px;position:relative}.keyboard-whites{gap:2px;height:100%;display:flex}.key{appearance:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:none;padding:0}.key-white{background:linear-gradient(#f9f4e6,#ede6d0);border:1px solid #23294680;border-radius:0 0 6px 6px;flex:1;height:100%}.key-white.is-down{background:linear-gradient(#ffd9a0,#e8b44f)}.key-black{background:linear-gradient(#3a4066,#10131f);border:none;border-radius:0 0 5px 5px;width:7%;height:62%;position:absolute;top:0;transform:translate(-50%);box-shadow:0 3px 6px -1px #0009}.key-black.is-down{background:linear-gradient(#c98a2e,#8a5a17)}.synthlab-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.synthlab-voices{flex-direction:column;gap:10px;display:flex}.voice-save-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.voice-name-input{border:1px solid rgb(var(--surface-rgb) / .2);background:var(--bg);min-width:120px;color:var(--text);font-family:var(--font-body);border-radius:10px;flex:160px;padding:10px 12px;font-size:.95rem}.voice-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.voice-item{border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .18);background:var(--surface);align-items:stretch;display:inline-flex;overflow:hidden}.voice-item.is-current{border-color:var(--reward);box-shadow:0 0 0 1px var(--reward) inset}.voice-load{appearance:none;color:var(--text);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;padding:7px 6px 7px 14px;font-size:.85rem}.voice-del{appearance:none;color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 12px;font-size:1.1rem;line-height:1}.voice-del:hover{color:var(--danger)}.env-plot{background:rgb(var(--bg-rgb) / .5);border-radius:10px;width:100%;height:auto;margin-bottom:4px;display:block}.env-fill{fill:rgb(var(--accent-rgb) / .18);stroke:none}.env-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.app-shell{max-width:560px;min-height:100%;padding:max(16px, env(safe-area-inset-top)) 16px 24px;flex-direction:column;gap:20px;margin:0 auto;display:flex}.app-shell.centered{text-align:center;justify-content:center;align-items:center}.app-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.app-header-right{align-items:center;gap:10px;display:flex}.app-body{flex-direction:column;flex:1;justify-content:center;display:flex}.app-footer{margin-top:4px}:root{--indigo:#232946;--soft:#2e3560;--ivory:#f9f4e6;--coral:#ff6b5e;--gold:#e8b44f;--green:#5fbf77;--bg-rgb:35 41 70;--surface-rgb:249 244 230;--text-rgb:249 244 230;--accent-rgb:255 107 94;--reward-rgb:232 180 79;--success-rgb:95 191 119;--danger-rgb:255 107 94;--bg:var(--indigo);--bg-from:var(--soft);--bg-to:var(--indigo);--surface:var(--soft);--surface-raised:rgb(var(--surface-rgb) / .09);--border:rgb(var(--surface-rgb) / .14);--border-strong:rgb(var(--surface-rgb) / .4);--text:var(--ivory);--text-dim:rgb(var(--text-rgb) / .62);--text-muted:rgb(var(--text-rgb) / .4);--on-accent:#111;--accent:var(--coral);--reward:var(--gold);--success:var(--green);--danger:var(--coral);--shadow:#000;--glow:rgb(var(--surface-rgb) / .7);--focus-ring:rgb(var(--accent-rgb) / .6);--ink:var(--text);--ink-dim:var(--text-dim);--radius:16px;--radius-pill:999px;--touch:48px;--font-display:Georgia, "Times New Roman", serif;--font-body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@font-face{font-family:Bravura;src:url(/fonts/Bravura.woff2)format("woff2");font-display:swap}:root{--music-font:"Bravura", serif}*{box-sizing:border-box}html,body,#root{height:100%}body{background:radial-gradient(circle at 50% 0%, var(--bg-from), var(--bg-to) 70%);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-repeat:no-repeat;background-attachment:fixed;margin:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.btn-primary{appearance:none;cursor:pointer;min-height:var(--touch);border-radius:var(--radius-pill);background:var(--accent);color:var(--on-accent);box-shadow:0 8px 20px -8px rgb(var(--accent-rgb) / .8);border:none;padding:14px 28px;font-size:1.05rem;font-weight:600;transition:transform .12s,filter .12s}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-primary:active:not(:disabled){transform:translateY(1px)scale(.99)}.btn-primary:disabled{opacity:.6;cursor:progress}.btn-ghost{appearance:none;cursor:pointer;min-height:var(--touch);border-radius:var(--radius-pill);border:1px solid rgb(var(--surface-rgb) / .28);color:var(--text);background:0 0;padding:8px 16px;font-size:.9rem;font-weight:600;transition:background .12s,border-color .12s,opacity .12s}.btn-ghost:hover:not(:disabled){background:rgb(var(--surface-rgb) / .08);border-color:rgb(var(--surface-rgb) / .5)}.btn-ghost:disabled{opacity:.35;cursor:default}
