/* MySound – Grundwerte aus dem My-Designsystem (design/css, Kopie aus ~/MySuite – dort ändern):
   Neutraltöne, Radien, Schrift, --akzent je Schema. Hier nur Ableitungen und App-Rollen, keine festen
   Farbwerte, damit Hell/Dunkel und die Schema-Wahl in den Einstellungen überall greifen. */
html{color-scheme:light dark}
:root{
 /* App-Rollen auf Design-Tokens. Diagramme lesen --trace/--theory/--compare über app.js. */
 --trace:var(--akzent-text);--theory:var(--text-2);--compare:var(--ton-8);
 --leiste-aktiv:color-mix(in srgb,var(--akzent) 28%,transparent);
 --live-weich:color-mix(in srgb,var(--gruen) 14%,var(--karte));--info-weich:color-mix(in srgb,var(--blau) 14%,var(--karte));
 --mono:ui-monospace,'SF Mono','SFMono-Regular',Menlo,Consolas,monospace;
 font-size:16px
}
/* --compare und --theory-1…3 setzt app.js (applyTones): Vergleichskurve und Wellenfarben meiden den Akzent. */
@media (prefers-color-scheme:dark){:root{--live-weich:color-mix(in srgb,var(--gruen) 22%,var(--karte));--info-weich:color-mix(in srgb,var(--blau) 22%,var(--karte))}}
[data-modus=dunkel]{--live-weich:color-mix(in srgb,var(--gruen) 22%,var(--karte));--info-weich:color-mix(in srgb,var(--blau) 22%,var(--karte))}
[data-modus=hell]{--live-weich:color-mix(in srgb,var(--gruen) 14%,var(--karte));--info-weich:color-mix(in srgb,var(--blau) 14%,var(--karte))}
/* Aktiv in der Leiste: Akzent in der dunklen Variante bei 28 % – die Leiste ist auch im Hellmodus dunkel. */
@supports (color:oklch(from red l c h)){:root{--leiste-aktiv:oklch(from var(--akzent) max(l,0.7) c h / 0.28)}}

