/* Live instrument and measured sound form one performance surface. */
.analysis.is-live .analysis-actions{display:none}.analysis.is-live .analysis-heading{flex-shrink:0}
.visual-view{position:relative;flex:1;min-height:0;overflow:hidden;background:radial-gradient(ellipse at 50% 60%,#12251b80,transparent 65%),#030b08}
.visual-view canvas{display:block;position:absolute;inset:0;width:100%;height:100%}
.visual-toolbar{position:absolute;top:10px;left:16px;right:13px;z-index:2;display:flex;align-items:center;gap:14px;pointer-events:none}
.visual-toolbar button{pointer-events:auto}.visual-feed{display:flex;align-items:center;gap:7px;min-width:0;flex:1;font:9px var(--mono);color:#a3c4af}
.visual-feed i{width:4px;height:4px;flex-shrink:0;background:#50745c;border-radius:1px}.visual-view[data-sounding=true] .visual-feed i{background:var(--selected);box-shadow:0 0 7px color-mix(in srgb,var(--selected) 45%,transparent)}
.visual-modes{display:flex;gap:3px}.visual-modes button{border:1px solid transparent;border-radius:2px;padding:5px 8px;min-height:25px;color:#91b19c;font:9px var(--mono)}
.visual-modes button:hover{color:#d6f5df;background:#87f6a408}.visual-modes button[aria-pressed=true]{color:#d5efdb;border-color:#3b5945;background:#b3f8ca09}
#visual-expand{width:28px;min-height:27px;color:#98bba4;border:1px solid #34533e;border-radius:2px}#visual-expand[aria-pressed=true]{color:#d4fada;border-color:#80b28c}
.visual-footer{position:absolute;left:16px;right:16px;bottom:10px;display:flex;align-items:center;gap:10px;font:8px/1.4 var(--mono);color:#9cbca7;pointer-events:none;z-index:2}
#visual-caption{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.visual-level{width:64px;height:3px;flex-shrink:0;background:#254030;border-radius:1px;overflow:hidden}
.visual-level i{display:block;height:100%;width:100%;transform:scaleX(0);transform-origin:0 50%;background:var(--selected)}#visual-level-value{min-width:48px;text-align:right;font-variant-numeric:tabular-nums}
.music-pane.visual-focus{grid-template-rows:minmax(0,1fr)}.music-pane.visual-focus .arrangement,.music-pane.visual-focus .horizontal-splitter{display:none}.music-pane.visual-focus .analysis{height:100%;flex:1}
.music-pane.visual-focus .visual-toolbar{top:15px;left:20px;right:18px}.music-pane.visual-focus .visual-footer{left:20px;right:20px;bottom:17px}
.controls-view{padding-top:13px}.controls-view .sound-identity{margin-bottom:17px}.controls-view .sound-orb{display:none}.controls-view #sound-controls{margin-top:21px}
.synth-panel{--voice-color:var(--selected)}
.synth-pad:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;background:repeating-linear-gradient(90deg,transparent 0 calc(12.5% - 1px),#a6e7b211 calc(12.5% - 1px) 12.5%),repeating-linear-gradient(0deg,transparent 0 calc(25% - 1px),#a6e7b211 calc(25% - 1px) 25%)}
.synth-pad-cross{z-index:2}.synth-pad-point{z-index:3}.synth-pad-caption{z-index:4}
@media(max-width:1100px){.analysis-tabs{gap:19px}.analysis-tabs button{font-size:9px}.analysis-heading{padding-left:13px;padding-right:11px;gap:7px}.analysis-actions{gap:4px}.analysis-actions select{max-width:107px}.visual-toolbar{left:12px;right:10px;gap:8px}.visual-feed{font-size:8px}.visual-modes button{font-size:8px;padding:5px 6px}.visual-footer{left:12px;right:12px}}
@media(max-width:720px){.analysis-heading{height:auto;min-height:44px;flex-wrap:wrap;padding:0 11px;gap:0}.analysis-tabs{height:43px;gap:16px;flex:1}.analysis-tabs button{font-size:9px;min-width:0}.analysis-heading .analysis-actions{height:29px;flex-basis:100%;justify-content:flex-end;border-top:1px solid #1d3828;margin-top:-1px}.analysis.is-live .analysis-heading .analysis-actions{display:none}.analysis-actions select{max-width:135px}.visual-toolbar{top:12px;gap:7px}.visual-modes button{min-height:29px}.visual-feed{font-size:8px}.visual-footer{bottom:14px;font-size:8px;gap:7px}.visual-level{width:40px}#visual-expand{min-width:28px;min-height:29px}.controls-view{padding:10px 15px}.controls-view .sound-identity{margin-bottom:11px}.controls-view #sound-controls{margin-top:20px}}
@media(max-width:360px){.analysis-tabs{gap:12px}.analysis-tabs button{font-size:8px}.visual-feed{max-width:100px}.visual-modes button{padding-left:5px;padding-right:5px}.visual-footer{gap:6px}#visual-level-value{min-width:42px}.controls-view{padding-left:12px;padding-right:12px}}
@media(prefers-reduced-motion:reduce){.visual-feed i{box-shadow:none}.visual-level i{transition:none}}

.envelope-controls{border-top:1px solid #294a35;padding-top:12px;margin-top:3px}.envelope-controls summary{cursor:pointer;font:10px var(--mono);color:#aed5b9;min-height:28px}.envelope-controls[open] summary{margin-bottom:16px}.envelope-controls .control-row:last-child{margin-bottom:12px}

/* One color identity connects a live fiber region to its instrument and code. */
.visual-sources{position:absolute;bottom:33px;left:14px;right:14px;z-index:3;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px 5px;max-height:62px;overflow:auto;scrollbar-width:thin;padding:3px 0;pointer-events:none}
.visual-sources button{pointer-events:auto;display:inline-flex;align-items:center;gap:5px;min-height:25px;max-width:180px;padding:4px 7px;border:1px solid transparent;border-radius:2px;font:8px var(--mono);color:#acc5b6;background:#030c09e8;white-space:nowrap}
.visual-sources button>span:last-child{overflow:hidden;text-overflow:ellipsis}
.visual-sources .visual-map-all{color:#8fa89a;font-size:8px}
.visual-sources button:hover,.visual-sources button:focus-visible{color:#ecfff0;border-color:#476954;background:#0c1b13}
.visual-source[aria-pressed=true]{color:#edfff1;border-color:color-mix(in srgb,var(--source-color) 65%,#14271b);background:color-mix(in srgb,var(--source-color) 9%,#06100a)}
.visual-source-dot{position:relative;width:7px;height:7px;flex-shrink:0;background:var(--source-color);opacity:.5;border-radius:50%}
.visual-source-dot i{position:absolute;inset:-3px;border:1px solid var(--source-color);border-radius:50%;opacity:var(--source-level,0);transform:scale(calc(.6 + var(--source-level,0)*.65))}
.visual-source[data-sounding=true]{color:color-mix(in srgb,var(--source-color) 85%,#edfff1)}
.visual-source[data-sounding=true] .visual-source-dot{opacity:1;box-shadow:0 0 5px var(--source-color),0 0 13px color-mix(in srgb,var(--source-color) 65%,transparent)}
.visual-map-all[aria-pressed=true]{color:#d9f4df;border-color:#355340}
.music-pane.visual-focus .visual-sources{bottom:41px;left:20px;right:20px}
@media(max-width:720px){.visual-sources{bottom:40px;left:10px;right:10px;gap:3px;max-height:102px}.visual-sources button{min-height:28px;padding:5px 7px;font-size:8px}.music-pane.visual-focus .visual-sources{bottom:40px;left:10px;right:10px}}
@media(prefers-reduced-motion:reduce){.visual-source-dot i{transform:none}}

/* Keep the live volume legible by default, and preserve a manually resized split. */
.music-pane{grid-template-rows:minmax(0,1fr) 12px minmax(190px,var(--analysis-user-height,var(--analysis-default-height,var(--analysis-height))))}
@media(min-width:721px) and (min-height:800px){.music-pane:has(>.analysis.is-live):not(.visual-focus){--analysis-default-height:320px}}
