.forecast-section{--accent: var(--local-accent);--cyan: #7fd9d4;--muted: var(--local-ink-muted);--lane-label-width: 96px;border:1px solid var(--ui-hairline);border-radius:var(--radius-panel);background:var(--ui-surface);overflow:hidden}.forecast-section .section-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.25rem 1rem;align-items:center;padding:1.25rem 1.5rem 1rem}.forecast-section .run-note{margin:0;color:var(--local-ink-subtle);font-size:.75rem}.forecast-section .section-title-row{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:.25rem 1rem}.forecast-section .forecast-map-link{display:inline-flex;min-height:44px;align-items:center;color:var(--local-ink-muted);font-size:.8125rem;font-weight:600;text-decoration:none}.forecast-section .forecast-map-link:hover{color:var(--local-ink);text-decoration:underline;text-underline-offset:.15rem}.forecast-section .forecast-map-link:focus-visible{border-radius:4px;outline:2px solid var(--local-focus);outline-offset:2px}.forecast-section .run-note{grid-column:1}.forecast-section .range-control{grid-column:2;grid-row:1 / span 2;display:flex;gap:2px;padding:3px;border:1px solid var(--ui-hairline);border-radius:var(--radius-pill);background:#ffffff0a}.forecast-section .range-control button{min-width:3.25rem;min-height:2.5rem;border:0;border-radius:var(--radius-pill);background:transparent;padding:0 .75rem;color:var(--muted);font:inherit;font-size:.875rem;font-variant-numeric:tabular-nums;font-weight:650;cursor:pointer;transition:background-color var(--ui-duration-fast) var(--ui-ease),color var(--ui-duration-fast) var(--ui-ease)}.forecast-section .range-control button:hover:not(.active){color:var(--local-ink)}.forecast-section .range-control button.active{background:var(--ui-control-active);color:var(--ui-control-active-ink)}.forecast-section .range-control button:focus-visible{outline:2px solid var(--local-focus);outline-offset:1px}@media (pointer: coarse),(max-width: 620px){.forecast-section .range-control button{min-height:44px}}.forecast-section .instrument-shell{display:grid;grid-template-columns:minmax(0,1fr) 300px;border-top:1px solid var(--ui-hairline)}.forecast-section .instrument-main{--lane-label-width: 44px;min-width:0;display:grid;align-content:start;grid-template-columns:var(--lane-label-width) minmax(0,1fr);position:relative}.forecast-section .instrument-main.detailed{--lane-label-width: 96px}.forecast-section .instrument-main:not(.detailed) .row-labels>span{align-items:center;justify-content:center;padding:0;letter-spacing:0;font-weight:650}.forecast-section .row-labels{grid-row:1;position:relative;border-right:1px solid var(--ui-hairline);background:var(--local-plot-surface)}.forecast-section .row-labels>span{position:absolute;inset-inline:0;display:flex;align-items:flex-start;padding:.375rem .5rem .5rem 1rem;color:var(--local-ink-muted);font-size:.6875rem;font-weight:700;letter-spacing:.06em}.forecast-section .row-labels small{position:absolute;right:.5rem;color:var(--local-ink-subtle);font-size:.6875rem;font-weight:600;line-height:1;white-space:nowrap;transform:translateY(-50%)}.forecast-section .row-labels .scale-label{font-variant-numeric:tabular-nums;font-weight:550}.forecast-section .row-labels .zero-scale-label{color:var(--local-ink-muted);font-weight:700}.forecast-section .folded-lanes{grid-column:1 / -1;margin:0;padding:.5rem 1rem;border-top:1px solid var(--ui-hairline);color:var(--local-ink-muted);font-size:var(--font-caption-size);line-height:var(--font-caption-line-height)}.forecast-section .folded-lanes span{color:var(--local-ink);font-weight:650}.forecast-section .plot-viewport{grid-column:2;min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-color:var(--local-border) transparent}.forecast-section .plot-width{position:relative;min-width:100%}.forecast-section .plot-width>svg{display:block;width:100%;touch-action:pan-x;cursor:crosshair;background:var(--local-plot-surface)}.forecast-section .state-icon-layer{position:absolute;inset:6px 0 auto;height:28px;pointer-events:none}.forecast-section .state-icon-layer span{position:absolute;width:28px;height:28px}.forecast-section .state-icon-layer svg{width:28px;height:28px}.forecast-section .column-temp{fill:var(--local-ink);font-family:var(--font-display);font-size:.8125rem;font-variant-numeric:tabular-nums;font-weight:650;paint-order:stroke;stroke:var(--local-plot-surface);stroke-width:3px;stroke-linejoin:round}.forecast-section .column-temp.below-zero{fill:var(--ui-weather-snow)}.forecast-section .column-rain{fill:color-mix(in srgb,var(--ui-weather-rain) 70%,var(--local-ink));font-size:.6875rem;font-variant-numeric:tabular-nums;font-weight:700}.forecast-section .column-wind{fill:var(--local-ink);font-size:.75rem;font-variant-numeric:tabular-nums;font-weight:650}.forecast-section .column-gust{fill:var(--local-ink-subtle);font-weight:550}.forecast-section .wind-arrow{fill:var(--local-ink-muted)}.forecast-section .row-rule{stroke:var(--ui-hairline);stroke-width:1}.forecast-section .day-line{stroke:var(--ui-border-strong);stroke-dasharray:2 4}.forecast-section .axis-label,.forecast-section .scale-label{fill:var(--local-ink-subtle);font-size:.6875rem;font-variant-numeric:tabular-nums}.forecast-section .axis-label{fill:var(--local-ink-muted);font-size:.75rem;font-weight:600}.forecast-section .probability-line,.forecast-section .wind-line,.forecast-section .temperature-line,.forecast-section .feels-line,.forecast-section .wetbulb-line,.forecast-section .dew-line,.forecast-section .radar-line,.forecast-section .nowcast-line{fill:none;vector-effect:non-scaling-stroke}.forecast-section .probability-line{stroke:#b49cff;stroke-width:1.5}.forecast-section .probability-baseline{stroke:color-mix(in srgb,#b49cff 35%,transparent);stroke-width:1;stroke-dasharray:1 3}.forecast-section .row-labels .probability-scale-label{color:#c9b8ff}.forecast-section .lane-note,.forecast-section .surface-label{fill:var(--local-ink-muted);font-size:.75rem;font-weight:600}.forecast-section .surface-label{fill:var(--local-ink)}.forecast-section .thunder-bar{fill:color-mix(in srgb,var(--ui-weather-thunder) 24%,transparent)}.forecast-section .thunder-bar.possible{fill:color-mix(in srgb,var(--ui-weather-thunder) 72%,transparent)}.forecast-section .thunder-bar.selected{stroke:var(--ui-weather-thunder);stroke-width:2;vector-effect:non-scaling-stroke}.forecast-section .thunder-selection-label{fill:var(--ui-weather-thunder);font-size:var(--font-data-label-size);font-weight:700;paint-order:stroke;stroke:var(--local-plot-surface);stroke-width:3px;stroke-linejoin:round}.forecast-section .cloud-cell{fill:#b8c4ce;opacity:.78}.forecast-section .cloud-baseline{stroke:var(--local-border-strong);stroke-width:1;opacity:.7;vector-effect:non-scaling-stroke}.forecast-section .cloud-total-cell{fill:url(#total-cloud-hatch);opacity:1}.forecast-section .cloud-total-base{fill:#9baab7;opacity:.55}.forecast-section .cloud-total-hatch{fill:none;stroke:#d5dde3;stroke-width:1}.forecast-section .cloud-source-seam{stroke:var(--local-ink-muted);stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.forecast-section .cloud-source-label{fill:var(--muted);font-size:.75rem}.forecast-section .wind-line{stroke:var(--cyan);stroke-width:2}.forecast-section .gust-stem{stroke:color-mix(in srgb,var(--cyan) 60%,transparent);stroke-width:1}.forecast-section .gust-line{fill:none;stroke:color-mix(in srgb,var(--cyan) 60%,transparent);stroke-width:1;vector-effect:non-scaling-stroke}.forecast-section .wind-vane{stroke:#c7f3ef;stroke-width:1.4}.forecast-section .rain-bar{stroke:var(--ui-weather-rain)}.forecast-section .precipitation-bar[data-phase=snow] .rain-bar{stroke:var(--ui-weather-snow)}.forecast-section .precipitation-bar[data-phase=mixed] .rain-bar{stroke:var(--ui-weather-sleet)}.forecast-section .precipitation-bar[data-phase=explicit-freezing] .rain-bar{stroke:var(--ui-weather-freezing)}.forecast-section .precipitation-bar[data-phase=unknown] .rain-bar{stroke:var(--local-ink-muted)}.forecast-section .rain-pattern-base{fill:color-mix(in srgb,var(--ui-weather-rain) 58%,transparent)}.forecast-section .rain-pattern-mark{stroke:var(--ui-weather-rain);stroke-width:1.5}.forecast-section .snow-pattern-base{fill:color-mix(in srgb,var(--ui-weather-snow) 42%,transparent)}.forecast-section .snow-pattern-mark{fill:var(--ui-weather-snow)}.forecast-section .mixed-pattern-base{fill:color-mix(in srgb,var(--ui-weather-sleet) 42%,transparent)}.forecast-section .mixed-pattern-mark{fill:var(--ui-weather-sleet);stroke:var(--ui-weather-sleet);stroke-width:1}.forecast-section .freezing-pattern-base{fill:color-mix(in srgb,var(--ui-weather-freezing) 42%,transparent)}.forecast-section .freezing-pattern-mark{fill:none;stroke:var(--ui-weather-freezing);stroke-width:1.25}.forecast-section .unknown-pattern-base{fill:color-mix(in srgb,var(--local-ink-muted) 28%,transparent)}.forecast-section .unknown-pattern-mark{fill:none;stroke:var(--local-ink-muted);stroke-width:1}.forecast-section .rain-bar.overflow{stroke:#fff}.forecast-section .radar-line{stroke:#38c98d;stroke-width:2.2}.forecast-section .nowcast-line{stroke:#38c98d;stroke-width:1.8;stroke-dasharray:5 4}.forecast-section .temperature-line{stroke:#ffb36b;stroke-width:2.4}.forecast-section .feels-line{stroke:#ffd6ad;stroke-width:1.6;stroke-dasharray:6 4}.forecast-section .wetbulb-line{stroke:#72d4dd;stroke-width:1.4;stroke-dasharray:7 3 1 3}.forecast-section .dew-line{stroke:#8fa6ff;stroke-width:1.4;stroke-dasharray:2 4}.forecast-section .zero-line{stroke:#8eb4d5;stroke-dasharray:3 4;opacity:.6}.forecast-section .surface-interval{fill:#8fa6ff;opacity:.34}.forecast-section .probe{stroke:#fff;stroke-width:1.5;filter:drop-shadow(0 0 3px #000)}.forecast-section .probe-cap{fill:#fff}.forecast-section .interval-selection{fill:var(--accent);opacity:.08;stroke:var(--accent);stroke-dasharray:3 2}.forecast-section .axis-label{font-variant-numeric:tabular-nums}.forecast-section .inspector{padding:1rem 1.25rem;border-left:1px solid var(--ui-hairline);background:var(--ui-surface-strong)}.forecast-section .state-readout{display:flex;align-items:center;gap:.65rem;margin:.9rem 0 1rem}.forecast-section .state-readout svg{width:38px;height:38px}.forecast-section .state-readout strong{font-size:1.05rem}.forecast-section .inspector section{padding:.8rem 0;border-top:1px solid var(--local-border)}.forecast-section .inspector h3{margin:0 0 .5rem;color:var(--muted);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.forecast-section .inspector dl{display:grid;gap:.35rem;margin:0;font-size:.875rem}.forecast-section .inspector dl div{display:flex;justify-content:space-between;gap:1rem}.forecast-section .inspector dt{color:var(--muted)}.forecast-section .inspector dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}.forecast-section .inspector .metric-qualification{display:block;max-width:18rem;color:var(--muted);font-size:var(--font-caption-size);line-height:var(--font-caption-line-height)}.forecast-section .inspector p,.forecast-section .inspector footer{color:var(--muted);font-size:.82rem;line-height:1.45}.forecast-section .inspector a{color:var(--local-link);font-size:.875rem;font-weight:650;text-decoration:none}.forecast-section .inspector a:hover{text-decoration:underline;text-underline-offset:.15rem}.forecast-section .inspector footer{padding-top:.7rem;border-top:1px solid var(--local-border)}.forecast-section .step-controls{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;border-top:1px solid var(--ui-hairline)}.forecast-section .step-buttons{display:flex;gap:.375rem}.forecast-section .step-buttons button{display:inline-grid;width:44px;place-items:center;padding:0}.forecast-section .detail-toggle{display:inline-flex;align-items:center;gap:.5rem}.forecast-section .detail-toggle[aria-pressed=true]{border-color:color-mix(in srgb,var(--ui-control-active) 60%,transparent);background:color-mix(in srgb,var(--ui-control-active) 18%,transparent)}.forecast-section .step-controls button,.forecast-section th button{min-height:44px;padding:0 1rem;border:1px solid var(--ui-hairline);border-radius:var(--radius-pill);background:#ffffff0a;color:var(--local-ink);font:inherit;font-size:.875rem;font-weight:600;cursor:pointer}.forecast-section .step-controls button:hover,.forecast-section th button:hover{background:#ffffff14}.forecast-section th button{min-height:36px;padding:0 .75rem;font-size:.8125rem;font-variant-numeric:tabular-nums;white-space:nowrap}.forecast-section th button[aria-pressed=true]{background:var(--ui-control-active);color:var(--ui-control-active-ink)}.forecast-section button:focus-visible,.forecast-section summary:focus-visible,.forecast-section input:focus-visible{outline:2px solid var(--local-focus);outline-offset:2px}.forecast-section .selected-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.75rem;min-height:44px;cursor:pointer;color:var(--local-ink);list-style:none}.forecast-section .selected-summary::-webkit-details-marker{display:none}.forecast-section .selected-summary:after{grid-column:2;grid-row:1 / span 3;width:.45rem;height:.45rem;margin-top:-.2rem;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(45deg);content:""}.forecast-section .inspector[open]>.selected-summary:after{margin-top:.2rem;transform:rotate(-135deg)}.forecast-section .selected-summary span,.forecast-section .selected-summary strong{display:block;grid-column:1}.forecast-section .selected-summary span{color:var(--muted);font-size:.8125rem}.forecast-section .selected-summary strong{font-family:var(--font-display);font-size:1.25rem;font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:-.015em}.forecast-section .inspector section>a{display:inline-flex;align-items:center;min-height:var(--target-touch-min)}.forecast-section .advanced-curves{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;font-size:.875rem}.forecast-section .advanced-curves input{width:1rem;height:1rem}.forecast-section .legend{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.125rem;padding:.5rem 1.5rem;border-top:1px solid var(--ui-hairline);color:var(--muted);font-size:.75rem;font-weight:550}.forecast-section .legend>span{display:inline-flex;align-items:center;min-height:1.75rem}.forecast-section .legend .key-line{flex:none;width:22px;height:8px;margin-right:.35rem;overflow:visible}.forecast-section .precipitation-unit{color:var(--local-ink);font-weight:650}.forecast-section .legend .precipitation-key:before{content:"";display:inline-block;flex:none;margin-right:.35rem;width:.9rem;height:.75rem;border:1px solid var(--phase-color, var(--local-border-strong));border-top:0;background:var(--phase-fill, transparent);vertical-align:-.12rem}.forecast-section .legend .precipitation-key-rain{--phase-color: var(--ui-weather-rain);--phase-fill: repeating-linear-gradient( -45deg, color-mix(in srgb, var(--ui-weather-rain) 62%, transparent) 0 2px, transparent 2px 5px )}.forecast-section .legend .precipitation-key-mixed{--phase-color: var(--ui-weather-sleet);--phase-fill: linear-gradient(135deg, transparent 0 35%, var(--ui-weather-sleet) 36% 48%, transparent 49%), color-mix(in srgb, var(--ui-weather-sleet) 42%, transparent)}.forecast-section .legend .precipitation-key-snow{--phase-color: var(--ui-weather-snow);--phase-fill: radial-gradient(circle at 30% 35%, var(--ui-weather-snow) 0 1px, transparent 1.5px), color-mix(in srgb, var(--ui-weather-snow) 42%, transparent)}.forecast-section .legend .precipitation-key-explicit-freezing{--phase-color: var(--ui-weather-freezing);--phase-fill: linear-gradient(45deg, transparent 43%, var(--ui-weather-freezing) 44% 56%, transparent 57%), linear-gradient(-45deg, transparent 43%, var(--ui-weather-freezing) 44% 56%, transparent 57%), color-mix(in srgb, var(--ui-weather-freezing) 42%, transparent)}.forecast-section .legend .precipitation-key-unknown{--phase-color: var(--local-ink-muted);--phase-fill: repeating-linear-gradient( 45deg, color-mix(in srgb, var(--local-ink-muted) 38%, transparent) 0 1px, transparent 1px 4px )}.forecast-section .accessible-table{border-top:1px solid var(--ui-hairline);padding:.25rem 1.5rem}.forecast-section .accessible-table[open]{padding-bottom:1rem}.forecast-section .accessible-table summary{display:inline-flex;min-height:44px;align-items:center;gap:.4rem;cursor:pointer;color:var(--muted);font-size:.8125rem;font-weight:600;list-style:none}.forecast-section .accessible-table summary::-webkit-details-marker{display:none}.forecast-section .accessible-table summary:after{width:.4rem;height:.4rem;margin-top:-.2rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);content:""}.forecast-section .accessible-table[open] summary:after{margin-top:.2rem;transform:rotate(-135deg)}.forecast-section .accessible-table summary:hover{color:var(--local-ink)}.forecast-section .table-scroll{overflow:auto;margin-top:.7rem}.forecast-section table{width:100%;border-collapse:collapse;font-size:.8rem}.forecast-section th,.forecast-section td{padding:.45rem;text-align:left;border-bottom:1px solid var(--ui-hairline);font-variant-numeric:tabular-nums;white-space:nowrap}.forecast-section thead th{color:var(--muted);font-size:.75rem;font-weight:650}@media (max-width: 999px){.forecast-section .instrument-shell{grid-template-columns:1fr}.forecast-section .inspector{border-left:0;border-top:1px solid var(--ui-hairline)}}.forecast-section .selected-summary .selected-thunder{color:var(--ui-weather-thunder);font-size:var(--font-caption-size);font-weight:700}@media (max-width: 620px){.forecast-section .instrument-main.detailed{--lane-label-width: 76px}.forecast-section .section-header{grid-template-columns:minmax(0,1fr);padding:1rem 1rem .75rem}.forecast-section .range-control{grid-column:1;grid-row:auto;justify-self:stretch;margin-top:.25rem}.forecast-section .range-control button{flex:1 1 0}.forecast-section .run-note{grid-column:1}.forecast-section .row-labels>span{padding-inline:.625rem .25rem;font-size:.75rem;letter-spacing:.02em}.forecast-section .row-labels small{right:.375rem;font-size:.75rem}.forecast-section .inspector{padding-inline:1rem}.forecast-section .legend{gap:.125rem .875rem;padding-inline:1rem}.forecast-section .accessible-table{padding-inline:1rem}}@media (prefers-reduced-motion: reduce){.forecast-section *{scroll-behavior:auto!important}}
