:root{--bg:#0c1116;--panel:#121a1f;--panel-strong:#172228;--line:#28404a;--line-bright:#3f6c74;--text:#eff7f5;--muted:#a9b9b8;--soft:#789092;--teal:#46d4c8;--amber:#f0bb62;--rose:#ed6474;--green:#7ad083;--shadow:#0000005c;--font:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--font);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:0}*{box-sizing:border-box}body{background:linear-gradient(90deg, #46d4c80d 1px, transparent 1px), linear-gradient(0deg, #f0bb620a 1px, transparent 1px), var(--bg);background-size:42px 42px,42px 42px,auto;min-width:320px;min-height:100svh;margin:0}button,input{font:inherit}button,a,.file-button{-webkit-tap-highlight-color:transparent}a{color:var(--text);text-decoration:none}#root{min-height:100svh}.app-shell{flex-direction:column;min-height:100svh;display:flex}.app-header{border-bottom:1px solid var(--line);z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0c1116f0;justify-content:space-between;align-items:center;gap:20px;padding:16px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{border:1px solid var(--line-bright);width:42px;height:42px;color:var(--teal);background:#0f171b;border-radius:8px;flex:0 0 42px;place-items:center;display:grid}.brand h1{margin:0;font-size:1.08rem;font-weight:760;line-height:1.15}.brand p{color:var(--muted);margin:3px 0 0;font-size:.88rem}.header-actions,.button-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.header-actions a,.primary-button,.file-button,.icon-button{border:1px solid var(--line);min-height:38px;color:var(--text);background:var(--panel);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;transition:border-color .15s,background .15s,transform .15s;display:inline-flex}.header-actions a{padding:0 12px;font-size:.9rem}.header-actions a:hover,.primary-button:hover,.file-button:hover,.icon-button:hover{border-color:var(--teal);background:var(--panel-strong)}.header-actions a:active,.primary-button:active,.file-button:active,.icon-button:active{transform:translateY(1px)}.simulator-layout{flex:1;grid-template-columns:minmax(0,1fr) minmax(320px,392px);min-height:0;display:grid}.stage{border-right:1px solid var(--line);background:#070b0d;min-height:calc(100svh - 75px);position:relative;overflow:hidden}.schlieren-viewport{width:100%;height:100%;min-height:calc(100svh - 75px)}.schlieren-viewport canvas{width:100%;height:100%;display:block}.viewport-loading{width:100%;height:100%;min-height:calc(100svh - 75px);color:var(--muted);place-items:center;gap:12px;display:grid}.stage-toolbar{pointer-events:none;flex-wrap:wrap;align-items:center;gap:8px;display:flex;position:absolute;bottom:14px;left:14px;right:14px}.stage-toolbar span{min-height:30px;color:var(--text);box-shadow:0 10px 28px var(--shadow);background:#0c1116b8;border:1px solid #eff7f529;border-radius:8px;align-items:center;gap:6px;padding:5px 9px;font-size:.8rem;display:inline-flex}.control-panel{background:#121a1ff5;flex-direction:column;min-height:0;display:flex;overflow-y:auto}.panel-section{border-bottom:1px solid var(--line);padding:18px}.section-title{color:var(--teal);align-items:center;gap:9px;margin-bottom:13px;display:flex}.section-title h2{color:var(--text);margin:0;font-size:.94rem;font-weight:720}.segmented-control{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.segmented-control button{border:1px solid var(--line);min-height:74px;color:var(--muted);cursor:pointer;background:#0e1519;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:10px 8px;display:flex}.segmented-control button.selected{color:var(--text);border-color:var(--teal);background:#142327}.readout-grid{color:var(--soft);grid-template-columns:1fr auto;align-items:center;gap:8px 14px;margin-top:14px;font-size:.86rem;display:grid}.readout-grid strong,.readout-grid a{color:var(--text);text-align:right;font-weight:680}.control-row{gap:8px;margin-top:13px;display:grid}.control-row span{color:var(--muted);justify-content:space-between;gap:14px;font-size:.88rem;display:flex}.control-row strong{color:var(--text);font-weight:650}.control-row input[type=range]{width:100%;accent-color:var(--teal)}.primary-button,.file-button{flex:auto;padding:0 12px}.icon-button{flex:0 0 42px;width:42px}.file-button{position:relative}.file-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.audio-meter{border:1px solid var(--line);background:#0a1013;border-radius:8px;height:12px;margin-bottom:12px;overflow:hidden}.audio-meter span{transform-origin:0;background:linear-gradient(90deg, var(--green), var(--amber), var(--rose));width:100%;height:100%;display:block}.inline-error{color:#ffc0c7;margin:12px 0 0;font-size:.86rem}.status-section p{color:var(--muted);margin:0;font-size:.9rem;line-height:1.45}.fatal-error{min-height:100svh;color:var(--text);background:var(--bg);place-items:center;padding:28px;display:grid}.fatal-error h1{margin:0 0 8px}@media (width<=980px){.app-header{flex-direction:column;align-items:flex-start}.simulator-layout{grid-template-columns:1fr}.stage{border-right:0;border-bottom:1px solid var(--line);min-height:62svh}.schlieren-viewport,.viewport-loading{min-height:62svh}.control-panel{overflow:visible}}@media (width<=560px){.app-header,.panel-section{padding:14px}.brand h1{font-size:1rem}.brand p,.header-actions a{font-size:.82rem}.segmented-control{grid-template-columns:1fr}.stage-toolbar{bottom:10px;left:10px;right:10px}}