*{box-sizing:border-box}
body{margin:0;background:var(--grund);color:var(--text);font:16px/1.55 var(--schrift)}
button,input,select,textarea{font:inherit;color:inherit}
select,input[type=number],input[type=text],textarea{color:var(--text);background:var(--karte);border:1px solid var(--linie);border-radius:var(--radius)}
/* Knöpfe: neutral (transparent, 1px Linie), primär (Akzent), gedrückt wie sekundär (--akzent-weich). */
button{color:var(--text);background:transparent;border:1px solid var(--linie);border-radius:var(--radius);padding:.55rem .9rem;cursor:pointer;transition:background .12s,border-color .12s;min-height:42px}
button:hover:not(:disabled){background:var(--hover)}
button:disabled{opacity:.4;cursor:not-allowed}
button.primary{background:var(--akzent);color:var(--akzent-ink);border-color:var(--akzent);font-weight:600;padding:10px 20px}
button.primary:hover:not(:disabled){background:color-mix(in srgb,var(--akzent) 88%,#000)}
button[aria-pressed=true]:not(.primary){color:var(--akzent-text);background:var(--akzent-weich);border-color:transparent;font-weight:600}
:focus-visible{outline:2px solid var(--akzent);outline-offset:3px}
select{padding:.55rem .65rem;max-width:100%;min-height:42px}
input[type=range]{accent-color:var(--akzent);cursor:pointer;min-width:0}
input[type=checkbox]{accent-color:var(--akzent);width:18px;height:18px;flex:none}
input[type=number],input[type=text],textarea{padding:.6rem;width:100%}
a{color:inherit}
h1,h2,h3,p{margin-top:0}
h1{font:700 2.5rem/1.15 var(--schrift);letter-spacing:-.02em;margin:0}
/* Kleine Überschrift laut DESIGN.md: 13px, 650, Grossbuchstaben, Laufweite .08em. */
h2{font:650 13px/1.4 var(--schrift);text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);margin:0}
h3{font-size:1rem;font-weight:700;letter-spacing:-.02em}
p{line-height:1.55}
small,.hint{font-size:.85rem;color:var(--text-2);line-height:1.55}
.mono{font-family:var(--mono)}

/* Kopfleiste */
.topbar{background:var(--leiste);color:#FFFFFF}
.topbar-inner{max-width:1480px;margin:auto;padding:10px 36px;display:flex;align-items:center;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:#FFFFFF;font-weight:700;font-size:1.05rem;letter-spacing:-.02em}
.brandmark{display:block;width:24px;height:24px;border-radius:var(--radius-s)}
.top-actions{display:flex;gap:4px;flex-wrap:wrap}
.actions-menu>summary{color:#D8D8DC;background:transparent;border:0;border-radius:var(--radius);min-height:38px;padding:.45rem .85rem;font-size:.95rem;cursor:pointer}
.actions-menu>summary:hover{background:rgba(255,255,255,.08);color:#FFFFFF}
.actions-menu>summary.active,.actions-menu[open]>summary{background:var(--leiste-aktiv);color:#FFFFFF}
.actions-menu{position:relative;margin:0;padding:0;border:0}
.actions-menu>summary{list-style:none;margin:0;display:flex;align-items:center;font-weight:400}
.actions-menu>summary::-webkit-details-marker{display:none}
.actions-content{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:270px;max-width:calc(100vw - 32px);padding:8px;color:var(--text);background:var(--karte);border:1px solid var(--linie);border-radius:var(--radius-l);box-shadow:var(--schatten)}
.actions-content .save-group{display:flex;flex-direction:column;align-items:stretch;gap:2px}
.actions-content button,.actions-content select{width:100%;max-width:none;text-align:left}
.actions-content button{border-color:transparent;min-height:38px;padding:.45rem .7rem}
.actions-content select{margin:4px 0}
.actions-content>#shareBtn{margin-top:2px;border-top:1px solid var(--linie);border-radius:0 0 var(--radius) var(--radius)}

.app{max-width:1480px;margin:auto;padding:0 36px}
.source-tabs{display:flex;gap:3px;flex-wrap:wrap;border:1px solid var(--linie);padding:3px;border-radius:var(--radius-l)}
.source-tabs button{border-color:transparent;font-size:.9rem}
.panel{background:var(--karte);border:1px solid var(--linie);border-radius:var(--radius-l);padding:22px;min-width:0}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.panel-heading select{font-size:.85rem}
.inline-label{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--text-2)}
.range-labels{display:flex;justify-content:space-between;color:var(--text-3);font-size:.8rem}
details{border-top:1px solid var(--linie);margin-top:22px;padding-top:16px}
summary{cursor:pointer;font-size:.9rem;font-weight:600;margin-bottom:14px}
.check{display:flex;align-items:center;gap:8px;font-size:.9rem;line-height:1.4}
.visuals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;min-width:0}
/* pan-y: Auf Touchgeräten lässt sich über den Diagrammen weiter scrollen, waagrechtes Ziehen bleibt Cursor. */
.chart-panel canvas{display:block;width:100%;height:clamp(180px,28vh,360px);flex:1 0 auto;touch-action:pan-y}
.chart-panel{padding-bottom:16px;display:flex;flex-direction:column}
.chart-panel .panel-heading{margin-bottom:8px}
.subtle{color:var(--text-2);font-size:.85rem;margin-top:10px}
.chart-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.8rem;margin-top:5px}
.chart-bottom output{font-family:var(--mono);color:var(--text-2)}
.legend{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--text-2)}
.swatch{display:inline-block;width:15px;height:2px;background:var(--trace)}
.swatch.theory{background:linear-gradient(90deg,var(--theory-1) 0 33%,var(--theory-2) 0 66%,var(--theory-3) 0)}
.chart-panel p{margin-bottom:0}
.transport{display:flex;align-items:center;flex-wrap:wrap;gap:18px}
.volume{display:flex;align-items:center;gap:10px;font-size:.85rem;color:var(--text-2);flex-wrap:wrap}
.volume input{width:100px}
.volume output{min-width:4ch;font-variant-numeric:tabular-nums}
/* A/B im Menü «Klang & Teilen»: merken | laden je Zeile, Blindtest darunter. */
.ab-group{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin-top:2px;padding-top:4px;border-top:1px solid var(--linie)}
.menu-label{grid-column:1/-1;font-size:.75rem;font-weight:600;color:var(--text-3);padding:.35rem .7rem 0}
.ab-group #blindBtn{grid-column:1/-1}
.status{font-size:.9rem;color:var(--akzent-text);min-height:26px}
.status.error{color:var(--rot)}
.page-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-3);font-size:.85rem;padding:10px 0 22px}
.text-button{background:transparent;border:0;color:var(--akzent-text);font-size:.85rem;min-height:0;padding:.3rem .5rem}
.stack{display:flex;flex-direction:column;gap:9px;margin:20px 0;font-size:.9rem}
/* Dateiauswahl und Übersicht nutzen die volle Breite des Kastens. */
.source-panel>.overview,.source-panel>.file-row{max-width:none}
/* Übersicht der ganzen Datei; ein unsichtbarer Regler darüber übernimmt Klick, Ziehen und Tastatur. */
.overview{position:relative;height:72px;margin:0 0 8px;border-radius:var(--radius-s);overflow:hidden}
.overview canvas{display:block;width:100%;height:100%}
.overview input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none;background:none;touch-action:none}
.overview input::-webkit-slider-thumb{-webkit-appearance:none;width:1px;height:72px}
.overview input::-moz-range-thumb{width:1px;height:72px;border:0}
.overview:has(input:focus-visible){outline:2px solid var(--akzent);outline-offset:3px}
/* Dateiauswahl: eine Zeile mit Knopf, Dateiname und Zeit. */
.file-row{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;margin-bottom:12px}
.file-row input{min-width:0;max-width:100%;font-size:.9rem;color:var(--text)}
.file-row input::file-selector-button{font:inherit;font-weight:600;color:var(--akzent-text);background:transparent;border:1px solid var(--linie);border-radius:var(--radius);padding:.55rem .9rem;margin-right:12px;min-height:42px;cursor:pointer}
.file-row input::file-selector-button:hover{background:var(--hover)}
.file-row p{margin:0}

