:root{color-scheme:dark;--bg:#0d1516;--side:#111c1d;--panel:#142123;--well:#101a1c;--border:#2b3c3e;--text:#eaf3ee;--muted:#a6b9b5;--green:#b9f677;--cyan:#74ddd7;--orange:#ffc082;font-family:Inter,"Segoe UI",system-ui,sans-serif}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);line-height:1.5} button,input,select{font:inherit} a{color:var(--green)} button,select,input{border:1px solid #405457;background:#172728;color:var(--text);border-radius:7px} button{padding:8px 12px;cursor:pointer;font-size:.82rem;font-weight:650} button:hover{border-color:var(--green)} :focus-visible{outline:2px solid var(--cyan);outline-offset:3px} button.primary{background:var(--green);border-color:var(--green);color:#122013} button.quiet{background:transparent;color:var(--muted)} button:disabled{opacity:.5;cursor:default} h1,h2,h3,p{margin:0} h2{font-size:1.48rem;letter-spacing:-.035em} h3{font-size:.92rem} p{color:#c4d4d0} .muted{color:var(--muted);font-size:.83rem}
.top{height:64px;padding:0 30px;background:#111b1c;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:23px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font-size:1.19rem;font-weight:800;letter-spacing:-.045em}.mark{height:30px;width:30px;display:grid;place-items:center;border-radius:8px;color:#172414;background:var(--green);font-size:1.3rem}.brand-lab{color:var(--green)}.institution{border-left:1px solid var(--border);padding-left:20px;color:var(--muted);font-size:.83rem}.top-links{margin-left:auto;display:flex;align-items:center;gap:22px}.top-links a{font-size:.83rem;text-decoration:none;color:#dbe8e4}.top-links span{margin-left:5px;color:var(--green);font-family:"IBM Plex Mono",monospace}
.shell{display:grid;grid-template-columns:245px minmax(0,1fr);max-width:1760px;margin:auto}.sidebar{background:var(--side);border-right:1px solid var(--border);padding:26px 14px;min-height:calc(100vh - 64px)}.sidebar-title,.eyebrow{color:#a4c7bd;font-family:"IBM Plex Mono",Consolas,monospace;font-weight:650;font-size:.71rem;letter-spacing:.075em}.sidebar-title{margin:0 8px 12px}#modules{display:grid;gap:4px}#modules a{color:#cbdad5;display:grid;grid-template-columns:30px 1fr;align-items:center;gap:7px;border:1px solid transparent;border-radius:8px;padding:9px 8px;text-decoration:none;font-size:.83rem;line-height:1.25;min-height:43px}#modules a:hover{background:#1e2d2b}#modules a[aria-current]{background:#253b2b;border-color:#496140;color:var(--green);font-weight:750}#modules a span{font-family:Consolas,monospace;color:#9ab5ab}#modules a[aria-current] span{color:var(--green)}.progress-card{margin:19px 6px 0;border:1px solid var(--border);border-radius:9px;padding:10px;display:flex;justify-content:space-between;flex-wrap:wrap;font-size:.74rem;color:var(--muted)}progress{width:100%;height:7px;accent-color:var(--green);margin-top:7px}
main{min-width:0;padding:24px 28px;max-width:1450px}.hero{display:grid;grid-template-columns:minmax(0,1fr) 31%;border:1px solid #344b42;border-radius:13px;overflow:hidden;background:linear-gradient(105deg,#1b3027,#122323 76%);min-height:186px}.hero-copy{padding:23px 26px;z-index:1}.hero .eyebrow{color:#c0eea0}.eyebrow span{color:#628a74;margin:0 4px}h1{font-size:clamp(1.85rem,3.1vw,3rem);line-height:1.07;letter-spacing:-.055em;margin:8px 0 10px}.hero p{font-size:.95rem;max-width:57ch}.hero-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.hero-tags span{border:1px solid #476052;color:#c4dbce;border-radius:5px;padding:2px 8px;font-size:.74rem}.hero-visual{position:relative;min-height:160px;overflow:hidden}.hero-visual canvas{position:absolute;width:100%;height:100%;inset:0}.hero-visual div{position:absolute;right:13px;bottom:10px;font-family:Consolas,monospace;font-size:.62rem;color:#a0bcb1;background:#142625;padding:3px 5px}.hero-visual span{color:var(--green)}
.lab{border:1px solid var(--border);border-radius:13px;margin-top:18px;background:var(--panel);padding:17px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.status-dot{display:inline-block;width:7px;height:7px;background:var(--green);border-radius:50%;margin-right:5px!important}.lab-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(214px,27%);gap:15px}.plot-pane,.control-pane{min-width:0}.views,.plot-actions{display:flex;gap:6px;flex-wrap:wrap}.views{margin-bottom:8px}.views button{font-size:.76rem;padding:5px 9px;background:transparent}.views button[aria-pressed=true]{background:#263d31;color:var(--green);border-color:#55744b}.plot-card{border:1px solid var(--border);background:var(--well);border-radius:8px;overflow:hidden}.plot-card canvas{width:100%;height:272px;display:block;touch-action:pan-y}.plot-readout,.legend{font-family:Consolas,monospace;font-size:.73rem;padding:0 10px 7px;min-height:22px;color:#adcbc1}.legend{display:flex;flex-wrap:wrap;gap:6px 15px}.legend span::before{content:"";background:var(--line);width:12px;height:2px;display:inline-block;vertical-align:middle;margin-right:6px}.plot-actions{margin-top:9px}.control-pane{border:1px solid var(--border);background:#182729;border-radius:8px;padding:12px}.control-pane h3{margin-bottom:10px}.field{display:block;margin-bottom:8px;color:#d9e7e1;font-size:.79rem}.field input:not([type=range]),.field select{width:100%;padding:5px 7px;margin-top:3px}.field input[type=range]{display:block;width:100%;accent-color:var(--green);margin:3px 0 0}.field output{float:right;color:var(--green);font-family:Consolas,monospace}.equation{border-top:1px solid var(--border);margin-top:12px;padding-top:8px;color:var(--cyan);font-family:Consolas,monospace;overflow-wrap:anywhere;font-size:.76rem}.experiment{border-left:3px solid var(--green);background:#1b2d25;margin-top:14px;padding:8px 12px;font-size:.85rem}.experiment strong{color:#d9f4cc}.analysis{margin-top:12px;display:grid;gap:8px;font-size:.82rem}.analysis p{overflow-wrap:anywhere}.chips{display:flex;gap:7px;flex-wrap:wrap}.chips span{border:1px solid #3b5352;background:#192b2b;padding:4px 8px;border-radius:6px}.chips b{color:var(--cyan)}.table-wrap{overflow:auto}.analysis table{width:max-content;min-width:260px;border-collapse:collapse;font-family:Consolas,monospace}.analysis td,.analysis th{border:1px solid var(--border);padding:4px 10px;text-align:right}.error{color:#ffd2ac;margin-top:8px}
.lesson{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:14px;margin-top:16px}.panel{background:var(--panel);padding:17px;border:1px solid var(--border);border-radius:12px}.panel p{margin-top:8px;font-size:.87rem}.task{margin-top:9px;border:1px solid var(--border);border-radius:7px;padding:9px 11px}.task summary{cursor:pointer;font-size:.86rem;font-weight:680}.task form{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.task input{padding:5px 8px;width:9rem}.task details{margin-top:8px}.task details summary{color:var(--cyan);font-weight:500}.task .result{min-height:1.2em;color:var(--green)}.task .result.retry{color:var(--orange)}.sources{margin-top:16px}footer{padding:16px 0;color:var(--muted);font-size:.75rem}
@media(max-width:1000px){.shell{grid-template-columns:200px minmax(0,1fr)}main{padding:16px}.lab-grid{grid-template-columns:minmax(0,1fr) minmax(175px,29%)}.hero{grid-template-columns:minmax(0,1fr) 26%}}
@media(max-width:760px){.shell{display:block}.top{padding:0 13px;height:56px;gap:8px}.institution{display:none}.sidebar{min-height:auto;padding:10px 13px;border-right:0;border-bottom:1px solid var(--border)}#modules{display:flex;overflow:auto;padding-bottom:4px}#modules a{white-space:nowrap;min-height:36px;grid-template-columns:auto 1fr;padding:6px 9px}.sidebar-title,.progress-card{display:none}main{padding:12px}.hero-copy{padding:16px}.hero{min-height:150px}.lab{padding:10px}.lab-grid{grid-template-columns:1fr}.control-pane{grid-row:1}.control-pane #fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 9px}.plot-card canvas{height:236px}.lesson{grid-template-columns:1fr}.hero-visual div{display:none}}
@media(max-width:410px){.hero{display:block}.hero-visual{display:none}.top-links{gap:10px}}

.field[hidden]{display:none}
