.td-page .app-main{padding-bottom:24px}.td-num{font-family:var(--font-mono);letter-spacing:.06em;color:var(--a);font-size:.72em;font-weight:500}.td-toc{margin-bottom:48px}.td-toc-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin-bottom:12px;font-size:.7rem;font-weight:500;display:flex}.td-toc-label:before{content:"";background:var(--a);width:6px;height:6px;box-shadow:0 0 3px color-mix(in srgb, var(--a) 50%, transparent);border-radius:1px}.td-toc ol{columns:2;column-gap:24px;list-style:none}.td-toc li{break-inside:avoid}.td-toc a{color:var(--text);align-items:baseline;gap:10px;padding:4px 0;font-size:.86rem;text-decoration:none;transition:color .15s;display:flex}.td-toc a:hover{color:var(--a)}@media (width<=560px){.td-toc ol{columns:1}}.td-section{margin-bottom:52px;scroll-margin-top:24px}.td-h2{letter-spacing:-.02em;color:var(--text);border-bottom:1px dashed var(--border);align-items:baseline;gap:12px;margin-bottom:16px;padding-bottom:10px;font-size:1.3rem;font-weight:700;display:flex}.td-h3{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:26px 0 10px;font-size:.72rem;font-weight:500}.td-h3:first-child{margin-top:0}.td-p{color:var(--muted);margin-bottom:14px;line-height:1.7}.td-p:last-child{margin-bottom:0}.td-p strong{color:var(--text)}.td-p em{color:var(--text);font-style:italic}.td-p a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--border-hover);text-decoration-color:var(--border-hover);text-underline-offset:3px}.td-p a:hover{color:var(--a);-webkit-text-decoration-color:var(--a);text-decoration-color:var(--a)}.td-list{flex-direction:column;gap:6px;margin:0 0 14px;list-style:none;display:flex}.td-list li{color:var(--muted);padding-left:14px;font-size:.9rem;line-height:1.6;position:relative}.td-list li:before{content:"";background:var(--a);border-radius:1px;width:5px;height:5px;position:absolute;top:.65em;left:0}.td-list strong{color:var(--text)}.td-code{font-family:var(--font-mono);background:var(--card-2);border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:3px;padding:1px 5px;font-size:.85em}.td-formula{background:var(--card-2);border:1px solid var(--border);box-shadow:var(--inset);font-family:var(--font-mono);color:var(--text);white-space:pre;scrollbar-width:thin;scrollbar-color:var(--border-hover) transparent;border-radius:4px;margin:16px 0;padding:14px 18px;font-size:.8rem;line-height:1.85;overflow-x:auto}.td-diagram{line-height:1.5}.td-feature-grid{flex-direction:column;gap:12px;display:flex}.td-feature-group{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight);padding:16px 18px}.td-feature-group .td-h3{margin:0 0 10px}.td-feature-group ul{flex-direction:column;gap:8px;list-style:none;display:flex}.td-feature-group li{color:var(--muted);padding-left:14px;font-size:.86rem;line-height:1.55;position:relative}.td-feature-group li:before{content:"";background:var(--a);border-radius:1px;width:5px;height:5px;position:absolute;top:.6em;left:0}.td-feature-group strong{color:var(--text)}.td-see{font-family:var(--font-mono);letter-spacing:.04em;color:var(--a);white-space:nowrap;font-size:.72rem;text-decoration:none}.td-see:after{content:" →"}.td-see:hover{text-decoration:underline}.td-resource-group{margin-top:26px}.td-table-wrap{border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--border-hover) transparent;border-radius:4px;margin:16px 0;overflow-x:auto}.td-table{border-collapse:collapse;width:100%;font-size:.84rem}.td-table th,.td-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);color:var(--muted);padding:9px 12px}.td-table tr:last-child th,.td-table tr:last-child td{border-bottom:none}.td-table thead th{background:var(--card-2);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;font-size:.66rem;font-weight:500}.td-table tbody td:first-child{color:var(--text);white-space:nowrap;font-weight:600}.td-table-compact th,.td-table-compact td{font-family:var(--font-mono);text-align:center;white-space:nowrap;font-size:.78rem}.td-table-compact th{background:var(--card-2);text-align:left;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.66rem;font-weight:500}.td-table-compact thead td{color:var(--text);background:var(--card-2)}.td-table-compact tbody td{color:var(--text);font-weight:400}.td-table-compact tbody td:first-child{font-weight:400}.td-callout{background:color-mix(in srgb, var(--a) 8%, transparent);border:1px solid color-mix(in srgb, var(--a) 30%, transparent);color:var(--muted);border-left-width:3px;border-radius:4px;margin:16px 0;padding:14px 18px;font-size:.875rem;line-height:1.8}.td-callout strong{color:var(--text)}.td-hr{border:none;border-top:1px solid var(--border);margin:48px 0}.td-sources-list{flex-direction:column;gap:10px;display:flex}.td-source-item{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight);padding:14px 16px}.td-source-item a{color:var(--text);font-size:.9rem;font-weight:600;text-decoration:none}.td-source-item a:hover{color:var(--a)}.td-source-item .td-p{margin:4px 0 0;font-size:.82rem}@media (width<=600px){.td-h2{font-size:1.15rem}.td-formula{padding:12px 14px;font-size:.72rem}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#121110;--card:#1a1917;--card-2:#211f1c;--border:#2e2b27;--border-hover:#45403a;--card-hover:#28251f;--text:#ede6d8;--muted:#8b8375;--a:#eba542;--a-ink:#1a1206;--cut:#6fb0cf;--green:#8cc77a;--red:#e86450;--radius:6px;--highlight:#fff4de09;--shadow:0 1px 2px #00000040;--inset:inset 0 1px 3px #0000002e;--cap-top:#8a5a31;--cap-bottom:#5b3a1d;--cap-edge:#2b1a0b;--cap-shine:#ffd6a059;--key-top:#2b2824;--key-bottom:#211e1a;--key-edge:#2e2a24;--key-drop:0 1px 0 #0000008c;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}[data-theme=light]{--bg:#f8f7f3;--card:#fdfcf9;--card-2:#ece6da;--border:#d9d1c2;--border-hover:#bdb3a1;--card-hover:#e4ddcf;--text:#1e1b16;--muted:#7a7264;--a:#b86f12;--a-ink:#fff8ec;--cut:#2c7ca3;--green:#3f8a35;--red:#c4422e;--highlight:#ffffffb3;--shadow:0 1px 2px #3c2d140f;--inset:inset 0 1px 2px #3c2d140f;--cap-top:#8f5e33;--cap-bottom:#633f1f;--cap-edge:#3f2711;--cap-shine:#ffdcaa73;--key-top:#fdfbf7;--key-bottom:#ebe4d6;--key-edge:#c9bfac;--key-drop:0 1px 0 #3c2d1414}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body{overflow-x:clip}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:15px;line-height:1.5}.app{flex-direction:column;max-width:1200px;min-height:100dvh;margin:0 auto;padding:0 16px;display:flex}.app-main{flex:1}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.app-header,.rack-side>*,.rack-main>*,.app-footer{animation:.5s cubic-bezier(.2,.7,.2,1) both rise}.rack-side>:first-child{animation-delay:60ms}.rack-side>:nth-child(2){animation-delay:.12s}.rack-main>*{animation-delay:.1s}.app-footer{animation-delay:.24s}.rack{grid-template-columns:312px minmax(0,1fr);align-items:start;gap:20px;display:grid}.rack-side,.rack-main{flex-direction:column;gap:20px;display:flex}.rack-side{position:sticky;top:16px}.rack .card{margin-bottom:0}.app-header{z-index:3}.rack-main{position:relative}.rack-side:hover,.rack-side:focus-within,.rack-main:hover,.rack-main:focus-within{z-index:2}.rack-side>:hover,.rack-side>:focus-within,.rack-main>:hover,.rack-main>:focus-within{z-index:2;position:relative}@media (width<=860px){.rack{flex-direction:column;align-items:stretch;display:flex}.rack-side,.rack-main{display:contents}.rack-side>.panel-group:first-child{order:1}.rack-main>.panel-group{order:2}.rack-side>.panel-group:nth-child(2){order:3}.rack-main>.score-card{order:4}.side-footer{order:5}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.app-header{margin-bottom:22px;padding:28px 0 20px;position:relative}.app-header:after{content:"";border-bottom:1px solid var(--border);background:repeating-linear-gradient(to right, var(--border-hover) 0 1px, transparent 1px 40px) bottom / 100% 7px no-repeat, repeating-linear-gradient(to right, var(--border) 0 1px, transparent 1px 8px) bottom / 100% 4px no-repeat;height:7px;position:absolute;bottom:0;left:0;right:0}.header-top{z-index:1;justify-content:space-between;align-items:center;gap:12px;display:flex;position:relative}.header-title{flex-wrap:wrap;align-items:center;gap:4px 18px;min-width:0;display:flex}.header-actions{flex-shrink:0;gap:8px;display:flex}.app-header h1{letter-spacing:-.045em;font-size:2.1rem;font-weight:800;line-height:1}.title-link{color:inherit;align-items:center;gap:10px;text-decoration:none;display:inline-flex}.header-mark{flex-shrink:0;width:30px;height:30px}.header-mark polyline{fill:none;stroke:var(--a);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.title-eq{color:var(--a)}.app-header p{color:var(--muted);font-size:.9rem}.icon-btn{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:2px solid var(--key-edge);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);color:var(--muted);cursor:pointer;justify-content:center;align-items:center;padding:8px;transition:color .15s,border-color .15s,background .15s,transform 80ms;display:flex}.icon-btn:hover{color:var(--a);border-color:color-mix(in srgb, var(--a) 70%, var(--border-hover));border-bottom-color:color-mix(in srgb, var(--a) 40%, var(--key-edge));background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 10%, var(--key-top)), color-mix(in srgb, var(--a) 5%, var(--key-bottom)));transform:translateY(-1px)}.icon-btn:active{border-bottom-width:1px;transform:translateY(1px)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);background:var(--text);width:max-content;max-width:280px;font-family:var(--font-mono);letter-spacing:normal;text-transform:none;text-align:left;white-space:normal;overflow-wrap:anywhere;color:var(--bg);pointer-events:none;opacity:0;z-index:10;border-radius:4px;padding:5px 9px;font-size:.74rem;font-weight:500;line-height:1.4;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px)}[data-tooltip]:hover:after,[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)}.app-header [data-tooltip]:after{inset:calc(100% + 8px) 0 auto auto;transform:translateY(-4px)}.app-header [data-tooltip]:hover:after,.app-header [data-tooltip]:focus-visible:after{transform:translateY(0)}.trainer-kb-hint[data-tooltip]:after{left:0;transform:translateY(4px)}.trainer-share[data-tooltip]:after{left:auto;right:0;transform:translateY(4px)}.mode-key:first-child[data-tooltip]:after,.tt-start[data-tooltip]:after{left:0;transform:translateY(4px)}.mode-key:last-child[data-tooltip]:after,.tt-end[data-tooltip]:after{left:auto;right:0;transform:translateY(4px)}.trainer-kb-hint[data-tooltip]:hover:after,.trainer-kb-hint[data-tooltip]:focus-visible:after,.trainer-share[data-tooltip]:hover:after,.trainer-share[data-tooltip]:focus-visible:after,.mode-key:first-child[data-tooltip]:hover:after,.mode-key:first-child[data-tooltip]:focus-visible:after,.mode-key:last-child[data-tooltip]:hover:after,.mode-key:last-child[data-tooltip]:focus-visible:after,.tt-start[data-tooltip]:hover:after,.tt-end[data-tooltip]:hover:after{transform:translateY(0)}.trainer-header-end [data-tooltip]:after{inset:calc(100% + 8px) 0 auto auto;transform:translateY(-4px)}.trainer-header-end [data-tooltip]:hover:after,.trainer-header-end [data-tooltip]:focus-visible:after{transform:translateY(0)}:focus-visible{outline:2px solid var(--a);outline-offset:2px}.card{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid color-mix(in srgb, var(--border-hover) 70%, var(--border));border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--shadow);margin-bottom:16px;padding:20px}.card h2,.panel-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin-bottom:14px;font-size:.7rem;font-weight:500;display:flex}.card h2:before,.panel-label:before{content:"";background:var(--a);width:6px;height:6px;box-shadow:0 0 3px color-mix(in srgb, var(--a) 50%, transparent);border-radius:1px;flex-shrink:0}.track-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;min-width:0;display:grid}.rack-side .track-grid{grid-template-columns:minmax(0,1fr);gap:10px}.panel-label{margin:0 0 8px 2px}.panel-label-row{justify-content:space-between;align-items:center;height:17px;margin-bottom:8px;display:flex}.panel-label-row .panel-label{margin-bottom:0}.panel-reset{margin-right:1px;padding:3px}.side-footer{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:-6px;display:flex}.data-btn{border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);cursor:pointer;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;background:0 0;align-items:center;gap:7px;padding:6px 10px;font-size:.64rem;font-weight:500;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.data-btn svg{opacity:.85;flex-shrink:0;width:12px;height:12px}.data-btn:hover{color:var(--a);border-color:color-mix(in srgb, var(--a) 60%, var(--border));background:color-mix(in srgb, var(--a) 7%, transparent)}.data-btn-danger:hover{color:var(--red);border-color:color-mix(in srgb, var(--red) 60%, var(--border));background:color-mix(in srgb, var(--red) 7%, transparent)}@media (width<=860px){.side-footer{margin-top:0}.rack-side .track-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}.track-btn{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);color:var(--text);cursor:pointer;text-align:left;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name glyph""desc desc";align-items:center;gap:2px 12px;padding:8px 14px 10px;font-family:inherit;transition:border-color .15s,background .15s,transform 80ms,border-bottom-width 80ms;display:grid;position:relative}.track-name{grid-area:name}.track-desc{grid-area:desc}.track-glyph{grid-area:glyph;align-self:center}.track-group{cursor:default;flex-direction:column;align-items:stretch;padding:0;display:flex}.track-group:hover:not(:disabled),.track-group:active:not(:disabled){border-bottom-width:3px;transform:none}.track-main{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name glyph""desc desc";align-content:start;align-items:center;gap:2px 12px;padding:7px 14px;display:grid}.track-main:focus-visible{outline:2px solid var(--a);outline-offset:-2px;border-radius:var(--radius)}.track-group:has(.track-main:disabled){opacity:.5}.track-main:disabled,.source-key:disabled{cursor:default}.source-keys{grid-template-columns:repeat(var(--n), minmax(0, 1fr));border-top:1px solid var(--border-hover);display:grid}.source-key{background:color-mix(in srgb, var(--card-2) 55%, transparent);min-width:0;color:var(--muted);cursor:pointer;border:0;border-radius:0;justify-content:center;align-items:center;padding:6px;font-family:inherit;font-size:.84rem;font-weight:600;transition:background .15s,box-shadow .15s,color .15s;display:flex}.source-key+.source-key{border-left:1px solid var(--border-hover)}.source-key:first-child{border-bottom-left-radius:calc(var(--radius) - 1px)}.source-key:last-child{border-bottom-right-radius:calc(var(--radius) - 1px)}.source-key-label{white-space:nowrap}.source-key:focus-visible{outline:2px solid var(--a);outline-offset:-2px}.source-key.is-picked{color:var(--text)}.track-btn.active .source-key.is-picked{color:var(--a);background:color-mix(in srgb, var(--a) 12%, var(--card-2));box-shadow:inset 0 -2px 0 var(--a)}@media (hover:hover){.source-key:hover:not(:disabled){color:var(--text);background:color-mix(in srgb, var(--a) 8%, var(--card-2));box-shadow:inset 0 -2px 0 color-mix(in srgb, var(--a) 55%, transparent)}}.source-key:active:not(:disabled){box-shadow:inset 0 2px 4px #0000002e, inset 0 -2px 0 var(--a)}.track-name:before{content:"";background:var(--border-hover);border-radius:50%;flex-shrink:0;align-self:center;width:6px;height:6px;margin-right:8px;transition:background .2s,box-shadow .2s}.track-glyph{overflow:visible}.track-glyph polyline{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-linejoin:round;opacity:.7;transition:stroke .2s,opacity .2s}.track-glyph rect{fill:var(--muted);opacity:.6;transition:fill .2s,opacity .2s}@media (hover:hover){.track-btn:hover:not(:disabled){border-color:color-mix(in srgb, var(--a) 70%, var(--border-hover));border-bottom-color:color-mix(in srgb, var(--a) 40%, var(--key-edge));background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 10%, var(--key-top)), color-mix(in srgb, var(--a) 5%, var(--key-bottom)));transform:translateY(-1px)}.track-btn:hover:not(:disabled) .track-name:before{background:color-mix(in srgb, var(--a) 60%, var(--border-hover))}.track-btn:hover:not(:disabled) .track-glyph polyline{stroke:color-mix(in srgb, var(--a) 70%, var(--muted));opacity:1}.track-btn:hover:not(:disabled) .track-glyph rect{fill:color-mix(in srgb, var(--a) 70%, var(--muted));opacity:1}.track-btn.active:hover:not(:disabled){background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 18%, var(--key-top)), color-mix(in srgb, var(--a) 11%, var(--key-bottom)))}}.track-btn:active:not(:disabled){border-bottom-width:1px;transform:translateY(2px)}.track-btn.active{border-color:var(--a);border-bottom-color:color-mix(in srgb, var(--a) 55%, var(--key-edge));background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 12%, var(--key-top)), color-mix(in srgb, var(--a) 7%, var(--key-bottom)))}.track-btn.active .track-name:before{background:var(--a);box-shadow:0 0 5px color-mix(in srgb, var(--a) 60%, transparent)}.track-btn.active .track-glyph polyline{stroke:var(--a);opacity:1}.track-btn.active .track-glyph rect{fill:var(--a);opacity:.9}@keyframes source-live{50%{opacity:.45}}.track-btn.live .track-name:before{animation:1.4s ease-in-out infinite source-live}.track-btn.is-preparing .track-name:before{background:var(--a);animation:.5s ease-in-out infinite source-live}.track-btn.live .track-glyph{animation:2.8s ease-in-out infinite source-live}.track-btn:disabled{opacity:.5;cursor:default}.track-btn{min-width:0}.track-name{white-space:nowrap;min-width:0;font-size:.95rem;font-weight:600;display:flex}.file-base{text-overflow:ellipsis;min-width:0;overflow:hidden}.file-ext{flex-shrink:0}.track-desc{color:var(--muted);font-size:.78rem}.track-spec{font-family:var(--font-mono);letter-spacing:.01em;flex-direction:column;gap:1px;font-size:.7rem;display:flex}.track-btn{container-type:inline-size}@container (width<=240px){.track-glyph{display:none}}.audio-controls{flex-direction:column;gap:14px;display:flex}.control-row{grid-template-columns:1fr auto;grid-template-areas:"label value""slider slider";align-items:center;gap:0 12px;display:grid}.control-row .control-label{grid-area:label}.control-row .control-value{grid-area:value}.control-row .control-slider{grid-area:slider}.control-row-pair{grid-template-columns:1fr;gap:14px;display:grid}@media (width<=860px) and (width>=481px){.control-row-pair{grid-template-columns:1fr 1fr;gap:16px 24px}}.control-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);flex-shrink:0;min-width:58px;font-size:.66rem;font-weight:500}.control-value{font-family:var(--font-mono);color:var(--text);text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;min-width:44px;font-size:.74rem}.control-value-time{min-width:max-content}.control-duration{color:var(--muted);font-size:.68rem}.control-slider{appearance:none;background:linear-gradient(to right, var(--a) var(--fill,80%), var(--border-hover) var(--fill,80%));cursor:pointer;border-radius:2px;outline:none;flex:1;min-width:0;height:4px;margin:10px 0}.control-slider:focus-visible{outline:2px solid var(--a);outline-offset:8px}.control-label,.control-value{transition:color .15s}.control-row:hover .control-label{color:var(--text)}.control-row:hover .control-value{color:var(--a)}.control-slider:hover::-webkit-slider-thumb{border-color:var(--a);box-shadow:inset 0 1px 0 var(--cap-shine), 0 0 0 1.5px var(--a)}.control-slider:hover::-moz-range-thumb{border-color:var(--a);box-shadow:inset 0 1px 0 var(--cap-shine), 0 0 0 1.5px var(--a)}.control-slider::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid var(--cap-edge);background-color:var(--cap-bottom);background-image:linear-gradient(var(--a), var(--a)), repeating-linear-gradient(to bottom, transparent 0 3px, #00000047 3px 4px), linear-gradient(to bottom, var(--cap-top), var(--cap-bottom));width:14px;height:24px;box-shadow:inset 0 1px 0 var(--cap-shine), 0 1px 2px #0000004d;cursor:grab;background-position:50%,50%,50%;background-repeat:no-repeat;background-size:100% 2px,100% 100%,100% 100%;border-radius:3px;transition:transform .1s,border-color .15s,box-shadow .15s}.control-slider:active::-webkit-slider-thumb{cursor:grabbing;transform:scale(1.06)}.control-slider::-moz-range-track{background:var(--border-hover);border-radius:2px;height:4px}.control-slider::-moz-range-progress{background:var(--a);border-radius:2px;height:4px}.control-slider::-moz-range-thumb{box-sizing:border-box;border:1px solid var(--cap-edge);background-color:var(--cap-bottom);background-image:linear-gradient(var(--a), var(--a)), repeating-linear-gradient(to bottom, transparent 0 3px, #00000047 3px 4px), linear-gradient(to bottom, var(--cap-top), var(--cap-bottom));width:14px;height:24px;box-shadow:inset 0 1px 0 var(--cap-shine), 0 1px 2px #0000004d;cursor:grab;background-position:50%,50%,50%;background-repeat:no-repeat;background-size:100% 2px,100% 100%,100% 100%;border-radius:3px}.control-slider:active::-moz-range-thumb{cursor:grabbing}.btn-primary{background:var(--a);border:1px solid color-mix(in srgb, var(--a) 70%, #000);border-radius:var(--radius);color:var(--a-ink);cursor:pointer;letter-spacing:.01em;padding:10px 24px;font-family:inherit;font-size:.9rem;font-weight:700;transition:filter .15s,transform .1s;box-shadow:inset 0 1px #fff3}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-primary.large{padding:13px 36px;font-size:1rem}.btn-primary:disabled{opacity:.35;cursor:default}.btn-ghost{border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);cursor:pointer;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;background:0 0;padding:5px 12px;font-size:.7rem;transition:color .15s,border-color .15s}.btn-ghost:hover{color:var(--text);border-color:var(--border-hover)}.score-header{align-items:center;gap:14px;margin-bottom:14px;display:flex}.score-header h2{margin:0}.score-reset{margin-left:auto}.score-tabs{border:1px solid var(--border-hover);border-radius:var(--radius);background:var(--card-2);display:flex}.score-tab{color:var(--muted);cursor:pointer;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:0 0;border:0;padding:3px 10px;font-size:.62rem;font-weight:500;transition:color .15s,background .15s}.score-tab+.score-tab{border-left:1px solid var(--border-hover)}.score-tab:hover{color:var(--text)}.score-tab.is-active{color:var(--a);background:color-mix(in srgb, var(--a) 14%, transparent)}.score-summary{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px 28px;display:grid}.score-points{font-family:var(--font-mono);font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;display:flex}.score-big{letter-spacing:-.05em;font-size:2.6rem;font-weight:600;line-height:1}.score-unit{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:.7rem}.score-stats{flex-direction:column;gap:7px;min-width:0;display:flex}.score-bar-wrap{align-items:center;gap:12px;display:flex}.score-facts{color:var(--muted);flex-wrap:wrap;gap:4px 16px;font-size:.8rem;display:flex}.score-facts strong{font-family:var(--font-mono);color:var(--text);font-weight:600}.score-recent{flex-direction:column;gap:6px;display:flex}.score-mini-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:.6rem}.score-lamps{gap:4px;display:flex}.score-lamp{background:var(--card-2);border:1px solid var(--border-hover);border-radius:50%;width:8px;height:8px}.score-lamp.is-hit{background:var(--green);border-color:var(--green);box-shadow:0 0 4px color-mix(in srgb, var(--green) 50%, transparent)}.score-lamp.is-miss{background:var(--red);border-color:var(--red);box-shadow:0 0 4px color-mix(in srgb, var(--red) 50%, transparent)}.score-bar{background:var(--card-2);border:1px solid var(--border);border-radius:2px;flex:1;height:10px;padding:1px;overflow:hidden}.score-fill{border-radius:1px;height:100%;transition:width .4s;-webkit-mask:repeating-linear-gradient(90deg,#000 0 6px,#0000 6px 8px);mask:repeating-linear-gradient(90deg,#000 0 6px,#0000 6px 8px)}.score-pct{font-family:var(--font-mono);color:var(--text);text-align:right;min-width:40px;font-size:.8rem;font-weight:500}.score-note{color:var(--muted);margin-top:14px;font-size:.82rem}.score-modes-wrap{margin-top:16px;overflow-x:auto}.score-modes{border-collapse:collapse;width:100%;font-size:.84rem}.score-modes th{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:0 10px 6px 0;font-size:.6rem;font-weight:500}.score-modes td{border-bottom:1px dashed var(--border);font-variant-numeric:tabular-nums;white-space:nowrap;padding:7px 10px 7px 0}.score-modes tr:last-child td{border-bottom:0}.score-modes td:first-child{font-weight:600}.score-modes td:not(:first-child){font-family:var(--font-mono);font-size:.8rem}.score-modes th:last-child,.score-mode-points{text-align:right;padding-right:0}.score-mode-points{color:var(--a);font-weight:600}.score-mode-note{font-family:var(--font-mono);color:var(--muted);margin-left:8px;font-size:.7rem;font-weight:400}.score-card.is-empty .score-big,.score-card.is-empty .score-pct,.score-card.is-empty .score-facts strong{color:var(--border-hover)}@media (width<=600px){.score-summary{grid-template-columns:auto minmax(0,1fr)}.score-recent{flex-direction:row;grid-column:1/-1;align-items:center;gap:10px}.score-big{font-size:2.1rem}.score-mode-note{margin:2px 0 0;display:block}.score-modes td{vertical-align:top}}.control-row{position:relative}.loop-band{height:2px;margin-left:calc(7px + (100% - 14px) * var(--a));width:calc((100% - 14px) * (var(--b) - var(--a)));background:var(--cut);min-width:2px;box-shadow:-1px -3px 0 -1px var(--cut), 1px -3px 0 -1px var(--cut);pointer-events:none;grid-area:slider;align-self:center;transform:translateY(9px)}.loop-row{flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:-4px;display:flex}.loop-row .btn-ghost{padding:4px 9px}.loop-readout{font-family:var(--font-mono);color:var(--muted);flex-basis:100%;order:-1;font-size:.7rem}.practice-row{border-top:1px dashed var(--border);flex-direction:column;gap:14px;margin-top:20px;padding-top:18px;display:flex}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.switch input{opacity:0;width:1px;height:1px;position:absolute}.switch-track{box-sizing:border-box;background:var(--card-2);border:1px solid var(--border-hover);border-radius:4px;flex-shrink:0;width:38px;height:20px;transition:background .18s,border-color .18s,box-shadow .18s;position:relative;box-shadow:inset 0 1px 3px #00000059}.switch-track:after{content:"";box-sizing:border-box;border:1px solid var(--cap-edge);background-color:var(--cap-bottom);background-image:repeating-linear-gradient(to right, transparent 0 3px, #00000047 3px 4px), linear-gradient(to bottom, var(--cap-top), var(--cap-bottom));width:16px;height:12px;box-shadow:inset 0 1px 0 var(--cap-shine), 0 1px 2px #00000059;border-radius:2px;transition:transform .18s cubic-bezier(.3,.7,.3,1);position:absolute;top:3px;left:3px}.switch:hover .switch-track{border-color:color-mix(in srgb, var(--a) 45%, var(--border-hover))}.switch input:checked+.switch-track{border-color:var(--a);background:color-mix(in srgb, var(--a) 28%, var(--card-2));box-shadow:inset 0 1px 3px #0000004d, 0 0 6px color-mix(in srgb, var(--a) 25%, transparent)}.switch input:checked+.switch-track:after{transform:translate(16px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--a);outline-offset:2px}.switch:active .switch-track:after{transform:scaleX(1.1)}.switch:active input:checked+.switch-track:after{transform:translate(16px)scaleX(1.1)}.switch-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);order:-1;font-size:.66rem;font-weight:500}.switch input:checked~.switch-label{color:var(--text)}.error{color:var(--red);margin-top:10px;font-size:.82rem}.muted{color:var(--muted)}.not-found{text-align:center;max-width:520px;margin:48px auto}.not-found h2{justify-content:center}.not-found p{color:var(--muted);margin-bottom:20px}.not-found .btn-primary{text-decoration:none;display:inline-block}.app-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 24px;margin-top:48px;padding:26px 0 30px;display:flex;position:relative}.app-footer:before{content:"";border-top:1px solid var(--border);background:repeating-linear-gradient(to right, var(--border-hover) 0 1px, transparent 1px 40px) top / 100% 7px no-repeat, repeating-linear-gradient(to right, var(--border) 0 1px, transparent 1px 8px) top / 100% 4px no-repeat;height:7px;position:absolute;top:0;left:0;right:0}.footer-links{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 20px;font-size:.66rem;display:flex}.footer-links a{color:var(--muted);align-items:center;gap:7px;line-height:1;text-decoration:none;transition:color .15s;display:inline-flex}.footer-links a:hover{color:var(--a)}.footer-links svg{flex-shrink:0;width:13px;height:13px;display:block}.footer-credit{align-items:center;gap:6px;line-height:1;display:inline-flex}.footer-credit a{color:var(--muted);gap:4px}.footer-credit svg{width:10px;height:10px;transform:translateY(-1px)}.info-modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), 0 12px 32px -16px #00000073;color:var(--text);outline:none;width:calc(100vw - 32px);max-width:720px;margin:auto;padding:0}.info-modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0a080599}@keyframes modal-in{0%{opacity:0;transform:translateY(-6px)scale(.98)}to{opacity:1;transform:none}}.info-modal[open]{animation:.18s modal-in}.confirm-modal{max-width:420px}.confirm-body{padding:22px 22px 18px}.confirm-body h2{letter-spacing:-.02em;color:var(--text);margin-bottom:8px;font-size:1.05rem;font-weight:700}.confirm-body p{color:var(--muted);font-size:.875rem;line-height:1.6}.confirm-actions{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.confirm-actions .btn-ghost{padding:8px 14px}.btn-danger{background:var(--red);border:1px solid color-mix(in srgb, var(--red) 70%, #000);border-radius:var(--radius);color:#fff;cursor:pointer;padding:8px 16px;font-family:inherit;font-size:.85rem;font-weight:700;transition:filter .15s;box-shadow:inset 0 1px #fff3}.btn-danger:hover{filter:brightness(1.08)}.info-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px 14px;display:flex}.info-modal-header h2{letter-spacing:-.02em;text-transform:none;color:var(--text);margin:0;font-size:1.05rem;font-weight:700}.info-modal-close{color:var(--muted);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .15s;display:flex}.info-modal-close:hover{color:var(--text)}.info-modal-body{scrollbar-width:thin;scrollbar-color:var(--border-hover) transparent;flex-direction:column;gap:20px;max-height:70vh;padding:20px;display:flex;overflow-y:auto}.info-warning{background:color-mix(in srgb, var(--a) 10%, transparent);border:1px solid color-mix(in srgb, var(--a) 35%, transparent);border-radius:var(--radius);color:var(--text);border-left-width:3px;padding:12px 16px;font-size:.85rem;line-height:1.5}.info-warning strong{color:var(--a)}.info-section h3{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--a);margin-bottom:8px;font-size:.68rem;font-weight:500}.info-section p{color:var(--muted);font-size:.875rem;line-height:1.65}.info-section p strong{color:var(--text)}.info-section p em{color:var(--text);font-style:italic}.info-mode-list{flex-direction:column;gap:8px;display:flex}.info-mode-item{color:var(--muted);border-left:2px solid var(--border);padding-left:10px;font-size:.875rem;line-height:1.5}.info-mode-item strong{color:var(--text)}.info-level-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.info-level-badge{background:var(--card-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);padding:8px 14px;font-size:.82rem;line-height:1.4}.info-level-badge strong{color:var(--text);margin-bottom:2px;font-size:.88rem;display:block}.info-tech-link{border-top:1px solid var(--border);align-items:baseline;gap:10px;margin-top:20px;padding-top:16px;font-size:.85rem;display:flex}.info-tech-link a{color:var(--a);white-space:nowrap;font-weight:600;text-decoration:none}.info-tech-link a:hover{text-decoration:underline}.info-tech-link span{color:var(--muted)}.instrument{flex-direction:column;gap:16px;display:flex}.card.source-card,.card.instrument{box-shadow:none;background:0 0;border:none;padding:0}.quickstart{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);grid-template-columns:repeat(3,1fr);list-style:none;display:grid}.qs-step{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"num glyph""title glyph""desc desc";align-content:start;align-items:center;gap:3px 12px;padding:13px 14px 14px;display:grid;position:relative}.qs-step+.qs-step{border-left:1px solid var(--border-hover)}.qs-num{font-family:var(--font-mono);letter-spacing:.12em;color:var(--muted);grid-area:num;align-items:center;gap:7px;font-size:.66rem;font-weight:500;display:flex}.qs-num:before{content:"";background:var(--border-hover);border-radius:50%;width:6px;height:6px}.qs-glyph{grid-area:glyph;align-self:start;overflow:visible}.qs-glyph polyline,.qs-glyph line{fill:none;stroke:var(--muted);stroke-width:1.4px;stroke-linejoin:round;opacity:.75}.qs-glyph rect{fill:none;stroke:var(--muted);stroke-width:1.2px;opacity:.7}.qs-glyph .qs-flat{stroke-dasharray:2 2;opacity:.6}.qs-title{letter-spacing:-.01em;color:var(--text);grid-area:title;font-size:1.05rem;font-weight:700}.qs-desc{color:var(--muted);grid-area:desc;margin-top:4px;font-size:.82rem;line-height:1.45}.qs-step.is-current{background:color-mix(in srgb, var(--a) 7%, transparent);border-radius:calc(var(--radius) - 1px) 0 0 calc(var(--radius) - 1px)}.qs-step.is-current .qs-num{color:var(--a)}.qs-step.is-current .qs-num:before{background:var(--a);box-shadow:0 0 5px color-mix(in srgb, var(--a) 60%, transparent)}.qs-step.is-current .qs-glyph polyline{stroke:var(--a);opacity:1}@media (width<=520px){.quickstart{grid-template-columns:1fr}.qs-step+.qs-step{border-left:0;border-top:1px solid var(--border-hover)}.qs-step.is-current{border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0}}.card .mode-title{margin-bottom:0}.mode-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}@media (width<=520px){.mode-grid{grid-template-columns:1fr}}.mode-card{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);border-radius:var(--radius);color:var(--text);cursor:pointer;text-align:left;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"sign glyph""label glyph""desc desc";align-content:start;align-items:center;gap:3px 12px;padding:13px 14px 14px;font-family:inherit;transition:border-color .15s,background .15s,transform .15s;display:grid}.mode-panel{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);flex-direction:column;display:flex}.mode-panel-head{flex-direction:column;padding:13px 14px 12px;display:flex}.mode-panel-head .mode-desc{margin-top:4px}.mode-keys{grid-template-columns:repeat(var(--n), minmax(0, 1fr));border-top:1px solid var(--border-hover);margin-top:auto;display:grid}.mode-key{background:color-mix(in srgb, var(--card-2) 55%, transparent);min-width:0;color:var(--text);cursor:pointer;border:0;border-radius:0;flex-direction:column;align-items:center;gap:3px;padding:9px 4px 8px;font-family:inherit;transition:background .15s,box-shadow .15s;display:flex}.mode-key+.mode-key{border-left:1px solid var(--border-hover)}.mode-key:first-child{border-bottom-left-radius:calc(var(--radius) - 1px)}.mode-key:last-child{border-bottom-right-radius:calc(var(--radius) - 1px)}.mode-key-label{white-space:nowrap;font-size:.86rem;font-weight:700}.mode-key-sign{font-family:var(--font-mono);letter-spacing:.08em;color:var(--muted);white-space:nowrap;font-size:.6rem}.mode-key:hover{background:color-mix(in srgb, var(--a) 12%, var(--card-2));box-shadow:inset 0 -2px 0 var(--a)}.mode-key:hover .mode-glyph polyline{opacity:1}.mode-key:hover .mode-glyph-boost{stroke:var(--a)}.mode-key:hover .mode-glyph-cut{stroke:var(--cut)}.mode-key:hover .mode-key-sign{color:var(--text)}.mode-key:active{box-shadow:inset 0 2px 4px #0000002e, inset 0 -2px 0 var(--a)}.mode-key:focus-visible{outline:2px solid var(--a);outline-offset:-2px}.mode-key .mode-glyph{align-self:center}.mode-sign{grid-area:sign}.mode-label{grid-area:label}.mode-desc{grid-area:desc;margin-top:4px}.mode-glyph{grid-area:glyph;align-self:start;overflow:visible}.mode-glyph polyline{fill:none;stroke:var(--muted);stroke-width:1.6px;stroke-linejoin:round;stroke-linecap:round;opacity:.8;transition:stroke .2s,opacity .2s}.mode-glyph-zero{stroke:var(--border-hover);stroke-width:1px;stroke-dasharray:1 2}.mode-glyph-marker{stroke:var(--muted);stroke-width:1px;opacity:.6;transition:stroke .2s}.mode-card:hover .mode-glyph polyline{opacity:1}.mode-card:hover .mode-glyph-boost{stroke:var(--a)}.mode-card:hover .mode-glyph-cut{stroke:var(--cut)}.mode-card:hover .mode-glyph-marker{stroke:var(--a);opacity:1}.mode-card:hover{border-color:color-mix(in srgb, var(--a) 70%, var(--border-hover));border-bottom-color:color-mix(in srgb, var(--a) 40%, var(--key-edge));background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 10%, var(--key-top)), color-mix(in srgb, var(--a) 5%, var(--key-bottom)));transform:translateY(-1px)}.mode-card:active{border-bottom-width:1px;transform:translateY(2px)}.mode-label{letter-spacing:-.02em;font-size:1.15rem;font-weight:700}.mode-sign{font-family:var(--font-mono);letter-spacing:.1em;color:var(--muted);align-items:center;gap:7px;font-size:.7rem;font-weight:500;transition:color .15s;display:flex}.mode-sign:before{content:"";background:var(--border-hover);border-radius:50%;width:6px;height:6px;transition:background .2s,box-shadow .2s}.mode-card:hover .mode-sign{color:var(--a)}.mode-card:hover .mode-sign:before{background:var(--a);box-shadow:0 0 5px color-mix(in srgb, var(--a) 60%, transparent)}.mode-desc{color:var(--muted);font-size:.78rem;line-height:1.4}.mode-badge,.level-chip{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:3px;padding:3px 9px;font-size:.7rem;font-weight:500}.mode-badge{border:1px solid var(--border-hover);color:var(--muted)}.level-chip{background:var(--a);color:var(--a-ink);font-weight:600}.trainer-start{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:6px 0 4px;display:flex}.start-desc{color:var(--muted);font-size:.9rem}.start-desc strong{color:var(--text);font-family:var(--font-mono)}.trainer-header{flex-wrap:wrap;align-items:center;gap:10px;min-height:28px;display:flex}.trainer-header h2{color:var(--text);margin:0}.trainer-header h2:before{display:none}.trainer-header-end{gap:8px;margin-left:auto;display:flex}.spectrum-toggle{align-items:center;padding:5px 8px;display:inline-flex}.spectrum-toggle svg{display:block}.spectrum-toggle.is-on{color:var(--a);border-color:color-mix(in srgb, var(--a) 55%, var(--border));background:color-mix(in srgb, var(--a) 10%, transparent)}.trainer-subline{flex-basis:100%;order:10;align-items:center;min-height:20px;margin-top:-2px;display:flex}.trainer-status{color:var(--muted);font-size:.86rem}.result-correct{--verdict:var(--green)}.result-incorrect{--verdict:var(--red)}.result-verdict,.result-points{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;border-radius:4px;align-items:center;padding:3px 9px;font-size:.7rem;font-weight:600;display:inline-flex}.result-verdict{color:var(--verdict);background:color-mix(in srgb, var(--verdict) 13%, transparent);border:1px solid color-mix(in srgb, var(--verdict) 50%, transparent)}.result-points{color:var(--a);background:color-mix(in srgb, var(--a) 10%, transparent);border:1px solid color-mix(in srgb, var(--a) 35%, transparent);text-transform:none;letter-spacing:.04em}.result-facts{font-family:var(--font-mono);color:var(--muted);flex-wrap:wrap;align-items:center;row-gap:2px;font-size:.76rem;display:inline-flex}.result-fact{white-space:nowrap;align-items:center;display:inline-flex}.result-fact:first-child{color:var(--text);font-weight:600}.result-fact+.result-fact:before{content:"";background:var(--border-hover);width:1px;height:11px;margin:0 9px}@media (width<=520px){.result-facts{font-size:.7rem}.result-fact+.result-fact:before{margin:0 6px}}.transport{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.transport .play-toggle{flex:0 150px}.transport-action{align-items:center;gap:10px;margin-left:auto;display:flex}.play-toggle{background:var(--card-2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight);color:var(--text);cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;flex:1;justify-content:center;align-items:center;gap:10px;padding:13px 22px;font-size:.92rem;font-weight:600;transition:background .15s,border-color .15s,color .15s,transform .1s;display:flex;position:relative}.play-toggle:after{content:"";background:var(--border-hover);border-radius:50%;width:6px;height:6px;transition:background .2s,box-shadow .2s;position:absolute;top:9px;right:10px}.play-toggle:hover:not(:disabled){border-color:var(--border-hover);background:var(--card-hover)}.play-toggle:active:not(:disabled){transform:translateY(1px)}.play-toggle-eq{color:var(--a)}.play-toggle-eq.ptog-eq{background:color-mix(in srgb, var(--a) 14%, var(--card-2));border-color:var(--a)}.play-toggle-mine{color:var(--cut)}.play-toggle-mine.ptog-mine{background:color-mix(in srgb, var(--cut) 14%, var(--card-2));border-color:var(--cut)}.play-toggle:disabled{opacity:.45;cursor:default}.play-toggle-flat.ptog-flat{background:color-mix(in srgb, var(--text) 8%, var(--card-2));border-color:var(--text)}@keyframes lamp{50%{opacity:.55}}.ptog-eq:after,.ptog-mine:after,.ptog-flat:after{animation:1.6s ease-in-out infinite lamp}.ptog-eq:after{background:var(--a);box-shadow:0 0 4px color-mix(in srgb, var(--a) 60%, transparent)}.ptog-mine:after{background:var(--cut);box-shadow:0 0 4px color-mix(in srgb, var(--cut) 60%, transparent)}.ptog-flat:after{background:var(--text);box-shadow:0 0 4px color-mix(in srgb, var(--text) 40%, transparent)}.explore-types{flex-wrap:wrap;gap:6px;display:flex}.explore-type{align-items:center;gap:7px;padding:7px 11px;display:inline-flex}.explore-type.is-active{color:var(--a);border-color:var(--a);background:color-mix(in srgb, var(--a) 10%, transparent)}.explore-key{border:1px solid var(--border-hover);color:var(--muted);border-radius:3px;padding:1px 4px;font-size:.6rem}.explore-type.is-active .explore-key{border-color:color-mix(in srgb, var(--a) 60%, var(--border-hover));color:var(--a)}.explore-guide{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text);min-height:1.4em;font-size:.78rem}.freq-graph-wrap{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);line-height:0;position:relative;overflow:hidden}.freq-graph-svg{-webkit-user-select:none;user-select:none;display:block}.graph-label{font-size:calc(8.5px * var(--gk,1));fill:var(--muted);font-family:var(--font-mono)}.graph-grid{stroke:color-mix(in srgb, var(--a) 14%, var(--border));stroke-width:1px;stroke-dasharray:1 3}.graph-zero{stroke:var(--border-hover);stroke-width:1px}.graph-curve-gray{fill:none;stroke:var(--muted);stroke-width:1px;opacity:.4}.graph-border{fill:none;stroke:var(--border);stroke-width:1px}.graph-readout{font-family:var(--font-mono);font-size:calc(7.5px * var(--gk,1));letter-spacing:.12em;fill:color-mix(in srgb, var(--a) 70%, var(--muted));stroke:var(--key-top);stroke-width:4px;paint-order:stroke}.graph-readout-title{fill:var(--muted)}@keyframes graph-scan{0%{opacity:0;transform:translate(0)}8%{opacity:1}92%{opacity:1}to{opacity:0;transform:translate(554px)}}.graph-scan{animation:4.5s linear infinite graph-scan}.graph-scan line{stroke-width:1.5px}.graph-scan circle{fill:var(--a);filter:drop-shadow(0 0 2px var(--a))}.graph-heat rect{transition:fill .3s}.graph-heat-hits{pointer-events:none;position:absolute;inset:0}.graph-heat-hit{pointer-events:auto;border-radius:3px;position:absolute}.heat-tone-none{--heat:var(--muted)}.heat-tone-low{--heat:var(--red)}.heat-tone-mid{--heat:var(--a)}.heat-tone-high{--heat:var(--green)}.graph-heat-ring,.graph-heat-band{pointer-events:none;animation:.15s ease-out both heat-hover-in;position:absolute}.graph-heat-ring{box-shadow:0 0 0 1.5px color-mix(in srgb, var(--heat) 70%, transparent), 0 0 8px 1px color-mix(in srgb, var(--heat) 45%, transparent);border-radius:2px}.graph-heat-band{background:color-mix(in srgb, var(--heat) 8%, transparent);border-left:1px solid color-mix(in srgb, var(--heat) 30%, transparent);border-right:1px solid color-mix(in srgb, var(--heat) 30%, transparent)}@keyframes heat-hover-in{0%{opacity:0}to{opacity:1}}.graph-heat-label{font-size:calc(7.5px * var(--gk,1));letter-spacing:.04em}.heat-none{fill:var(--border);opacity:.6}.heat-low{fill:var(--red)}.heat-mid{fill:var(--a)}.heat-high{fill:var(--green)}@keyframes graph-in{0%{opacity:0}to{opacity:1}}@keyframes graph-rise{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.graph-reveal{transform-box:view-box;transform-origin:0 var(--y0);animation:.55s cubic-bezier(.2,.8,.25,1) both graph-rise}.graph-region-shade{fill:color-mix(in srgb, var(--text) 3%, transparent)}.graph-region-label{font-family:var(--font-mono);font-size:calc(6.5px * var(--gk,1));letter-spacing:.1em;text-transform:uppercase;fill:var(--muted);opacity:.6;pointer-events:none}.graph-spectrum{opacity:0;pointer-events:none;transition:opacity .4s}.graph-spectrum.is-live{opacity:1}.graph-spectrum-fill{fill:color-mix(in srgb, var(--muted) 6%, transparent)}.graph-spectrum-line{fill:none;stroke:color-mix(in srgb, var(--muted) 26%, transparent);stroke-width:1px;stroke-linejoin:round}.graph-cursor{pointer-events:none}.graph-cursor-line{stroke:var(--muted);stroke-width:1px;stroke-dasharray:2 2;opacity:.7}.graph-cursor-text{fill:var(--text)}.graph-fill-boost{fill:color-mix(in srgb, var(--a) 16%, transparent)}.graph-fill-cut{fill:color-mix(in srgb, var(--cut) 16%, transparent)}.graph-fill-mine{fill:color-mix(in srgb, var(--cut) 10%, transparent)}.graph-curve-boost,.graph-curve-cut{fill:none;stroke-width:2px;stroke-linejoin:round}.graph-curve-boost{stroke:var(--a);filter:drop-shadow(0 0 2px color-mix(in srgb, var(--a) 40%, transparent))}.graph-curve-cut{stroke:var(--cut);filter:drop-shadow(0 0 2px color-mix(in srgb, var(--cut) 40%, transparent))}.graph-interactive{cursor:crosshair;touch-action:none}.marker-line{stroke:var(--a);stroke-width:1.5px}.marker-error line{stroke:var(--text);stroke-width:1px}.marker-label{font-family:var(--font-mono);font-size:calc(9px * var(--gk,1));fill:var(--text);stroke:var(--key-top);stroke-width:4px;paint-order:stroke}@keyframes graph-hover-in{0%{opacity:0}to{opacity:.55}}.graph-hover{opacity:.55;stroke-width:1.25px;pointer-events:none;animation:.2s ease-out both graph-hover-in}.graph-selected{pointer-events:none;animation:.2s ease-out both graph-in}.graph-selected .graph-hl-boost,.graph-selected .graph-hl-cut,.graph-selected .graph-hl-mine{stroke-width:2px}.graph-hl-boost,.graph-hl-cut,.graph-hl-mine{fill:none;stroke-linejoin:round}.graph-hl-mine{stroke:var(--cut);stroke-dasharray:6 4}.graph-hl-boost{stroke:var(--a)}.graph-hl-cut{stroke:var(--cut)}.graph-placeholder{font-size:calc(9px * var(--gk,1));letter-spacing:.16em;text-transform:uppercase;fill:color-mix(in srgb, var(--a) 45%, var(--muted));font-family:var(--font-mono)}.freq-grid{grid-template-columns:repeat(var(--n,1), minmax(0, 1fr));margin-top:-6px;padding-left:5.33333%;padding-right:2.33333%;display:grid;container-type:inline-size}.freq-grid .freq-btn{margin:0 min(6px, calc(48px / var(--n,1)))}.freq-grid-mixed{flex-direction:column;gap:10px;margin-top:-6px;display:flex}.freq-grid-mixed .freq-grid{margin-top:0}.mixed-row{position:relative}.mixed-row-label{text-align:center;width:5.33333%;font-size:.7rem;position:absolute;top:50%;left:0;transform:translateY(-50%)}.boost-label{color:var(--a)}.cut-label{color:var(--cut)}.mixed-dir-reveal{margin-left:auto;font-size:.78rem}.sweep-hint{text-align:center;font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);margin-top:-6px;font-size:.72rem}.sweep-hint strong{color:var(--text);font-weight:600}.mixed-dir-reveal strong{color:var(--text)}.freq-btn{background:linear-gradient(to bottom, var(--key-top), var(--key-bottom));border:1px solid var(--border-hover);border-bottom:3px solid var(--key-edge);min-width:0;box-shadow:inset 0 1px 0 var(--highlight), var(--key-drop);color:var(--text);cursor:pointer;min-height:84px;font-family:var(--font-mono);border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:24px 4px 16px;transition:background .13s,border-color .13s,color .13s,transform 80ms,border-bottom-width 80ms;display:flex;position:relative}.freq-btn:before{content:"";background:var(--border);border-radius:2px;width:14px;height:3px;margin-left:-7px;transition:background .15s,box-shadow .15s;position:absolute;top:9px;left:50%}.freq-btn:hover:not(:disabled){border-color:color-mix(in srgb, var(--a) 75%, var(--border-hover));border-bottom-color:color-mix(in srgb, var(--a) 40%, var(--key-edge));background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 13%, var(--key-top)), color-mix(in srgb, var(--a) 7%, var(--key-bottom)));transform:translateY(-2px)}.freq-btn:hover:not(:disabled):before{background:color-mix(in srgb, var(--a) 75%, var(--border))}.freq-btn:hover:not(:disabled) .freq-unit{color:var(--text)}.freq-btn.f-selected:hover:not(:disabled){background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 20%, var(--key-top)), color-mix(in srgb, var(--a) 13%, var(--key-bottom)))}.freq-btn.f-selected:hover:not(:disabled):before{background:var(--a)}.freq-btn:active:not(:disabled){border-bottom-width:1px;transform:translateY(2px)}.freq-btn:disabled{cursor:default}.freq-btn:disabled:not(.f-selected):not(.f-hit):not(.f-missed):not(.f-wrong){opacity:.7}.freq-btn.f-selected{border-color:var(--a);border-bottom-color:color-mix(in srgb, var(--a) 55%, var(--key-edge));color:var(--a);background:linear-gradient(to bottom, color-mix(in srgb, var(--a) 16%, var(--key-top)), color-mix(in srgb, var(--a) 10%, var(--key-bottom)))}.freq-btn.f-selected:before{background:var(--a);box-shadow:0 0 3px color-mix(in srgb, var(--a) 60%, transparent)}.freq-btn.f-hit{border-color:var(--green);border-bottom-color:color-mix(in srgb, var(--green) 55%, var(--key-edge));color:var(--green);background:linear-gradient(to bottom, color-mix(in srgb, var(--green) 16%, var(--key-top)), color-mix(in srgb, var(--green) 10%, var(--key-bottom)))}.freq-btn.f-hit:before{background:var(--green);box-shadow:0 0 3px color-mix(in srgb, var(--green) 60%, transparent)}.freq-btn.f-missed{border-color:var(--green);border-style:dashed dashed solid;border-bottom-color:color-mix(in srgb, var(--green) 45%, var(--key-edge));color:var(--green)}.freq-btn.f-missed:before{background:var(--green);opacity:.6}.freq-btn.f-wrong{border-color:var(--red);border-bottom-color:color-mix(in srgb, var(--red) 55%, var(--key-edge));color:var(--red);background:linear-gradient(to bottom, color-mix(in srgb, var(--red) 14%, var(--key-top)), color-mix(in srgb, var(--red) 9%, var(--key-bottom)))}.freq-btn.f-wrong:before{background:var(--red);box-shadow:0 0 3px color-mix(in srgb, var(--red) 60%, transparent)}.freq-num{font-size:clamp(.58rem, calc(20cqw / var(--n,1)), 1.1rem);letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.freq-unit{letter-spacing:.04em;color:var(--muted);font-size:clamp(.5rem,1.2vw,.64rem)}.f-selected .freq-unit,.f-hit .freq-unit,.f-missed .freq-unit,.f-wrong .freq-unit{color:inherit;opacity:.75}.freq-legend{flex-wrap:wrap;gap:18px;display:flex}.legend-item{color:var(--muted);align-items:center;gap:6px;font-size:.78rem;display:flex}.legend-dot{border-radius:2px;width:12px;height:4px;display:inline-block}.ld-hit{background:var(--green)}.ld-missed{border:1px dashed var(--green);background:0 0;height:6px}.ld-wrong{background:var(--red)}.streak-row{border-top:1px dashed var(--border);align-items:center;gap:12px;padding-top:14px;display:flex}.streak-label{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);flex:1;font-size:.7rem}.wrong-label{color:var(--red)}.streak-pips{gap:4px;display:flex}.pip{background:var(--card-2);border:1px solid var(--border);border-radius:1px;width:16px;height:6px;transition:background .2s,border-color .2s,box-shadow .2s}.pip-correct{background:var(--green);border-color:var(--green);box-shadow:0 0 3px color-mix(in srgb, var(--green) 40%, transparent)}.pip-wrong{background:var(--red);border-color:var(--red);box-shadow:0 0 3px color-mix(in srgb, var(--red) 40%, transparent)}.trainer-kb-hint{display:none}@media (hover:hover){.trainer-kb-hint{display:flex}}@media (width<=600px){.freq-btn{min-height:68px;padding:20px 2px 12px}.app-header{padding-top:22px}.header-top{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title actions""sub sub";align-items:center;row-gap:12px;display:grid}.header-title{display:contents}.header-title h1{grid-area:title}.header-title p{grid-area:sub;font-size:.84rem;line-height:1.5}.header-actions{grid-area:actions}}@media (width<=520px){.transport .play-toggle{white-space:nowrap;flex:1 1 0;gap:6px;padding-inline:8px}.transport-action{width:100%;margin-left:0}.transport-action .btn-primary{flex:1}}@media (width<=400px){.freq-grid .freq-btn{margin:0 min(3px, calc(24px / var(--n,1)))}.freq-btn:before{width:10px;margin-left:-5px}}