dialog{background:var(--karte);color:var(--text);border:1px solid var(--linie);border-radius:var(--radius-l);box-shadow:var(--schatten);max-width:min(660px,calc(100vw - 28px));width:620px;padding:26px;max-height:85dvh;overflow:auto}
dialog::backdrop{background:rgba(0,0,0,.45);backdrop-filter:blur(4px)}
.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}
.dialog-heading h2{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;text-transform:none;color:var(--text)}
.dialog-heading button{font-size:.9rem}
#helpContent h3{margin:18px 0 6px}
.tones{display:flex;gap:10px;flex-wrap:wrap}
.tones button.tone{width:32px;height:32px;min-height:0;border-radius:50%;border:2px solid var(--karte);outline:2px solid transparent;outline-offset:0;padding:0}
.tones button.tone:hover{outline-color:var(--linie)}
.tones button.tone[aria-pressed=true]{outline-color:var(--text);border-color:var(--karte)}
#resetScheme{align-self:flex-start}

/* Experimente als Kartenzeilen (DESIGN.md, Listen): wenige Einträge mit zwei Zeilen Inhalt. */
.experiment-cards{display:flex;flex-direction:column;gap:6px}
.experiment-card{display:block;width:100%;text-align:left;background:var(--zeile);border:1px solid var(--zeile-linie);border-radius:var(--radius);padding:9px 12px;min-height:0}
.experiment-card strong{display:block;font-weight:600;margin-bottom:2px}
.experiment-card span{display:block;font-size:.85rem;color:var(--text-2);line-height:1.45}
.experiment{border:1px solid var(--akzent);background:var(--akzent-weich);border-radius:var(--radius-l);padding:20px 24px;margin-bottom:18px}
.experiment-head{display:flex;justify-content:space-between;gap:15px;align-items:center}
.experiment h2{color:var(--akzent-text);font-size:1.15rem;font-weight:700;letter-spacing:-.02em;text-transform:none}
.experiment p{margin:10px 0}
.experiment button{background:var(--karte);border-color:var(--zeile-linie)}
.experiment button:hover:not(:disabled){background:color-mix(in srgb,var(--text) 6%,var(--karte))}
/* Schrittleiste: erledigt = Haken auf Akzent, aktuell = Akzent-Ring, offen = Linie; Striche verbinden die Schritte. */
.experiment .steps{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:8px 40px;margin:14px 0 2px;padding:0}
.steps li{position:relative}
.steps li+li::before{content:'';position:absolute;top:50%;left:-36px;width:32px;height:2px;background:color-mix(in srgb,var(--text) 22%,transparent);z-index:0}
.steps li[data-state=done]+li::before{background:var(--akzent)}
.experiment .steps button{position:relative;z-index:1;display:flex;align-items:center;gap:10px;background:transparent;border:0;padding:6px 4px;font-size:.95rem;text-align:left}
.step-mark{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:2px solid var(--linie);background:var(--karte);font-weight:700;font-size:.85rem;font-variant-numeric:tabular-nums}
.steps [data-state=done] .step-mark{background:var(--akzent);border-color:var(--akzent);color:var(--akzent-ink)}
.steps [data-state=current] .step-mark{border-color:var(--akzent);color:var(--akzent-text)}
.steps [data-state=current] button{font-weight:650;color:var(--akzent-text)}
.steps [data-state=todo] button{color:var(--text-2)}
.experiment .answer{border-top:1px solid var(--linie);padding-top:12px}
[hidden]{display:none!important}
@media(max-width:1000px){.app{padding:0 22px}.topbar-inner{padding:10px 22px}.panel{padding:17px}.chart-bottom output{font-size:.75rem}}
@media(max-width:720px){.app{padding:0 16px}.topbar-inner{padding:8px 16px}.visuals{grid-template-columns:1fr}h1{font-size:2rem}.chart-panel canvas{height:190px}.page-footer{flex-wrap:wrap}.experiment{padding:16px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Vorhersage: Diagramme verdeckt, mit dem Wal als Leerzustand. */
.visuals.prediction{position:relative}
.visuals.prediction>section{visibility:hidden}
.visuals.prediction:after{content:attr(data-prediction);position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:40px;padding-top:150px;border:1px dashed var(--linie);border-radius:var(--radius-l);background:var(--karte) url(design/icons/creme/sound.svg) center calc(50% - 50px)/88px no-repeat;font:600 1.35rem/1.5 var(--schrift);letter-spacing:-.01em;color:var(--text-2)}
/* Zustand als Pille: Live = Grün, Eingefroren = Blau, sonst Akzent. */
.analysis-state{font-family:var(--schrift);font-size:12px;font-weight:600;color:var(--akzent-text);background:var(--akzent-weich);border:0;border-radius:var(--radius-pille);padding:3px 10px;margin:0;min-height:0;line-height:1.5;cursor:pointer}
.analysis-state[data-state=live]{color:var(--gruen);background:var(--live-weich)}
.analysis-state[data-state=frozen]{color:var(--blau);background:var(--info-weich)}

/* Quellenwahl und Werkzeugleiste; in Experimenten blendet app.js (renderMode) alles Unnötige aus. */
.mode-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px;margin:18px 0 14px;padding-bottom:14px;border-bottom:1px solid var(--linie)}
@media(max-width:720px){.mode-row{align-items:flex-start;flex-direction:column;gap:8px;border-bottom:0;padding-bottom:0}.transport{gap:12px}.top-actions{position:relative}.actions-menu{position:static}.actions-content{left:0;right:auto;max-width:100%}.top-actions{gap:0}.actions-menu>summary{padding:.4rem .55rem;font-size:.9rem}}

.explanation{font-size:.9rem;color:var(--text-2);margin:0 0 12px!important}



button.small{min-height:32px;padding:.3rem .7rem;font-size:.85rem}
button.secondary{background:var(--akzent-weich);color:var(--akzent-text);border-color:transparent;font-weight:600}

/* Gespeicherte Klänge: Kartenzeilen mit Wellen-Miniatur, Löschen rechts. */
.saved-list{display:flex;flex-direction:column;gap:6px}
.saved-row{display:flex;align-items:stretch;gap:6px}
.saved-load{flex:1;display:flex;align-items:center;gap:12px;min-width:0;text-align:left;background:var(--zeile);border:1px solid var(--zeile-linie);padding:9px 12px}
.saved-wave{flex:none;width:72px;height:32px}
.saved-text{min-width:0}
.saved-text strong{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.saved-text span{display:block;font-size:.85rem;color:var(--text-2)}
.saved-delete{flex:none;min-width:44px;border-color:transparent;color:var(--text-3);font-size:1.2rem}
.saved-delete.confirm{color:var(--rot);font-size:.85rem;font-weight:600;background:color-mix(in srgb,var(--rot) 12%,var(--karte))}
.saved-empty{margin:0}

/* Blindtest: Arbeitsfläche verborgen, nur Frage und Antworten. */
.blind .workspace,.blind #actionsMenu,.blind #experimentPanel,.blind .analysis-state{display:none!important}
.blind-panel{background:var(--karte);border:1px solid var(--linie);border-radius:var(--radius-l);padding:22px;margin:0 0 18px}
.blind-question{font-size:1.35rem;font-weight:650;letter-spacing:-.01em;margin:10px 0 14px}
.blind-question.right{color:var(--gruen)}
.blind-question.wrong{color:var(--rot)}
.blind-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.blind-panel .hint{margin:4px 0 0}

/* Vollbild als Symbol in der Fusszeile. */
.footer-tools{margin-left:auto;display:flex;align-items:center;gap:12px}
.fullscreen-btn{display:grid;place-items:center;width:36px;height:36px;min-height:0;padding:0;border-radius:50%;color:var(--text-2)}
.fullscreen-btn:hover{color:var(--text)}
.fullscreen-btn.active{color:var(--akzent-ink);background:var(--akzent);border-color:var(--akzent)}
.fullscreen-btn[hidden]{display:none}
/* Kopf nach dem ersten Besuch kleiner. */
/* Handy: Wiedergabe als feste Leiste am unteren Rand. */
@media(max-width:720px){
 
 .transport{position:fixed;left:0;right:0;bottom:0;z-index:25;margin:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--karte);border-top:1px solid var(--linie);border-bottom:0;gap:10px;flex-wrap:nowrap}
 .app{padding-bottom:96px}
 .transport .volume{flex:1;flex-wrap:nowrap;min-width:0}
 .transport .volume>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
 .transport .volume input{flex:1;width:auto;min-width:0}
 .transport button{padding:.5rem .8rem}
 .experiment .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
 .experiment .steps button{flex-direction:column;align-items:flex-start;gap:4px;font-size:.85rem;padding:4px 0}
 .steps li+li::before{top:18px;left:-6px;width:calc(100% - 26px)}
}

/* Breite Dropdowns: Experimente und Einstellungen. */
.actions-content.menu-wide{width:360px;max-height:calc(100dvh - 90px);overflow:auto;padding:12px}
.settings-content{width:420px;padding:4px 18px 14px}
.settings-content .stack{margin:14px 0}
.settings-content .hint{margin:14px 0 0}


/* Bühne: Wellen oben in einer Reihe (feste Höhe, waagrecht scrollbar), Diagramme darunter nebeneinander. */
.workspace{display:flex;flex-direction:column;gap:18px}
.wave-cards{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 10px;scroll-snap-type:x proximity}
.wave-card{box-shadow:inset 0 4px 0 var(--welle);flex:0 0 264px;scroll-snap-align:start;display:flex;flex-direction:column;gap:4px;background:var(--karte);border:1px solid var(--linie);border-radius:var(--radius-l);padding:10px 12px}
.wave-card.solo{border-color:var(--welle);box-shadow:inset 0 4px 0 var(--welle),inset 0 0 0 1px var(--welle)}
.wave-card.muted>:not(.wave-head):not(.wave-foot),.wave-card.muted .wave-foot>.wave-row{opacity:.4}
.wave-head{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.wave-index{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--welle);color:var(--welle-ink);font-size:.8rem;font-weight:700;font-variant-numeric:tabular-nums}
.wave-shape{flex:1;min-width:0;min-height:34px;padding:.3rem .5rem;font-size:.9rem}
.wave-remove,.wave-split{flex:none;width:30px;min-height:32px;padding:0;border-color:transparent;color:var(--text-3);font-size:1.25rem}
.wave-split{width:auto;padding:0 .5rem;font-size:.85rem;white-space:nowrap}
.wave-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.85rem;color:var(--text-2)}
.wave-value{display:flex;align-items:center;gap:5px}
.wave-value input[type=number]{padding:.25rem .4rem;text-align:right;font-variant-numeric:tabular-nums;border-radius:var(--radius-s);color:var(--text)}
.wave-value .wave-f{width:9ch}.wave-value .wave-a,.wave-value .wave-p{width:6ch}
.wave-unit{min-width:2ch}
.wave-db{min-width:6.5ch;text-align:right;font-size:.75rem;color:var(--text-3)}
.wave-card input[type=range]{width:100%;margin:0 0 4px;accent-color:var(--welle)}
.wave-card.muted{box-shadow:none}.wave-card.muted .wave-index{background:var(--linie);color:var(--text-2)}
/* Fusszeile: Phase (φ) links, Stumm/Solo rechts. */
.wave-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:6px;border-top:1px solid var(--linie)}
.wave-foot .wave-label{font-style:italic;font-size:1rem;cursor:help}
.wave-buttons{display:flex;gap:4px;margin-left:auto}
.wave-buttons button{padding:.25rem .5rem}
.wave-add{flex:0 0 150px;border:1px dashed var(--linie);border-radius:var(--radius-l);color:var(--akzent-text);font-weight:600}
.source-panel>*{max-width:760px}
/* Mikrofon-Kasten: nur die Geräteauswahl, kompakt in einer Zeile. */
#micControls:not(:has(label:not([hidden]))){display:none}
#micControls{padding-block:14px}#micControls .stack{flex-direction:row;align-items:center;gap:12px;margin:0}#micControls select{flex:1;min-width:0}
/* Geführte Experimente: Phase nur dort, wo sie Thema ist. */
[data-guided=beats] .wave-foot>.wave-row,[data-guided=missing] .wave-foot>.wave-row,[data-guided=harmonics] .wave-foot>.wave-row{display:none}
@media(max-width:720px){.wave-cards{flex-direction:column;overflow:visible}.wave-card,.wave-add{flex:none}.wave-add{min-height:48px}}
/* Wellenfarben: Ton des Schemas (app.js setzt --welle-ton). Die Töne folgen nur dem OS-Modus; bei erzwungenem
   Hell/Dunkel die Helligkeit wie bei --akzent-text klemmen. Schrift auf der Farbe: weiss im Hellen, dunkel im Dunkeln. */
