:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface-1:#fcfcfb;--surface-2:#f2f1ee;--text-primary:#0b0b0b;--text-secondary:#52514e;--grid:#e3e2de;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#8a5cd1;--terrain:#8a7f6d;--accent:#2a78d6;--sun:#e8a100;--shadow-terrain:#2a5fa8;--shadow-self:#8f8aa8;--sky-zenith:#dcebfb;--sky-horizon:#f4f8fd;--band-terrain:#2a5fa821;--band-self:#8f8aa82e}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-1:#1a1a19;--surface-2:#232321;--text-primary:#f0efec;--text-secondary:#c3c2b7;--grid:#3a3a37;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#9b70e0;--terrain:#7a705f;--accent:#3987e5;--sun:#f2b63c;--shadow-terrain:#5d8fd6;--shadow-self:#a9a4c4;--sky-zenith:#1f3550;--sky-horizon:#2a3340;--band-terrain:#5d8fd62e;--band-self:#a9a4c429}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-1:#1a1a19;--surface-2:#232321;--text-primary:#f0efec;--text-secondary:#c3c2b7;--grid:#3a3a37;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#9b70e0;--terrain:#7a705f;--accent:#3987e5;--sun:#f2b63c;--shadow-terrain:#5d8fd6;--shadow-self:#a9a4c4;--sky-zenith:#1f3550;--sky-horizon:#2a3340;--band-terrain:#5d8fd62e;--band-self:#a9a4c429}*{box-sizing:border-box}html,body{height:100%;color:var(--text-primary);background:#0b0b0b;margin:0;font:14px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}#map{position:absolute;inset:0}#controls,#panel{z-index:2;background:var(--surface-1);border-radius:10px;position:absolute;overflow-y:auto;box-shadow:0 4px 18px #00000059}#controls{width:300px;max-height:calc(100% - 24px);padding:12px 14px;top:12px;left:12px}#panel{width:380px;max-height:calc(100% - 24px);padding:10px 14px;top:12px;right:56px}#panel[hidden],#busy[hidden]{display:none}h1{margin:0 0 4px;font-size:16px}h4{margin:8px 0 2px;font-size:13px}label{margin-top:10px;font-weight:600;display:block}label.check{align-items:center;gap:6px;font-weight:400;display:flex}select,input[type=range]{width:100%}#wy{width:auto;margin-left:6px;font-weight:400}.row{align-items:center;gap:6px;display:flex}button{background:var(--surface-2);color:var(--text-primary);border:1px solid var(--grid);cursor:pointer;font:inherit;border-radius:6px;padding:3px 8px}.muted{color:var(--text-secondary)}.small{margin:4px 0;font-size:12px}.tier{color:var(--text-secondary);margin:0 0 6px;font-size:12px}.dim{opacity:.45}.legend-wrap{margin-top:6px}#legend-bar{border-radius:3px;height:10px}.legend-ends{color:var(--text-secondary);justify-content:space-between;font-size:12px;display:flex}#busy{color:var(--accent);margin-top:6px;font-size:12px}.error{color:#e34948}#panel header{padding-right:28px;position:relative}#panel-close{position:absolute;top:0;right:0}#panel section{position:relative}.chart{width:100%;height:auto;display:block}.chart.polar{max-width:260px;margin:0 auto}.chart .tick{fill:var(--text-secondary);font-size:10px}.chart .now{stroke:var(--text-secondary);stroke-dasharray:2 2}.chart .cross{stroke:var(--text-secondary)}.chart .skyline{fill:var(--terrain);opacity:.55}.chart .highlight{fill:none;stroke:var(--accent);stroke-width:2px}.legend{color:var(--text-secondary);flex-wrap:wrap;gap:4px 10px;font-size:11px;display:flex}.legend i,.tip i{vertical-align:middle;border-radius:2px;width:10px;height:3px;margin-right:4px;display:inline-block}.tip{z-index:3;background:var(--surface-2);border:1px solid var(--grid);pointer-events:none;white-space:nowrap;border-radius:6px;padding:4px 6px;font-size:11px;display:none;position:absolute;top:28px}table.values{border-collapse:collapse;width:100%;font-size:12px}table.values th{text-align:left;color:var(--text-secondary);font-weight:400}table.values td{text-align:right;font-variant-numeric:tabular-nums;padding-left:6px}table.values tr{border-bottom:1px solid var(--grid)}@media (max-width:700px){#controls{width:calc(100% - 32px);max-height:45%;left:16px}#panel{width:auto;max-height:50%;inset:auto 16px 12px}}.legend-ends input{width:64px;font:inherit;background:var(--surface-2);color:var(--text-primary);border:1px solid var(--grid);border-radius:4px;padding:1px 4px;font-size:12px}.legend-ends input:last-child{text-align:right}.legend-ends{align-items:center;margin-top:3px}button.link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.legend-cat{color:var(--text-secondary);flex-direction:column;gap:2px;font-size:12px;display:flex}.legend-cat i{vertical-align:-2px;border:1px solid var(--grid);border-radius:2px;width:12px;height:12px;margin-right:6px;display:inline-block}fieldset.radio{border:none;margin:10px 0 0;padding:0}fieldset.radio legend{padding:0;font-weight:600}fieldset.radio label{align-items:center;gap:6px;margin-top:2px;font-weight:400;display:flex}#area-row[hidden],#legend[hidden],#legend-continuous[hidden],#legend-categorical[hidden]{display:none}.chart.sky{touch-action:none;max-width:340px;margin:0 auto}.sky-head{justify-content:space-between;align-items:center;display:flex}.chart .year-band{fill:var(--sun);opacity:.12}.chart .self-region{fill:url(#selfhatch)}.chart .self-bg{fill:var(--shadow-self);opacity:.12}.chart .self-hatch{stroke:var(--shadow-self);stroke-width:1.4px;opacity:.55}.chart .self-horizon{stroke:var(--shadow-self);stroke-width:1.4px;stroke-dasharray:1 3;stroke-linecap:round}.chart .skyline-fill{fill:var(--terrain);opacity:.85}.chart .skyline-edge{stroke:var(--text-primary);stroke-width:1.2px;opacity:.55}.chart .horizontal{stroke:var(--text-secondary);stroke-width:1px;opacity:.8}.chart .grid{stroke:var(--grid);stroke-width:1px}.chart .path{stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.chart .path-lit{stroke-width:4.5px}.chart .hour{fill:var(--surface-1);stroke:var(--text-primary);stroke-width:1px}.chart .tick.hourlab{fill:var(--text-primary);paint-order:stroke;stroke:var(--surface-1);stroke-width:3px;font-size:9px}.chart .tick.strong{fill:var(--text-primary);font-size:11px;font-weight:600}.chart .tick.faint{opacity:.75;font-size:9px}.chart .sun-glow{fill:var(--sun);opacity:.25}.chart .sun{fill:#ffd23f;stroke:#000;stroke-width:1.5px}.chart .sun.hidden{fill:var(--surface-1);stroke:var(--sun);stroke-width:2px}.sky-legend i.thick{height:4px}.sky-legend i.swatch{vertical-align:-1px;border-radius:2px;width:12px;height:10px}.sky-legend i.swatch.terrain{background:var(--terrain)}.sky-legend i.swatch.self{background:repeating-linear-gradient(45deg, var(--shadow-self) 0 1.5px, transparent 1.5px 4px)}.sky-legend i.swatch.year{background:var(--sun);opacity:.35}.sky-readout{text-align:center;min-height:1.4em}.chart .ground3d{fill:var(--terrain);opacity:.18;stroke:var(--text-secondary);stroke-width:1px}.chart .wall3d{fill:var(--terrain);opacity:.6;stroke:var(--terrain);stroke-width:.6px}.chart .wall3d.near{opacity:.28}.chart .wall3d.below{opacity:.2}.chart .grid3d{stroke:var(--text-secondary);stroke-width:.6px;opacity:.35}.chart .solstice3d{stroke:var(--sun);stroke-width:1px;opacity:.45}.chart .path3d{stroke-width:3px;stroke-linecap:round}.chart .path3d.path-lit{stroke-width:4.5px}.chart .plane3d{fill:var(--shadow-self);opacity:.22;stroke:var(--shadow-self);stroke-width:1px}.chart .ray3d{stroke-width:2px;stroke-dasharray:5 3}.sky3d{cursor:grab}.sky3d:active{cursor:grabbing}.legend i.dash{border-top:2px dashed;height:0;background:0 0!important}.tiles{grid-template-columns:repeat(2,1fr);gap:6px;margin:8px 0;display:grid}.tile{background:var(--surface-2);border-radius:8px;padding:6px 8px}.tile .l{color:var(--text-secondary);font-size:11px}.tile .v{font-variant-numeric:tabular-nums;font-size:17px;font-weight:500}#bench{z-index:5;background:var(--surface-1);max-width:min(760px,100vw - 32px);max-height:60vh;color:var(--text-primary);border-radius:8px;padding:10px 12px;font-size:12px;position:absolute;bottom:36px;right:12px;overflow:auto;box-shadow:0 2px 12px #0006}#bench pre{white-space:pre-wrap;margin:6px 0 0;font-size:11px}.albedo-scale{height:1.3em;margin:-2px 8px 4px;font-size:10px;position:relative}.albedo-scale span{border-top:3px solid var(--series-1);white-space:nowrap;color:var(--text-secondary);padding-top:1px;position:absolute;top:0;overflow:visible}.albedo-scale span.mid{border-top-color:var(--series-4)}.equations summary{cursor:pointer;font-size:.9em}.eq-block{margin:6px 0}.eq-title{font-size:.85em;font-weight:600}.eq{padding-left:.6em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78em;line-height:1.5}.eq-note{opacity:.75;padding-left:.6em;font-size:.78em}.eq-where{color:var(--text-secondary);padding-left:1em;font-family:inherit;font-size:.95em;display:block}fieldset.when{border:none;margin:12px 0 0;padding:0}fieldset.when legend{padding:0;font-weight:600}fieldset.when .row{margin-top:4px}#date{min-width:0;font:inherit;background:var(--surface-2);color:var(--text-primary);border:1px solid var(--grid);border-radius:6px;flex:1;padding:2px 4px}label.sub{margin-top:8px;font-size:12px;font-weight:500}.sub-row{justify-content:space-between;align-items:flex-end;gap:6px;display:flex}.seg{border:1px solid var(--grid);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{background:var(--surface-1);color:var(--text-secondary);border:none;border-radius:0;padding:2px 7px;font-size:11px}.seg button.on{background:var(--accent);color:#fff}.ticks{height:1.2em;color:var(--text-secondary);margin:-2px 8px 0;font-size:10px;position:relative}#month-ticks span{position:absolute;transform:translate(-50%)}#hour-ticks{justify-content:space-between;margin:-2px 52px 0 34px;display:flex}input[type=range]{cursor:pointer;height:22px}#time{flex:1}#speed{width:auto;font-size:12px}.hint{opacity:.85}.chart .probe{stroke:#2fb8c4;stroke-width:1.6px;stroke-dasharray:4 3}.chart .probe.terrain{stroke:var(--terrain)}.chart .probe.self{stroke:var(--shadow-self)}.chart .probe-dot{fill:none;stroke:var(--text-primary);stroke-width:1.2px}.sky-section .map-note{margin-top:2px}.chart .probe.pinned{stroke-dasharray:none;stroke-width:2px}.chart .probe-dot.pinned{fill:var(--text-primary)}.proto-badge{letter-spacing:.04em;text-transform:uppercase;color:var(--sun);border:1px solid var(--sun);vertical-align:2px;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:600}.app-tabs{gap:4px;margin:4px 0 6px;font-size:12px;display:flex}.app-tabs a{color:var(--text-secondary);border:1px solid var(--grid);border-radius:6px;padding:2px 8px;text-decoration:none}.app-tabs a[aria-current=page]{background:var(--accent);color:#fff;border-color:var(--accent)}
