:root{font:14px system-ui,Segoe UI,sans-serif;color:#e7edf2;background:#080d12;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}main,#scene{position:fixed;inset:0;width:100%;height:100dvh}#scene{overflow:hidden}canvas{display:block;touch-action:none}button,select,input,summary{font:inherit;color:inherit}button,select,input[type=search],input[type=date],input[type=time],input[type=number]{border:0;background:rgba(19,26,34,.85);border-radius:8px;padding:8px;min-height:36px}button,summary,select{cursor:pointer}button:hover,summary:hover{background:rgba(70,84,100,.72)}button:disabled,input:disabled,select:disabled{opacity:.4}button:focus-visible,summary:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid #8bdde6;outline-offset:3px}summary{list-style:none;padding:9px 12px;border-radius:10px;background:rgba(15,22,29,.70)}summary::-webkit-details-marker{display:none}[hidden]{display:none!important}.edge{position:fixed;z-index:6;border:0}.top-left{top:max(14px,env(safe-area-inset-top));left:18px;display:flex;gap:10px;align-items:center;max-width:calc(100vw - 92px);text-shadow:0 1px 4px #000;pointer-events:none}.top-left strong{font-size:14px}.top-left #archiveHeader{font-size:13px}.top-left #dataStatus{font-size:11px;color:#aebbc8}.station-selector{top:max(12px,env(safe-area-inset-top));right:16px}.station-selector>summary{font-size:23px;width:44px;text-align:center;padding:3px 9px}.station-content{position:absolute;right:0;top:50px;width:min(410px,calc(100vw - 32px));padding:12px;border-radius:14px;background:rgba(14,21,29,.94);backdrop-filter:blur(16px);box-shadow:0 15px 50px #0006}.station-content canvas{width:100%;height:260px;border-radius:10px;cursor:grab}.station-content input,.station-content select{width:100%;margin-top:8px}.station-content small{font-size:11px;color:#aebbc8}.map-tools{display:flex;gap:6px;align-items:center;margin-top:6px}.map-tools small{margin-left:auto}.time-options{top:52px;left:18px}.time-options>div{width:245px;background:rgba(14,21,29,.92);padding:12px;border-radius:12px;backdrop-filter:blur(16px);display:grid;grid-template-columns:65px 1fr;gap:8px;align-items:center}.time-options #zoneLabel,.time-options .action-row,.time-options .check,.time-options #timeOccurrence{grid-column:1/-1}.action-row{display:flex;gap:8px}.time-options select,.time-options input{min-width:0;width:100%}.check{display:flex;align-items:center;gap:8px;font-size:13px;margin:7px 0}.check input{accent-color:#8bbfce}.loading{left:50%;top:90px;transform:translateX(-50%);width:min(430px,calc(100vw - 38px));padding:15px;border-radius:12px;background:rgba(14,21,29,.88);backdrop-filter:blur(16px)}progress{appearance:none;width:100%;height:5px;accent-color:#8acdd8;border:0;border-radius:10px;overflow:hidden}progress::-webkit-progress-bar{background:#34424f}progress::-webkit-progress-value{background:linear-gradient(90deg,#519cae,#a8e4e8)}.loading small{display:block;margin:9px 0;font-size:12px;color:#ccd8e2}.loading button{min-height:28px;padding:5px 9px}.scene-top{position:absolute;top:100px;left:18px;right:20px;display:flex;justify-content:space-between;pointer-events:none;font-size:12px;text-shadow:0 1px 4px #000;color:#b5c5d0}.scene-bottom{position:absolute;bottom:72px;left:18px;right:18px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.scene-bottom small{font-size:10px;color:#9dabb8}.scene-bottom div{pointer-events:auto;margin-right:70px}.scene-bottom button{font-size:12px;padding:6px;min-height:30px}.visual-options{right:18px;bottom:80px}.visual-options>summary{float:right}.visual-options aside{position:absolute;right:0;bottom:44px;width:258px;max-height:calc(100dvh - 150px);overflow:auto;padding:14px;background:rgba(14,21,29,.93);border-radius:14px;backdrop-filter:blur(16px)}aside label:not(.check){display:flex;justify-content:space-between;font-size:12px;margin:10px 0 5px}aside small{display:block;font-size:10px;color:#acbcc8;margin:4px 0}aside select{width:100%;margin-top:7px}aside input[type=range]{width:100%;accent-color:#8bbfce}#thresholdNumber{width:100%;min-height:28px;padding:4px 8px}#cloudControls{margin:8px 0}.layers{margin-bottom:12px}.layers .check{margin:6px 0}.no-cells #inspect{display:none}.sample-controls{font-size:12px}#inspect dl{display:grid;grid-template-columns:1fr 1fr;gap:4px}#inspect dd{margin:0}.legend{margin-top:12px}.gradient{height:5px;border-radius:10px;background:linear-gradient(90deg,#23a0d7,#14ba72,#a8d632,#f5d344,#f78725,#e43c41,#bc52be,#f6dcff)}.ticks{display:flex;justify-content:space-between;font-size:9px;margin-top:4px;color:#9cabb8}footer{left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(760px,calc(100vw - 36px));padding:8px 12px;border-radius:12px;background:rgba(12,18,25,.68);backdrop-filter:blur(10px)}.replay{display:flex;gap:5px;align-items:center}.replay button,.replay select{font-size:12px;min-height:28px;padding:4px 7px;background:transparent}.replay #clock{margin-left:auto;font-size:12px;white-space:nowrap}#sequenceControls{display:flex;align-items:center;gap:10px;font-size:10px;color:#afc0ce}#sequenceControls input{flex:1;min-width:40px;accent-color:#8fc7d2;height:16px;margin:5px 0}#sequenceControls small{white-space:nowrap}#morphStatus{min-width:64px}.bottom-left{bottom:88px;left:18px;display:flex;gap:6px;align-items:center}.bottom-left>button,.bottom-left summary{font-size:12px;padding:7px 9px;min-height:30px}a{color:#a6d8e7}.stale{color:#ffcf8b!important}#lesson{position:fixed;inset:0;z-index:10;background:#09131c}#lessonScene{position:absolute;inset:0}#lessonScene canvas{width:100%;height:100%}.lesson-heading{position:absolute;left:18px;right:18px;top:16px;display:flex;justify-content:space-between;z-index:2}.lesson-controls{position:absolute;bottom:30px;left:18px;z-index:2;text-shadow:0 1px 3px #000}.lesson-controls p{font-size:13px}.lesson-caption{color:#adbdc9}
@media(max-width:760px){.top-left{top:max(10px,env(safe-area-inset-top));left:12px;display:block}.top-left strong{display:none}.top-left #archiveHeader{display:block;font-size:12px}.top-left #dataStatus{display:block;font-size:10px}.time-options{top:54px;left:12px}.time-options>summary{padding:6px 9px;font-size:12px}.station-selector{right:12px;top:10px}.station-content canvas{height:230px}.visual-options{right:12px;bottom:108px}.visual-options aside{max-height:calc(100dvh - 176px);width:245px}.bottom-left{left:12px;bottom:110px}.bottom-left>button{font-size:10px}.bottom-left summary{font-size:10px}footer{bottom:max(9px,env(safe-area-inset-bottom));width:calc(100vw - 24px);padding:7px 9px}.replay{flex-wrap:wrap}.replay #clock{font-size:10px;flex-basis:100%;margin:2px 0 0}#sequenceControls{gap:5px;font-size:9px}#morphStatus{min-width:0;max-width:110px}.scene-top{top:98px;left:12px;font-size:10px}.scene-bottom{bottom:143px;left:12px;right:12px}.scene-bottom div{margin-right:0}.scene-bottom button{font-size:10px}.scene-bottom small{max-width:140px;font-size:9px}.loading{top:105px}.time-options>div{max-width:calc(100vw - 24px)}.visual-options summary{font-size:12px}.station-content{max-height:calc(100dvh - 100px);overflow:auto}}

#lesson.learn-panel{inset:auto;left:18px;bottom:130px;width:min(330px,calc(100vw - 36px));padding:14px;border-radius:14px;background:#101a23ed;z-index:7;backdrop-filter:blur(12px)}.learn-panel .lesson-heading{position:static;gap:10px;align-items:center}.learn-panel p{font-size:13px;line-height:1.5}.learn-panel small{display:block;font-size:11px;line-height:1.5;color:#b7c8d6}.learn-panel select{width:100%;margin-top:10px}#weatherSpeed{font-size:11px;min-height:26px;padding:3px;background:#15212c}#loopDuration{font-size:10px}@media(max-width:760px){#lesson.learn-panel{bottom:156px;left:12px;max-height:50dvh;overflow:auto}#loopDuration{display:none}}

.map-key{display:flex!important;align-items:center;flex-wrap:wrap;gap:6px!important;font-size:11px!important}.map-key i{display:inline-block;width:14px;height:7px}.water-key{background:#245a76;border-radius:2px}.admin-key{border-top:1px dashed #a2aebb}.range-key{border-top:1px dashed #b4a17c}

/* Compact primary shell; technical controls are deliberately disclosed. */
.time-options{top:auto;bottom:88px}.time-options>div{position:absolute;bottom:43px;left:0}.bottom-left{left:140px}.advanced>summary{margin-top:8px;font-size:12px}.advanced:not([open])~*{display:none}.visual-options aside{width:280px}.visual-options aside .layers{margin-bottom:0}.lesson-stages{display:grid;gap:5px;margin-top:10px}.lesson-stages button{text-align:left}.lesson-stages button[aria-current=true]{background:#285868}.scene-top{gap:12px}.scene-top #status{margin-right:auto}.scene-top #viewExtent{font-size:10px}#lesson.learn-panel{bottom:138px}.learn-panel .action-row button{flex:1}
@media(max-width:760px){.time-options{top:auto;bottom:110px}.bottom-left{left:106px;bottom:110px}.bottom-left>button{max-width:126px}.visual-options{bottom:110px}.visual-options aside{width:min(280px,calc(100vw - 24px));max-height:calc(100dvh - 220px)}.scene-bottom{bottom:150px}.scene-top{top:60px}.scene-top #viewExtent{max-width:90px}#lesson.learn-panel{bottom:157px;max-height:calc(100dvh - 230px)}}

/* Shared layout contract: one primary-control baseline and an unobstructed credit row. */
:root{--edge:18px;--control-h:36px;--control-gap:8px;--dock-bottom:max(64px,calc(env(safe-area-inset-bottom) + 48px))}
.bottom-dock{left:var(--edge);right:var(--edge);bottom:var(--dock-bottom);display:grid;grid-template-columns:minmax(110px,1fr) minmax(360px,760px) minmax(250px,1fr);gap:16px;align-items:start;pointer-events:none}
.bottom-dock>*{pointer-events:auto;min-width:0}.bottom-dock button,.bottom-dock summary,.bottom-dock .replay select{height:var(--control-h);min-height:var(--control-h);display:inline-flex;align-items:center;justify-content:center;padding:0 11px;font-size:12px;line-height:1;white-space:nowrap;border:0;border-radius:8px;background:rgba(15,22,29,.86)}
.bottom-dock .time-options,.bottom-dock .visual-options{position:relative;inset:auto;z-index:auto}.bottom-dock .time-options{justify-self:start}.bottom-dock .camera-tools{display:flex;justify-content:flex-end;align-items:start;gap:var(--control-gap)}
.bottom-dock footer{position:relative;inset:auto;transform:none;width:100%;padding:0;background:none;backdrop-filter:none}.bottom-dock .replay{gap:var(--control-gap);min-height:var(--control-h)}.bottom-dock .replay #clock{font-size:12px;text-shadow:0 1px 4px #000}.bottom-dock #sequenceControls{margin-top:5px;padding:0 5px;border-radius:8px;background:#0c1219b3;min-height:27px}.bottom-dock #weatherSpeed{min-height:26px;height:26px;font-size:11px}
.bottom-dock .time-options>div{bottom:calc(var(--control-h) + 12px);left:0;max-height:calc(100dvh - 240px);overflow:auto}.bottom-dock .visual-options>summary{float:none}.bottom-dock .visual-options aside{bottom:calc(var(--control-h) + 12px);right:0;max-height:calc(100dvh - 240px)}
.learning-tools{left:var(--edge);top:max(48px,calc(env(safe-area-inset-top) + 44px));bottom:auto;display:flex;gap:var(--control-gap);align-items:center}.learning-tools>button{display:inline-flex;align-items:center;justify-content:center;height:var(--control-h);min-height:var(--control-h);padding:0 11px;font-size:12px;line-height:1;background:#0f161ddc;border-radius:8px}
.scene-bottom{left:var(--edge);right:var(--edge);bottom:max(12px,env(safe-area-inset-bottom));height:auto}.scene-bottom small{max-width:min(600px,calc(100vw - 310px));font-size:10px;text-shadow:0 1px 4px #000}.scene-top{top:100px}#lesson.learn-panel{bottom:calc(var(--dock-bottom) + 100px)}
@media(max-width:1120px){.bottom-dock{grid-template-columns:1fr 1fr;row-gap:12px}.bottom-dock footer{grid-column:1/-1;grid-row:2;justify-self:center;width:min(760px,100%)}.bottom-dock .camera-tools{grid-column:2;grid-row:1}.bottom-dock .time-options{grid-column:1;grid-row:1}.bottom-dock .visual-options aside,.bottom-dock .time-options>div{max-height:calc(100dvh - 310px)}#lesson.learn-panel{bottom:calc(var(--dock-bottom) + 150px)}}
@media(max-width:760px){:root{--edge:12px;--control-gap:6px}.bottom-dock{gap:10px;grid-template-columns:minmax(94px,1fr) auto}.bottom-dock button,.bottom-dock summary,.bottom-dock .replay select{padding:0 8px;font-size:11px}.bottom-dock .replay #clock{flex-basis:auto;margin-left:auto;font-size:10px}.bottom-dock .replay{flex-wrap:wrap;gap:6px}.bottom-dock #sequenceControls{gap:5px}.learning-tools{top:max(54px,calc(env(safe-area-inset-top) + 50px))}.learning-tools>button{font-size:11px}.scene-top{top:102px}.scene-bottom small{max-width:calc(100vw - 180px);font-size:9px}.bottom-dock .visual-options aside{width:min(280px,calc(100vw - 24px))}#lesson.learn-panel{bottom:calc(var(--dock-bottom) + 145px);max-height:calc(100dvh - 290px)}}
@media(max-width:420px){.bottom-dock .replay #clock{flex-basis:100%;margin:2px 0 0}.bottom-dock .replay{min-height:54px}.bottom-dock .camera-tools{gap:4px}.bottom-dock .camera-tools button,.bottom-dock .camera-tools summary{padding:0 7px;font-size:10px}}
@media(max-height:600px){:root{--dock-bottom:max(48px,calc(env(safe-area-inset-bottom) + 36px))}.bottom-dock{row-gap:6px}.learning-tools{top:42px}.scene-top{top:88px}.bottom-dock .visual-options aside,.bottom-dock .time-options>div{max-height:calc(100dvh - 220px)}#lesson.learn-panel{max-height:calc(100dvh - 220px);overflow:auto}}

.learning-tools input[type=date]{height:var(--control-h);width:145px;font-size:12px;min-width:0;padding:0 9px;background:#0f161ddc}.source-credit{pointer-events:auto;text-shadow:0 1px 3px #000}.source-credit a{color:#bdcbd6;text-decoration:none}.scene-bottom{gap:12px}.source-credit{margin-left:auto;text-align:right}@media(max-width:760px){.learning-tools input[type=date]{width:133px;font-size:12px}.scene-bottom small.source-credit{max-width:none;font-size:9px;white-space:nowrap}}

body.learning #lesson.learn-panel{left:20px;bottom:150px;width:320px;background:rgba(10,20,30,.9);border:1px solid #afdbde33;box-shadow:0 16px 60px #0005;border-radius:16px;padding:16px;backdrop-filter:blur(14px)}body.learning #lessonStage{line-height:1.5;min-height:70px}body.learning .lesson-stages{display:flex;gap:5px}body.learning .lesson-stages button{flex:1;font-size:11px}body.learning .lesson-stages [aria-current=true]{background:#23676d;color:#e6ffff}body.learning #lesson small{line-height:1.5;color:#a9bdc7}body.learning .scene-top{opacity:.35}body.learning .bottom-dock{opacity:.45}body.learning .camera-tools{visibility:hidden}@media(max-width:760px){body.learning #lesson.learn-panel{left:12px;right:12px;bottom:145px;width:auto;padding:12px}body.learning #lessonStage{min-height:0;font-size:12px;margin:9px 0}body.learning #lesson small{font-size:10px}body.learning .lesson-stages button{min-height:32px}body.learning .scene-top{visibility:hidden}}