.welle{--welle:var(--welle-ton);--welle-ink:#FFFFFF}
@media (prefers-color-scheme:dark){.welle{--welle-ink:#1D1D1F}}
[data-modus=dunkel] .welle{--welle-ink:#1D1D1F}
[data-modus=hell] .welle{--welle-ink:#FFFFFF}
@supports (color:oklch(from red l c h)){
 [data-modus=dunkel] .welle{--welle:oklch(from var(--welle-ton) max(l,.7) c h)}
 [data-modus=hell] .welle{--welle:oklch(from var(--welle-ton) min(l,.55) c h)}
}

/* Diagrammköpfe: i blendet die Erklärung ein; Spektrum/Spektrogramm als Umschalter, Werkzeuge rechts. */
.info-btn{flex:none;width:22px;height:22px;min-height:0;padding:0;border-radius:50%;font:italic 600 .8rem/1 Georgia,serif;color:var(--text-2)}
.info-btn[aria-expanded=true]{color:var(--akzent-ink);background:var(--akzent);border-color:var(--akzent)}
.chart-panel .panel-heading{justify-content:flex-start}
.chart-panel .panel-heading>:last-child{margin-left:auto}
.view-switch{display:flex;gap:2px;border:1px solid var(--linie);padding:2px;border-radius:var(--radius)}
.view-switch button{border-color:transparent;min-height:30px;padding:.2rem .65rem;font-size:.85rem;font-weight:600}
.heading-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
