:root{color-scheme:dark;--bg:#0b1017;--panel:#111923;--light:#182330;--line:#293541;--text:#e8eef5;--muted:#a0adbb;--mint:#65e6d0;--lavender:#8da7ff;--gold:#ffcc66;--red:#ff8989;font-family:Inter,"Noto Sans JP",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button,select{color:inherit;background:var(--light);border:1px solid var(--line);border-radius:7px}button{padding:9px 13px;cursor:pointer;transition:background .18s,border-color .18s}button:hover{background:#243343;border-color:#576c7e}button:disabled{opacity:.4;cursor:default}button:focus-visible,summary:focus-visible,canvas:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--mint);outline-offset:4px}button.primary{background:var(--mint);color:#09251f;border-color:var(--mint);font-weight:650}button.primary:hover{background:#9af1e1}.quiet{background:transparent;border-color:transparent;color:var(--muted)}select{padding:8px 12px}input[type=range]{width:100%;accent-color:var(--mint);cursor:pointer}#lab{max-width:1600px;margin:auto;padding:25px 36px 0}.mast,.brand,.panel-top,.map-tools,.map-footer,.transport,.transport-buttons,.transport-state,.timeline-labels,.timeline-caption,.section-heading,footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.mast{padding-bottom:21px;border-bottom:1px solid var(--line)}.brand{justify-content:flex-start;gap:14px}.brand svg{width:38px;stroke:var(--mint);stroke-width:1.7;fill:none}.brand h1{font-size:25px;letter-spacing:2px;margin:0;font-weight:700}.brand h1 span{font-weight:350;color:var(--mint)}.brand p{font-size:11px;letter-spacing:1.5px;margin:4px 0 0;color:var(--muted)}.brand p span{margin:0 8px;color:#526270}.intro{display:flex;align-items:baseline;gap:24px;padding:24px 0 22px}.intro h1{font-size:25px;font-weight:550;margin:0;letter-spacing:.015em}.intro p{font-size:14px;color:var(--muted);margin:0}.steps{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:21px;background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}.steps button{display:grid;grid-template-columns:30px auto;grid-template-rows:auto auto;text-align:left;padding:14px 20px;border:0;border-radius:0;background:transparent;gap:4px 12px;position:relative}.steps button+button{border-left:1px solid var(--line)}.steps button>span{grid-row:1/3;align-self:center;color:var(--muted);font-size:19px;font-weight:300}.steps b{font-weight:550;font-size:15px}.steps small{font-size:12px;color:var(--muted)}.steps button[aria-current=step]{background:#17312f}.steps button[aria-current=step]::after{position:absolute;content:"";height:2px;background:var(--mint);bottom:0;left:0;right:0}.steps button[aria-current=step]>span{color:var(--mint)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px}.workbench{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(350px,1fr);gap:18px;align-items:stretch}.panel-top{padding:19px 22px 12px}.eyebrow{font-size:11px;letter-spacing:1.7px;color:var(--muted);font-weight:600}h3{font-size:16px;font-weight:550;line-height:1.6;margin:5px 0 0}.time-readout{text-align:right;white-space:nowrap}.time-readout small{display:block;color:var(--muted);font-size:11px}.time-readout strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:20px;font-weight:500;display:block;margin-top:4px}.map-tools{padding:0 22px 6px;flex-wrap:wrap;justify-content:flex-start;font-size:12px}.segmented{display:flex;background:#0b121a;border:1px solid var(--line);border-radius:6px;padding:3px}.segmented button{padding:5px 10px;border:0;background:transparent;font-size:12px}.segmented button[aria-pressed=true]{background:#243442}.check{display:flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap}.check input{accent-color:var(--mint)}.legend-inline{display:flex;gap:6px;align-items:center;color:var(--muted);margin-left:auto;font-size:12px}.goal-dot,.start-dot{width:7px;height:7px;border-radius:50%;background:var(--mint)}.start-dot{background:#eef6ff;margin-left:7px}.plot-wrap{position:relative;margin:2px 14px 0;height:390px}#map{display:block;width:100%;height:100%;touch-action:manipulation;cursor:crosshair}.map-badge{position:absolute;top:13px;left:60px;background:#0b1017e8;border:1px solid #324959;border-radius:5px;padding:5px 9px;font-size:12px;color:#c6d7e1;pointer-events:none}.map-footer{padding:2px 22px 12px;flex-wrap:wrap;gap:9px;font-size:11px;color:var(--muted)}.color-key{display:flex;align-items:center;gap:7px}.color-key i{width:68px;height:5px;background:linear-gradient(90deg,#143b43,#327578,#8d9770,#d7ac6a);border-radius:3px}.color-key b{font-weight:400;margin-left:4px}.edit-tools{border-top:1px solid var(--line);display:flex;align-items:center;gap:7px;padding:11px 20px;flex-wrap:wrap}.edit-tools>span{color:var(--muted);font-size:12px}.edit-tools button{font-size:12px;padding:6px 9px;background:transparent;border-color:transparent}.edit-tools button[aria-pressed=true]{color:var(--mint);background:#1b3436;border-color:#35565a}.inspector .panel-top{gap:7px;flex-wrap:wrap}.pill{font:12px ui-monospace,SFMono-Regular,monospace;color:var(--muted);background:#0b121b;padding:5px 7px;border-radius:5px;white-space:nowrap}.equation-box{margin:2px 20px 14px;padding:15px 14px;background:#0c141e;border:1px solid #30414e;border-radius:8px}.equation{font-family:"Cambria Math",Cambria,Georgia,serif;font-size:20px;line-height:1.65}.equation sub{font-size:.65em}.equation-box p{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.7}.equation .token{font:inherit;border:1px solid transparent;padding:0 2px;color:inherit;background:transparent;border-radius:3px}.equation .token:hover,.equation .token.active{border-color:var(--mint);background:#203934}.equation .token.gold,.gold{color:var(--gold)}.equation .token.lavender,.lavender{color:var(--lavender)}.equation .token.mint,.mint{color:var(--mint)}.indent{padding-left:60px}#terminalDetail{padding:0 23px}.terminal-number{margin:22px 0}.terminal-number span{font-size:13px;color:var(--muted);display:block}.terminal-number strong{font:48px ui-monospace,SFMono-Regular,monospace;display:block;margin-top:8px;font-weight:400;color:var(--gold);letter-spacing:-1px}.number-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0;gap:8px;font-size:14px}.number-row b{font-family:ui-monospace,SFMono-Regular,monospace;font-weight:500}.note{font-size:13px;line-height:1.8;color:var(--muted)}.wide{width:100%;margin-top:7px}#candidateDetail{padding:0 20px}.candidate-heading{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:6px}.text-button{background:transparent;border:0;padding:4px 0;font-size:12px;color:var(--lavender)}.candidate-list{display:flex;flex-direction:column;gap:4px;max-height:180px;overflow-y:auto;padding:2px}.candidate{display:grid;grid-template-columns:76px minmax(15px,1fr) 61px 33px;gap:6px;align-items:center;width:100%;text-align:left;padding:6px 8px;border:1px solid transparent;background:#151f2a;border-radius:5px;font-size:12px}.candidate.active{border-color:#547585;background:#1c303c}.candidate .bar{height:5px;background:#233b47;overflow:hidden;border-radius:3px}.candidate .bar i{display:block;background:#788b9e;height:100%;border-radius:3px}.candidate.best .bar i{background:var(--mint)}.candidate .val{text-align:right;font-family:ui-monospace,monospace}.candidate .mark{font-size:10px;color:var(--mint);text-align:right}.sum-strip{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:12px 0;padding:11px 10px;background:#0c141e;border-radius:6px}.sum-strip>div{min-width:0}.sum-strip span{font-size:10px;color:var(--muted);white-space:nowrap}.sum-strip b{display:block;font:17px ui-monospace,monospace;margin-top:5px}.sum-strip>div:first-child b{color:var(--gold)}.sum-strip>div:nth-child(3) b{color:var(--lavender)}.sum-strip>div:last-child b{color:var(--mint)}.dynamics{display:grid;grid-template-columns:42% 1fr;align-items:center}.vector-wrap svg{width:100%;display:block;max-height:131px}.dynamics-copy p{font-size:12px;margin:1px 0 6px}.small-equation{font-size:18px}.dynamics-copy dl{display:grid;grid-template-columns:60px 1fr;font-size:11px;margin:0;gap:5px}.dynamics-copy dt{color:var(--muted)}.dynamics-copy dd{margin:0;font-family:ui-monospace,monospace;white-space:nowrap}.next-state{border-top:1px solid var(--line);margin-top:9px;padding:11px 0 0;font:12px ui-monospace,monospace;color:#c1cedb;line-height:1.6}.inspector-note{padding:14px 22px;color:var(--muted);font-size:12px;line-height:1.75}.hidden{display:none!important}.timeline-panel{padding:17px 22px 15px;margin-top:18px}.transport{flex-wrap:wrap;gap:12px}.transport-buttons{justify-content:flex-start;gap:8px;flex-wrap:wrap}.transport-buttons button{font-size:14px}.transport-state{font-size:12px;color:var(--muted);gap:10px;flex-wrap:wrap}.transport-state select{font-size:12px;padding:6px 9px}.direction{color:var(--mint);margin-right:10px}.timeline-labels{font-size:12px;color:var(--muted);margin:18px 0 9px}.timeline-labels b{font-weight:450;color:var(--text);margin-left:8px}#timelineInstruction{font-size:12px}.timeline{display:grid;gap:4px;height:34px}.timeline button{padding:0;border:1px solid #243140;background:#18222c;border-radius:3px;font-size:10px;color:transparent;position:relative;min-width:0}.timeline button.known{background:#274c4e;border-color:#2c585a}.timeline button.future{background:#343a5f;border-color:#4e537d}.timeline button.current{background:var(--mint);border-color:var(--mint);color:#102523}.timeline button.trajectory-time{border-top:3px solid var(--gold)}.timeline button:disabled{opacity:.55}.timeline button:hover{filter:brightness(1.3)}.timeline-caption{font-size:11px;margin-top:10px;color:var(--muted);flex-wrap:wrap}.timeline-caption>span:first-child{display:flex;align-items:center;gap:7px}.tiny-key{height:7px;width:10px;background:#18222c;display:inline-block;margin-left:10px;border-radius:1px}.tiny-key:first-child{margin-left:0}.tiny-key.known{background:#376564}.tiny-key.selected{background:var(--mint)}.below{display:grid;grid-template-columns:1.15fr 1fr;gap:18px;margin-top:18px}.parameters,.explanation{padding:20px 22px}.section-heading{display:block;margin-bottom:17px}.section-heading h3{font-size:17px}.parameter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:21px 24px}.control label{display:flex;justify-content:space-between;gap:5px;font-size:13px;margin-bottom:10px}.control output{font-family:ui-monospace,monospace;color:var(--mint)}.control select{width:100%;font-size:12px;padding:8px 5px}.parameters .note{margin:15px 0 0;font-size:12px}.explanation p{font-size:14px;line-height:1.85;color:#bcc9d5;margin:0}.status-line{font-size:13px;color:var(--mint);margin-top:12px;line-height:1.8}.formula-link{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.formula-link>span{font-size:11px;color:var(--muted)}.formula-link .equation{font-size:19px;margin:4px 0}.formula-link p{font-size:12px;line-height:1.7;color:var(--muted)}.math-details{margin-top:18px}.math-details summary{padding:18px 22px;cursor:pointer;font-size:14px;list-style:none;display:flex;align-items:center;justify-content:space-between}.math-details summary::-webkit-details-marker{display:none}.math-details[open] summary{border-bottom:1px solid var(--line)}.details-content{padding:22px;display:grid;grid-template-columns:1fr 1fr;gap:20px 34px}.details-content h3{margin:0 0 9px;font-size:16px}.details-content p{font-size:14px;line-height:1.9;color:#b6c4d1;margin:0 0 18px}.math-block{background:#0b141e;padding:13px;font-family:Cambria,Georgia,serif;font-size:16px;line-height:1.85;margin-bottom:12px;border-radius:5px;overflow-wrap:anywhere}.details-content a{color:var(--mint)}footer{padding:22px 0;color:#81909f;font-size:11px;letter-spacing:1px}footer b{margin:0 12px;font-weight:400}body[data-focus=cost] .space-panel{border-color:var(--gold)}body[data-focus=f] .dynamics{background:#183332;border-radius:6px}body[data-focus=value] .space-panel,body[data-focus=future] .timeline-panel{border-color:var(--mint)}
@media(min-width:1400px){.plot-wrap{height:427px}.inspector .panel-top{padding-top:20px}.candidate-list{max-height:190px}.equation-box{margin-bottom:16px}.inspector-note{padding-top:18px}}
@media(max-width:1100px){#lab{padding:20px}.workbench{grid-template-columns:minmax(0,1.15fr) minmax(330px,1fr);gap:13px}.plot-wrap{height:350px}.panel-top{padding:15px}.map-tools{padding-left:15px;padding-right:15px}.legend-inline{display:none}.intro{display:block}.intro p{margin-top:10px}.equation-box{margin-left:15px;margin-right:15px}.equation{font-size:18px}#candidateDetail{padding:0 15px}.below{grid-template-columns:1fr 1fr}.parameter-grid{grid-template-columns:1fr 1fr;gap:17px}.time-readout strong{font-size:17px}.transport-state{margin-top:4px}.steps button{padding:13px}.edit-tools{padding:10px}.map-footer{padding:8px 15px}.sum-strip b{font-size:16px}.inspector-note{padding:11px 15px}.map-badge{left:50px}}
@media(max-width:790px){#lab{padding:16px 12px 0}.brand h1{font-size:22px}.brand p{font-size:9px;letter-spacing:.9px}.brand svg{width:28px}.mast>.quiet{font-size:12px;max-width:98px;padding:4px;line-height:1.7}.intro{padding:21px 2px}.intro h1{font-size:23px}.intro p{font-size:12px;line-height:1.7}.steps{margin-bottom:13px}.steps button{grid-template-columns:1fr;gap:2px;padding:12px 9px}.steps button>span{grid-row:auto;font-size:12px;margin-bottom:3px}.steps small{font-size:10px}.steps b{font-size:13px}.workbench,.below{grid-template-columns:1fr}.plot-wrap{height:340px;margin:0 6px}.panel-top h3{font-size:15px}.map-tools{gap:8px}.legend-inline{display:flex;margin-left:auto;font-size:10px}.map-footer{font-size:10px}.inspector .panel-top{flex-wrap:nowrap}.inspector{padding-bottom:3px}.equation-box{margin-top:0}.terminal-number{margin:15px 0}.terminal-number strong{font-size:36px}.candidate-list{max-height:190px}.dynamics{grid-template-columns:140px 1fr;max-width:380px;margin:0 auto}.dynamics-copy dl{font-size:12px}.next-state{font-size:13px}.sum-strip span{font-size:11px}.sum-strip b{font-size:18px}.transport-buttons{gap:6px}.transport-buttons button{font-size:12px;padding:9px 10px}.transport-buttons .quiet{padding-left:4px;padding-right:4px}.timeline-panel{padding:15px 12px}.timeline{gap:3px;height:29px}#timelineInstruction{display:none}.timeline-labels{font-size:11px}.transport-state{width:100%;justify-content:flex-end}.transport-state .direction{margin-right:auto}.below{gap:13px;margin-top:13px}.parameters,.explanation{padding:19px 17px}.parameter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.control label{font-size:14px}.details-content{grid-template-columns:1fr;padding:18px}.math-details summary{font-size:13px;padding:16px}.steps b,.steps small{white-space:nowrap}.map-badge{font-size:10px;left:49px}.edit-tools{gap:3px}.edit-tools>span{font-size:11px}.edit-tools button{font-size:11px;padding:7px}.timeline-caption{font-size:10px}footer{gap:15px;letter-spacing:.5px;font-size:9px}.brand{gap:7px}.map-footer{justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Series layout and adjacent map/playback controls. */
#lab { max-width: 1440px; padding: 0 36px; }
.skip-link { position: absolute; left: 20px; top: -60px; z-index: 10; padding: 12px 18px; background: var(--mint); color: var(--bg); }
.skip-link:focus { top: 12px; }
#experiment { scroll-margin-top: 16px; }
.workbench { grid-template-areas: "space inspector" "timeline timeline"; }
.space-panel { grid-area: space; min-width: 0; }
.inspector { grid-area: inspector; min-width: 0; }
.timeline-panel { grid-area: timeline; margin-top: 0; min-width: 0; }
#about { margin-bottom: 28px; }
.series-footer { letter-spacing: normal; }
@media (max-width: 1100px) {
 #lab { padding: 0 20px; }
}
@media (max-width: 790px) {
 #lab { padding: 0 12px; }
 .workbench { grid-template-areas: "space" "timeline" "inspector"; }
 .space-panel { display: flex; flex-direction: column; }
 .space-panel .edit-tools { order: 1; padding: 6px 10px; }
 .space-panel .plot-wrap { order: 2; height: clamp(180px, calc(100svh - 325px), 320px); }
 .space-panel .map-footer { order: 3; }
 .space-panel .panel-top { padding: 12px; }
 .space-panel .panel-top h3 { font-size: 13px; }
 .space-panel .map-tools { padding: 0 12px 8px; }
 .space-panel .edit-tools > span { display: none; }
 .map-footer #mapHint { line-height: 1.6; }
 .timeline-panel { padding: 12px; }
 .transport-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
 .transport-buttons button { min-height: 40px; }
 .inspector .panel-top { flex-wrap: wrap; }
 .dynamics { grid-template-columns: minmax(100px, 42%) minmax(0, 1fr); }
 .next-state { overflow-wrap: anywhere; }
 .series-labs { grid-template-columns: 1fr; }
 .math-block { overflow-wrap: anywhere; }
}

/* The camera changes only the view, never the computed policy or clock. */
.camera-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 2px 22px 8px; color: var(--muted); font-size: 11px; }
.camera-tools button { min-width: 32px; min-height: 32px; padding: 4px 8px; font-size: 12px; }
#heightNote { width: 100%; line-height: 1.6; color: var(--muted); }
@media (max-width: 790px) {
 .camera-tools { padding: 0 12px 8px; gap: 5px; }
 .camera-tools button { min-height: 36px; }
 .map-tools .legend-inline { display: none; }
}

#map[data-view="3d"] { cursor: grab; touch-action: none; user-select: none; }
#map[data-view="3d"].rotating { cursor: grabbing; }
