@charset "UTF-8";
:root{color-scheme:dark;--bg:#101311;--panel:#191e1a;--raised:#222a23;--line:#344037;--muted:#a5afa6;--ink:#f2f4ed;--gold:#ebbd70;--green:#a8d6aa;--red:#ff9e89;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.5}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:transparent;min-height:46px;padding:10px 18px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:background .16s,border-color .16s}button:hover{background:var(--raised)}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}a{color:inherit;text-decoration:none}[hidden]{display:none!important}h1,h2,p{margin:0}h1{font-size:clamp(22px,3vw,30px);font-weight:500;letter-spacing:-.035em}h2{font-size:20px;font-weight:500}.small{font-size:14px}.muted{color:var(--muted)}.eyebrow{font-size:12px;letter-spacing:.12em;color:var(--muted);font-weight:600}.normal{letter-spacing:0;font-weight:400}
.app{width:min(1100px,100%);margin:auto;padding:0 38px}.header{display:flex;justify-content:space-between;align-items:center;padding:30px 0 26px}.icon-button{border:0;padding:8px 4px;color:var(--muted);font-size:14px}.input-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.input-info{display:flex;align-items:center;gap:10px;font-size:14px;min-width:0}.status-dot{height:7px;width:7px;border-radius:50%;background:#667168;flex-shrink:0}.status-dot.on{background:var(--green);box-shadow:0 0 13px #a8d6aa44}.status-dot.demo{background:var(--gold)}.level-track{width:50px;background:#384039;height:4px;border-radius:4px;overflow:hidden}.level-track>div{height:100%;width:0;background:var(--green);transition:width .1s}.input-actions{display:flex;gap:9px}.small-button{min-height:40px;font-size:14px;padding:7px 13px;border-radius:9px}.primary{background:var(--gold);color:#211d13;border-color:var(--gold);font-weight:600}.primary:hover{background:#f5cf90;border-color:#f5cf90}.primary.active{background:#283b2c;border-color:#47684d;color:var(--green)}.secondary{background:var(--raised)}.notice{margin-top:12px;padding:12px 16px;color:var(--gold);font-size:14px;background:#342a1a;border-radius:10px}.tabs{display:flex;gap:32px;border-bottom:1px solid var(--line);margin:26px 0 29px}.tab{position:relative;gap:10px;border:0;border-radius:0;padding:12px 2px 17px;font-size:16px;color:var(--muted)}.tab.active{color:var(--gold)}.tab.active:after{position:absolute;content:"";height:2px;bottom:-1px;left:0;right:0;background:var(--gold)}.tab:hover{background:transparent;color:var(--ink)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}
.tuner-layout,.metro-layout{display:grid;grid-template-columns:1.75fr 1fr;gap:20px}.card{background:var(--panel);border:1px solid var(--line);border-radius:22px}.tuner-card{padding:23px 32px 27px;text-align:center;min-height:426px}.card-top{display:flex;align-items:center;justify-content:space-between;text-align:left;font-size:14px;gap:10px}.pitch{font-size:108px;font-weight:400;line-height:1.15;letter-spacing:-.07em;padding-top:18px;color:var(--gold);font-variant-numeric:tabular-nums}.pitch #octave{font-size:44px;letter-spacing:-.025em;color:var(--muted);padding-left:9px}.frequency{font-size:24px;font-variant-numeric:tabular-nums;letter-spacing:-.015em}.frequency>span:last-child{font-size:14px;color:var(--muted)}.gauge{position:relative;height:53px;margin-top:30px}.gauge-ticks{position:absolute;inset:18px 0 10px;background:repeating-linear-gradient(to right,#657467 0,#657467 1px,transparent 1px,transparent 5%);border-right:1px solid #657467}.gauge-zone{position:absolute;top:6px;bottom:0;left:45%;width:10%;background:#a8d6aa15;border-radius:8px}.gauge-center{position:absolute;top:10px;bottom:6px;left:50%;width:1px;background:var(--green)}.needle{position:absolute;top:0;bottom:0;width:3px;background:var(--gold);left:50%;transform:translateX(-50%);transition:left .12s ease-out;border-radius:3px;box-shadow:0 0 15px #ebbd7044}.needle:before{content:"";position:absolute;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--gold);left:-3.5px;top:-4px}.gauge-labels{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:5px}.cents{margin-top:16px;font-size:16px;min-height:24px}.tuner-help{font-size:14px;color:var(--muted);max-width:330px;margin:15px auto 0}.tuner-aside{display:flex;flex-direction:column;gap:18px}.overtone-card{padding:23px}.overtone-number{display:flex;align-items:baseline;gap:12px;margin:12px 0 1px}.overtone-number>span{font-size:58px;line-height:1.1;color:var(--gold);letter-spacing:-.04em}.overtone-number small{font-size:14px;color:var(--muted)}.overtone-note{display:flex;justify-content:space-between;margin-top:14px;font-variant-numeric:tabular-nums}.overtone-note span:last-child{color:var(--muted);font-size:14px}.text-button{border:0;padding:0;min-height:42px;width:100%;justify-content:space-between;margin-top:14px;color:var(--gold);font-size:14px;border-top:1px solid var(--line);border-radius:0;padding-top:12px}.text-button:hover{background:transparent}.settings-card{padding:14px 23px 20px;flex:1}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:9px 0 14px;font-size:14px}.number-with-unit{white-space:nowrap;color:var(--muted);font-size:14px}input[type=number],select{background:#101711;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px;font-size:16px;min-height:42px}input[type=number]{width:80px;text-align:center;font-variant-numeric:tabular-nums;appearance:textfield;-moz-appearance:textfield}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=range]{width:100%;accent-color:var(--gold);height:28px;cursor:pointer;margin:0}input[type=checkbox]{height:23px;width:23px;accent-color:var(--gold);cursor:pointer}.settings-card p{margin-top:10px}
.metro-card{padding:24px 32px 28px;text-align:center}.bpm-control{display:flex;align-items:center;justify-content:center;gap:23px;margin:30px 0}.bpm-label{display:flex;flex-direction:column;align-items:center}.bpm-label>input{font-size:86px;width:180px;background:transparent;border:0;line-height:1;padding:0;color:var(--gold);letter-spacing:-.06em;min-height:100px}.bpm-label>span{color:var(--muted);font-size:14px}.round-button{border-radius:50%;height:46px;width:46px;font-size:28px;padding:0;flex-shrink:0}.beat-dots{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;min-height:38px;margin:27px 0}.beat-dot{height:28px;width:28px;border:1px solid var(--line);background:#29322b;border-radius:50%;transition:background .06s,box-shadow .06s}.beat-dot.first{border-color:var(--gold)}.beat-dot.lit{background:var(--gold);box-shadow:0 0 0 5px #ebbd7012}.metro-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.metro-actions>.primary{min-width:150px}.metro-card>p{margin-top:15px}.metro-settings{padding:20px 24px;align-self:start}.metro-settings .setting-row{margin-bottom:22px}.metro-settings p{margin-top:19px}
.spectrum-card{padding:22px 25px 18px}.spectrum-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}.spectrum-toolbar select{margin-left:5px;min-height:38px;font-size:14px}.canvas-wrap{height:300px;position:relative;margin:15px 0 12px}canvas{display:block;height:100%;width:100%}.chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;pointer-events:none}.base-controls{border-top:1px solid var(--line);padding-top:15px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:14px}.base-controls label{display:flex;align-items:center;gap:12px}.base-controls input{width:100px}.small-button[aria-pressed=true]{background:#3d3423;border-color:var(--gold);color:var(--gold)}.demo-controls{display:flex;align-items:center;gap:15px;background:#262116;border:1px solid #57482f;border-radius:12px;padding:14px 18px;margin-top:24px;font-size:14px}.demo-badge{color:var(--gold);font-size:12px;letter-spacing:.1em}.demo-controls input{flex:1;min-width:80px;max-width:230px}.demo-controls label{white-space:nowrap}.demo-controls output{color:var(--gold);font-variant-numeric:tabular-nums;display:inline-block;min-width:20px}.demo-controls button{margin-left:auto}
footer{padding:28px 0 25px;display:flex;justify-content:space-between;gap:15px;font-size:12px;color:var(--muted)}footer>span:first-child{letter-spacing:.05em}.footer-divider{color:var(--line);padding:0 7px}dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:20px;width:min(460px,calc(100% - 32px));padding:32px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#000a}dialog h2{font-size:27px;margin:15px 0 23px}dialog p{margin:17px 0}dialog .primary{width:100%;margin-top:12px}.dialog-close{position:absolute;right:8px;top:8px;border:0;font-size:24px;min-height:36px;padding:0;width:36px}body:has(dialog[open]){overflow:hidden}
@media(min-width:1200px){.app{padding-top:15px}.header{padding-bottom:32px}.tuner-card{min-height:445px}.pitch{padding-top:25px}}
@media(max-width:760px){.app{padding:0 20px}.header{padding:23px 0}.tuner-layout,.metro-layout{grid-template-columns:1fr}.tuner-aside{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tuner-card{min-height:405px}.section-title>.eyebrow{display:none}.input-strip{flex-wrap:wrap}.input-info{flex:1}.level-track{display:none}.tabs{gap:25px}.overtone-card{padding:20px}.settings-card{padding:10px 18px 17px}.canvas-wrap{height:270px}.demo-controls{flex-wrap:wrap;gap:10px}.demo-controls input{max-width:none}.demo-controls button{margin-left:0}.metro-settings{padding:20px 26px}}
@media(max-width:520px){.app{padding:0 16px 95px}.header{padding-top:max(19px,env(safe-area-inset-top));padding-bottom:19px}.icon-button span{display:none}.icon-button{width:42px;border:1px solid var(--line);border-radius:12px}.input-strip{padding:12px;gap:11px}.input-info{flex-basis:100%;font-size:13px}.input-actions{width:100%}.input-actions .primary{flex:1}.input-actions #demo{min-width:73px}.input-info .level-track{display:block;flex:1;max-width:65px;margin-left:auto}.tabs{position:fixed;z-index:5;left:0;right:0;bottom:0;margin:0;padding:7px 10px max(9px,env(safe-area-inset-bottom));justify-content:space-around;gap:0;border-top:1px solid var(--line);border-bottom:0;background:#101311f5;backdrop-filter:blur(16px)}.tab{flex:1;flex-direction:column;gap:5px;padding:8px 0;font-size:13px;min-height:59px}.tab.active:after{height:2px;bottom:auto;top:-8px;left:24%;right:24%}.tab svg{width:21px;height:21px}main{margin-top:22px}.section-title{margin-bottom:16px}.section-title h1{font-size:23px}.tuner-card{border-radius:18px;padding:18px 22px 23px;min-height:381px}.pitch{font-size:92px;padding-top:13px}.pitch #octave{font-size:39px}.frequency{font-size:24px}.gauge{margin-top:25px}.tuner-help{font-size:14px;margin-top:12px}.tuner-aside{grid-template-columns:1fr}.overtone-card{position:relative;padding:18px 22px}.overtone-number{display:inline-flex;margin:12px 0 0}.overtone-number>span{font-size:45px}.overtone-card>.eyebrow{display:block}.overtone-note{display:inline-flex;flex-direction:column;float:right;align-items:flex-end;margin-top:10px;gap:2px}.overtone-card .text-button{margin-top:14px}.settings-card{padding:10px 22px 19px}.card-top{font-size:13px}.metro-card{padding:20px 22px}.bpm-control{gap:14px;margin:25px 0}.bpm-label>input{width:155px;font-size:78px}.metro-actions{gap:9px}.metro-actions button{font-size:14px;padding:12px}.metro-actions>.primary{min-width:112px}.metro-settings{border-radius:18px}.spectrum-card{padding:16px 13px 14px;border-radius:18px}.spectrum-toolbar .eyebrow{font-size:12px;letter-spacing:.06em}.canvas-wrap{height:250px}.base-controls{gap:10px}.base-controls #base-mode{flex-basis:100%}.demo-controls{padding:13px;gap:11px}.demo-controls label{font-size:13px}.demo-controls input{flex-basis:100%;order:3}.demo-controls button{margin-left:auto}.demo-badge{font-size:12px}footer{flex-direction:column;align-items:center;gap:5px;padding-top:24px;font-size:12px}.notice{font-size:14px}}
@media(max-width:360px){.app{padding-left:10px;padding-right:10px}.bpm-control{gap:5px}.bpm-label>input{width:140px}.metro-card{padding-left:16px;padding-right:16px}.spectrum-toolbar{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.spectrum-main .canvas-wrap{height:370px;margin-top:9px}.spectrum-readout{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:36px;margin-top:9px;font-size:14px;color:var(--green);font-variant-numeric:tabular-nums}.spectrum-legend{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.target-key{display:inline-block;width:16px;border-top:2px dashed var(--gold);margin-left:8px}.sounding-key{display:inline-block;width:16px;height:5px;background:var(--green)}.spectrum-target-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 9px}.target-choice{display:flex;align-items:center;gap:12px;font-size:14px}.target-stepper{display:flex;align-items:center;gap:5px}.target-stepper button{min-width:44px;min-height:44px;padding:0;font-size:25px}.target-stepper input{width:62px;color:var(--gold);font-size:24px;padding:3px}.spectrum-target-bar #hear-target{margin-left:auto;color:var(--gold)}.spectrum-details{margin-top:14px;border-top:1px solid var(--line)}.spectrum-details summary{cursor:pointer;min-height:48px;display:list-item;list-style-position:inside;color:var(--muted);font-size:14px;padding:12px 0}.spectrum-details summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.training-chart{padding:20px 24px}.training-chart-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.training-chart-heading h2{font-size:18px}.training-chart-heading>span{display:flex;align-items:center;gap:6px}.spectrogram-wrap{height:345px;position:relative;margin:12px 0}.trainer-card{padding:22px 26px;border-color:#655137}.training-current{display:grid;grid-template-columns:125px 156px minmax(0,1fr);grid-template-rows:48px;align-items:center;gap:0 16px}.training-current #current-tone{min-width:0;line-height:20px}.training-number{font-size:38px;line-height:48px;height:48px;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--green)}.training-number.mixed{font-size:24px}.training-feedback{margin-top:12px;font-size:15px;line-height:1.4;min-height:4.2em}.training-help{margin-top:17px;max-width:760px}
@media(max-width:520px){.spectrum-main .canvas-wrap{height:290px}.spectrum-readout{align-items:start;flex-wrap:wrap;gap:4px;font-size:14px}.spectrum-legend{margin-left:auto}.spectrum-target-bar{gap:10px 14px}.spectrum-target-bar #target-tone{order:3;flex-basis:100%}.spectrum-target-bar #hear-target{padding:9px 10px;font-size:13px}.spectrum-target-bar #hear-target svg{width:17px}.target-stepper{gap:2px}.target-stepper input{width:50px;font-size:22px}.target-choice{gap:8px}.training-chart{padding:16px 12px;border-radius:18px}.training-chart-heading h2{font-size:17px}.spectrogram-wrap{height:325px}.trainer-card{padding:18px 16px}.training-current{column-gap:8px}}
@media(max-width:360px){.spectrum-target-bar #hear-target{margin-left:0}.spectrum-target-bar #target-tone{order:0}.spectrum-main .canvas-wrap{height:280px}}
/* Keep the instrument itself in the first viewport. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.app{width:min(1380px,100%);padding:0 24px 20px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:24px}
.header{grid-column:1;grid-row:1;padding:15px 0}.tabs{grid-column:2;grid-row:1;justify-content:center;align-self:center;gap:24px;margin:0;border:0}.tab{padding:11px 2px;min-height:46px}.tab.active:after{bottom:0}
.input-strip{grid-column:3;grid-row:1;align-self:center;background:transparent;border:0;padding:0;gap:10px}.input-info{flex:none}.input-info #input-label{display:none}.input-info .level-track{width:34px;display:block}.input-actions{gap:7px}.settings-button{width:42px;padding:8px}.settings-button svg{width:22px;height:22px}.input-actions #mic{min-width:130px}.input-actions #mic.active{min-width:130px}main,#notice,footer{grid-column:1/-1}main{margin:8px 0 0}.notice{margin:0 0 10px}.section-title{margin-bottom:14px}footer{padding:20px 0 0}
.spectrum-main{padding:12px 16px 8px;border-radius:17px;min-width:0}.live-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:96px;padding:0 4px}.live-note{min-width:0;flex:1}.live-note>.eyebrow{font-size:12px;letter-spacing:.08em}.piano-note-readout{font-size:38px;line-height:1.18;font-weight:500;color:#70dce4;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.piano-note-readout.mixed{font-size:28px}#piano-current-accuracy{line-height:1.4;block-size:2.8em;max-width:360px;overflow:auto;font-variant-numeric:tabular-nums}.view-actions{display:flex;gap:7px;align-self:flex-start;padding-top:7px}.view-actions #spectrum-zoom{font-size:22px;width:42px;padding:4px}.view-actions #freeze{min-width:83px}
.spectrum-scroll{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#647668 #191e1a;border-radius:6px;padding-bottom:4px}.spectrum-scroll:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.spectrum-surface{width:100%;min-width:100%}.spectrum-main .canvas-wrap{height:clamp(215px,35vh,330px);margin:0;min-width:0}.chart-empty{text-align:center;padding:15px}.piano-keyboard{position:relative;display:block;height:102px;margin:0 var(--plot-right,12px) 0 var(--plot-left,36px);isolation:isolate;min-width:0}
.piano-key{position:absolute;top:0;min-height:0;display:block;padding:0;border:1px solid #343c36;border-radius:0 0 4px 4px;transition:background-color .08s,box-shadow .08s;overflow:hidden}
.piano-key.white-key{height:100%;background:#e7e9df;color:#303730;z-index:1}.piano-key.black-key{height:63%;background:#222a27;color:#d4ddd4;z-index:2;box-shadow:0 2px 0 #0b100d;transform:none}
.piano-key:disabled{opacity:1;cursor:default}.piano-key:disabled .key-note{opacity:.5}.piano-key:not(:disabled):hover{filter:brightness(1.08)}.piano-key:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.piano-key.key-selected{background:#f3d59d;box-shadow:inset 0 0 0 3px #c57e15;border-color:#ffd381}.piano-key.black-key.key-selected{background:#785525;color:#fff3d9}.piano-key.key-sounding{background:#70dce4;box-shadow:inset 0 0 0 2px #d2fcff;border-color:#163e45;color:#092d32}.piano-key.black-key.key-sounding{background:#3ec9d5;color:#07282c;box-shadow:inset 0 0 0 2px #b2f7ff}.piano-key.key-sounding.key-selected{box-shadow:inset 0 0 0 3px #c17a0d;border-color:#ffe4ad}
.key-note{position:absolute;bottom:6px;left:0;right:0;text-align:center;font-size:12px;line-height:17px;white-space:nowrap}.key-number{position:absolute;bottom:27px;left:50%;transform:translateX(-50%);min-width:23px;padding:1px;border-radius:3px;font-size:14px;line-height:20px;font-weight:600;text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.black-key .key-number{bottom:auto;top:9px;min-width:0;padding:0;font-size:12px}.key-number:empty{display:none}.good{color:var(--green)}.medium{color:var(--gold)}.poor{color:var(--red)}.key-number.good{background:#a8d6aa;color:#15381d}.key-number.medium{background:#ebbd70;color:#49300c}.key-number.poor{background:#ff9e89;color:#511d14}
.piano-keyboard.dense .key-note{display:none}.piano-keyboard.dense .octave-start .key-note{display:block;left:0;right:auto;letter-spacing:-.03em}.piano-keyboard.dense .key-number{font-size:0;line-height:0;height:6px;min-width:0;width:45%;padding:0;bottom:28px;max-width:10px}.piano-keyboard.dense .black-key .key-number{top:8px;bottom:auto}.piano-keyboard.dense .key-sounding .key-number{background:#164950}.piano-keyboard.dense .key-selected:not(.key-sounding) .key-number{background:#6a4108}
.spectrum-target-bar{display:flex;align-items:center;gap:16px;margin:10px 4px 0;padding-top:9px;border-top:1px solid var(--line);min-height:63px;flex-wrap:nowrap}.target-choice{flex:none}.target-stepper{gap:3px}.target-stepper button{min-width:44px;min-height:44px}.target-stepper input{width:50px;font-size:24px}.target-note{flex:1;min-width:0;font-variant-numeric:tabular-nums}.target-note>span{display:block}.target-note strong{font-size:23px;font-weight:500;color:var(--gold);margin-left:5px}.target-note #piano-accuracy{font-size:14px;line-height:1.4;min-height:20px}.spectrum-target-bar #hear-target{margin:0;flex:none}#spectrum-selection-hint{margin:8px 4px;color:var(--gold)}
.spectrum-details{margin-top:5px}.spectrum-details summary{min-height:42px;padding:10px 2px}.detail-body{padding:4px 4px 17px;max-width:900px}.detail-body p+p{margin-top:11px}.detail-body .setting-row{max-width:450px}.detail-body .base-controls{border:0;padding-top:2px}.piano-quality-legend{display:flex;flex-wrap:wrap;gap:7px 17px;font-size:14px;margin:13px 0 9px}.piano-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px;min-height:54px}.piano-choice{display:flex;flex-direction:column;gap:1px;padding:6px 10px;min-width:64px;border-radius:9px;font-size:16px;font-variant-numeric:tabular-nums}.piano-choice small{font-size:12px}.piano-choice[aria-pressed=true]{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.settings-card{padding:0}.settings-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;border-top:1px solid var(--line);padding-top:16px}.settings-actions .icon-button{width:auto;border:0}.settings-actions .icon-button span{display:inline}#settings-dialog h2{margin-top:0}.metro-settings{padding:0}.metro-settings summary{cursor:pointer;padding:17px 22px;font-size:14px;color:var(--muted)}.metro-settings-body{padding:0 22px 20px}.tuner-aside{align-self:start}
@media(max-width:1100px){.app{grid-template-columns:auto minmax(0,1fr);column-gap:16px}.header{grid-column:1;grid-row:1}.input-strip{grid-column:2;grid-row:1;justify-self:end}.tabs{grid-column:1/-1;grid-row:2;margin:0 0 7px;justify-content:flex-start;gap:26px}main{margin-top:3px}}
@media(max-width:520px){.app{padding:0 10px 88px;column-gap:8px}.header{padding:10px 0}.input-strip{padding:0;gap:0;flex-wrap:nowrap}.input-info{display:none}.input-actions{width:auto;gap:7px}.input-actions #mic,.input-actions #mic.active{min-width:44px;width:44px;min-height:42px;padding:9px;flex:none}.input-actions #mic span{display:none}.settings-button{width:40px}.tabs{position:fixed;grid-column:auto;grid-row:auto;justify-content:space-around;gap:0;margin:0;border-top:1px solid var(--line);padding:6px 10px max(8px,env(safe-area-inset-bottom));z-index:5}.tab{padding:7px 0;font-size:13px;min-height:54px}.tab.active:after{top:-7px;bottom:auto}.spectrum-main{padding:9px 7px 8px;border-radius:13px}.live-heading{min-height:86px;padding:0 3px;gap:7px}.piano-note-readout{font-size:28px}.piano-note-readout.mixed{font-size:21px}.view-actions{gap:5px;padding-top:2px}.view-actions #spectrum-zoom{width:34px;min-height:38px;padding:0}.view-actions #freeze{min-width:65px;min-height:38px;padding:6px;font-size:13px}#piano-current-accuracy{font-size:13px}.spectrum-main .canvas-wrap{height:clamp(155px,29vh,250px)}.piano-keyboard{height:84px}.spectrum-target-bar{gap:9px;margin:7px 1px 0;min-height:64px}.target-stepper{gap:1px}.target-stepper button{min-width:38px;width:38px;min-height:42px}.target-stepper input{width:39px;font-size:22px;padding:3px}.target-note>span{font-size:12px}.target-note strong{font-size:19px;margin-left:3px}.target-note #piano-accuracy{font-size:12px;line-height:1.4;min-height:2.8em}.spectrum-target-bar #hear-target{width:36px;min-height:40px;padding:0;margin:0}.spectrum-target-bar #hear-target span{display:none}.spectrum-target-bar #hear-target svg{width:19px}.spectrum-details{margin-top:3px}.spectrum-details summary{font-size:14px}.tuner-aside{display:block}.section-title h1{font-size:22px}.piano-keyboard.dense .key-note{font-size:12px}.metro-settings{padding:0}.settings-actions .icon-button{font-size:14px}.demo-controls{margin-top:12px}footer{padding-top:14px}}
@media(prefers-reduced-motion:reduce){.piano-key{transition:none}}
/* Mixed peaks and a single note occupy exactly the same vertical space. */
.piano-note-readout{block-size:46px;line-height:46px}
@media(max-width:520px){.piano-note-readout{block-size:36px;line-height:36px}}
/* Octave names have their own strip, so narrow mobile keys cannot clip them. */
.piano-keyboard{height:122px}.piano-key.white-key{height:102px}.piano-key.black-key{height:64px}.piano-scale-label{position:absolute;bottom:0;transform:translateX(-50%);font-size:12px;line-height:18px;white-space:nowrap;color:var(--muted);pointer-events:none}.piano-keyboard.dense .octave-start .key-note{display:none}
@media(max-width:520px){.piano-keyboard{height:104px}.piano-key.white-key{height:84px}.piano-key.black-key{height:53px}}

/* The live curve, target and local note runs form the main working area. */
.spectrum-main .live-heading{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;min-height:92px;padding-bottom:8px}
.spectrum-main .spectrum-target-bar{margin:0;min-height:60px;gap:12px;border:0;padding:0}.spectrum-main .target-choice{flex:none}.spectrum-main .view-actions{align-self:start;flex-direction:column;align-items:flex-end;gap:4px;padding-top:0}.view-buttons{display:flex;gap:5px}.harmonic-legend{display:flex;flex-direction:column;align-items:flex-end;font-size:12px;line-height:18px;white-space:nowrap}.harmonic-legend span{display:flex;align-items:center;gap:5px}.harmonic-legend span:before{content:"";width:12px;border-top:2px solid currentColor}.harmonic-even{color:#73cfea}.harmonic-odd{color:#c3a0f3}
.tonality-panel{margin:8px 0 18px;padding:0 4px}.tonality-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;margin-bottom:5px}.tonality-filters{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;max-width:100%}.tonality-toolbar h2{font-size:16px;letter-spacing:0;font-weight:500}
.tonality-modes{display:inline-flex;border:1px solid var(--line);border-radius:8px;padding:2px;gap:1px}.tonality-mode{min-height:32px;padding:5px 10px;border:0;border-radius:5px;font-size:14px;line-height:1.4}.tonality-mode[aria-pressed=true]{background:#3d3423;color:var(--gold)}
.tonality-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14px;font-variant-numeric:tabular-nums}.tonality-table th,.tonality-table td{padding:5px 6px;text-align:left;border-bottom:1px solid var(--line);font-weight:400}.tonality-table th:first-child{width:40%}.tonality-table th:nth-child(2){width:22%;text-align:center}.tonality-table th:nth-child(3){width:38%;text-align:right}.tonality-table thead th{font-size:12px;color:var(--muted);padding-top:4px;padding-bottom:4px}.tonality-table tbody th{padding:0}.tonality-table .tonality-count{text-align:center;color:var(--ink);font-size:18px}.tonality-table .tonality-register{text-align:right;color:var(--muted);font-size:13px;white-space:nowrap}.tonality-scale-name{width:100%;justify-content:flex-start;text-align:left;padding:7px 6px;min-height:38px;border:0;border-radius:4px;font-size:14px;line-height:1.4}.tonality-table tr.chosen{background:#243127}.tonality-table .chosen button,.tonality-table .chosen .tonality-count{color:var(--green)}#tonality-more{font-size:13px;margin:2px 0;padding:6px;min-height:34px}
.tonality-selected{border-top:1px solid var(--line);padding-top:8px}.tonality-selected-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.tonality-selected-name{display:flex;align-items:center;gap:8px}.tonality-selected h3{font-size:15px;font-weight:500;margin:0}.tonality-selected-count,.tonality-selected .tonality-count{font-size:18px;color:var(--green);font-variant-numeric:tabular-nums}.tonality-run-control{min-width:0;max-width:100%}.tonality-run-control select{min-height:34px;font-size:13px;padding:5px 8px;max-width:100%;border-radius:7px}.tonality-notes{display:flex;flex-wrap:wrap;gap:5px}.tonality-note{display:flex;flex-direction:column;gap:1px;padding:7px 9px;min-height:50px;min-width:80px;border-radius:7px;border-color:#597a5c;background:#1d2a20;flex:0 0 auto}.tonality-note strong{font-size:16px;font-weight:500;color:var(--green);white-space:nowrap}.tonality-note span{font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.tonality-note:disabled{opacity:.7}.tonality-note:not(:disabled):hover{background:#304436}.tonality-panel p{margin:6px 0}#tonality-tonic{font-size:12px}#tonality-status{padding:5px 0}
.tonality-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin:8px 0 12px}.tonality-controls fieldset{border:0;padding:0;margin:0;display:flex;align-items:center;gap:8px;font-size:14px}.tonality-controls legend{padding:0 0 6px;color:var(--muted);font-size:14px}.tonality-controls input{width:65px;min-height:42px;font-variant-numeric:tabular-nums}.tonality-family{display:block;min-width:0;font-size:14px;color:var(--muted);max-width:100%}.tonality-family select{width:100%;min-width:0;min-height:38px;font-size:14px;padding:6px 8px;color:var(--ink);max-width:100%;border-radius:8px}#tonality-settings p{margin:10px 0;max-width:760px}#tonality-settings a{text-decoration:underline;text-underline-offset:3px}
.piano-key.key-in-scale:after{content:"";position:absolute;bottom:4px;left:12%;right:12%;height:4px;background:#317844;border:1px solid #d8f4dc;border-radius:2px;pointer-events:none}.piano-key.black-key.key-in-scale:after{background:#b1e0ab;border-color:#152d1b}
@media(max-width:760px){.spectrum-main .live-heading{grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;padding-bottom:7px}.spectrum-main .live-note{grid-column:1;grid-row:1}.spectrum-main .view-actions{grid-column:2;grid-row:1}.spectrum-main .spectrum-target-bar{grid-column:1/-1;grid-row:2;min-height:56px;justify-content:flex-start}.spectrum-main .spectrum-target-bar #hear-target{margin-left:auto}}
@media(max-width:520px){.tonality-panel{padding:0 2px;margin-top:6px}.tonality-toolbar h2{font-size:14px;flex-basis:100%}.tonality-filters{width:100%;gap:6px}.tonality-family select{font-size:13px;padding:6px 4px}.tonality-modes{padding:2px}.tonality-mode{padding:5px 6px;font-size:13px;min-height:34px}.tonality-table th:first-child{width:40%}.tonality-table th:nth-child(2){width:11%}.tonality-table th:nth-child(3){width:46%}.tonality-table th,.tonality-table td{padding-left:3px;padding-right:3px}.tonality-scale-name{padding:7px 3px}.tonality-table .tonality-register{font-size:12px}.tonality-controls{gap:12px}.tonality-controls fieldset{gap:6px}.tonality-controls input{width:58px}.tonality-note{flex:1 0 80px;max-width:calc(33.333% - 3px);padding:7px 3px}.tonality-note span{font-size:12px;letter-spacing:-.02em}}

.tonality-count{white-space:nowrap}.tonality-total{font-size:12px;font-weight:400;color:var(--muted)}

@media(max-width:760px){.training-current{grid-template-columns:minmax(0,1fr) 156px;grid-template-rows:48px 40px;row-gap:4px}.training-current #current-tone{grid-column:1/-1;grid-row:2}}

/* The supplied horizontal logo is 1928 × 643; its original square mark
   occupies the left 622 × 622 pixels. Use its alpha without redrawing it. */
.header{min-width:0}
.brand{display:flex;align-items:center;gap:10px;min-width:0;max-width:100%;letter-spacing:0;line-height:1.2}
.brand-mark{display:block;width:36px;height:36px;flex:0 0 36px;background:var(--gold);-webkit-mask:url('./oberton-logo.png') left top/309.97% 103.38% no-repeat;mask:url('./oberton-logo.png') left top/309.97% 103.38% no-repeat}
.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.brand-name{font-size:21px;line-height:25px;font-weight:600;letter-spacing:-.025em;white-space:nowrap}
.brand-tag{display:block;margin:0;font-size:11px;line-height:15px;font-weight:400;letter-spacing:0;color:var(--muted)}
@media(max-width:760px){.input-info{display:none}}
@media(max-width:520px){.brand{gap:7px}.brand-mark{width:28px;height:28px;flex-basis:28px}.brand-name{font-size:18px;line-height:22px}.brand-tag{font-size:11px;line-height:14px}}
.rhythm-panel{grid-column:auto;margin-top:0;padding:20px}.rhythm-panel h2{font-size:18px;margin:0}.rhythm-enable{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:14px}.rhythm-enable input{width:18px;height:18px;flex:0 0 auto}.rhythm-numbers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}.rhythm-numbers>div{display:flex;flex-direction:column;min-width:0}.rhythm-numbers strong{font-size:24px;line-height:34px;height:34px;font-variant-numeric:tabular-nums}.rhythm-numbers span{font-size:12px;color:var(--muted)}.rhythm-timing{position:relative;display:flex;justify-content:space-between;height:26px;font-size:12px;color:var(--muted);margin:12px 0}.rhythm-timing:before{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid var(--line)}.rhythm-timing i{position:absolute;left:50%;height:26px;border-left:2px solid var(--green)}.rhythm-timing b{position:absolute;left:50%;bottom:-3px;width:8px;height:8px;border-radius:50%;background:var(--gold);transform:translateX(-50%)}#rhythm-hit{font-size:18px;line-height:28px;height:28px;font-variant-numeric:tabular-nums;white-space:nowrap}#rhythm-status{min-height:2.8em}#rhythm-coverage{min-height:1.4em}.rhythm-help summary,.practice-history summary{cursor:pointer;color:var(--muted);font-size:14px}.rhythm-help{margin-top:10px}.practice-history{margin-top:20px;border-top:1px solid var(--line);padding:12px 0}.practice-history a{color:var(--gold);font-size:14px}.practice-history p{margin:8px 0}.metro-settings{order:3;grid-column:1/-1}@media(max-width:520px){.rhythm-panel{padding:14px}.rhythm-numbers strong{font-size:20px}.rhythm-enable{font-size:13px}.rhythm-panel h2{font-size:16px}}
@media(max-width:520px){.metro-layout{gap:12px}.metro-card{padding:14px 18px}.metro-card .bpm-control{margin:9px 0;gap:14px}.metro-card .bpm-label>input{min-height:70px;font-size:60px}.metro-card .bpm-label>span{font-size:12px}.metro-card .beat-dots{margin:12px 0;min-height:22px;gap:10px}.metro-card .beat-dot{width:20px;height:20px}.metro-card>p{margin-top:8px;font-size:12px}.rhythm-panel{border-radius:18px}}

.rhythm-pattern-row{margin:10px 0;font-size:13px}.rhythm-pattern-row>span{white-space:nowrap}.rhythm-pattern-row select{min-width:0;max-width:calc(100% - 95px);font-size:14px}

/* The working rhythm view precedes the collapsed controls and explanations. */
.rhythm-timeline{display:block;width:100%;height:112px;margin:10px 0}.rhythm-charts{grid-column:1/-1;padding:18px 20px}.rhythm-chart-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.rhythm-chart-pair figure{margin:12px 0 0;min-width:0}.rhythm-chart-pair figcaption{font-size:14px}.rhythm-chart-pair figcaption small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.rhythm-chart-pair canvas{display:block;width:100%;height:136px;margin-top:6px}.rhythm-chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px}.rhythm-chart-legend span:first-child{color:#e7bd73}.rhythm-chart-legend span:nth-child(2){color:#bf9ddd}.rhythm-chart-legend small{color:var(--muted);margin-left:auto}.metro-layout>.rhythm-help{grid-column:1/-1;order:4;margin:0}.metro-settings{order:5}.metro-card .beat-dots{display:none}.metro-card .bpm-control{margin:12px 0}.metro-card #bpm-range{margin-bottom:16px}#rhythm-volume{white-space:nowrap;font-size:22px}#rhythm-coverage{margin-bottom:4px}#rhythm-status{margin:4px 0 0;min-height:2.8em}.rhythm-panel .rhythm-enable{margin:6px 0}.rhythm-panel .rhythm-pattern-row{margin:8px 0}.rhythm-help .small{line-height:1.6}
@media(max-width:700px){.rhythm-chart-pair{grid-template-columns:1fr;gap:12px}.rhythm-charts{padding:14px}.rhythm-chart-legend{gap:10px}.rhythm-chart-legend small{font-size:10px}.metro-card{padding:12px 16px}.metro-card .bpm-control{margin:2px 0}.metro-card .bpm-label>input{font-size:48px;min-height:58px}.metro-card #bpm-range{margin-bottom:12px}.metro-card #tap-status{display:none}.rhythm-panel{padding:12px 14px}#rhythm-volume{font-size:20px}}

.metro-layout{grid-template-columns:340px minmax(0,1fr)}.metro-card{padding:20px;align-self:start}.metro-card .bpm-control{gap:12px}.metro-card .bpm-label>input{width:160px}.metro-layout>.rhythm-help{padding:16px 20px}.metro-layout>.rhythm-help summary{color:var(--muted);cursor:pointer}#rhythm-status{line-height:1.4;min-height:2.8em}
@media(max-width:900px){.metro-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:520px){.metro-card{padding:10px 14px}.metro-card #bpm-range{display:none}.metro-card .bpm-control{margin:0 0 8px}.metro-layout>.rhythm-help{padding:14px}.rhythm-numbers span{font-size:11px}}

/* Frequent controls share a baseline; the timeline remains unobstructed. */
.metro-layout{grid-template-columns:390px minmax(0,1fr);gap:16px;align-items:start}
.metro-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-content:space-between;column-gap:16px;padding:16px;text-align:center}
.metro-heading,.metro-caption{display:contents}
.metro-card .bpm-control{grid-column:1;grid-row:1;display:flex;gap:2px;justify-content:center;align-items:center;margin:0}
.metro-card .bpm-label{display:contents}.metro-card .bpm-label>input{font-size:46px;width:calc(var(--bpm-digits,2)*1ch + 1px);min-width:0;height:58px;min-height:58px;padding:0;text-align:center;line-height:1;font-variant-numeric:tabular-nums;appearance:textfield}.metro-card #bpm::-webkit-inner-spin-button,.metro-card #bpm::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.metro-card .round-button{width:34px;height:34px;min-width:34px;min-height:34px;aspect-ratio:1;border-radius:50%;padding:0;flex:none}.metro-card #bpm-minus{grid-column:1}.metro-card #bpm-plus{grid-column:3}
.metro-actions{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:flex-end;gap:6px;position:static;margin:0}
.metro-card .metro-actions>button{width:44px;height:44px;min-width:0;min-height:44px;flex:0 0 auto;padding:0}.metro-actions svg{width:22px;height:22px}
.metro-actions #record-action,.view-buttons #record-action{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.metro-caption>span{grid-column:1;grid-row:2;min-height:30px;line-height:30px;font-size:11px;color:var(--muted)}.metro-secondary{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:flex-end;gap:8px;min-height:30px}.metro-secondary .record-icon{width:44px;min-width:44px;height:30px;min-height:30px;padding:0;border-color:transparent;background:transparent;color:var(--muted)}.metro-secondary .record-icon:hover{color:var(--text);border-color:var(--line)}.metro-secondary .record-icon svg{width:19px;height:19px}.metro-elapsed{font-size:16px;line-height:24px;font-variant-numeric:tabular-nums;letter-spacing:.025em;color:var(--gold);text-align:center}
.metro-card #bpm-range{grid-column:1/-1;display:block;width:100%;margin:10px 0 0}
.metro-main-settings{grid-column:1/-1;margin-top:10px;border-top:1px solid var(--line);padding-top:0;text-align:left}
.metro-main-settings>summary{cursor:pointer;list-style-position:inside;padding:8px 0;font-size:12px;color:var(--muted)}
.metro-settings-fields{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;padding:4px 0}
.metro-main-settings .setting-row{display:flex;align-items:center;justify-content:space-between;margin:0;font-size:12px;gap:10px}
.metro-main-settings select{min-height:36px;padding:6px 12px}.metro-main-settings input[type=checkbox]{width:18px;height:18px}
.metro-main-settings .setting-row[for=accent]{grid-column:1/-1}.metro-main-settings input[type=range]{display:block;width:150px;margin:0;align-self:center}
.metro-meter-row{grid-column:1/-1;display:flex;align-items:center;gap:14px;justify-content:space-between}
.metro-meter-row .setting-row,.metro-division{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1;min-width:0;font-size:12px}
.metro-meter-row select{min-width:45px;width:48px;padding:5px}.metro-division span{min-width:0}
.rhythm-panel{min-width:0;padding:16px 20px}.rhythm-panel .card-top{gap:12px;flex-wrap:wrap}.rhythm-panel .card-top h2{margin-right:auto}.rhythm-panel .rhythm-enable{margin:0;font-size:12px}
.rhythm-timeline-shell{min-width:0}.rhythm-timeline{height:90px;margin:0}
.rhythm-tools{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:4px}
.rhythm-selectors{min-width:0;margin:0}.rhythm-selectors label{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;min-width:0;font-size:12px;color:var(--muted)}.rhythm-selectors select{width:100%;min-width:0;max-width:none;font-size:14px;padding:8px;min-height:40px}#rhythm-microphone-hint{margin:0;font-size:12px;line-height:1.4}
.rhythm-calibration-controls{display:flex;align-items:center;justify-content:flex-end}.rhythm-calibration-controls button{min-height:40px;padding:8px 12px;font-size:13px;white-space:nowrap}
.rhythm-calibration-settings{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:16px 0}.rhythm-calibration-settings .small-button{min-height:44px}.rhythm-calibration-settings span{font-size:12px}
#rhythm-calibration-result:empty{display:none}#rhythm-calibration-result{margin-top:8px;font-size:12px}#rhythm-status{min-height:1.4em;font-size:12px;margin-top:9px}.rhythm-numbers{justify-content:space-between;gap:16px;margin-top:14px}.rhythm-numbers>div:nth-child(2){text-align:center}.rhythm-numbers>div:last-child{text-align:right}.rhythm-numbers strong{font-size:28px}#rhythm-volume{font-size:24px}#rhythm-coverage{text-align:center;margin:8px 0 0;font-size:12px}
.rhythm-chart-pair canvas{height:148px}.rhythm-help p{margin-top:10px;font-size:12px;max-width:90ch}.microphone-setting{gap:16px;margin:14px 0;max-width:680px}.microphone-setting select{min-width:0;max-width:75%;font-size:13px}
.practice-history{display:flex;align-items:baseline;justify-content:space-between;gap:5px 20px;flex-wrap:wrap;padding-top:12px;margin-top:16px;font-size:14px}.practice-history p{margin:0}.practice-history a{text-decoration:underline;text-underline-offset:3px}.practice-history p:last-child{flex-basis:100%;font-size:11px}.practice-history #practice-save-status{font-size:11px}
@media(max-width:1000px){.metro-layout{grid-template-columns:360px minmax(0,1fr)}.rhythm-panel{padding:14px}.rhythm-numbers{gap:6px}.rhythm-numbers strong{font-size:23px}#rhythm-volume{font-size:21px}}
@media(max-width:800px){.metro-layout{grid-template-columns:minmax(0,1fr)}.metro-card{padding:12px 16px}.metro-card #bpm-range{display:none}.metro-main-settings{margin-top:8px}.rhythm-chart-pair{gap:16px}.rhythm-chart-pair figcaption small{min-height:0}}
@media(max-width:370px){.metro-card{padding:10px}.metro-card .bpm-control{gap:2px}.metro-card .round-button{width:32px;height:32px;min-width:32px;min-height:32px}.metro-card .bpm-label>input{font-size:37px;height:52px;min-height:52px}.metro-actions{gap:4px}.metro-card .metro-actions>button{width:40px;height:44px}.metro-meter-row{gap:10px}.metro-main-settings input[type=range]{width:125px}.rhythm-numbers strong,#rhythm-volume{font-size:21px}}

/* Recording stays within reach of both instruments; details appear only for a take. */
.recording-bar{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;margin:0 0 14px;padding:0 2px;min-width:0}
.recording-actions{display:flex;align-items:center;gap:6px}.recording-actions button{min-height:44px}.record-icon{width:44px;height:44px;min-width:44px;padding:0}.record-icon svg{width:21px;height:21px}
.record-glyph{display:block;width:11px;height:11px;border-radius:50%;background:#e68178}.recording .record-glyph{border-radius:2px}.recording{border-color:#c9776e;background:#3a2321;color:#f2c6c0}
.recording-clock{font-variant-numeric:tabular-nums;color:#f1a49a;font-size:18px}.recording-player{display:flex;gap:8px;align-items:center;flex:1;min-width:0}.recording-position{flex:1;min-width:80px}.recording-caption{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted)}#record-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#record-time{white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto}#record-seek{display:block;width:100%;margin:5px 0 0;min-height:24px}
#record-message{flex-basis:100%;margin:0;font-size:12px}#record-message:empty,#rhythm-coverage:empty,#rhythm-status:empty{display:none}.rhythm-help>.setting-row[for=rhythm-enable]{margin:16px 0 10px;font-size:14px}
body.reviewing .rhythm-chart-pair{grid-template-columns:minmax(0,1fr)}body.reviewing #record-player{border-left:2px solid var(--gold);padding-left:8px}body.reviewing .rhythm-chart-pair figure{margin-top:12px}
@media(max-width:700px){.recording-bar{gap:8px 12px;margin-bottom:12px}.recording-player{flex-basis:100%}.recording-caption{font-size:10px}.recording-player .record-icon{width:40px;min-width:40px}.recording-clock{margin-left:auto}}
/* During review only the saved tempo and meter need space above the timeline. */
body.reviewing .metro-layout{grid-template-columns:minmax(0,1fr)}
body.reviewing .metro-card{display:flex;align-items:center;gap:24px;padding:12px 18px;text-align:left}
body.reviewing .metro-card .bpm-control{width:110px;gap:0;margin:0;flex:none}
body.reviewing .metro-card .bpm-label>input{grid-column:1;min-height:48px;font-size:42px}
body.reviewing .metro-heading{display:block;flex:none}body.reviewing .metro-caption{display:none}
body.reviewing .metro-card .round-button,body.reviewing .metro-actions,body.reviewing #bpm-range,body.reviewing .metro-settings-fields>.setting-row,body.reviewing .metro-main-settings>summary,body.reviewing #volume{display:none}
body.reviewing .metro-main-settings{display:block;flex:1;margin:0;border:0;padding:0}
body.reviewing .metro-settings-fields{display:block;padding:0}body.reviewing .metro-meter-row{gap:24px;max-width:480px}
@media(max-width:700px){body.reviewing .metro-card{gap:16px;padding:10px 14px}body.reviewing .metro-meter-row{flex-direction:column;align-items:stretch;gap:6px}body.reviewing .metro-meter-row .setting-row{margin:0}body.reviewing .metro-meter-row select{min-height:32px;width:44px;padding:4px}body.reviewing .metro-card .bpm-control{width:96px}}

.update-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;font-size:13px;color:var(--gold)}#update-status:empty{display:none}

/* Recording belongs to the current instrument; pause is a compact transport icon. */
.spectrum-main .view-buttons>button,.spectrum-main .view-actions #freeze,.spectrum-main .view-actions #spectrum-zoom{width:40px;min-width:40px;height:40px;min-height:40px;padding:0;flex:none}
.spectrum-main .view-buttons svg{width:20px;height:20px}
@media(max-width:520px){.spectrum-main .view-buttons>button,.spectrum-main .view-actions #freeze,.spectrum-main .view-actions #spectrum-zoom{width:36px;min-width:36px;height:38px;min-height:38px}.spectrum-main .view-buttons{gap:4px}}

@media(max-width:340px){.metro-card .bpm-label>input{font-size:34px}}
