@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#09121d;--panel:#101e2c;--line:#253343;--muted:#9aaabc;--text:#eaf0f5;--gold:#ffc35a;--blue:#77b7e2}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 'Noto Sans SC',system-ui,sans-serif}button,input,select{font:inherit}button,select,input[type=date],input[type=number]{border:1px solid var(--line);border-radius:8px;background:#152433;color:var(--text)}button{cursor:pointer;transition:background .16s,border-color .16s}button:hover{background:#243849;border-color:#698299}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button:disabled{opacity:.4;cursor:default}button{padding:7px 12px;font-size:14px}header{height:88px;max-width:1600px;margin:auto;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:var(--text);display:flex;align-items:center;gap:13px;font-size:21px;font-weight:600}.brand-mark{font-size:36px;line-height:1;color:var(--gold)}.brand small{display:block;font-size:10px;letter-spacing:2.4px;color:var(--muted);font-weight:500}.header-end{display:flex;gap:14px;align-items:center}.tag{font-size:14px;color:var(--muted);margin-right:12px}.quiet{background:transparent}main{max-width:1600px;margin:auto;padding:28px 44px 0}.workspace{display:grid;grid-template-columns:280px minmax(0,1fr);gap:24px}.controls{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px}.section-head,.label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-head{margin-bottom:20px}.eyebrow{font-size:12px;letter-spacing:1.6px;color:var(--muted)}.text-button{padding:0;border:none;background:transparent;color:var(--muted)}.field-label{display:block;font-size:14px;font-weight:500;margin-bottom:9px}.controls select,.controls input[type=date]{width:100%;padding:10px;font-size:14px}.label-row{font-size:14px;margin-top:18px;margin-bottom:6px}.label-row output{font-variant-numeric:tabular-nums;color:var(--gold);font-size:14px}input[type=range]{width:100%;height:5px;border-radius:5px;appearance:none;background:#324357;cursor:pointer;accent-color:var(--gold);margin:12px 0}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--gold);border:3px solid #15212f;border-radius:50%;height:19px;width:19px;box-shadow:0 0 0 1px var(--gold)}.range-labels,.time-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.divider{height:1px;background:var(--line);margin:23px 0}.season-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}.season-buttons button{padding:6px 2px;font-size:13px}.selected{color:var(--gold);border-color:#8f723d!important;background:#3b3021!important}.micro{font-size:12px;color:var(--muted);line-height:1.7;margin:7px 0 0}.toggle-row{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin:12px 0}.toggle-row input{appearance:none;width:32px;height:18px;border-radius:20px;background:#354659;cursor:pointer;position:relative}.toggle-row input:after{content:'';display:block;width:12px;height:12px;border-radius:50%;background:#d1dbe4;position:absolute;top:3px;left:3px;transition:left .15s}.toggle-row input:checked{background:#9e7733}.toggle-row input:checked:after{left:17px;background:var(--gold)}.number{width:56px;padding:3px 5px;font-size:14px}.observer-card{display:flex;align-items:center;gap:12px;margin-top:23px;padding-top:18px;border-top:1px solid var(--line)}.observer-card>span{font-size:34px}.observer-card p{font-size:13px;margin:0}.observer-card small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.experiment{min-width:0;display:flex;flex-direction:column}.view-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}h1{font-size:27px;letter-spacing:.5px;font-weight:600;margin:0}h2{font-size:18px;font-weight:500;margin:2px 0 0}.view-head p{color:var(--muted);font-size:14px;margin:4px 0 0}.view-tabs{display:flex;background:#111f2d;padding:4px;border:1px solid var(--line);border-radius:9px}.view-tabs button{background:transparent;border:none;color:var(--muted);padding:7px 13px;white-space:nowrap}.view-tabs .active{background:#2a3b4c;color:#fff}.stage{position:relative;background:radial-gradient(ellipse at 50% 50%,#182b3d 0%,#0d1a28 74%);border:1px solid var(--line);border-radius:14px;overflow:hidden;min-height:425px;flex:1}#sky{width:100%;height:100%;min-height:425px;display:block;touch-action:none;cursor:grab}#sky:active{cursor:grabbing}.stage-top{position:absolute;left:22px;right:22px;top:20px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;font-size:12px;color:var(--muted)}.scene-badge{color:#ffe1a5;background:#59442866;border:1px solid #af864155;border-radius:20px;padding:3px 12px}.stage-key{position:absolute;left:22px;bottom:20px;font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:10px;pointer-events:none}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:6px}.sun-dot{background:var(--gold)}.summer-dot{background:#ff906b}.winter-dot{background:#80b9f3}.equinox-dot{background:#79d4bf}.observer-dot{background:#7acafa}.view-reset{position:absolute;right:20px;bottom:18px;font-size:12px;background:#172737b8}.timeline{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:16px 22px;margin-top:16px}.time-top{display:flex;justify-content:space-between;align-items:center}.time-top>div:first-child{display:flex;align-items:center;gap:15px}.time-top strong{font-size:27px;color:var(--gold);font-weight:500;font-variant-numeric:tabular-nums}.play-controls{display:flex;gap:9px}.play-controls select{padding:5px 8px;font-size:13px}.play-button{background:var(--gold);color:#1c2630;border-color:var(--gold);font-weight:600;min-width:88px}.play-button:hover{background:#ffd483}.time-shortcuts{display:flex;gap:9px;margin-top:12px}.time-shortcuts button{background:transparent;font-size:12px;padding:4px 10px;color:var(--muted)}.time-shortcuts span{color:var(--text);margin-left:5px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:24px}.metrics article{padding:18px 22px;border:1px solid var(--line);background:var(--panel);border-radius:12px}.metrics article>span{font-size:13px;color:var(--muted)}.metrics strong{font-size:28px;font-weight:500;display:block;margin:7px 0 3px;font-variant-numeric:tabular-nums}.metrics article:first-child strong{color:var(--gold)}.metrics small{font-size:12px;color:var(--muted);display:block}.detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin-top:22px}.panel{border:1px solid var(--line);border-radius:12px;padding:20px 22px;background:var(--panel);min-width:0}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.legend{font-size:12px;color:var(--muted)}#chart{width:100%;height:180px;display:block;cursor:crosshair;margin-top:12px;touch-action:pan-y}.globe-content{display:flex;align-items:center;gap:24px;min-height:195px}#globe{width:190px;height:190px;flex-shrink:0}.globe-notes{font-size:12px;color:var(--muted)}.globe-notes strong{font-size:14px;font-weight:500;color:var(--text);display:block;margin:4px 0 12px}.globe-notes p{margin:0;max-width:220px}.insight{margin-top:20px;border-left:3px solid var(--gold);padding:15px 20px;background:#ffc35a09;border-radius:0 8px 8px 0;font-size:14px;color:#cbd7e3}.insight strong{color:var(--gold);font-weight:500}footer{display:flex;justify-content:space-between;color:#7f91a4;font-size:12px;padding:28px 0}dialog{color:var(--text);background:var(--panel);border:1px solid #40546b;border-radius:16px;padding:28px;max-width:600px;width:calc(100% - 32px)}dialog::backdrop{background:#02070dcc;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head button{border:none;background:transparent;font-size:25px}dialog p,dialog li{font-size:15px}dialog li{margin-bottom:13px}dialog .play-button{margin-top:22px}.globe-panel .panel-title>.micro{font-size:11px}
@media(min-width:1400px){.stage,#sky{min-height:510px}}@media(max-width:1100px){header{padding:0 24px}main{padding:24px 24px 0}.workspace{grid-template-columns:250px minmax(0,1fr);gap:18px}.controls{padding:18px}.view-head{align-items:flex-start;flex-direction:column;gap:12px}.view-tabs{width:100%}.view-tabs button{flex:1}.globe-content{gap:10px}#globe{width:145px;height:180px}.metrics article{padding:16px}.metrics strong{font-size:24px}}@media(max-width:760px){header{height:74px;padding:0 16px}.brand{font-size:18px}.brand-mark{font-size:30px}.header-end{gap:7px}.tag{display:none}.quiet{font-size:12px;padding:6px 8px}main{padding:18px 14px 0}.workspace{display:flex;flex-direction:column}.experiment{order:0}.controls{order:1;display:grid;grid-template-columns:1fr 1fr;column-gap:24px}.controls>*{grid-column:1/-1}.controls .observer-card{display:none}.stage,#sky{min-height:370px;height:370px}.view-head{gap:10px}.view-tabs button{font-size:13px}.view-head h1{font-size:24px}.stage-top{left:14px;right:14px;font-size:11px}.stage-key{left:14px;bottom:16px;font-size:11px;max-width:65%}.view-reset{right:12px;bottom:12px;padding:4px 7px}.timeline{padding:12px 16px}.time-top strong{font-size:24px}.time-top .eyebrow{font-size:11px;letter-spacing:0}.time-top>div:first-child{gap:8px}.play-controls{gap:6px}.play-button{min-width:70px;padding:6px 9px}.time-shortcuts{gap:6px;justify-content:space-between}.time-shortcuts button{padding:5px 7px}.metrics{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}.metrics strong{font-size:24px}.detail-grid{grid-template-columns:1fr;gap:14px;margin-top:16px}.panel{padding:17px}.globe-content{gap:24px}#globe{width:180px;height:190px}.controls{padding:18px}.divider{margin:16px 0}.insight{font-size:13px;padding:13px 16px}footer{flex-direction:column;gap:7px;padding:22px 0}h2{font-size:17px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Material Design 3: tonal surfaces, blue primary, rounded shapes, elevation. */
:root{color-scheme:light;--bg:#f5f7fc;--panel:#fff;--line:#dce2ee;--muted:#586578;--text:#19283b;--gold:#315da8;--blue:#315da8}
body{background:var(--bg);color:var(--text)}header{background:#f5f7fc;border-bottom:0}.brand-mark{color:#315da8}.brand small{letter-spacing:1.8px}button,select,input[type=date],input[type=number]{background:#edf1f9;color:#273e61;border-color:#d1d9e8;border-radius:12px}button{font-weight:500}button:hover{background:#dce6f7;border-color:#9bb4db}.quiet{border-radius:30px;background:transparent;border-color:transparent;color:#315da8}.controls{background:#edf1f9;border:0;border-radius:24px}.stage{border:0;border-radius:24px;box-shadow:0 2px 5px #142b4718;color:#eaf0f5}.view-tabs{background:#e2e8f3;border:0;border-radius:24px;padding:4px}.view-tabs button{border-radius:20px;color:#4c5c72}.view-tabs .active{background:#c7daf7;color:#16366a}.timeline{border:0;border-radius:24px;box-shadow:0 1px 3px #142b4712}.metrics article,.panel{border:0;border-radius:20px;box-shadow:0 1px 4px #142b4714}.metrics article:first-child{background:#dce8fb}.metrics strong{color:#243c63}.metrics article:first-child strong{color:#234e95}.selected{color:#184586!important;border-color:transparent!important;background:#cadcf8!important}.season-buttons button{border-radius:20px;border-color:transparent;background:#e0e7f2}.controls select,.controls input[type=date]{background:#fff;border-radius:8px}.label-row output{color:#315da8}input[type=range]{background:#c2cfe2;accent-color:#315da8}input[type=range]::-webkit-slider-thumb{background:#315da8;border-color:#315da8;box-shadow:none;height:19px;width:19px}.play-button{background:#315da8;color:white;border-color:#315da8;border-radius:26px;padding:8px 20px}.play-button:hover{background:#244e95;color:white}.toggle-row input{background:#b7c2d2;border:1px solid #76879e;height:23px;width:39px}.toggle-row input:after{width:14px;height:14px;top:3px;left:3px;background:#65758a}.toggle-row input:checked{background:#315da8;border-color:#315da8}.toggle-row input:checked:after{background:white;left:20px}.observer-card{border-color:#cdd7e7}.observer-card>span{color:#315da8}.view-reset{background:#20354bdc;border-color:#516981;color:#dce7f3;border-radius:20px}.view-reset:hover{background:#314a63}.time-shortcuts button{border-color:#d7dfec;border-radius:20px;color:#405777}.time-shortcuts span{color:#263e61}.sun-dot{background:#e7a439}.insight{background:#e7edf8;border-left:0;border-radius:18px;color:#405574}.insight strong{color:#234e95}.divider{background:#d1dae8}dialog{background:#f8faff;border:0;border-radius:28px;box-shadow:0 20px 70px #0b203850}dialog::backdrop{background:#17243b66;backdrop-filter:blur(3px)}dialog .dialog-head button{color:#34486a}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline-color:#315da8}.scene-badge{color:#ffe1a5}.stage .dot.sun-dot{background:#ffc35a}.legend .dot.sun-dot{background:#e7a439}.globe-content{border-radius:15px;background:#132438;margin-top:12px;padding:0 12px;color:#c4d4e5}.globe-notes{color:#9daec2}.globe-notes strong{color:#e8f0f8}#chart{background:#132438;border-radius:12px;padding:0}.metrics small{color:#52647e}.eyebrow{color:#566880}.time-labels,.range-labels{color:#65748b}.stage-top{color:#b2c4d5}.stage-key{color:#b2c4d5}.stage-top .scene-badge{color:#ffe1a5}.brand small{font-size:11px}.field-label,.label-row,.toggle-row{font-size:14px}.observer-card p{font-size:14px}.header-end .tag{background:#e4ebf7;color:#365780;padding:6px 12px;border-radius:8px}.stage-key #compareKey[hidden]{display:none}
@media(max-width:760px){.play-button{padding:7px 13px}.controls{border-radius:20px}.globe-content{padding:0 8px;gap:12px}#globe{width:160px}.view-tabs{width:100%}.stage,#sky{min-height:370px}.brand{font-size:17px}.header-end .tag{display:none}}
.body-switch{display:flex;border:1px solid #8096b5;border-radius:24px;overflow:hidden;margin-bottom:22px}.body-switch button{flex:1;border:0;background:transparent;border-radius:0;padding:10px;font-size:15px}.body-switch .active{background:#c7daf7;color:#153e7a}.coordinate-editor{display:flex;align-items:center;gap:4px}.coordinate-editor input{width:71px;padding:3px 5px;font-size:14px;text-align:right}.coordinate-editor output{min-width:24px;font-size:12px}.coordinate-editor input::-webkit-inner-spin-button{appearance:none}.loop-control{display:flex;align-items:center;gap:4px;font-size:12px;color:#526681}.loop-control input{accent-color:#315da8}.settings-button{display:none}#restoreDate{color:#315da8;font-size:12px;padding-top:5px}#moonDateNote{padding:10px 0}.controls [hidden]{display:none!important}.time-shortcuts button{min-height:34px}.time-shortcuts #riseLabel,.time-shortcuts #setLabel,.time-shortcuts #peakLabel{margin:0;color:inherit}.body-switch button:focus-visible{outline-offset:-4px}#chart{touch-action:none}
@media(max-width:760px){.settings-button{display:block;align-self:flex-end;margin-bottom:12px;border:0;color:#315da8;background:#dae6fa;border-radius:24px;padding:9px 18px}.controls{display:none!important}.settings-open .controls{display:block!important;order:-1}.settings-open .workspace{gap:18px}.time-top{align-items:flex-start;gap:10px}.time-top>div:first-child{flex-direction:column;align-items:flex-start;gap:0}.play-controls{align-items:center;flex-wrap:wrap;justify-content:flex-end}.loop-control{font-size:11px}.time-shortcuts button{font-size:11px;padding:5px 7px}.stage-top{align-items:flex-start;gap:10px}.stage-top #viewHint{max-width:115px;text-align:right}#settingsBtn{position:relative}}

.experiment-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.experiment-toolbar .body-switch{margin:0;width:230px;flex-shrink:0;background:#edf1f9}.experiment-toolbar .body-switch button{padding:8px}.date-navigation{display:flex;gap:5px;align-items:center}.date-navigation input{min-width:0}.date-navigation button{padding:6px;min-width:25px;font-size:20px;background:transparent;border:0}.date-navigation button:hover{background:#dae6fa}body[data-body=moon] .stage .dot.sun-dot,body[data-body=moon] .chart-panel .dot.sun-dot{background:#b4cff5}body[data-body=moon] .stage-key{color:#afc6df}.body-switch{font-size:14px}@media(max-width:760px){.experiment-toolbar{margin-bottom:16px;gap:10px}.experiment-toolbar .body-switch{width:205px}.experiment-toolbar .settings-button{margin:0;align-self:center;padding:8px 14px;white-space:nowrap}.brand{font-size:16px}.brand small{font-size:9px;letter-spacing:1px}.brand-mark{font-size:26px}.header-end{gap:3px}.header-end button{padding:5px;font-size:11px}.scene-badge{font-size:11px;padding:3px 9px}}

.settings-actions{display:flex;align-items:center;gap:14px}#closeSettings{display:none}@media(max-width:760px){#closeSettings{display:inline;color:#315da8}}

.model-explanation{font-size:12px;color:#52657c;padding:9px 8px 0}.model-explanation p{margin:2px 0}.model-explanation p:empty{display:none}.model-switch{display:flex;border:1px solid #a7b8d1;border-radius:20px;overflow:hidden;margin-top:16px}.model-switch button{border:0;border-radius:0;background:transparent;flex:1;font-size:13px;padding:7px 4px}.model-switch .active{background:#cadcf8;color:#153e7a}.stage-key{max-width:75%}

.panel [hidden]{display:none!important}.phase-content{margin-top:12px;background:#132438;border-radius:15px;color:#e7effa;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(125px,1fr);align-items:center;padding:12px;gap:8px}#phaseOrbit{display:block;width:100%;height:235px;min-width:0}.phase-view{text-align:center;min-width:0;font-size:12px;color:#aebed2;padding:8px}#phaseDisk{display:block;width:95px;height:95px;margin:0 auto 12px}.phase-view strong{display:block;color:#e9f2ff;font-size:17px;margin:7px 0}.phase-view p{font-size:11px;line-height:1.7;margin:10px 0 0;color:#91a6bf}.phase-view span{display:block}#contextExplanation{line-height:1.8;margin-top:10px}@media(max-width:1100px){.phase-content{grid-template-columns:1fr}#phaseOrbit{height:205px}.phase-view{display:flex;align-items:center;gap:16px;text-align:left;justify-content:center}#phaseDisk{margin:0;width:85px;height:85px;flex-shrink:0}.phase-view strong{margin:4px 0}.phase-view p{max-width:190px;margin-top:6px}}

[hidden]{display:none!important}.lunar-timeline .time-top strong{font-size:24px}.month-navigation{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 3px}.month-navigation input{background:#edf1f9;border:1px solid #d1d9e8;border-radius:10px;padding:6px 12px;color:#273e61;font:inherit;font-size:14px}.month-navigation button{border:0;font-size:21px;background:transparent;padding:3px 11px}.lunar-day-buttons{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px}.lunar-day-buttons span{font-size:12px;color:#5b6e87}.lunar-day-buttons button{border-radius:20px;font-size:12px}.lunar-timeline details{margin-top:16px;border-top:1px solid #e0e6ef;padding-top:12px}.lunar-timeline summary{font-size:13px;color:#315da8;cursor:pointer}.lunar-timeline summary span{float:right;color:#405675}.lunar-timeline details>label{display:block;margin-top:10px}.lunar-timeline .time-top{gap:12px}.lunar-timeline .play-controls{align-items:center}body[data-body=moon] #sky{cursor:grab}@media(max-width:760px){.lunar-timeline .time-top{flex-direction:column;align-items:stretch}.lunar-timeline .time-top>div:first-child{flex-direction:row;align-items:center;justify-content:space-between}.lunar-timeline .time-top strong{font-size:22px}.lunar-timeline .play-controls{justify-content:space-between}.lunar-timeline .play-button{min-width:110px}.lunar-day-buttons{gap:5px}.lunar-day-buttons span{font-size:11px}.lunar-timeline summary{font-size:12px}}
.solar-year-strip{border-bottom:1px solid #e0e6ef;padding-bottom:14px;margin-bottom:16px}.year-strip-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#405675;font-size:14px}.year-strip-head>div{display:flex;align-items:center;gap:10px;white-space:nowrap}.year-strip-head input{width:78px;padding:4px 6px;font-size:14px}.month-ticks{position:relative;height:25px;margin:0 8px}.month-ticks button{position:absolute;transform:translateX(-50%);border:0;background:transparent;font-size:12px;padding:3px 2px;color:#526681}.month-ticks button.selected-month{color:#244f99;font-weight:700}.context-view-switch{display:flex;gap:4px;background:#e5ebf6;border-radius:24px;padding:4px;margin-top:12px;width:max-content}.context-view-switch button{border:0;border-radius:22px;background:transparent;color:#526681}.context-view-switch .active{background:#cadcf8;color:#153e7a}.map-key{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#526681;font-size:12px;margin-top:8px}#worldMap{display:block;width:100%;height:250px;background:#132438;border-radius:14px;margin-top:12px;cursor:crosshair;touch-action:manipulation}.rise-set-panel{margin:20px 0}.event-layout{display:flex;gap:24px;align-items:center}.event-values{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:16px}.event-values button{text-align:left;border:0;background:#e8effb;border-radius:20px;padding:18px;color:#315da8}.event-values button span,.event-values button small{display:block;font-size:14px;color:#526681}.event-values button strong{display:block;font-size:23px;font-weight:500;margin:3px 0}.event-values button:disabled{opacity:1;background:#eef1f5;color:#64738b}.event-values button:not(:disabled):hover{background:#d9e6fa}#eventCompass{width:160px;height:160px;flex-shrink:0;background:#132438;border-radius:18px}.geometry-panel{margin-top:22px}.geometry-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr);gap:24px;align-items:center;margin-top:16px}#earthGeometry{display:block;width:100%;height:340px;border-radius:18px;background:#132438}.geometry-notes{font-size:14px;color:#405675}.geometry-notes>span{display:block;margin:12px 0}.geometry-notes strong{display:block;font-weight:500;margin-top:18px}.geometry-key{display:inline-block;width:18px;height:3px;vertical-align:middle;margin-right:7px;background:#a3b6d2}.axis-key{background:#fa9c89}.equator-key{background:#a5a6f4}.horizon-key{background:#76d4bd}.zenith-key{background:#82c7ff}.sun-key{background:#ffc35a}@media(max-width:760px){.year-strip-head{flex-direction:column;align-items:stretch}.year-strip-head>div{justify-content:space-between}.month-ticks button:nth-child(even):not(:last-child){visibility:hidden}.event-layout{gap:12px;align-items:stretch}#eventCompass{width:115px;height:175px}.event-values{grid-template-columns:1fr;gap:8px}.event-values button{padding:10px 12px;border-radius:16px}.event-values button strong{font-size:18px}.event-values button span,.event-values button small{font-size:12px}.geometry-layout{grid-template-columns:1fr;gap:12px}#earthGeometry{height:310px}.geometry-notes>span{margin:8px 0}.geometry-notes strong{margin-top:12px}#worldMap{height:215px}.map-key{flex-wrap:wrap}}
/* Hierarchical menu: common conditions first, scientific controls on demand. */
.controls-dock{min-width:0}.controls{padding:18px;align-self:start}.controls .section-head{margin-bottom:14px;align-items:flex-start}.menu-intro{font-size:14px;color:#405675;margin:4px 0 0}.menu-section{border-top:1px solid #d2dcec;padding:2px 0}.menu-section>summary,.menu-subsection>summary{list-style:none;cursor:pointer;position:relative;padding:14px 25px 14px 0;color:#243e65;display:flex;flex-direction:column;gap:3px;font-size:14px}.menu-section>summary::-webkit-details-marker,.menu-subsection>summary::-webkit-details-marker{display:none}.menu-section>summary:after,.menu-subsection>summary:after{content:'';position:absolute;right:3px;top:20px;width:7px;height:7px;border-right:2px solid #607795;border-bottom:2px solid #607795;transform:rotate(45deg)}.menu-section[open]>summary:after,.menu-subsection[open]>summary:after{transform:rotate(225deg);top:24px}.menu-section-name{font-weight:600}.menu-summary{color:#65748b;font-size:12px;font-weight:400;line-height:1.5}.menu-content{padding-bottom:14px}.menu-content .field-label{margin-top:8px}.menu-subsection{border-left:2px solid #c9d6e9;padding-left:12px;margin-top:13px}.menu-subsection>summary{font-size:13px;padding-top:10px;padding-bottom:10px}.menu-subsection>summary:after{top:15px}.menu-subsection[open]>summary:after{top:18px}.menu-subsection .menu-content{padding-bottom:5px}.menu-content .label-row{margin-top:12px}.menu-divider{height:1px;background:#d2dcec;margin:14px 0}.menu-footer{border-top:1px solid #d2dcec;padding-top:18px;margin-top:3px}.menu-footer #reset{font-size:13px;color:#526681;padding:5px 0}.study-navigation{display:flex;flex-direction:column;padding:0 0 14px;gap:4px}.study-navigation button{text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:12px;color:#315da8;font-size:14px}.study-navigation button:hover{background:#dce6f7}.menu-section.ideal-active>summary .menu-summary{color:#244f99;font-weight:600}.controls .solar-year-strip{margin:0;border:0;padding:0}.controls .year-strip-head{align-items:stretch;flex-direction:column;font-size:13px}.controls .year-strip-head>div{justify-content:space-between;font-size:12px}.controls .month-ticks button{visibility:hidden;font-size:12px}.controls .month-ticks button:nth-child(1),.controls .month-ticks button:nth-child(4),.controls .month-ticks button:nth-child(7),.controls .month-ticks button:nth-child(10),.controls .month-ticks button:nth-child(12){visibility:visible}.controls .model-switch{margin-top:0}.controls .date-navigation{margin-bottom:10px}.settings-dialog{padding:0;max-height:min(88dvh,800px);overflow:auto;width:min(420px,100%);max-width:100%;margin:0 0 0 auto;top:auto;bottom:0;border-radius:28px 28px 0 0;background:#edf1f9;overscroll-behavior:contain}.settings-dialog .controls{display:block!important;background:transparent;border-radius:0;padding:20px 24px 24px}.settings-dialog .section-head{position:sticky;top:-20px;background:#edf1f9;margin:0 -4px;padding:12px 4px;z-index:2}.settings-dialog #closeSettings{display:block;border:0;background:#315da8;border-radius:22px;color:white;padding:8px 16px;font-size:14px}.menu-open{overflow:hidden}.settings-dialog .menu-content input[type=range]{margin-top:16px;margin-bottom:16px}.menu-section summary:focus-visible,.menu-subsection summary:focus-visible{outline:2px solid #315da8;outline-offset:3px;border-radius:6px}.controls .menu-content input:disabled{opacity:.65;cursor:default}@media(max-width:760px){.controls-dock{display:none}.workspace{display:block}.settings-dialog .menu-intro{font-size:14px}.settings-dialog .menu-section>summary{font-size:16px}.settings-dialog .menu-summary{font-size:13px}.settings-dialog .menu-subsection>summary{font-size:14px}.settings-dialog .season-buttons button{padding:9px 4px;font-size:14px}.experiment-toolbar .settings-button{font-size:14px}.settings-dialog .menu-section summary{min-height:48px}.settings-dialog .study-navigation button{min-height:44px}}
/* Keep the sky and playback together without intrinsic canvas height growth. */
.stage{flex:none;height:clamp(340px,calc(100dvh - 460px),520px);min-height:0}#sky{height:100%;min-height:0}@media(max-width:760px){.stage{height:370px;min-height:370px}#sky{height:370px;min-height:0}}#idealDateHint{background:#dfe9f9;padding:9px 10px;border-radius:10px;color:#365780;margin-bottom:10px}#dateObservationRestore{display:block;color:#244f99;font-size:13px;margin-top:4px}
.solar-overlay-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#e8eef8;border-radius:16px;padding:10px 16px;margin-bottom:12px}.overlay-toggle{display:flex;align-items:center;gap:12px;color:#315da8;font-size:14px;cursor:pointer;white-space:nowrap}.overlay-toggle input{appearance:none;width:39px;height:23px;border:1px solid #76879e;border-radius:20px;background:#b7c2d2;position:relative;cursor:pointer;margin:0}.overlay-toggle input:after{content:'';position:absolute;width:14px;height:14px;border-radius:50%;left:3px;top:3px;background:#65758a}.overlay-toggle input:checked{background:#315da8;border-color:#315da8}.overlay-toggle input:checked:after{left:20px;background:white}.overlay-toggle input:disabled{opacity:.45;cursor:default}#moonOverlayReadout{margin:0;text-align:right}.moon-dot{background:#b4cff5!important}.legend{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}#moonOverlayChartKey{white-space:nowrap}.lunar-sky-details{margin:22px 0 0}.lunar-sky-details>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:15px;color:#315da8;font-size:16px;font-weight:500}.lunar-sky-details>summary::-webkit-details-marker{display:none}.lunar-sky-details>summary:after{content:'＋';font-size:20px}.lunar-sky-details[open]>summary:after{content:'−'}.lunar-sky-details>summary:focus-visible{outline:2px solid #315da8;outline-offset:5px;border-radius:5px}.moon-sky-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:20px 0 14px}.moon-sky-head h2{font-size:16px}.moon-sky-head .view-tabs{width:auto}#moonSkyHost>.stage{height:400px}#moonSkyHost #sky{height:100%}#moonSkyHost>.metrics{margin-top:18px}#phasePrimaryHost .panel{padding:20px 24px}#phasePrimaryHost .phase-content{grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr);gap:18px;padding:20px;margin-top:14px}#phasePrimaryHost .phase-view{order:-1;display:block;text-align:center;padding:0}#phasePrimaryHost #phaseDisk{width:180px;height:180px;margin:0 auto 12px}#phasePrimaryHost .phase-view strong{font-size:26px;margin:8px 0}#phasePrimaryHost .phase-view p{max-width:none;font-size:12px}#phasePrimaryHost #phaseOrbit{height:280px}#phasePrimaryHost .phase-view span{font-size:14px}#phasePrimaryHost #contextExplanation{font-size:13px}body[data-body=moon] .detail-grid{grid-template-columns:1fr}body[data-body=moon] .view-head{margin-bottom:16px}body[data-body=moon] .experiment .timeline{margin-top:16px}body[data-body=moon] .chart-panel{margin-top:0}@media(max-width:1100px){#phasePrimaryHost .phase-content{grid-template-columns:1fr 1fr}#phasePrimaryHost #phaseDisk{width:140px;height:140px}#phasePrimaryHost #phaseOrbit{height:245px}.moon-sky-head{flex-direction:column;align-items:stretch}.moon-sky-head .view-tabs{width:100%}}@media(max-width:760px){.solar-overlay-bar{padding:10px 12px;flex-wrap:wrap;gap:5px}#moonOverlayReadout{font-size:12px;text-align:left}.overlay-toggle{font-size:14px}#phasePrimaryHost .panel{padding:17px}#phasePrimaryHost .panel-title{align-items:flex-start}#phasePrimaryHost .phase-content{grid-template-columns:1fr;padding:16px;gap:6px}#phasePrimaryHost .phase-view{display:grid;grid-template-columns:120px minmax(0,1fr);align-items:center;gap:14px;text-align:left}#phasePrimaryHost #phaseDisk{width:120px;height:120px;margin:0}#phasePrimaryHost .phase-view strong{font-size:23px;margin:5px 0}#phasePrimaryHost .phase-view span{font-size:13px}#phasePrimaryHost #phaseOrbit{height:205px}#phasePrimaryHost .phase-view p{font-size:12px;margin:7px 0 0}#phasePrimaryHost #contextExplanation{font-size:12px}.lunar-sky-details>summary{font-size:15px;gap:8px}.lunar-sky-details>summary>.micro{display:none}#moonSkyHost>.stage{height:350px;min-height:350px}#moonSkyHost #sky{height:350px}.moon-sky-head .view-tabs button{padding:7px 9px}.lunar-sky-details{padding:16px}}
.companion-module{margin-top:18px}.companion-module .panel-title{align-items:center}.companion-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;font-size:14px;color:#405675}.companion-toolbar select{padding:8px 12px;min-width:100px}.companion-toolbar button{margin-left:auto;color:#315da8;background:#e1eafb;border:0;padding:10px 15px;border-radius:22px}.companion-search-status{font-size:13px;color:#315da8;line-height:1.7;margin:8px 0}.companion-search-status:empty{display:none}.companion-measures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.companion-measures>div{padding:12px 16px;background:#eaf0fb;border-radius:16px;color:#315da8}.companion-measures span,.companion-measures small{display:block;font-size:12px;color:#526681}.companion-measures strong{display:block;font-size:25px;font-weight:500;margin:3px 0;font-variant-numeric:tabular-nums}#companionSky{display:block;width:100%;height:270px;background:#132438;border-radius:16px}.companion-visibility{font-size:14px;color:#405675;line-height:1.7;margin:12px 0}.companion-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.companion-actions button{color:#315da8;border:0;border-radius:22px;background:#e1eafb}.companion-actions .micro{margin:0}@media(max-width:760px){.companion-toolbar{gap:10px}.companion-toolbar button{width:100%;margin-left:0}.companion-measures{grid-template-columns:1fr 1fr;gap:8px}.companion-measures>div:first-child{grid-column:1/-1}.companion-measures>div{padding:12px 14px}.companion-measures strong{font-size:24px}.companion-actions{align-items:flex-start;flex-direction:column}#companionSky{height:255px}.companion-module{padding:17px}.companion-module .panel-title{gap:10px}}
/* Calm, coordinated motion; input and calculation remain immediate. */
:root{--motion-ease:cubic-bezier(.2,.8,.2,1);interpolate-size:allow-keywords}button{transition:background 160ms ease,color 160ms ease,box-shadow 160ms ease,transform 160ms var(--motion-ease)}button:not(:disabled):active{transform:scale(.97)}.play-button:hover{box-shadow:0 5px 15px #315da82a}.view-tabs button,.body-switch button,.context-view-switch button{transition:background 200ms var(--motion-ease),color 160ms ease}.overlay-toggle input,.toggle-row input{transition:background 180ms ease,border-color 180ms ease}.overlay-toggle input:after,.toggle-row input:after{transition:left 180ms var(--motion-ease),background 180ms ease}.menu-section>summary:after,.menu-subsection>summary:after{transition:transform 220ms var(--motion-ease),top 220ms var(--motion-ease)}details::details-content{block-size:0;overflow:clip;transition:block-size 240ms var(--motion-ease),content-visibility 240ms allow-discrete}details[open]::details-content{block-size:auto}.phase-content{background:radial-gradient(ellipse at 28% 30%,#1c354f,#132438 72%)}#phasePrimaryHost .phase-view strong{font-variant-numeric:tabular-nums}.metrics strong,.event-values strong,.companion-measures strong,.time-top strong{font-variant-numeric:tabular-nums}.motion-date-note{margin-top:6px;color:#60748f;font-size:12px}.stage{box-shadow:0 5px 20px #142b471a}dialog{opacity:0;transform:translateY(12px) scale(.99);transition:opacity 180ms var(--motion-ease),transform 220ms var(--motion-ease),display 220ms allow-discrete,overlay 220ms allow-discrete}dialog[open]{opacity:1;transform:translateY(0) scale(1)}.settings-dialog{transform:translateY(24px);transition:opacity 180ms var(--motion-ease),transform 260ms var(--motion-ease),display 260ms allow-discrete,overlay 260ms allow-discrete}.settings-dialog[open]{transform:translateY(0)}dialog::backdrop{opacity:0;transition:opacity 200ms ease,display 200ms allow-discrete,overlay 200ms allow-discrete}dialog[open]::backdrop{opacity:1}@starting-style{dialog[open]{opacity:0;transform:translateY(12px) scale(.99)}.settings-dialog[open]{transform:translateY(24px)}dialog[open]::backdrop{opacity:0}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}dialog[open]{transform:none!important}}

.analemma-panel{margin-top:22px}.analemma-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0}.analemma-controls label{display:flex;flex-direction:column;gap:8px;font-size:14px;color:#405675}.analemma-controls select,.analemma-controls input{width:100%;min-width:0;box-sizing:border-box;padding:10px;border:1px solid #bdcbe0;border-radius:10px;background:#fff;color:#304968}#analemmaCanvas{display:block;width:100%;height:400px;background:#132438;border-radius:16px;cursor:pointer}.analemma-date{margin-top:18px}.analemma-results{font-size:14px;line-height:1.8;background:#eaf0fb;padding:12px 16px;border-radius:14px;color:#315da8}#analemmaIdealNote{font-size:14px;line-height:1.8}#analemmaIdealNote button{display:block;background:#e1eafb;color:#315da8;border:0;margin-top:10px;border-radius:20px}@media(max-width:760px){.analemma-controls{grid-template-columns:1fr 1fr;gap:12px}#analemmaCanvas{height:340px}.analemma-panel{padding:17px}}

/* Menu disclosures move once; interaction highlights do not flash or scale. */
.menu-section>summary,.menu-subsection>summary{-webkit-tap-highlight-color:transparent}.menu-section>summary:active,.menu-subsection>summary:active{transform:none;background:transparent}.study-navigation button,.study-navigation button:active{transform:none;transition:background 140ms ease,color 140ms ease;-webkit-tap-highlight-color:transparent}.study-navigation button:focus:not(:focus-visible){outline:none}

#controls{-webkit-tap-highlight-color:transparent}

/* A quiet Material welcome surface with a playable sky. */
body.welcome-open{overflow:hidden}.welcome-screen{position:fixed;inset:0;z-index:40;overflow:auto;min-height:100dvh;background:radial-gradient(ellipse at 80% 10%,#243956 0%,#122137 40%,#0b1526 85%);color:#edf3ff;padding:32px clamp(20px,5vw,80px);display:flex;flex-direction:column;transition:opacity 280ms ease,transform 280ms var(--motion-ease)}.welcome-screen[hidden]{display:none}.welcome-screen.leaving{opacity:0;transform:translateY(-10px);pointer-events:none}.welcome-brand{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:600}.welcome-brand>span{color:#ffd080;font-size:34px;line-height:1}.welcome-brand small{display:block;color:#9eb3cf;font-size:10px;letter-spacing:2.4px;font-weight:400}.welcome-layout{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.3fr);gap:clamp(24px,5vw,80px);width:100%;max-width:1400px;margin:auto;align-items:center;padding:40px 0}.welcome-intro{animation:welcome-arrive 650ms var(--motion-ease) both}.welcome-kicker{font-size:14px;color:#a9bfdc;letter-spacing:2px}.welcome-intro h1{font-size:clamp(40px,4.5vw,66px);line-height:1.25;font-weight:500;letter-spacing:1px;margin:20px 0 24px;color:#f5f8ff}.welcome-intro p{font-size:16px;line-height:1.9;color:#bacbe3;margin:0 0 30px}.welcome-enter{display:flex;justify-content:space-between;align-items:center;gap:42px;border:0;border-radius:30px;background:#ffd384;color:#283549;padding:16px 26px;font-size:17px;font-weight:600;box-shadow:0 8px 28px #030c2444}.welcome-enter:hover{background:#ffe0a9;box-shadow:0 10px 32px #020a2355}.welcome-enter:active{transform:none}.welcome-enter span{font-size:22px}.welcome-entry-note{display:block;font-size:12px;color:#8fa5c3;margin:12px 0 0 8px}.welcome-toy{min-width:0;background:#10203988;border:1px solid #91b5e12e;border-radius:30px;padding:20px;box-shadow:0 16px 64px #030c2633;animation:welcome-arrive 750ms 90ms var(--motion-ease) both}.welcome-toy-head{display:flex;justify-content:space-between;gap:16px;font-size:13px;color:#a9c0dd;padding:2px 4px 14px}.welcome-toy-head>span:first-child{font-size:14px;color:#dfebff;display:flex;align-items:center;gap:8px}.welcome-toy-head i{width:5px;height:5px;background:#ffd384;border-radius:50%}#welcomeSky{display:block;width:100%;height:clamp(270px,45dvh,470px);border-radius:20px;touch-action:pan-y;cursor:crosshair;background:radial-gradient(ellipse at 70% 15%,#1b355a,#0c172b 80%)}#welcomeSky:focus-visible{outline:2px solid #ffd384;outline-offset:4px}.welcome-toy-tools{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:18px 4px 0}.welcome-toy-tools>span{font-size:13px;color:#c2d3eb}.welcome-toy-tools>div{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.welcome-toy-tools button{border:1px solid #89a8d044;background:#2b426355;color:#d7e6ff;border-radius:22px;padding:8px 13px;font-size:13px;white-space:nowrap}.welcome-toy-tools button:hover{background:#35537b}.welcome-toy-tools button:active{transform:none}.welcome-toy-note{font-size:12px;color:#8ea6c6;line-height:1.7;margin:14px 4px 0}.welcome-footer{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:#849abb;padding-top:16px;max-width:1400px;width:100%;margin:0 auto}.welcome-screen button:focus-visible{outline:2px solid #ffe0a9;outline-offset:4px}@keyframes welcome-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media(max-width:760px){.welcome-screen{padding:22px 20px}.welcome-brand{font-size:16px}.welcome-layout{grid-template-columns:1fr;gap:24px;padding:32px 0 24px}.welcome-intro h1{font-size:38px;margin:14px 0}.welcome-intro h1 br{display:block}.welcome-intro p{font-size:14px;margin-bottom:20px}.welcome-enter{width:100%;justify-content:center;gap:18px;padding:13px 24px;font-size:16px}.welcome-entry-note{text-align:center;margin-left:0}.welcome-toy{padding:15px;border-radius:24px}#welcomeSky{height:270px}.welcome-toy-head{font-size:12px;gap:10px}.welcome-toy-tools{align-items:flex-start;flex-direction:column;gap:10px}.welcome-toy-tools>div{justify-content:flex-start}.welcome-footer{font-size:12px;flex-wrap:wrap;padding-bottom:10px}}@media(prefers-reduced-motion:reduce){.welcome-screen,.welcome-enter{transition:none}.welcome-intro,.welcome-toy{animation:none}}

/* Suppress the browser's rectangular touch flash across all interactive surfaces.
   Selected backgrounds and keyboard focus-visible outlines remain unchanged. */
button,a,summary,input,select,canvas,[role="button"]{-webkit-tap-highlight-color:transparent}

.welcome-report{color:#a9bfdc;text-decoration:none;text-underline-offset:4px;min-height:44px;display:inline-flex;align-items:center;margin-top:-12px;margin-bottom:-12px;margin-left:auto;border-radius:4px}.welcome-report:hover{color:#edf3ff;text-decoration:underline}.welcome-report:focus-visible{outline:2px solid #ffe0a9;outline-offset:5px}
