/* v1.21.30 real-data wrapping and degraded-state geometry. */
/* v1.21.22 shared weather components — final responsive/visual consistency closure. OWNERSHIP: forecast data, search, shared intent cards, shared weather nav. */
.location-search-block{position:relative;min-width:0}.search-clear{position:absolute;right:1px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);font-size:20px}.search-results{position:absolute;z-index:40;top:calc(100% + 8px);left:0;right:0;max-height:var(--dbtt-search-results-max-height,360px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.search-group-label{padding:8px 12px;border-bottom:1px solid var(--line);background:var(--surface-soft);color:var(--muted);font-size:var(--font-xs);font-weight:var(--weight-bold);line-height:1.35}.search-option{grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.search-result-main{display:grid;min-width:0;gap:2px}.search-result-main strong{display:block;color:var(--heading);font-size:var(--font-sm)}.search-result-main small,.search-result-context,.search-result-note{display:block;min-width:0;color:var(--muted);font-size:var(--font-xs);line-height:1.4;overflow-wrap:anywhere}.search-result-note--fuzzy{color:var(--primary-dark);font-weight:var(--weight-medium)}.search-option-arrow{color:var(--link);font-size:16px}.location-search-block--toolbar{padding:14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.location-search-block--toolbar .ui-search-form{grid-template-columns:minmax(0,1fr) auto auto;align-items:center}.location-memory-actions:not([hidden]),.compact-location-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;color:var(--muted);font-size:var(--font-xs)}.geo-button,.location-near-button{font-size:var(--font-xs)}.geo-result{margin-top:8px;color:var(--text-2);font-size:var(--font-xs)}.ui-search-form [data-search-button]{min-inline-size:104px}.search-results[aria-busy="true"]{min-block-size:54px}.search-results .ui-state--inline{min-block-size:54px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}.search-results .ui-state--inline:last-child{border-bottom:0}.geo-result:not([hidden]){display:grid;min-block-size:64px;align-content:center;gap:10px}.geo-result[aria-busy="true"]{cursor:progress}.geo-result .geo-match{display:grid;gap:2px}.geo-result .geo-match+ .geo-match-action{margin-top:2px;justify-self:start}

.current-weather{position:relative;overflow:hidden;padding:26px;border:1px solid var(--hero-deep);border-radius:var(--radius-xl);background:var(--hero);color:var(--hero-text);box-shadow:var(--shadow-sm)}.current-weather :where(h1,h2,h3,strong){color:var(--hero-text)}.current-main{display:grid;gap:18px}.current-context-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--hero-muted);font-size:13px}.current-weather .eyebrow{margin:0;color:var(--hero-muted)}.current-context-separator{width:3px;height:3px;border-radius:50%;background:var(--hero-line)}.current-favorite-button{border-color:var(--hero-line);background:rgba(255,255,255,.08);color:var(--hero-text);font-size:12px}.current-favorite-button:hover{border-color:rgba(255,255,255,.38);background:rgba(255,255,255,.14);color:#fff}.current-favorite-button[aria-pressed="true"]{border-color:rgba(255,255,255,.52);background:rgba(255,255,255,.2);color:#fff}.current-title{font-size:clamp(34px,4vw,48px)}.current-condition{display:flex;min-width:0;align-items:center;gap:14px}.current-icon-wrap{width:56px;flex:0 0 56px}.current-temp{max-width:100%;font-size:clamp(52px,6vw,78px);font-weight:700;line-height:.95;letter-spacing:-.045em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.current-condition-copy{display:grid;min-width:0;gap:3px}.condition-text{font-size:20px;font-weight:700}.feels-like{color:var(--hero-muted);font-size:14px}.current-range{--signal-divider:var(--hero-line);--signal-label:var(--hero-muted);--signal-value:var(--hero-text);--signal-note:var(--hero-muted);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}.current-range small{font-size:12px}.current-data-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;color:var(--hero-muted);font-size:12px}.current-data-meta a{color:var(--hero-text);text-decoration:underline;text-underline-offset:2px}.weather-data-state{display:inline-flex;max-width:100%;align-items:center;min-height:24px;padding:0 8px;border:1px solid var(--hero-line);border-radius:var(--radius-round);background:rgba(255,255,255,.08);white-space:normal;overflow-wrap:anywhere}

.weather-quick-nav,.weather-local-nav,.weather-topic-nav,.forecast-intent-nav,.region-macro-nav{display:flex;gap:4px 16px;align-items:center;overflow:auto;margin:18px 0 0;padding:0 0 7px;border-bottom:1px solid var(--border);scrollbar-width:none}.weather-quick-nav::-webkit-scrollbar,.weather-local-nav::-webkit-scrollbar,.weather-topic-nav::-webkit-scrollbar,.forecast-intent-nav::-webkit-scrollbar,.region-macro-nav::-webkit-scrollbar{display:none}.weather-quick-nav a,.weather-local-nav a,.weather-topic-nav a,.forecast-intent-nav a,.region-macro-nav a{display:inline-flex;min-height:44px;align-items:center;flex:0 0 auto;color:var(--text-2);font-size:13px;font-weight:600;white-space:nowrap}.weather-quick-nav a:hover,.weather-local-nav a:hover,.weather-topic-nav a:hover,.forecast-intent-nav a:hover,.region-macro-nav a:hover{color:var(--primary-dark)}

.hourly-section{min-width:0}.hourly-scroll{grid-auto-columns:116px}.hour-card{min-height:162px}.hour-card.is-now{box-shadow:inset 3px 0 0 var(--primary)}.hour-card.is-rainy{box-shadow:inset 0 3px 0 var(--rain)}.hour-card time{color:var(--muted);font-size:12px;font-weight:600}.hour-main{display:flex;align-items:center;gap:7px}.hour-main svg{width:28px;height:28px}.hour-temp{font-size:20px}.hour-condition{display:-webkit-box;overflow:hidden;color:var(--text-2);font-size:12px;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere}.hour-rain{display:flex;justify-content:space-between;gap:6px;margin-top:auto;color:var(--text-2);font-size:12px}.hour-rain b{color:var(--heading)}.scroll-hint{color:var(--muted);font-size:12px}

.daily-row,.daily-day-trigger{grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(100px,.8fr) minmax(105px,.7fr) 24px;gap:12px;min-height:66px}.daily-condition-copy{display:grid;min-width:0;gap:1px}.daily-day-name strong,.daily-condition-copy strong{font-size:14px;overflow-wrap:anywhere}.daily-condition-copy strong{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.35}.daily-day-name span,.daily-condition-copy span,.daily-rain-label,.daily-metric-note{color:var(--muted);font-size:12px}.daily-temp{display:flex;justify-content:flex-end;gap:10px;white-space:nowrap}.daily-temp-max{font-size:17px;font-weight:700}.daily-temp-min{color:var(--muted);font-size:14px}.daily-rain{font-size:13px}.daily-rain strong{color:var(--heading)}



.weather-intelligence-board{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:12px}.weather-intelligence-primary{border-left:4px solid var(--primary)}.weather-intelligence-primary.is-watch,.weather-intelligence-primary.is-attention{border-left-color:var(--warning);background:var(--warning-soft)}.weather-intelligence-label{display:block;margin-bottom:4px;color:var(--primary-dark);font-size:var(--font-xs);font-weight:600}.weather-intelligence-primary h3,.weather-intelligence-item h3{font-size:16px}.weather-intelligence-text,.weather-intelligence-meta{margin:5px 0 0;color:var(--text-2);font-size:13px}.weather-intelligence-secondary{display:grid;gap:10px}.weather-intelligence-item{padding:13px 14px}

.advisory-group-list{display:grid;gap:10px}.advisory-item{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px;border:1px solid var(--border);border-left:4px solid var(--warning);border-radius:var(--radius-lg);background:var(--surface)}.advisory-item.is-danger{border-left-color:var(--danger);background:var(--danger-soft)}.advisory-item-icon{width:28px;color:var(--warning)}.advisory-item-copy{min-width:0}.advisory-item-copy strong{display:block;color:var(--heading);font-size:14px}.advisory-item-copy p{margin:4px 0 0;color:var(--text-2);font-size:13px}.advisory-meta{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:6px;color:var(--muted);font-size:12px}

/* Shared intent / decision primitives used by many route families. */
.intent-family-hero{position:relative}.intent-context-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;margin:0 0 24px;padding:14px 16px}.intent-context-place{display:grid;gap:2px}.intent-context-place strong{color:var(--heading)}.intent-context-place small{color:var(--muted);font-size:12px}.intent-context-links,.intent-context-actions{display:flex;flex-wrap:wrap;gap:8px 14px;justify-content:flex-end}.intent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.intent-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;grid-template-areas:"visual kicker arrow" "visual title arrow" "visual lead arrow";column-gap:14px;row-gap:2px;min-height:124px;align-content:center;padding:18px}.intent-card:hover{border-color:var(--primary-line);background:var(--surface-hover)}.intent-card-visual{grid-area:visual;display:grid;width:44px;height:44px;place-items:center;align-self:start;border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary-dark)}.intent-card-kicker{grid-area:kicker;margin:0 0 2px;color:var(--primary-dark);font-size:11px;font-weight:var(--weight-medium)}.intent-card>strong{grid-area:title;color:var(--heading);font-size:16px;font-weight:var(--weight-medium);line-height:1.35}.intent-card>p{grid-area:lead;display:-webkit-box;overflow:hidden;margin:4px 0 0;color:var(--text-2);font-size:13px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.intent-card>b{grid-area:arrow;align-self:center;color:var(--link);font-size:18px;font-weight:var(--weight-medium)}.intent-place-visual{display:grid;width:38px;height:38px;place-items:center;border-radius:var(--radius-md);background:var(--primary-soft);color:var(--primary-dark)}.intent-place-grid strong{color:var(--heading);font-size:14px}.intent-place-grid small{color:var(--muted);font-size:12px}.intent-answer{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:18px;align-items:center}.intent-answer strong{color:var(--heading);font-size:20px}.intent-answer p{margin:4px 0 0;color:var(--text-2);font-size:14px}.intent-score{justify-self:end;text-align:right}.intent-score strong{display:block;font-size:34px;color:var(--primary-dark)}.intent-hourly-list{grid-auto-columns:minmax(170px,1fr)}.intent-hourly-score{color:var(--primary-dark);font-size:22px;font-weight:700}.intent-hourly-metrics{display:flex;flex-wrap:wrap;gap:4px 8px;color:var(--text-2);font-size:12px}.intent-method-copy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.intent-method-copy>article,.intent-method-copy>div{padding:14px;border-top:1px solid var(--border)}.intent-method-copy strong{display:block;color:var(--heading);font-size:13px}.intent-method-copy p{margin:4px 0 0;color:var(--text-2);font-size:13px}.region-snapshot-row{grid-template-columns:minmax(180px,1.4fr) 110px 90px 90px 24px;gap:12px;min-height:66px}.region-snapshot-place{display:grid;gap:2px}.region-snapshot-place strong{color:var(--heading);font-size:14px}.region-snapshot-place small{color:var(--muted);font-size:12px}.region-snapshot-weather{display:flex;align-items:center;gap:7px}.region-snapshot-weather strong{color:var(--heading)}.region-snapshot-weather svg{width:26px;height:26px}.region-snapshot-meta{display:grid;gap:1px}.region-snapshot-meta small{color:var(--muted);font-size:11px}.region-snapshot-meta b{font-size:13px}.region-snapshot-arrow{justify-self:end;color:var(--link)}

@media(max-width:900px){.weather-intelligence-board{grid-template-columns:1fr}.intent-grid,.intent-place-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intent-method-copy{grid-template-columns:repeat(2,minmax(0,1fr))}.region-snapshot-row{grid-template-columns:minmax(170px,1.5fr) 100px 80px 80px 18px}}
@media(max-width:820px){.location-search,.location-search-block--toolbar .location-search{grid-template-columns:1fr auto}.location-search-block--toolbar .location-near-button{grid-column:1/-1;width:100%}.current-weather{padding:20px}.current-condition{align-items:flex-start;flex-wrap:wrap}.current-range{grid-template-columns:1fr}.current-range>span{grid-template-columns:1fr auto;align-items:center;padding:10px 0;border-right:0;border-bottom:1px solid var(--hero-line)}.current-range>span:last-child{border-bottom:0}.current-data-meta{display:grid}.daily-row,.daily-day-trigger{grid-template-columns:minmax(120px,1fr) minmax(100px,.9fr) minmax(90px,.7fr) 20px}.daily-rain{display:none}.intent-context-bar{grid-template-columns:1fr}.intent-context-links,.intent-context-actions{justify-content:flex-start}.intent-answer{grid-template-columns:1fr}.intent-score{justify-self:start;text-align:left}.intent-grid,.intent-place-grid,.intent-method-copy{grid-template-columns:1fr}.region-snapshot-row{grid-template-columns:minmax(150px,1fr) 90px 24px}.region-snapshot-meta{display:none}}
@media(max-width:430px){.location-search,.location-search-block--toolbar .location-search{grid-template-columns:1fr}.location-search>.search-results{position:relative;top:auto;grid-column:1/-1;margin-top:var(--space-1);max-height:var(--dbtt-search-results-max-height,280px)}.location-search>.ui-submit,.location-search-block--toolbar .location-near-button{grid-column:1;width:100%}.daily-row,.daily-day-trigger{grid-template-columns:1fr auto 18px;gap:8px}.daily-condition-copy{display:grid;min-width:0}.daily-condition-copy strong{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere}.current-temp{font-size:clamp(46px,15vw,56px)}.hourly-scroll{grid-auto-columns:106px}}

/* Shared horizontally scrollable data rail. */

/* v1.20.0 completion — current conditions, alerts, AQI, daily detail, planning and history modules. */
.current-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.current-location{display:grid;gap:2px}.current-update{color:var(--hero-muted);font-size:12px}.current-comfort-label{display:inline-flex;width:max-content;margin-top:3px;padding:2px 7px;border:1px solid var(--hero-line);border-radius:var(--radius-round);color:var(--hero-muted);font-size:11px}.current-favorite-icon{width:16px;height:16px}

.advisory-section{min-width:0}.advisory-lead{margin:5px 0 0;color:var(--text-2);font-size:13px}.advisory-summary{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.advisory-summary span{display:inline-flex;min-height:28px;align-items:center;padding:0 9px;border:1px solid var(--border);border-radius:var(--radius-round);background:var(--surface);color:var(--muted);font-size:11px}.advisory-summary-danger{border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}.advisory-summary-official{border-color:var(--primary-line);background:var(--primary-soft);color:var(--primary-dark)}
.advisory-groups{display:grid;gap:12px}.advisory-group{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.advisory-group-heading{padding:9px 14px;border-bottom:1px solid var(--line);background:var(--surface-soft);color:var(--heading);font-size:12px}.advisory-list{display:grid;gap:0}.advisory-card{display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;padding:13px 14px;border-left:3px solid var(--warning);border-bottom:1px solid var(--line);background:var(--surface)}.advisory-card:last-child{border-bottom:0}.advisory-card.is-official.advisory-danger{border-left-color:var(--danger);background:var(--danger-soft)}.advisory-card.is-official.advisory-warning{border-left-color:var(--warning);background:var(--warning-soft)}.advisory-card.is-official.advisory-info{border-left-color:var(--primary);background:var(--surface-info)}.advisory-card.is-forecast{border-left-color:var(--warning)}.advisory-icon-wrap{display:grid;width:30px;height:30px;place-items:center;border:1px solid var(--warning-line);border-radius:var(--radius-md);background:var(--warning-soft);color:var(--warning)}.advisory-icon-wrap svg{width:18px;height:18px}.advisory-content{min-width:0}.advisory-card-top{display:flex;flex-wrap:wrap;gap:4px 9px;align-items:center;margin-bottom:3px}.advisory-origin,.advisory-level,.advisory-card-top time{color:var(--muted);font-size:11px}.advisory-origin{font-weight:600}.advisory-title{display:block;color:var(--heading);font-size:14px;line-height:1.35}.advisory-content>p{margin:4px 0 0;color:var(--text-2);font-size:13px}.advisory-facts{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:7px;color:var(--muted);font-size:11px}.advisory-instruction{margin-top:8px}.advisory-instruction>summary{font-size:13px}.advisory-instruction p{margin:5px 0 0;color:var(--text-2);font-size:12px}.advisory-disclaimer{margin-top:10px;color:var(--muted);font-size:12px}

.air-quality-panel{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr);gap:22px;padding:20px}.aqi-main{min-width:0}.aqi-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.aqi-standard{color:var(--muted);font-size:11px}.aqi-score{display:flex;min-width:0;flex-wrap:wrap;align-items:baseline;gap:9px;margin-top:8px}.aqi-score strong{max-width:100%;font-size:clamp(36px,5vw,44px);line-height:1;color:var(--heading);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.aqi-score span{color:var(--text-2);font-weight:600}.aqi-copy{margin:8px 0 0;color:var(--text-2);font-size:13px}.aqi-scale{margin-top:16px}.aqi-scale-track{position:relative;display:grid;grid-template-columns:repeat(6,1fr);height:8px;overflow:visible;border-radius:var(--radius-round);background:var(--surface-muted)}.aqi-segment{min-width:0}.aqi-segment-good{background:#77b889}.aqi-segment-moderate{background:#d6b759}.aqi-segment-sensitive{background:#d78c52}.aqi-segment-unhealthy{background:#c86464}.aqi-segment-very-unhealthy{background:#8f6a9c}.aqi-segment-hazardous{background:#744d5b}.aqi-marker{position:absolute;top:-4px;width:3px;height:16px;border-radius:2px;background:var(--heading);transform:translateX(-50%)}.aqi-scale-labels{display:flex;justify-content:space-between;margin-top:6px;color:var(--muted);font-size:11px}.aqi-guidance{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);color:var(--text-2);font-size:13px}.air-pollutants{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.air-pollutants>div{display:grid;gap:2px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-soft)}.air-pollutants small{color:var(--muted);font-size:11px}.air-pollutants strong{color:var(--heading);font-size:16px}

.conditions-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.condition-readout{display:grid;gap:4px;padding:14px;border-right:1px solid var(--line)}.condition-readout:last-child{border-right:0}.condition-readout small{color:var(--muted);font-size:11px}.condition-readout strong{color:var(--heading);font-size:17px}.condition-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.condition-facts>span{display:flex;justify-content:space-between;gap:12px;color:var(--text-2);font-size:12px}.conditions-uv-note{margin-top:10px;color:var(--muted);font-size:12px}

.daily-list-head{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(130px,1fr) minmax(100px,.8fr) minmax(105px,.7fr) 24px;gap:12px;padding:8px 14px;border:1px solid var(--border);border-bottom:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:var(--surface-soft);color:var(--muted);font-size:11px}.daily-list-head-temp{text-align:right}.daily-section .daily-list,.daily-section .daily-forecast-list{border-radius:0 0 var(--radius-lg) var(--radius-lg)}.daily-row-action{justify-self:end;color:var(--link);font-size:16px}.daily-detail-panel{padding:18px;border-top:1px solid var(--border);background:var(--surface-soft)}.daily-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.daily-detail-label{color:var(--primary-dark);font-size:var(--font-xs);font-weight:600}.daily-detail-close{font-size:12px}.daily-detail-overview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center}.daily-detail-condition{display:flex;align-items:center;gap:10px}.daily-detail-condition svg{width:38px;height:38px}.daily-detail-temp-summary{display:flex;gap:12px;align-items:baseline}.daily-detail-temp-summary strong{font-size:28px}.daily-detail-temp-summary span{color:var(--muted)}.daily-detail-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px}.daily-detail-metrics>div{display:grid;gap:2px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.daily-detail-metrics small{color:var(--muted);font-size:11px}.daily-detail-metrics strong{font-size:13px}.daily-detail-chart-block{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.daily-detail-chart-heading{display:flex;justify-content:space-between;gap:12px;margin-bottom:9px;color:var(--muted);font-size:11px}.daily-detail-chart-scroll{overflow-x:auto}.daily-detail-chart{min-width:620px}.daily-detail-chart-highlights{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:8px;color:var(--muted);font-size:11px}.daily-detail-empty{color:var(--muted);font-size:12px}

.commute-section{min-width:0}.commute-list{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.commute-row{--commute-accent:var(--primary);display:grid;grid-template-columns:120px minmax(160px,.8fr) minmax(0,1.2fr);gap:12px;align-items:center;min-height:64px;padding:10px 13px;border-left:3px solid var(--commute-accent);border-bottom:1px solid var(--line)}.commute-row:last-child{border-bottom:0}.commute-row.is-good{--commute-accent:var(--success)}.commute-row.is-rain{--commute-accent:var(--rain)}.commute-row.is-hot{--commute-accent:var(--warning)}.commute-row.is-wind{--commute-accent:var(--wind)}.commute-time{color:var(--heading);font-size:13px;font-weight:600}.commute-condition{color:var(--text-2);font-size:13px}.commute-signals{display:flex;flex-wrap:wrap;gap:4px 9px;color:var(--muted);font-size:11px}

.history-section{min-width:0}.history-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.history-kpi{display:grid;gap:2px;padding:13px 14px;border-right:1px solid var(--line)}.history-kpi:last-child{border-right:0}.history-kpi>span,.history-kpi>small{color:var(--muted);font-size:11px}.history-kpi>strong{color:var(--heading);font-size:19px}.history-kpi--compare{background:var(--surface-soft)}.history-days{display:grid;gap:8px;margin-top:10px}.history-day{display:grid;grid-template-columns:100px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);font-size:12px}.history-day:last-child{border-bottom:0}.history-day-min{color:var(--muted)}.history-day-max{color:var(--heading);font-weight:600}.history-range-track{height:6px;border-radius:var(--radius-round);background:var(--surface-muted)}.history-trend,.history-note,.history-source{margin-top:9px;color:var(--muted);font-size:11px}

.extremes-section{min-width:0}.extremes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.extreme-item{display:grid;gap:3px;padding:14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.extreme-item small{color:var(--muted);font-size:11px}.extreme-item strong{color:var(--heading);font-size:17px}.extreme-item span{color:var(--text-2);font-size:12px}

.planning-activities{min-width:0}.planning-activity-list{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.planning-activity-row{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(0,1.4fr) 70px;gap:12px;align-items:center;min-height:56px;padding:10px 13px;border-bottom:1px solid var(--line)}.planning-activity-row:last-child{border-bottom:0}.planning-activity-name{color:var(--heading);font-size:13px;font-weight:600}.planning-activity-meta{color:var(--text-2);font-size:12px}.planning-activity-score{justify-self:end;color:var(--primary-dark);font-size:14px}

.radar-card{overflow:hidden}.radar-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line)}.radar-card-header h3{font-size:16px}.radar-card-header p{margin:3px 0 0;color:var(--muted);font-size:12px}.radar-viewport,.radar-map{position:relative;min-height:320px;background:var(--surface-muted)}.radar-action{font-size:12px}.radar-attribution{padding:8px 12px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}

.location-decision-zone{min-width:0}.location-decision-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:12px}.location-decision-actions a{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:52px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--heading);font-size:12px;font-weight:600}.location-decision-actions a:hover{border-color:var(--primary-line);background:var(--surface-hover)}

.intent-next-step{min-width:0}.intent-next-step-copy{min-width:0}.intent-next-step-action{flex:0 0 auto}

@media(max-width:900px){.air-quality-panel{grid-template-columns:1fr}.conditions-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.extremes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.location-decision-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.advisory-summary{justify-content:flex-start}.daily-list-head{display:none}.daily-section .daily-list,.daily-section .daily-forecast-list{border-radius:var(--radius-lg)}.daily-detail-overview{grid-template-columns:1fr}.daily-detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.commute-row{grid-template-columns:88px minmax(0,1fr);grid-template-areas:"time condition" "time signals"}.commute-time{grid-area:time}.commute-condition{grid-area:condition}.commute-signals{grid-area:signals}.history-kpis{grid-template-columns:1fr}.history-kpi{border-right:0;border-bottom:1px solid var(--line)}.history-kpi:last-child{border-bottom:0}.history-day{grid-template-columns:80px minmax(0,1fr) auto}.history-day-min{display:none}.planning-activity-row{grid-template-columns:minmax(0,1fr) auto}.planning-activity-meta{grid-column:1/-1}.radar-viewport,.radar-map{min-height:260px}}
@media(max-width:430px){.air-pollutants{grid-template-columns:1fr}.conditions-overview{grid-template-columns:1fr}.condition-readout{border-right:0;border-bottom:1px solid var(--line)}.condition-readout:last-child{border-bottom:0}.daily-detail-metrics{grid-template-columns:1fr 1fr}.extremes-grid{grid-template-columns:1fr}.location-decision-actions{grid-template-columns:1fr}.advisory-card{grid-template-columns:28px minmax(0,1fr);padding-inline:11px}.radar-card-header{flex-direction:column}}

/* v1.20.0 shared completion: rain, context switcher, radar controls and compact data states. */
.rain-nowcast{margin-top:var(--space-7);padding:18px;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface)}.rain-nowcast-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.rain-nowcast-head h2{font-size:22px}.rain-nowcast-badge{display:inline-flex;min-height:28px;align-items:center;padding:0 9px;border:1px solid var(--primary-line);border-radius:var(--radius-round);background:var(--primary-soft);color:var(--primary-dark);font-size:11px;font-weight:600}.rain-nowcast-body{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px;align-items:stretch}.rain-nowcast-summary{display:grid;align-content:start;gap:8px;padding:14px;border-radius:var(--radius-lg);background:var(--surface-soft)}.rain-nowcast-title{color:var(--heading);font-size:17px}.rain-nowcast-copy{margin:0;color:var(--text-2);font-size:13px}.rain-nowcast-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.rain-nowcast-kpis>*{padding:10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.rain-nowcast-links{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:3px}.rain-nowcast-radar-link{font-size:12px}.rain-nowcast-hours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.rain-nowcast-hour{display:grid;gap:5px;align-content:start;padding:12px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.rain-nowcast-hour.is-wet{border-color:var(--primary-line);background:var(--primary-soft)}.rain-nowcast-hour-label{color:var(--muted);font-size:11px}
.rain-outlook{min-width:0}.rain-scroll{max-width:100%;overflow-x:auto;padding-bottom:8px}.rain-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(72px,1fr);min-width:760px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.rain-hour{display:grid;grid-template-rows:auto 72px auto;gap:6px;min-width:0;padding:10px 8px;border-right:1px solid var(--line);text-align:center}.rain-hour:last-child{border-right:0}.rain-hour.is-current{background:var(--primary-soft)}.rain-bar-track{display:flex;height:72px;align-items:flex-end;justify-content:center}.rain-bar-track>span{display:block;width:12px;min-height:2px;border-radius:8px 8px 2px 2px;background:var(--rain)}
.weather-context-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin:16px 0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.weather-context-main{display:flex;min-width:0;align-items:center;gap:12px}.weather-context-location{display:inline-flex;min-width:0;align-items:center;gap:6px;color:var(--heading);font-size:13px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}.weather-context-links{display:flex;min-width:0;gap:4px;overflow-x:auto;scrollbar-width:none}.weather-context-links a{display:inline-flex;min-height:44px;align-items:center;padding:0 9px;border-radius:var(--radius-md);color:var(--text-2);font-size:12px;white-space:nowrap}.weather-context-links a:hover,.weather-context-links a.is-active{background:var(--primary-soft);color:var(--primary-dark)}.weather-context-switch{min-width:180px}.weather-context-search{padding-top:8px}.weather-context-switch-link{color:var(--link);font-size:12px;font-weight:600}
.radar-section{min-width:0}.radar-heading-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px 10px;color:var(--muted);font-size:11px}.radar-observed-badge{display:inline-flex;min-height:26px;align-items:center;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-round);background:var(--surface-soft)}.radar-loading,.radar-retry{position:absolute;inset:0;display:grid;place-items:center;align-content:center;text-align:center;border-radius:0}.radar-controls{display:grid;grid-template-columns:auto auto minmax(160px,1fr) auto auto;gap:8px;align-items:center;padding:10px 12px;border-top:1px solid var(--line)}.radar-step{font-size:14px}.radar-range-wrap{min-width:0}.ui-range{width:100%;accent-color:var(--primary-dark)}.radar-range-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.radar-retry .button{justify-self:center}.radar-map[aria-busy="true"]{cursor:progress}.radar-map[data-async-state="loading"] .radar-loading{min-block-size:100%}.radar-loading{min-inline-size:100%;min-block-size:100%}.radar-retry [data-radar-retry-button][aria-busy="true"]{cursor:progress}
.conditions-overview-section,.air-quality-section,.metric-hourly-section,.intent-hourly-section{min-width:0}.current-weather .weather-data-state--partial,.current-weather .weather-data-state--stale{border-color:rgba(255,255,255,.34)}
@media(max-width:820px){.rain-nowcast-body{grid-template-columns:1fr}.weather-context-bar{grid-template-columns:1fr}.weather-context-main{align-items:flex-start;flex-direction:column}.weather-context-switch{min-width:0}.radar-controls{grid-template-columns:auto auto minmax(100px,1fr) auto}.radar-latest{grid-column:1/-1}.rain-nowcast-hours{grid-template-columns:repeat(3,minmax(110px,1fr));overflow-x:auto}}
@media(max-width:430px){.rain-nowcast{padding:14px}.rain-nowcast-head{align-items:flex-start;flex-direction:column}.rain-nowcast-hours{grid-template-columns:1fr}.rain-nowcast-kpis{grid-template-columns:1fr}.radar-controls{grid-template-columns:auto auto 1fr auto;padding-inline:8px}.weather-context-bar{padding:9px}}

/* v1.20.0 location experience/detail disclosure completion. */
.weather-section-group,.weather-detail-groups{min-width:0}.weather-section-group{margin-top:var(--space-8)}.weather-detail-groups{display:grid;gap:10px}.weather-detail-group{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.weather-detail-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:10px 14px;border-bottom:1px solid var(--line)}.weather-detail-group-head strong{color:var(--heading);font-size:14px}.weather-detail-group-content{padding:14px}.weather-detail-group--today{border-color:var(--primary-line)}.weather-detail-group--planning{background:var(--surface-soft)}.weather-more-details{border-top:1px solid var(--line)}.weather-more-details>summary{min-height:46px;padding:0 14px;font-size:13px}.weather-more-content{padding:0 14px 14px}.location-forecast-core,.location-forecast-flow,.location-forecast-signals,.forecast-core,.forecast-signals{min-width:0}
.weather-search-intent{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;margin-top:var(--space-7);padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-soft)}.weather-search-intent-links{display:flex;flex-wrap:wrap;gap:7px}.weather-search-intent-links a{display:inline-flex;min-height:44px;align-items:center;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-2);font-size:12px}.weather-search-intent-links a:hover{border-color:var(--primary-line);color:var(--primary-dark)}
@media(max-width:820px){.weather-search-intent{grid-template-columns:1fr}.weather-detail-group-head{align-items:flex-start}}


