/* Forecast presentation; uses the existing NWS data and Meteocons assets. */
.hourly-card{padding:24px 28px 16px;border-radius:14px}
.hourly-summary p{font-size:16px;line-height:1.6;color:#294b60}
.hourly-scroll{scrollbar-width:thin;scrollbar-color:#b5cdd8 #f1f6f8;overscroll-behavior-x:contain}
.hourly-scroll[hidden]{display:none}
.hourly-scroll .hourly-chart,.hourly-scroll .hourly-hours{min-width:calc(var(--hours,12)*72px)}
.hourly-hours{grid-template-columns:repeat(var(--hours,12),minmax(0,1fr));gap:0;overflow:visible;margin-top:10px}
.hour-cell{padding:12px 4px;gap:7px;min-height:145px;border-radius:7px}
.hour-cell:hover,.hour-cell:focus-visible{background:#f0f7f8}
.hour-cell:focus-visible{outline-offset:-3px}
.hour-cell .hour-time{font-size:12px;color:#577285}
.hour-cell img{width:46px;height:46px}
.hour-cell strong{font-size:18px;line-height:1.4;color:#23465d}
.hour-cell .rain-chance{font-size:12px;color:#347da0}
.hourly-navigation{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid #e5edf1;padding-top:12px;margin-top:8px}
.hourly-navigation[hidden]{display:none}
.hourly-navigation>span{font-size:12px;color:#667e8d}
.hourly-navigation>div{display:flex;gap:6px}
.hourly-navigation button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#fff;border:1px solid #d8e5ec;border-radius:7px;color:#365e75}
.hourly-navigation button:hover:not(:disabled){background:#f0f7f8;border-color:#a3c6cf}
.hourly-navigation button svg{width:18px;height:18px}
.daily-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;overflow:visible;padding:0}
.day-card{position:relative;display:flex;flex-direction:column;align-items:stretch;padding:19px 14px 15px;min-height:288px;border-radius:12px;text-align:left;gap:0;transform:none;background:#fff;border-color:#d8e4eb;transition:border-color .15s,background .15s}
.day-card:hover{transform:none;box-shadow:none;background:#f6fafb;border-color:#99bdcb}
.day-card:first-child{background:#edf6f7;border-color:#afcfd5}
.day-header{display:flex;flex-direction:column;gap:3px}
.day-card .day-name{font-size:14px;line-height:1.5;font-weight:650;color:#24475d}
.day-card .day-date{font-size:11px;line-height:1.5;margin:0;color:#637e8f}
.day-card>img{width:64px;height:64px;margin:10px auto 8px}
.day-card .day-temperatures{display:grid;grid-template-columns:1fr 1fr;gap:8px;line-height:1.4;margin:0;font-variant-numeric:tabular-nums}
.day-card .day-temperatures>span{display:flex;flex-direction:column;gap:2px;margin:0;font-size:17px;color:#557588;min-width:0}
.day-card .day-temperatures .temperature-label{font:400 10px/1.5 var(--font);color:#6a8090;margin:0}
.day-card .day-temperatures strong{font-size:24px;line-height:1.3;font-weight:650;color:#21455c}
.day-card .day-temperatures .day-low-value{font-size:21px;line-height:1.5;color:#668091;margin:0}
.day-card[data-night-only=true] .day-high,.day-card[data-day-only=true] .day-low{display:none}
.day-card:is([data-night-only=true],[data-day-only=true]) .day-temperatures{grid-template-columns:1fr}
.day-card[data-night-only=true] .day-temperatures .day-low-value{font-size:24px;font-weight:650;color:#21455c}
.day-card .day-description{font-size:12px;line-height:1.55;text-align:left;color:#4e6c7f;min-height:38px;margin:13px 0 12px;overflow-wrap:anywhere}
.day-card .day-rain{display:flex;align-items:center;gap:5px;margin-top:auto;padding-top:10px;border-top:1px solid #e2ebf0;font-size:11px;line-height:1.5;color:#357b9a}
.day-rain svg{width:13px;height:13px;flex-shrink:0}
.daily-forecast-note{margin:14px 0 0;font-size:12px;line-height:1.7;color:#6a8090}
.daily-forecast-note[hidden]{display:none}
.daily-grid:has(.forecast-empty){display:block;padding:20px;border:1px solid #d8e4eb;border-radius:14px;background:#fff}
.detail-dialog[data-kind=forecast]{width:min(700px,calc(100% - 40px));padding:0;border-radius:14px;background:#fff}
.detail-dialog[data-kind=forecast]>form{position:sticky;top:0;z-index:2;display:flex;justify-content:flex-end;background:#fff;border-bottom:1px solid #e5edf1;padding:10px 16px}
.detail-dialog[data-kind=forecast] .close-dialog{position:static;width:40px;height:40px;margin:0;border:1px solid #d8e5ec;border-radius:7px}
.forecast-detail-header{padding:20px 28px 22px;border-bottom:1px solid #e5edf1;background:#f6f9fb}
.detail-dialog .forecast-detail-source{font-size:12px;line-height:1.6;color:#567589;margin:0 0 7px}
.detail-dialog .forecast-detail-header h2{font-size:25px;line-height:1.35;margin:0;color:#24475d;overflow-wrap:anywhere}
.forecast-periods{padding:0 28px}
.forecast-period{padding:24px 0;border-bottom:1px solid #e5edf1}
.forecast-period:last-child{border-bottom:0}
.forecast-period-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px}
.detail-dialog .forecast-period-heading h3{font-size:19px;line-height:1.4;margin:0 0 5px;color:#24475d}
.forecast-period-heading>img{width:72px;height:72px}
.detail-dialog .forecast-detail-temperature{font:600 35px/1.3 var(--display);letter-spacing:-.03em;margin:0;color:#214c63}
.detail-dialog .forecast-period-description{font-size:15px;line-height:1.8;margin:16px 0 0;color:#486678}
.forecast-period-metrics{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin:18px 0 0;padding:14px 16px;background:#f4f8fa;border-radius:8px}
.forecast-period-metrics>div{min-width:0}
.forecast-period-metrics dt{font-size:11px;color:#688292;line-height:1.5}
.forecast-period-metrics dd{margin:4px 0 0;font-size:14px;font-weight:600;color:#345c72;overflow-wrap:anywhere}
.detail-dialog .forecast-period-valid{font-size:11px;line-height:1.6;color:#6a8393;margin:14px 0 0}
.forecast-detail-footer{padding:16px 28px 22px;border-top:1px solid #e5edf1}
.detail-dialog .forecast-detail-footer p{font-size:12px;line-height:1.6;color:#627e90;margin:0 0 8px}
.detail-dialog .forecast-detail-footer a{display:inline-flex;align-items:center;min-height:40px;font-size:13px;color:#207787}
@media(max-width:1150px){.day-card{padding:17px 10px 14px}.day-card .day-temperatures strong{font-size:22px}.day-card .day-temperatures .day-low-value{font-size:19px}.day-card .day-rain{font-size:10px;gap:4px}}
@media(max-width:900px){.daily-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0;background:#fff;border:1px solid #d8e4eb;border-radius:14px;overflow:hidden}.day-card{display:grid;grid-template-columns:86px 56px minmax(0,1fr) 82px;grid-template-areas:'day icon description temps' 'day icon rain temps';column-gap:16px;row-gap:5px;align-items:center;min-height:112px;padding:18px 22px;border:0;border-bottom:1px solid #e5edf1;border-radius:0;background:#fff}.day-card:first-child{border-color:#e5edf1;background:#f2f8fa}.day-card:last-child{border-bottom:0}.day-header{grid-area:day}.day-card>img{grid-area:icon;width:56px;height:56px;margin:0}.day-card .day-temperatures{grid-area:temps;grid-template-columns:1fr;gap:4px;align-items:center}.day-card .day-temperatures>span{flex-direction:row;align-items:baseline;justify-content:flex-end;gap:6px}.day-card .day-temperatures .temperature-label{font-size:10px}.day-card .day-temperatures strong{font-size:22px}.day-card .day-temperatures .day-low-value{font-size:18px}.day-card .day-description{grid-area:description;margin:0;min-height:0;align-self:end;font-size:13px}.day-card .day-rain{grid-area:rain;align-self:start;border:0;margin:0;padding:0;font-size:11px}.day-card:hover{background:#f4f9fb}}
@media(max-width:600px){.hourly-card{padding:20px 18px 14px}.hourly-summary p{font-size:14px}.hourly-scroll .hourly-chart,.hourly-scroll .hourly-hours{min-width:calc(var(--hours,12)*70px)}.hour-cell .hour-time{font-size:11px}.hour-cell strong{font-size:17px}.hourly-navigation>span{font-size:11px}.day-card{grid-template-columns:66px 42px minmax(0,1fr) 64px;column-gap:10px;padding:16px 14px;min-height:106px}.day-card>img{width:42px;height:42px}.day-card .day-name{font-size:13px}.day-card .day-date{font-size:10px}.day-card .day-description{font-size:12px;line-height:1.5}.day-card .day-temperatures>span{gap:4px}.day-card .day-temperatures strong{font-size:20px}.day-card .day-temperatures .day-low-value{font-size:17px}.day-card .day-temperatures .temperature-label{font-size:9px}.day-card .day-rain{font-size:10px}.daily-forecast-note{font-size:11px;margin-top:11px}.detail-dialog[data-kind=forecast]{width:calc(100% - 24px);max-width:calc(100% - 24px)}.forecast-detail-header{padding:18px 20px}.detail-dialog .forecast-detail-header h2{font-size:22px}.forecast-periods{padding:0 20px}.forecast-period{padding:20px 0}.forecast-period-heading{gap:12px}.forecast-period-heading>img{width:62px;height:62px}.detail-dialog .forecast-period-heading h3{font-size:18px}.detail-dialog .forecast-detail-temperature{font-size:32px}.detail-dialog .forecast-period-description{font-size:14px;line-height:1.75}.forecast-period-metrics{gap:12px;padding:12px}.forecast-period-metrics dd{font-size:13px}.forecast-detail-footer{padding:15px 20px 18px}}
@media(max-width:360px){.day-card{grid-template-columns:60px 36px minmax(0,1fr) 60px;column-gap:7px;padding:15px 10px}.day-card>img{width:36px;height:36px}.day-card .day-description{font-size:11px}.day-card .day-rain{font-size:10px;gap:3px}.day-rain svg{display:none}.day-card .day-temperatures strong{font-size:18px}.day-card .day-temperatures .day-low-value{font-size:16px}}
@media(max-width:600px){.day-card[data-night-only=true] .day-temperatures .day-low-value{font-size:20px}}
@media(max-width:900px){.day-card:focus-visible{outline:2px solid #168b98;outline-offset:-3px;z-index:1}}
@media(prefers-reduced-motion:reduce){.day-card{transition:none}}
