:root{color-scheme:dark;--bg:#0a131b;--card:#101f29;--border:#293e4b;--ink:#e5eef1;--muted:#94adb9;--gold:var(--lab-accent, #edc184);--cyan:#80d6df;--violet:#c1a4ed}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.banner{padding:10px 4%;display:flex;gap:25px;border-bottom:1px solid #424648;background:#1d282e;font-size:11px;color:#b0c1c9}.banner span:first-child{color:var(--gold);letter-spacing:.13em}.banner a{margin-left:auto;color:var(--ink);text-decoration:none}main{max-width:1500px;padding:34px 4%;margin:auto}.eyebrow{font-size:10px;letter-spacing:.16em;color:var(--cyan);font-weight:650;margin:0 0 9px}h1{font-size:49px;letter-spacing:-.055em;line-height:1.15;margin:0 0 12px}h1 span{color:var(--gold)}header>p:last-child{color:#b4c7cf;font-size:15px;margin:0}nav{display:flex;gap:8px;margin:26px 0 22px}nav a{border:1px solid var(--border);padding:8px 17px;text-decoration:none;color:var(--muted);border-radius:6px;font-size:12px}nav a[aria-current]{color:var(--gold);background:#24323a;border-color:var(--lab-accent, var(--accent, #8d7859))}.layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.views{min-width:0}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden}.heading{padding:22px 23px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px}h2{font-size:17px;font-weight:550;letter-spacing:-.02em;margin:0}.status{color:var(--gold);font-size:10px;letter-spacing:.08em}.frame-tabs{display:flex;align-items:center;gap:8px;padding:0 23px 10px}.frame-tabs button{font-size:11px;padding:7px 11px}.frame-tabs button[aria-pressed=true]{border-color:var(--lab-accent, var(--accent, #8a775b));color:var(--gold);background:#2b3538}.frame-tabs span{margin-left:auto;color:var(--muted);font-size:10px}canvas{display:block;width:100%;height:auto}.legend{margin:0 23px;color:#b4cad3;font-size:11px}.transport{display:flex;gap:8px;align-items:center;margin:18px 23px 0;border-top:1px solid var(--border);padding-top:17px}button,select{font:inherit;font-size:12px;border:1px solid #3d5664;border-radius:6px;background:#172e3b;color:var(--ink);padding:8px 12px;cursor:pointer}button:hover{background:#29434e}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button.primary{background:var(--gold);color:#182028;border-color:var(--gold);font-weight:600}.transport label{margin-left:auto;color:var(--muted);font-size:10px}.transport select{width:68px}.caption{color:var(--muted);font-size:11px;margin:13px 23px 19px;line-height:1.8}.plot-card{margin-top:20px}.insight{color:var(--muted);padding:20px 5px;font-size:12px;line-height:1.9}.insight strong{color:var(--gold)}aside{padding:25px 22px}aside label{display:block;font-size:12px;margin:25px 0 10px}aside label.check{display:flex;align-items:center;gap:8px;font-size:11px;margin-top:17px}aside input[type=range]{width:100%;height:5px;accent-color:var(--gold)}aside input[type=checkbox]{accent-color:var(--gold)}aside output{float:right;color:var(--gold);font-variant-numeric:tabular-nums}aside select{width:100%;font-size:11px}.presets{display:flex;flex-wrap:wrap;gap:7px;margin-top:22px}.presets button{font-size:10px;padding:7px 9px}hr{border:0;border-top:1px solid var(--border);margin:25px 0}#readout{font-size:11px;font-variant-numeric:tabular-nums;line-height:1.9}#readout .metric{border-bottom:1px solid #253d49;padding:10px 0}#readout strong{font-size:15px;font-weight:550;display:block;color:var(--gold)}#readout small{display:block;color:var(--muted);font-size:10px}#export{width:100%;margin-top:20px}.aside-note{font-size:10px;color:var(--muted);margin:14px 0 0}.model{border-block:1px solid var(--border);padding:20px 0;margin-top:20px}.model summary{cursor:pointer;font-size:12px;list-style:none}.model summary span{float:right;color:var(--gold)}.model-content{max-width:980px;padding:12px 0;color:var(--muted);font-size:12px;line-height:1.9}.model a{color:var(--cyan)}footer{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.1em;color:#708f9e;margin-top:22px}footer span{letter-spacing:0}[hidden]{display:none!important}@media(max-width:1050px){.layout{grid-template-columns:minmax(0,1fr) 265px;gap:14px}main{padding-inline:24px}.transport{flex-wrap:wrap}.frame-tabs{flex-wrap:wrap}.frame-tabs span{width:100%;margin:0}.transport label{margin-left:0}}@media(max-width:740px){.layout{grid-template-columns:1fr}.banner{flex-wrap:wrap;gap:5px 10px;padding:9px 15px}.banner span:nth-child(2){order:3;width:100%}.banner a{font-size:10px}main{padding:25px 15px}h1{font-size:38px}.heading{padding:17px 15px 9px}h2{font-size:15px}.eyebrow{font-size:9px}.transport{margin:15px 12px 0;gap:7px}.transport button{font-size:10px;padding:8px}.legend,.caption{margin-inline:15px;font-size:10px}.frame-tabs{padding-inline:15px}nav{margin-top:22px}.status{font-size:8px}aside{padding:23px}.plot-card{margin-top:15px}footer{gap:15px;font-size:8px}}

html:has(body.orbit-lab) { overflow:auto; } body.orbit-lab { overflow:auto; }
html.orbit-home-preview #plot {display:none!important}
/* Zoom belongs to the shared map, so switching reference frames preserves it. */
[data-lab=three] #scene {touch-action:none}
.scene-zoom {display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 23px 12px}
.scene-zoom button {min-width:44px;min-height:44px}
.scene-zoom output {min-width:48px;text-align:center;font-variant-numeric:tabular-nums}
.scene-zoom span {font-size:12px;color:var(--lab-muted,var(--muted))}
.orbit-home-preview .scene-zoom {display:none}
/* World-switching links use the same accent and contrast as the run button. */
body.orbit-lab nav a,
html[data-theme] body.orbit-lab nav a {
  background:var(--lab-accent,var(--gold))!important;
  border-color:var(--lab-accent,var(--gold))!important;
  color:var(--orbit-switch-ink,#172029)!important;
}
body.orbit-lab nav a[aria-current=page] {box-shadow:inset 0 0 0 2px var(--orbit-switch-ink,#172029)}
