:root{--paper:#f5f2e9;--ink:#293f35;--green:#405c46;--soft:#e7ecdf;--muted:#68766a;--line:#d4dacb;--orange:#b9684e;--gold:#9a752e}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 system-ui,sans-serif}button,select{font:inherit;color:inherit;background:#fcfbf6;border:1px solid #b7c4ae;border-radius:8px;padding:9px 13px}button{cursor:pointer;min-height:42px}button:hover:not(:disabled){background:#e6eddd;border-color:var(--green)}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--orange);outline-offset:3px}a{color:var(--green)}header{max-width:1240px;margin:auto;padding:20px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center}header a{text-decoration:none;font-weight:600;font-size:13px}.header-links{display:flex;align-items:center;gap:22px}.header-links a{font-size:12px;font-weight:400}main{max-width:1240px;margin:auto;padding:0 26px}.intro{padding:32px 0 27px;display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--muted);margin:0 0 8px;text-transform:uppercase}h1{font:600 clamp(32px,4vw,49px)/1.3 serif;letter-spacing:1px;margin:4px 0 8px}.lead{color:var(--muted);margin:0;font-size:16px}.postmark{border:1px solid #a8b99a;border-radius:50%;padding:10px 28px;transform:rotate(-8deg);font-size:34px;color:var(--orange);text-align:center}.postmark span{color:var(--green);font-size:22px}.postmark small{display:block;font-size:8px;letter-spacing:2px;color:var(--muted)}#routes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 22px}.route{display:flex;justify-content:space-between;align-items:center;gap:9px;text-align:left;padding:13px 16px;background:transparent}.route.active{background:#e5ebdc;border-color:#809b70}.route .stars{color:var(--gold);white-space:nowrap}.route small{display:block;color:var(--muted);font-size:10px;letter-spacing:1px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 295px;gap:20px;align-items:start}.panel{background:#fcfbf6;border:1px solid var(--line);border-radius:17px;padding:22px}.floor-head,.tool-heading,.result-header{display:flex;justify-content:space-between;gap:14px;align-items:center}h2{font:600 25px/1.4 serif;margin:0}h3{font-size:15px;margin:0 0 9px}#description{color:var(--muted);font-size:13px;min-height:42px}.status{border-radius:20px;background:#e8eddf;padding:5px 12px;font-size:12px;white-space:nowrap}.metrics{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:12px;padding:15px 0;border-top:1px solid var(--line)}.metrics>div{padding:0 12px;border-right:1px solid var(--line);font-size:11px;color:var(--muted)}.metrics>div:first-child{padding-left:0}.metrics>div:last-child{border:0}.metrics strong{display:block;color:var(--ink);font-size:31px;font-variant-numeric:tabular-nums;font-weight:600;line-height:1.4}progress{width:100%;height:6px;accent-color:var(--green)}.floor-map{border-radius:13px;background:#edf0e4;overflow:hidden;border:1px solid #dbe0d0;margin-top:3px}svg{display:block;width:100%;height:auto;touch-action:manipulation}.belt-path{fill:none;stroke:#b4c1a7;stroke-width:62;stroke-linejoin:round}.belt-lane{fill:none;stroke:#d8dfcd;stroke-width:49;stroke-linejoin:round}.slot rect{fill:#f4f3ea;stroke:#b8c4ab;stroke-width:1}.slot text{fill:#74806c;font-size:10px;pointer-events:none}.slot.slow rect{stroke:#c58068;stroke-width:2;stroke-dasharray:4 3}.slot.boosted rect{stroke:#668a50;fill:#e3eed8;stroke-width:3}.parcel-token{transition:transform .14s linear;pointer-events:none}.reduced .parcel-token{transition:none}.parcel-box{fill:#bd8151;stroke:#9c623c;stroke-width:1}.parcel-tape{fill:#ead3a4}.parcel-label{fill:#f3e8ce}.zone-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:11px}.zone-picker button{font-size:12px;padding:8px 5px}.zone-picker button[aria-pressed="true"]{background:var(--green);color:#fff}.playback{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:16px}.playback label{margin-left:auto;font-size:12px}.playback select{padding:6px}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover:not(:disabled){background:#304b36;color:white}.text{border:0;background:none;padding:4px 0;text-decoration:underline;text-underline-offset:3px;font-size:12px}.text:hover:not(:disabled){border:0;background:none;color:var(--orange)}.muted{font-size:11px;color:var(--muted);line-height:1.6;margin:6px 0 0}.dispatch h2{font-size:23px}.tool{border-bottom:1px solid var(--line);padding:17px 0}.tool h3{margin:0}.tool button{width:100%;margin-top:11px}.token-count{font-size:13px;font-weight:650;color:var(--green);white-space:nowrap}.effect-status{font-size:11px;color:var(--green);margin:8px 0 0;min-height:18px}.segmented{display:flex;gap:5px}.segmented button{padding:7px 3px;font-size:12px}.segmented button[aria-pressed="true"]{background:#e1ead6;border-color:#69885a;font-weight:650}.objectives{margin-top:19px}ul{padding:0;list-style:none}#goals li,#resultGoals li{display:flex;align-items:flex-start;gap:7px;font-size:12px;margin:9px 0}.star{color:var(--gold);font-size:17px}.livecheck{color:var(--green)}details{border-top:1px solid var(--line);margin-top:16px;padding-top:13px}summary{cursor:pointer;font-size:13px;font-weight:600}details p{font-size:13px}.bottom-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin-top:20px}.event{font-size:12px;padding:8px 0;border-bottom:1px solid var(--line);display:flex;gap:12px}.event time{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}.event.active{color:var(--orange);font-weight:650}.event.past{opacity:.5}#eventBanner{font-size:12px;color:var(--orange);min-height:23px;margin-top:10px}.storage-tools{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;align-items:center}.storage-tools label{margin-left:auto}input{accent-color:var(--green)}.science{margin-top:20px;padding-top:20px}.result-panel{margin-top:20px;background:#edf0e3}.big-stars{color:var(--gold);font-size:36px;letter-spacing:6px;white-space:nowrap}.result-actions{display:flex;gap:10px;margin-top:15px}#resultSummary{font-size:14px;margin:14px 0}#notice{background:#f1dfc7;border-radius:8px;padding:12px;font-size:13px;margin-bottom:15px}footer{font-size:12px;color:var(--muted);padding:27px 0;margin-top:25px;border-top:1px solid var(--line)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:1000px){.game-layout{grid-template-columns:minmax(0,1fr) 265px;gap:14px}.panel{padding:17px}.playback label{margin-left:0}}@media(max-width:780px){.game-layout{grid-template-columns:1fr}.dispatch{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.dispatch>.eyebrow,.dispatch>h2{grid-column:1/-1}.objectives{margin-top:15px}h2{font-size:23px}.postmark{font-size:27px;padding:8px 17px}.bottom-layout{grid-template-columns:1fr}.metrics strong{font-size:29px}}@media(max-width:500px){main{padding:0 12px}header{padding:14px 12px}.header-links{gap:12px}header select{padding:6px;font-size:12px}.header-links a{font-size:10px;max-width:90px}.intro{padding:23px 0}.lead{font-size:13px}.postmark{display:none}.route{display:block;padding:10px;font-size:12px}.route .stars{display:block;margin-top:3px}#routes{gap:7px;margin-bottom:14px}.panel{padding:15px}.metrics{gap:7px}.metrics>div{padding:0 6px}.metrics strong{font-size:25px}.zone-picker button{font-size:11px}.dispatch{gap:0 16px}.tool button{font-size:12px}.big-stars{font-size:27px}.floor-head{gap:8px}.status{font-size:10px;padding:4px 8px}.playback{gap:8px}.playback button{font-size:12px}.result-header{align-items:flex-start}}@media(prefers-reduced-motion:reduce){.parcel-token{transition:none}}
/* Controls live on the conveyor; the complete game is one fullscreen surface. */
#gameStage{position:relative}.stage-actions{display:flex;align-items:center;gap:10px}#fullscreen{font-size:12px;white-space:nowrap}.floor-map{position:relative;overflow:visible;isolation:isolate;margin-inline:auto}.floor-map>svg{border-radius:12px}.boundary-hotspot{position:absolute;z-index:3;padding:3px 5px;min-width:44px;min-height:44px;font-size:11px;line-height:1.3;border-radius:9px;background:#405c46;color:white;border-color:#405c46;box-shadow:0 2px 5px #293f3520}.boundary-hotspot:hover{background:#304b36!important;color:white}.entry-point{left:0;top:11%}.exit-point{right:0;bottom:10%}.popover-backdrop{position:absolute;inset:0;z-index:5;width:100%;height:100%;background:#edf0e43b;border:0;border-radius:12px;padding:0;cursor:default}.popover-backdrop:hover{background:#edf0e43b!important;border:0!important}.map-popover{position:absolute;z-index:6;width:min(325px,calc(100% - 24px));max-height:min(370px,calc(100dvh - 40px));overflow:auto;padding:15px;background:#fcfbf6;border:1px solid #a6b99a;border-radius:13px;box-shadow:0 10px 36px #293f3533;left:8%;top:7%}.map-popover[data-anchor="zone1"]{top:26%;left:auto;right:8%}.map-popover[data-anchor="zone2"],.map-popover[data-anchor="exit"]{top:auto;left:auto;right:8%;bottom:7%}.popover-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.popover-heading h3{margin:0}.close-popover{padding:1px 8px;min-width:38px;min-height:38px;font-size:24px;border:0;background:transparent}.map-popover .tool{padding:12px 0 5px;border:0}.map-popover .tool button{width:100%;margin-top:11px}.map-popover .segmented button{width:33%;margin-top:10px;min-height:44px}.map-popover .text{margin-top:8px}.stage-hud{display:flex;flex-wrap:wrap;align-items:center;gap:7px 17px;margin:12px 0 6px;color:var(--green);font-size:12px;font-variant-numeric:tabular-nums}.stage-hud #activeEffects{flex-basis:100%;font-size:11px;min-height:17px}.scene-feedback{display:flex;flex-direction:column;gap:3px;min-height:37px;margin-top:9px;font-size:12px}.scene-feedback #eventBanner{margin:0;min-height:18px}.scene-feedback #sceneMessage{color:var(--green)}.scene-details{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:18px;margin-top:4px}.scene-details details{margin-top:0}.scene-details .storage-tools{display:flex;align-items:flex-start;gap:10px}.scene-details .storage-tools label{margin-left:0;font-size:12px}.scene-details .storage-tools select{font-size:12px;padding:6px}#resultPanel{border:1px solid #c6d3b9;border-radius:12px;padding:18px;margin:14px 0}.scene-open{overflow:hidden}#gameStage.scene-full{position:fixed;inset:0;z-index:1000;max-width:none;width:100%;height:100dvh;height:100vh;max-height:100dvh;margin:0;padding:14px max(14px,env(safe-area-inset-right)) 14px max(14px,env(safe-area-inset-left));overflow:auto;overscroll-behavior:contain;border:0;border-radius:0;background:var(--paper)}#gameStage::backdrop{background:var(--paper)}.scene-full #description,.scene-full #mapHelp,.scene-full>.science{display:none}.scene-full .floor-head{max-width:1100px;margin:auto}.scene-full .eyebrow{display:none}.scene-full .metrics{max-width:1100px;margin:9px auto 0;padding:8px 0}.scene-full .metrics strong{font-size:25px}.scene-full .metrics .muted{display:none}.scene-full .floor-map{width:min(100%,calc((100dvh - 260px)*2.05128));min-width:min(100%,280px)}.scene-full .stage-hud,.scene-full .playback,.scene-full .scene-feedback,.scene-full .scene-details,.scene-full #resultPanel{max-width:1100px;margin-left:auto;margin-right:auto}.scene-full .stage-hud{margin-top:6px}.scene-full #activeEffects{flex-basis:auto;min-height:0}.scene-full .playback{margin-top:8px}.scene-full .scene-feedback{min-height:20px;flex-direction:row;flex-wrap:wrap;gap:0 14px}.scene-full .scene-details{margin-top:6px}.scene-full .map-popover{max-height:calc(100dvh - 125px)}
@media(max-width:700px){.stage-actions{gap:6px}.stage-actions #fullscreen{font-size:11px;padding:7px}.stage-actions .status{font-size:10px}.scene-details{grid-template-columns:1fr;gap:0}.scene-details details{margin-top:10px}.map-popover,.map-popover[data-anchor]{left:50%;right:auto;top:8%;bottom:auto;transform:translateX(-50%);padding:12px;width:calc(100% - 18px)}.boundary-hotspot{font-size:10px;min-width:40px;min-height:40px}.entry-point{left:-5px}.exit-point{right:-5px}.scene-full .scene-details{display:flex;flex-wrap:wrap;gap:0 18px}.scene-full .scene-details details{flex:1;min-width:85px}.scene-full .scene-details details[open]{flex-basis:100%;order:2}.scene-full .floor-head h2{font-size:19px}.scene-full .metrics strong{font-size:21px}.scene-full .stage-hud{font-size:11px;gap:3px 12px}.scene-full .map-popover{max-height:calc(100dvh - 145px)}}
@media(max-height:500px) and (min-width:600px){.scene-full .floor-map{width:min(70%,calc((100dvh - 155px)*2.05128));margin-left:0}.scene-full .metrics{position:absolute;right:14px;top:61px;width:26%;display:flex;flex-wrap:wrap;gap:0;border:0}.scene-full .metrics>div{border:0;padding:0 6px;width:50%}.scene-full .metrics strong{font-size:22px}.scene-full .stage-hud{position:absolute;right:14px;top:185px;width:25%;display:block}.scene-full .stage-hud span{display:block}.scene-full .playback{margin-top:5px}.scene-full .scene-details,.scene-full .scene-feedback{font-size:11px}.scene-full .floor-head{margin-bottom:8px}.scene-full .map-popover{top:0;bottom:auto;left:15%;right:auto;max-height:calc(100dvh - 95px)}}

/* Zone controls and highlights use the same SVG geometry as their actual cells. */
.belt-zone{cursor:pointer;outline:none}.zone-shape{fill:none;stroke:transparent;stroke-width:62;stroke-linecap:butt;stroke-linejoin:round;pointer-events:stroke}.belt-zone .slot rect{pointer-events:all}.zone-label{fill:#65785d;font-size:13px;pointer-events:all}.belt-zone:hover .zone-shape{stroke:#a8b99066}.belt-zone:hover .slot rect{fill:#e7eddf;stroke:#82976e}.belt-zone.selected .zone-shape{stroke:#91aa72}.belt-zone.selected .slot rect,.slot.selected rect{fill:#dfeacb;stroke:#3d6338;stroke-width:3}.belt-zone.selected .zone-label{fill:#274b29;font-weight:700}.belt-zone:focus-visible .zone-shape{stroke:#b9684e;stroke-width:66}.belt-zone:focus-visible .slot rect{stroke:#b9684e;stroke-width:3}.slot.boosted rect{fill:#d1e9bc;stroke:#5a7f42;stroke-width:3}.slot.selected.boosted rect{stroke:#254e27;stroke-width:4}.belt-zone.slowed:not(.selected) .zone-shape{stroke:#d6b8a36b}.belt-zone.slowed .zone-label{fill:#a05238}#beltMarkers{pointer-events:none}

.belt-zone.powered:not(.selected) .zone-shape{stroke:#b2cc96}
