.astro-page { width:min(100%,1160px); }
.astro-heading,.section-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.astro-heading { margin:28px 0; }
.astro-heading h1 { font-size:clamp(32px,4.5vw,48px); margin:0 0 10px; }
.astro-heading p { margin:0 0 8px; }
.muted,.meta { color:var(--muted); }
.meta { font-size:12px; line-height:1.7; }
.panel { background:var(--panel); border:1px solid var(--line); border-radius:18px; }
.location-section { margin-bottom:28px; }
.location-form { display:flex; gap:10px; flex-wrap:wrap; }
.location-form input { flex:1; min-width:180px; border:1px solid var(--line); border-radius:999px; padding:12px 20px; color:var(--text); background:var(--panel); }
.location-results { list-style:none; margin:10px 0; padding:8px; border:1px solid var(--line); border-radius:18px; background:var(--panel); }
.location-results button { display:block; width:100%; border:0; background:transparent; color:var(--text); text-align:left; padding:12px; border-radius:12px; }
.location-results button:hover,.location-results button:focus-visible { background:var(--soft); }
.shortcuts { display:flex; gap:8px; flex-wrap:wrap; }
.shortcuts .pill { font-size:12px; padding:6px 14px; min-height:38px; }
h2 { font-size:22px; font-weight:500; letter-spacing:-.5px; margin:0; }
.section-heading .eyebrow { margin:0 0 6px; }
.section-heading a { font-size:12px; flex-shrink:0; }
.section-heading p { margin:4px 0; }
.conditions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.condition { padding:20px; }
.condition span,.condition strong,.condition small { display:block; }
.condition span { color:var(--muted); font-size:12px; }
.condition strong { font-size:29px; font-weight:500; margin:8px 0 2px; letter-spacing:-1px; }
.condition small { color:var(--muted); font-size:11px; }
.night-strip { margin-top:12px; display:grid; grid-template-columns:1fr 1fr 1fr 2fr; gap:22px; padding:20px; }
.night-strip span,.night-strip strong { display:block; }
.night-strip strong { font-size:14px; font-weight:500; margin-top:4px; }
.rise-set-strip { grid-template-columns:repeat(4,minmax(0,1fr)); }
.rise-set-strip strong { font-size:20px; font-variant-numeric:tabular-nums; }
.astro-page section+section { margin-top:34px; }
.hourly-wrap { overflow:auto; max-height:480px; }
.hourly-wrap table { width:100%; border-collapse:separate; border-spacing:0; white-space:nowrap; font-size:12px; font-variant-numeric:tabular-nums; }
.hourly-wrap th,.hourly-wrap td { padding:13px 15px; border-bottom:1px solid var(--line); text-align:center; }
.hourly-wrap th:first-child { position:sticky; left:0; z-index:1; background:var(--panel); text-align:left; min-width:125px; }
.hourly-wrap thead th { position:sticky; top:0; z-index:2; background:var(--panel); font-weight:500; }
.hourly-wrap thead th:first-child { z-index:3; }
.hourly-wrap thead small { display:block; color:var(--muted); }
.hourly-wrap td[data-outlook="Promising"] { background:#d8eadf; color:#204e39; }
.hourly-wrap td[data-outlook="Mixed"] { background:#f2e6c7; color:#5f4b16; }
.hourly-wrap td[data-outlook="Poor"] { background:#eed5d5; color:#713e3e; }
.hourly-wrap td[data-outlook="Twilight"],.hourly-wrap td[data-outlook="Daylight"] { background:var(--soft); }
.check-label { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:12px; }
.check-label input { accent-color:#52796a; width:17px; height:17px; }
.chart-image { overflow:auto; text-align:center; }
.chart-image img { display:block; width:auto; min-width:100%; max-width:none; height:auto; image-rendering:auto; }
.chart-image { background:#000; border-radius:12px; }
.site-map-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; overflow:hidden; margin-top:16px; }
#sites-map { height:430px; width:100%; background:#d4dce1; color:#222; z-index:0; }
.map-actions { display:flex; gap:8px; padding:10px; }
.site-sidebar { padding:16px; border-left:1px solid var(--line); }
.site-sidebar label { font-size:13px; font-weight:500; }
.site-sidebar input { width:100%; border:1px solid var(--line); border-radius:10px; padding:10px; color:var(--text); background:var(--bg); margin-top:8px; }
.site-sidebar h3 { font-size:11px; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); }
#site-results { height:310px; overflow:auto; }
.site-result { width:100%; display:flex; gap:10px; align-items:center; padding:12px 8px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--text); text-align:left; }
.site-result:hover,.site-result[aria-pressed="true"] { background:var(--soft); }
.site-result strong,.site-result small { display:block; }
.site-result strong { font-weight:500; font-size:13px; }
.site-result small { color:var(--muted); font-size:11px; }
.site-swatch,.sky-legend i { display:inline-block; width:13px; height:13px; border:1px solid #888; border-radius:50%; flex-shrink:0; }
.chart-pin { display:block; width:20px; height:20px; border:2px solid #fff; border-radius:50%; box-shadow:0 1px 4px #0009; }
.sky-legend { display:flex; align-items:center; gap:15px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.sky-legend span { display:flex; align-items:center; gap:6px; }
.leaflet-control-layers { font-family:inherit; font-size:11px; }
.leaflet-control-attribution a { color:#23527c; }
.chart-image:empty { display:none; }
.astro-page details { margin-top:12px; }
.astro-page footer { margin-top:32px; }
.astro-page footer div { max-width:880px; }
.astro-page footer p+p { margin-top:8px; }
[hidden] { display:none !important; }
@media(max-width:700px) { .conditions { grid-template-columns:repeat(2,minmax(0,1fr)); } .night-strip { grid-template-columns:1fr 1fr; } .section-heading { flex-wrap:wrap; gap:10px; } .astro-heading { align-items:flex-start; } .astro-heading>.pill { padding:9px 12px; } }
@media(max-width:420px) { .astro-heading { flex-wrap:wrap; } .condition { padding:16px; } .condition strong { font-size:26px; } .location-form input { flex-basis:100%; } .night-strip { gap:16px; } }
@media(max-width:760px) { .site-map-layout { grid-template-columns:1fr; } #sites-map { height:340px; } .site-sidebar { border-left:0; border-top:1px solid var(--line); } #site-results { height:190px; } .chart-image img { min-width:0; } }

.weather-icon-link { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; padding:10px; }
.moon-layout { display:grid; grid-template-columns:1fr 2fr; margin-top:16px; padding:24px; gap:28px; }
.moon-current { display:flex; align-items:center; gap:18px; }
.moon-symbol { display:block; width:42px; height:42px; flex-shrink:0; }
.moon-disc { fill:#303030; stroke:#8b8b8b; stroke-width:1; }
.moon-lit { fill:#e6e6e6; }
.moon-current>.moon-symbol,.moon-current>.moon-symbol svg { width:80px; height:80px; }
.moon-current h3 { font-size:20px; font-weight:500; margin:6px 0; }
.moon-current p { margin:0; }
.moon-upcoming>h3 { color:var(--muted); font-size:12px; font-weight:500; margin:0 0 16px; }
.moon-phase-dates { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.moon-event { display:flex; flex-direction:column; gap:8px; }
.moon-event strong { font-size:12px; font-weight:500; }
.moon-event time { color:var(--muted); font-size:12px; }
@media(max-width:850px) { .moon-layout { grid-template-columns:1fr; } }
@media(max-width:420px) { .moon-phase-dates { grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; } }