/* v1.20.1 — daily disclosure / generated-chart closure. */
.daily-detail-sunrail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}
.daily-detail-sunrail>div{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.daily-detail-sunrail strong{color:var(--heading);font-size:13px}.daily-detail-chart-heading>div:first-child{display:grid;gap:6px}.daily-detail-chart-heading strong{color:var(--heading);font-size:13px}
.daily-detail-chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:11px}.daily-detail-chart-legend span{display:inline-flex;align-items:center;gap:5px}.daily-detail-chart-legend i{display:inline-block;width:14px;height:3px;border-radius:var(--radius-round);background:var(--warning)}.daily-detail-chart-legend .is-rain i{height:8px;background:var(--rain)}
.daily-detail-chart-highlights>span{display:inline-grid;gap:1px}.daily-detail-chart-highlights small{color:var(--muted);font-size:11px}.daily-detail-chart-highlights strong{color:var(--heading);font-size:12px}
.daily-detail-svg{display:block;width:100%;height:auto;overflow:visible}.daily-chart-grid{stroke:var(--line);stroke-width:1}.daily-chart-axis{stroke:var(--border-strong);stroke-width:1}.daily-chart-temp-area{fill:var(--warning-soft);opacity:.72}.daily-chart-temp-line{stroke:var(--warning);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.daily-chart-temp-dot{fill:var(--surface);stroke:var(--warning);stroke-width:2}.daily-chart-temp-dot.is-peak{fill:var(--warning)}.daily-chart-rain{fill:var(--rain);opacity:.58}.daily-chart-rain.is-peak{opacity:.9}.daily-chart-temp-label,.daily-chart-time-label{font-family:"Segoe UI",Arial,Tahoma,sans-serif;font-size:11px;fill:var(--muted)}.daily-chart-rain-label{font-family:"Segoe UI",Arial,Tahoma,sans-serif;font-size:11px;fill:var(--heading);font-weight:600}.daily-chart-temp-label.is-peak,.daily-chart-time-label.is-key{fill:var(--heading);font-weight:600}
@media(max-width:820px){.daily-detail-sunrail{grid-template-columns:repeat(3,minmax(100px,1fr));overflow-x:auto}.daily-detail-chart-heading{align-items:flex-start;flex-direction:column}.daily-detail-chart-highlights{justify-content:flex-start}}
@media(max-width:430px){.daily-detail-sunrail{grid-template-columns:1fr}.daily-detail-chart-panel{padding-inline:0}}

/* v1.20.1 — quick-nav active/overflow state closure. */
.weather-quick-nav a.is-current,.weather-local-nav a.is-current{color:var(--primary-dark);box-shadow:inset 0 -2px 0 var(--primary)}
.weather-quick-nav.has-overflow,.weather-local-nav.has-overflow{scroll-padding-inline:14px}
.weather-quick-nav.can-scroll-left,.weather-local-nav.can-scroll-left{border-left-color:var(--border-strong)}
.weather-quick-nav.can-scroll-right,.weather-local-nav.can-scroll-right{border-right-color:var(--border-strong)}

/* v1.20.1 — small shared state/copy closures. */
.aqi-scale-current{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.aqi-scale-current strong{color:var(--heading);font-size:12px}.weather-date,.weather-freshness,.weather-source{min-width:0;overflow-wrap:anywhere}.advisory-heading-copy{min-width:0}.advisory-summary-forecast{white-space:nowrap}.intent-answer-visual{display:grid;place-items:center;min-width:44px;min-height:44px;color:var(--primary-dark)}

/* v1.20.1 — forecast-row semantic structure fixes. */
.daily-day{display:grid;gap:1px;min-width:0}.daily-day-name{display:block;color:var(--heading);font-size:14px;font-weight:var(--weight-bold);line-height:1.3}.daily-day>span{color:var(--muted);font-size:12px}.daily-condition{display:flex;min-width:0;align-items:center;gap:8px}.daily-condition>svg{width:28px;height:28px;flex:0 0 28px}.daily-temp-separator{color:var(--muted);font-size:12px}.weather-intelligence-primary-copy{min-width:0}.weather-topic-label{display:inline-flex;min-height:32px;align-items:center;padding-right:5px;color:var(--muted);font-size:11px;font-weight:var(--weight-medium)}.radar-time{white-space:nowrap}

/* v1.20.31 — truthful partial-data note for shared daily detail. */
.daily-detail-chart-note{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.45}

/* v1.20.32 — precipitation truth states: unknown data is visually distinct from measured dry/zero values. */
.rain-nowcast-hour.is-unknown,.rain-hour.is-unknown{border-style:dashed;background:var(--surface-soft)}
.rain-nowcast-hour.is-unknown .rain-nowcast-hour-label,.rain-hour.is-unknown :is(strong,small),.rain-hour.is-partial :is(strong[aria-label],small[aria-label]),.metric-rain-value.is-missing,.metric-rain-amount.is-missing{color:var(--muted)}
.rain-coverage-note{margin-top:10px}
.rain-time-hour.is-unknown{border-style:dashed;background:var(--surface-soft)}
.rain-time-hour.is-unknown .rain-time-hour-state{color:var(--muted);font-weight:600}

/* v1.20.33 — daily temperature range coverage. */
.daily-temp.is-partial,.daily-temp.is-none{color:var(--muted)}
.daily-temp.is-partial :is(.daily-temp-max,.daily-temp-min),.daily-temp.is-none :is(.daily-temp-max,.daily-temp-min){color:var(--muted)}


/* v1.21.30 — extreme live-data geometry closure. */
.condition-text,.feels-like{max-width:100%;overflow-wrap:anywhere}.current-range>*,.air-pollutants>div{min-width:0}.aqi-score span,.aqi-copy,.aqi-guidance,.air-pollutants strong,.air-pollutants small{max-width:100%;overflow-wrap:anywhere}.hour-main,.hour-rain,.daily-temp{min-width:0}.hour-temp,.daily-temp-max,.daily-temp-min{font-variant-numeric:tabular-nums}.ui-state-body,.ui-state-actions{max-width:100%;overflow-wrap:anywhere}
@media(max-width:430px){.aqi-score strong{font-size:38px}}
@media(max-width:360px){.current-condition{align-items:flex-start}.current-icon-wrap{width:48px;flex-basis:48px}.current-temp{font-size:46px}}
