:root{--bg:#071019;--panel:#0d1822;--panel2:#111f2b;--line:#203242;--text:#edf6fa;--muted:#8fa5b4;--cyan:#43d7e6;--blue:#2689ff;--orange:#ff8c42;--green:#48d597;--red:#ff6577;--shadow:0 18px 45px rgba(0,0,0,.28)}
*{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at 45% -20%,#153040 0,#071019 42%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}.app-shell{max-width:1600px;margin:auto;padding:24px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.eyebrow{color:var(--cyan);letter-spacing:.18em;font-size:.72rem;font-weight:800;margin:0 0 5px}.topbar h1{font-size:clamp(1.6rem,2.5vw,2.25rem);margin:0;letter-spacing:-.035em}.sim-actions{display:flex;gap:8px}.button{border:1px solid var(--line);border-radius:10px;padding:10px 16px;color:var(--text);background:#0c1720;font-weight:750;cursor:pointer}.button.primary{background:var(--cyan);border-color:var(--cyan);color:#041014}.button:hover{filter:brightness(1.12)}.mode-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);margin-bottom:14px}.mode{position:relative;border:0;background:transparent;color:var(--muted);padding:10px 22px 15px;font-weight:750;font-size:.95rem;cursor:pointer;display:flex;align-items:center;gap:9px}.mode.active{color:var(--text)}.mode.active:after{content:"";height:3px;border-radius:4px;background:var(--cyan);position:absolute;bottom:-1px;left:12px;right:12px}.mode-icon{display:grid;place-items:center;width:25px;height:25px;border-radius:7px;font-family:Georgia,serif;font-style:italic}.mode-icon.heat{background:#ff7e4530;color:#ff9c67}.mode-icon.mass{background:#28a8ff30;color:#62bfff}.mode-icon.momentum{background:#c06cff2d;color:#cf8dff}.workspace{display:grid;grid-template-columns:300px minmax(520px,1fr) 310px;gap:14px}.panel{background:linear-gradient(160deg,rgba(18,33,44,.97),rgba(9,20,29,.98));border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.controls-panel,.insight-panel{padding:18px}.panel-heading{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}.panel-heading>div:first-child{display:flex;align-items:center;gap:9px}.panel-heading h2{font-size:1rem;margin:0}.panel-heading p{color:var(--muted);font-size:.78rem;line-height:1.5;margin:8px 0 0}.step-number{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#152b39;color:var(--cyan);font-size:.67rem;font-weight:900}.control-group{margin:0 0 21px}.control-label{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.control-label label{font-size:.78rem;color:#bdccd5;font-weight:650}.control-label output{font-size:.72rem;color:var(--cyan);text-align:right;font-weight:750}input[type=range]{width:100%;height:5px;appearance:none;background:linear-gradient(90deg,var(--cyan) var(--fill,56%),#263846 var(--fill,56%));border-radius:9px;outline:none}input[type=range]::-webkit-slider-thumb{appearance:none;width:17px;height:17px;border-radius:50%;background:#e8fbff;border:4px solid var(--cyan);cursor:pointer}.switch-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:17px 0}.switch-row div{display:flex;flex-direction:column}.switch-row strong{font-size:.8rem}.switch-row span{color:var(--muted);font-size:.68rem;margin-top:3px}.switch{width:42px;height:23px;border:1px solid #355063;border-radius:20px;background:#172733;padding:2px;cursor:pointer}.switch span{display:block;width:17px;height:17px;border-radius:50%;background:#77909f;transition:.2s}.switch[aria-checked=true]{background:#174a50;border-color:var(--cyan)}.switch[aria-checked=true] span{background:var(--cyan);transform:translateX(17px)}.boundary-card{background:#0a151e;border:1px solid var(--line);border-radius:11px;padding:12px;margin:4px 0 13px}.boundary-kicker{font-size:.59rem;letter-spacing:.14em;color:var(--muted);font-weight:800}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:8px}.segmented button{font-size:.64rem;padding:7px 4px;border:1px solid transparent;border-radius:7px;color:var(--muted);background:#14232e;cursor:pointer}.segmented button.active{color:var(--text);border-color:#386070;background:#1a3541}.comparison-button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid #2c4a59;border-radius:11px;background:linear-gradient(120deg,#102634,#13212c);color:var(--text);padding:11px;cursor:pointer}.comparison-button>span{font-size:1.5rem;color:var(--cyan)}.comparison-button div{display:flex;flex-direction:column}.comparison-button strong{font-size:.73rem}.comparison-button small{font-size:.62rem;color:var(--muted);margin-top:3px;line-height:1.3}.lab-panel{min-height:700px;padding:18px 22px}.lab-heading{display:flex;justify-content:space-between;align-items:center}.time-readout{text-align:right!important;display:block!important}.time-readout span{display:block;color:var(--muted);font-size:.57rem;letter-spacing:.13em}.time-readout strong{color:var(--cyan);font-family:ui-monospace,monospace;font-size:.9rem}.view-switcher{display:flex;justify-content:center;gap:2px;margin:2px auto 12px;background:#09141c;width:max-content;padding:4px;border-radius:9px}.view{border:0;background:transparent;color:var(--muted);padding:7px 13px;border-radius:6px;font-size:.68rem;font-weight:750;cursor:pointer}.view.active{background:#1b303d;color:var(--text)}.cube-stage{height:330px;position:relative;display:flex;align-items:center;justify-content:center;padding-top:10px;perspective:900px}.cube{position:relative;width:min(78%,560px);height:180px;background:#102535;border:1px solid #4c6d7d;box-shadow:0 18px 45px #0009, inset 0 0 40px #071019;transform:rotateX(-4deg);isolation:isolate}.cube-top{position:absolute;left:14px;right:-17px;top:-27px;height:27px;background:#173443;border:1px solid #4c6d7d;transform:skewX(-46deg);transform-origin:bottom;opacity:.65}.cube-side{position:absolute;top:-13px;right:-27px;width:27px;height:193px;background:#0d202c;border:1px solid #4c6d7d;transform:skewY(-44deg);transform-origin:left;opacity:.7}.field-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(64,1fr);overflow:hidden}.field-cell{border-right:1px solid transparent;transition:background-color .08s}.cube.cells-view .field-cell{border-right-color:#ffffff26}.cube.gradient-view .field-cell,.cube.flux-view .field-cell{opacity:.68}.vector{position:absolute;height:2px;background:#fff;transform-origin:left center;filter:drop-shadow(0 0 2px #000);z-index:4}.vector:after{content:"";position:absolute;right:-1px;top:-3px;border-left:6px solid #fff;border-top:3px solid transparent;border-bottom:3px solid transparent}.particle{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;opacity:.75;animation:travel var(--speed,4s) linear infinite;animation-delay:var(--delay)}@keyframes travel{from{transform:translateX(-10px)}to{transform:translateX(550px)}}.layer-marker{display:none;position:absolute;left:40%;width:20%;bottom:8px;text-align:center;font-size:.59rem;letter-spacing:.08em;color:#fff;background:#07101999;padding:4px;z-index:5}.cube.layered .layer-marker{display:block}.face-label{position:absolute;background:#0c1c26;border:1px solid #2b4858;border-radius:7px;padding:6px 8px;font-size:.67rem;font-weight:800;color:#d8f8ff;z-index:6}.left-face-label{left:1%;top:142px}.right-face-label{right:0;top:142px}.flow-arrow{position:absolute;top:183px;width:7%;height:2px;background:var(--cyan);opacity:.8}.flow-arrow:after{content:"";position:absolute;right:-1px;top:-4px;border-left:8px solid var(--cyan);border-top:5px solid transparent;border-bottom:5px solid transparent}.left-arrow{left:8%}.right-arrow{right:7%}.legend{position:absolute;bottom:8px;display:flex;align-items:center;gap:8px;font-size:.6rem;color:var(--muted)}.legend i{display:block;width:160px;height:7px;border-radius:6px;background:linear-gradient(90deg,#2457ff,#37d5de,#ffd45b,#ff5b3b)}.profile-wrap{border-top:1px solid var(--line);padding-top:14px}.profile-title{display:flex;justify-content:space-between}.profile-title strong{font-size:.78rem}.profile-title span{font-size:.65rem;color:var(--muted)}#profilePlot{width:100%;height:190px;margin-top:3px}.plot-grid{stroke:#29404f;stroke-width:1}.plot-line{fill:none;stroke:var(--cyan);stroke-width:3;filter:drop-shadow(0 0 4px #43d7e655)}.plot-secondary{fill:none;stroke:#ffb34e;stroke-width:2;stroke-dasharray:5 4}.plot-label{fill:#78909f;font-size:10px}.law-card{background:radial-gradient(circle at 90% 0,#163a48,#0b1822 58%);border:1px solid #294654;border-radius:12px;padding:14px;margin-bottom:14px}.law-card span,.blindspot-card span{font-size:.57rem;letter-spacing:.15em;color:var(--cyan);font-weight:850}.law-card div{font:italic 1.5rem Georgia,serif;margin:8px 0;color:#fff}.law-card p{font-size:.69rem;line-height:1.45;color:var(--muted);margin:0}.ledger{border:1px solid var(--line);border-radius:12px;padding:13px;margin-bottom:14px;background:#09151e}.ledger-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.ledger-title strong{font-size:.77rem}.ledger-title span{font-size:.56rem;color:var(--green);letter-spacing:.08em}.ledger-title i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green)}.ledger-row{display:flex;justify-content:space-between;border-top:1px solid #1d2d39;padding:8px 0;font-size:.67rem;color:var(--muted)}.ledger-row strong{font-family:ui-monospace,monospace;color:#dbeaf0;font-size:.65rem}.ledger-row.positive strong{color:var(--green)}.ledger-row.negative strong{color:var(--red)}.ledger-row.source strong{color:#ffbe5d}.ledger-row.total{padding-top:10px}.ledger-row.total span,.ledger-row.total strong{color:white;font-weight:850}.balance-equation{background:#10222e;border-radius:7px;padding:8px;margin-top:2px;display:flex;flex-direction:column;align-items:flex-end;gap:2px;font:600 .57rem ui-monospace,monospace;color:var(--muted)}.balance-equation strong{color:var(--cyan)}.error-row{display:flex;justify-content:space-between;margin-top:9px;color:var(--muted);font-size:.6rem}.error-row strong{color:var(--green)}.blindspot-card{border-left:3px solid var(--orange);background:#211b18;border-radius:4px 10px 10px 4px;padding:12px;margin-bottom:14px}.blindspot-card span{color:#ff9b62}.blindspot-card strong{display:block;font-size:.76rem;margin:8px 0 4px}.blindspot-card p{font-size:.65rem;line-height:1.45;color:#bba99e;margin:0}.numbers{display:grid;grid-template-columns:1fr 1fr;gap:8px}.numbers div{background:#0a151e;border:1px solid var(--line);border-radius:9px;padding:9px}.numbers span{font-size:.57rem;color:var(--muted);display:block}.numbers strong{font:750 .85rem ui-monospace,monospace;color:#d9f8ff;display:block;margin-top:4px}
@media(max-width:1150px){.workspace{grid-template-columns:270px 1fr}.insight-panel{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:14px}.insight-panel>.panel-heading{grid-column:1/-1}.numbers{align-self:start}.lab-panel{min-height:660px}}
@media(max-width:780px){.app-shell{padding:12px}.topbar{align-items:flex-start;gap:12px}.sim-actions{flex-wrap:wrap;justify-content:flex-end}.button{padding:8px 11px}.workspace{display:block}.panel{margin-bottom:12px}.lab-panel{min-height:auto;padding:16px 12px}.controls-panel{padding-bottom:12px}.insight-panel{display:block}.mode{padding-left:10px;padding-right:10px}.cube-stage{height:285px}.cube{height:150px;width:75%}.cube-side{height:163px}.left-face-label{left:0;top:122px}.right-face-label{right:0;top:122px}.flow-arrow{top:162px}.profile-title span{display:none}.particle{animation-name:none}.topbar h1{font-size:1.45rem}}

/* Light teaching theme */
:root{--bg:#edf4f6;--panel:rgba(255,255,255,.72);--panel2:rgba(249,252,253,.8);--line:#bdd0d7;--text:#14232b;--muted:#5c717b;--cyan:#087e91;--blue:#1469bb;--orange:#c65b22;--green:#087b50;--red:#b92f44;--shadow:0 16px 38px rgba(38,73,87,.12)}
body{background:radial-gradient(circle at 50% -15%,#fff 0,#eef6f7 46%,#e4eef1 100%);color:var(--text)}
.button{background:rgba(255,255,255,.75);color:var(--text)}.button.primary{background:#087e91;color:#fff;border-color:#087e91}
.mode-icon.examples{background:#d9f3e8;color:#087b50}.panel{background:linear-gradient(150deg,rgba(255,255,255,.82),rgba(244,250,251,.65));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.step-number{background:#d9eef1;color:#086f80}.control-label label{color:#405861}.control-label output{color:#087286}input[type=range]{background:linear-gradient(90deg,#168fa0 var(--fill,56%),#cfdee2 var(--fill,56%))}input[type=range]::-webkit-slider-thumb{background:#fff;border-color:#168fa0}
.switch{background:#dce7ea;border-color:#a9bec6}.switch span{background:#79929c}.switch[aria-checked=true]{background:#c9ece7;border-color:#168a7e}.switch[aria-checked=true] span{background:#168a7e}
.boundary-card,.numbers div{background:rgba(255,255,255,.58)}.segmented button{background:#e8f0f2;color:#526a74}.segmented button.active{background:#d7e9ed;color:#14232b;border-color:#82aab4}.comparison-button{background:linear-gradient(120deg,rgba(223,242,245,.82),rgba(255,255,255,.72));color:var(--text)}
.condition-card{background:rgba(255,255,255,.58);border:1px solid var(--line);border-radius:12px;padding:12px;margin:0 0 16px}.initial-condition-card{border-left:4px solid #087e91}.boundary-condition-card{border-left:4px solid #c65b22}.condition-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.condition-heading span,.condition-kicker{font-size:.58rem;letter-spacing:.13em;color:#087e91;font-weight:850}.boundary-condition-card .condition-heading span,.boundary-condition-card .condition-kicker{color:#a94d20}.condition-heading strong{font:700 .7rem ui-monospace,monospace;color:#1c3b45;text-align:right}.condition-card>p,.condition-card>small{display:block;color:var(--muted);font-size:.64rem;line-height:1.4;margin:7px 0 12px}.condition-card>small{margin:8px 0 0}.control-group.compact{margin:12px 0}.segmented.three-way{grid-template-columns:repeat(3,1fr)}
.solution-card{border-left:4px solid #674a8b}.solution-card .condition-heading span{color:#674a8b}.initial-condition-card.inactive{opacity:.58}.initial-condition-card.inactive:before{content:"Not used to determine the steady solution";display:block;color:#674a8b;font-size:.58rem;font-weight:850;letter-spacing:.08em;margin-bottom:8px}.right-value-control[hidden]{display:none}.button:disabled{opacity:.45;cursor:not-allowed}
.view-switcher{background:#dfeaed}.view.active{background:#fff;color:#14232b;box-shadow:0 2px 7px rgba(38,73,87,.1)}
.cube{background:rgba(224,239,244,.42);border-color:#779ba8;box-shadow:0 24px 55px rgba(43,77,91,.18),inset 0 0 36px rgba(255,255,255,.5);backdrop-filter:blur(6px)}.cube-top{background:rgba(207,228,234,.55);border-color:#779ba8}.cube-side{background:rgba(197,220,227,.5);border-color:#779ba8}.cube.cells-view .field-cell{border-right-color:#17364233}.layer-marker{background:#fffbe0d9;color:#5a4a13}.face-label{background:rgba(255,255,255,.78);border-color:#8cabb4;color:#17343d}.vector{background:#16343e}.vector:after{border-left-color:#16343e}
.plot-grid{stroke:#d2e0e4}.plot-axis{stroke:#758d97;stroke-width:1.1}.plot-label{fill:#607983}.axis-title{fill:#314c57;font-size:10px;text-anchor:middle;font-weight:650}.plot-line{stroke:#087e91;filter:none}.legend i{background:linear-gradient(90deg,#30123b,#4145ab,#2a9df4,#1ae4b6,#8be04e,#f9d423,#f7811e,#d7191c)}
.profile-diagnostic{display:flex;gap:9px;align-items:flex-start;border-left:3px solid #087e91;background:#eaf6f7;border-radius:5px;padding:9px 11px;margin-top:6px}.profile-diagnostic strong{font-size:.68rem;white-space:nowrap;color:#075e6c}.profile-diagnostic span{font-size:.65rem;line-height:1.4;color:#49616b}.plot-settings{margin-top:10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.58);padding:9px 11px}.plot-settings summary{cursor:pointer;font-size:.7rem;font-weight:800;color:#28444e}.plot-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.plot-settings label{display:flex;flex-direction:column;gap:4px;color:#526a74;font-size:.61rem;font-weight:700}.plot-settings input[type=text],.plot-settings input[type=number]{width:100%;border:1px solid #b7cbd2;border-radius:6px;padding:6px;background:#fff;color:#1d3540;font:inherit}.plot-settings input:disabled{background:#e8eff1;color:#81939a}.plot-settings .auto-axis{display:flex;flex-direction:row;align-items:center;margin-top:9px}.plot-settings>small{display:block;color:var(--muted);font-size:.59rem;line-height:1.35;margin-top:7px}
.continuity-card,.law-card,.ledger{background:rgba(255,255,255,.62);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px;backdrop-filter:blur(8px)}.continuity-card>span,.law-card span,.blindspot-card span{font-size:.62rem;letter-spacing:.13em;color:#087e91;font-weight:850}.mass-continuity,.local-balance{font:italic 1.05rem Georgia,serif;color:#172d35}.mass-continuity{margin:9px 0 5px}.local-balance{border-top:1px solid #cbdade;margin-top:10px;padding-top:10px}.continuity-card p,.continuity-card small{display:block;color:var(--muted);font-size:.69rem;line-height:1.45;margin:0}.continuity-card small{margin-top:5px}.law-card div{color:#14232b}.ledger-row{border-color:#d8e4e7}.ledger-row strong{color:#263f48}.ledger-row.total span,.ledger-row.total strong{color:#14232b}.balance-equation{background:#e7f0f2;color:#5c717b}.blindspot-card{background:rgba(255,239,226,.72)}.blindspot-card p{color:#735d50}.numbers strong{color:#173943}
.workspace[hidden],.examples-page[hidden]{display:none}.examples-page{display:block}.examples-header{max-width:760px;margin:34px auto 24px;text-align:center}.examples-header h2{font-size:clamp(1.8rem,3vw,2.6rem);margin:5px 0 10px}.examples-header>p:last-child{color:var(--muted);line-height:1.6}.examples-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.example-card{background:rgba(255,255,255,.68);border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow);backdrop-filter:blur(12px)}.example-top{display:flex;justify-content:space-between;align-items:center;color:#087e91;font-size:.7rem;font-weight:850;letter-spacing:.09em}.example-top strong{font-size:1.4rem;color:#8da4ac}.example-card h3{font-size:1.2rem;margin:8px 0}.problem-statement{color:#405861;font-size:.84rem;line-height:1.55}.problem-data{margin:14px 0;border:1px solid #cbdce1;border-radius:11px;overflow:hidden}.problem-data>div{display:grid;grid-template-columns:130px 1fr;border-top:1px solid #d7e4e7;padding:8px 10px;font-size:.74rem;line-height:1.4}.problem-data>div:first-child{border-top:0}.problem-data>div.initial{background:#e8f6f7;border-left:4px solid #087e91;padding-left:6px}.problem-data dt{font-weight:800;color:#28444e}.problem-data dd{margin:0;color:#526a74}.example-card ol{padding-left:21px}.example-card li{padding:6px 0;color:#47606a;font-size:.79rem}.example-card li span{display:inline-block;min-width:130px;font-weight:750;color:#263f48}.example-card code{font-family:Georgia,serif;font-size:.87rem;color:#162f38;background:#e9f1f3;padding:2px 5px;border-radius:4px}.example-result{border-left:3px solid #d46a2d;background:#fff3e9;padding:10px 12px;font-size:.78rem;line-height:1.45}.example-result span{display:block;color:#a34b1e;font-size:.61rem;font-weight:850;letter-spacing:.1em}.load-example{margin-top:15px;border:1px solid #087e91;background:#087e91;color:#fff;border-radius:9px;padding:9px 13px;font-weight:750;cursor:pointer}.load-example:hover{background:#056b7a}
@media(max-width:780px){.mode-tabs{overflow-x:auto}.mode{white-space:nowrap}.examples-grid{grid-template-columns:1fr}.example-card{padding:17px}.problem-data>div{grid-template-columns:1fr;gap:3px}.example-card li span{display:block;min-width:0;margin-bottom:3px}}

.quantity-panel{background:white;border:1px solid #dce3e8;padding:22px;border-radius:12px;margin:20px 0}.quantity-panel p{max-width:950px;line-height:1.65}.quantity-table{overflow-x:auto}.quantity-table table{width:100%;border-collapse:collapse;font-size:14px}.quantity-table td,.quantity-table th{padding:9px;border:1px solid #dce3e8;text-align:left;vertical-align:top}.quantity-table th{background:#edf5f3} .example-card details{margin:16px 0}.example-card summary{cursor:pointer}
