/* Station composition uses shared Eduvize tokens and the geometry policy in weather-layout.js. */
html.weather-station{--station-ink:var(--ev-primary,#142d50);--station-accent:var(--ev-accent,#f8d344);--station-track:var(--ev-border,#dce6f0)}
html.weather-station body main.shell{display:flex!important;flex-direction:column!important;max-width:none!important;width:100%!important;min-height:100dvh!important;height:auto!important;overflow:visible!important;gap:clamp(8px,.6vmin,20px)!important;padding:clamp(8px,.8vmin,24px)!important;box-sizing:border-box}
html.weather-station .shell>:is(.hero,.weather-pages,.page-indicator),html.weather-station .edu-kiosk-pagination{display:none!important}
html.weather-station .shell>.footer{order:10}
html.weather-station .station-dashboard{--station-body:24px;--station-gap:clamp(10px,.8vmin,24px);position:relative;container-type:size;display:grid!important;grid-template-rows:minmax(0,1.45fr) minmax(0,1.25fr) minmax(0,.9fr) auto;gap:var(--station-gap);width:100%;flex:none;min-height:0;color:var(--ev-text,#142d50);font-family:inherit;font-size:var(--station-body);line-height:1.35}
.station-dashboard *{box-sizing:border-box;min-width:0}
.weather-station .station-dashboard [hidden]{display:none!important}
.station-top{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--station-gap);min-height:0}
.station-hero,.station-card{border-radius:var(--ev-card-radius,20px);border:1px solid var(--station-track);padding:clamp(10px,1cqw,32px);min-height:0;overflow:hidden}
.station-hero{display:grid;grid-template-rows:auto minmax(0,1fr);gap:.5em;background:var(--station-hero-bg,var(--station-ink));color:var(--station-hero-text,var(--ev-primary-text,#fff))}
.station-current{display:flex;justify-content:center;align-items:center;gap:4%;min-height:0}
.station-symbol{display:flex;align-items:center;justify-content:center;width:clamp(64px,7cqw,200px);height:clamp(64px,7cqw,200px);max-height:100%;aspect-ratio:1;flex:none}
.station-symbol svg{display:block;width:100%;height:100%;max-height:100%;color:var(--station-accent)}
.station-temperature{font-size:clamp(63px,min(12cqw,48cqh),360px);font-weight:700;line-height:1.05;white-space:nowrap;letter-spacing:-.045em}
.station-readings{display:flex;flex-direction:column;gap:.4em;justify-content:center}
.station-condition{font-size:1.23em;font-weight:400;line-height:1.2;opacity:.85}
.station-feels{font-size:1.575em;font-weight:550;white-space:nowrap}
.station-meta{order:-1;display:flex;flex-direction:column;align-items:flex-start;gap:.25em;font-size:.76em;line-height:1.3;opacity:.9}
.station-place{font-size:inherit;font-weight:600;margin:0;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.station-time{font-size:inherit;flex:none}
.station-time{opacity:.85}
.station-instruments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:var(--station-gap);min-height:0}
.station-card{background:var(--ev-surface,#fff)}
html.weather-station .station-card h2{font-size:1.05em;font-weight:650;line-height:1.2;margin:0 0 .2em;color:inherit}
.station-instruments .station-card{position:relative;display:flex;flex-direction:column;justify-content:center;padding-right:38%}
.station-value{font-size:1.85em;line-height:1.1;font-weight:700;letter-spacing:-.03em;white-space:nowrap}
.station-value .station-unit{font-size:.52em;letter-spacing:0;font-weight:500;white-space:nowrap}
.station-note{font-size:.63em;line-height:1.3;margin-top:.35em}
.station-gauge{position:absolute;width:33%;height:80%;right:3%;top:50%;transform:translateY(-50%);color:var(--station-ink)}
.station-gauge svg{display:block;width:100%;height:100%}
.station-gauge svg:not([viewBox="0 0 120 100"]):not([viewBox="0 0 120 120"]){color:var(--station-accent)}
.station-hourly,.station-daily{display:flex;flex-direction:column;gap:.3em;padding-block:.45em}
.station-forecast-heading{display:flex;align-items:center;justify-content:space-between;gap:1em;flex:none}
.station-forecast-heading h2{flex:none}
.station-extras{display:flex;justify-content:space-between;gap:1em}
.station-extra{display:flex;flex-direction:column;font-size:.57em;line-height:1.2;gap:.12em}
.station-extra strong{font-size:1.4em}
.station-chart{display:flex;flex-direction:column;flex:1;min-height:0;gap:.3em}
.station-chart>svg{display:block;width:100%;flex:1;min-height:24px;overflow:visible}
.station-hours{display:grid;grid-template-columns:repeat(var(--station-hours,6),minmax(0,1fr));gap:.3em;text-align:center;flex:none}
.station-hours>div{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.12em .2em}
.station-hours .hour-icon{width:1.6em;height:1.6em}
.station-hours .hour-icon svg{display:block;width:100%;height:100%}
.station-hours strong{font-size:.9em}
.station-hours .station-hour-condition{width:100%;font-size:.6em;line-height:1.15}
.station-hours .station-hour-time{width:100%;font-size:.55em;line-height:1.2;padding-bottom:.2em}
.station-days{display:grid;flex:1;min-height:0;gap:var(--station-gap);grid-template-rows:minmax(0,1fr)}
.station-day{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:repeat(3,auto);align-content:center;gap:.2em .4em;border:1px solid var(--station-track);border-radius:var(--ev-card-radius,20px);padding:.5em;min-height:0}
.station-day .hour-icon{grid-column:2;grid-row:1/4;align-self:center;width:1.8em;height:1.8em}
.station-day .hour-icon svg{display:block;width:100%;height:100%}
/* Cloned forecast cells keep station typography instead of the standard output's cell scale. */
html.weather-station:is(.kiosk-output,.nsp-output) body main.shell .station-dashboard .station-day :is(.hour-time,.hour-time *){font-size:calc(var(--station-body)*.7)!important;line-height:1.15!important;font-weight:400!important}
html.weather-station:is(.kiosk-output,.nsp-output) body main.shell .station-dashboard .station-day :is(.hour-temp,.hour-temp *){font-size:calc(var(--station-body)*1.12)!important;line-height:1.15!important;font-weight:650!important}
html.weather-station:is(.kiosk-output,.nsp-output) body main.shell .station-dashboard .station-day :is(.daily-night-temp,.daily-night-temp *){font-size:calc(var(--station-body)*.62)!important;line-height:1.2!important;font-weight:400!important}
.station-day .hour-rain{display:none}
.station-day :is(.hour-time,.hour-temp,.daily-night-temp){white-space:nowrap}
.station-text{padding:.25em .6em}
.station-text summary{font-size:.85em;font-weight:600;cursor:pointer;min-height:1.8em;display:flex;align-items:center;list-style:none}
.station-text summary::-webkit-details-marker{display:none}
.station-text summary:before{content:'+';margin-right:.6em}
.station-text[open] summary:before{content:'−'}
.weather-station .station-text[open]{position:static;display:flex;flex-direction:column;min-height:0;gap:0}
.station-text[open] summary{flex:none}
.station-text-content{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1em;width:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:.5em .2em 1em;scroll-padding-bottom:1em}
.station-text[open] .station-text-content{flex:1;align-content:start}
.station-text .forecast-card{margin:0;padding:0 .5em .5em;border:0;background:transparent;min-width:0}
html.weather-station:is(.kiosk-output,.nsp-output) body main.shell .station-dashboard .station-text .forecast-card :is(p,p *){font-size:calc(var(--station-body)*.85)!important;line-height:1.45!important;font-weight:400!important}
html.weather-station:is(.kiosk-output,.nsp-output) body main.shell .station-dashboard .station-text .forecast-card :is(h3,h3 *){font-size:var(--station-body)!important;line-height:1.25!important}
.station-text .forecast-card p{margin-block:.5em}
.station-dashboard[data-station-shape="portrait"] .station-top{grid-template-columns:1fr;grid-template-rows:minmax(0,1.1fr) minmax(0,1fr)}
.station-dashboard[data-station-shape="portrait"] .station-temperature{font-size:clamp(72px,18cqw,360px)}
.station-dashboard[data-station-shape="portrait"] .station-symbol{width:clamp(64px,8cqw,160px);height:clamp(64px,8cqw,160px)}
.station-dashboard[data-station-shape="portrait"] .station-forecast-heading{align-items:flex-start;flex-direction:column;gap:.3em}
.station-dashboard[data-station-shape="portrait"] .station-extras{width:100%}
.station-dashboard[data-station-shape="portrait"] .station-days{gap:.4em}
.station-dashboard[data-station-shape="portrait"] .station-day{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.2em;padding:.4em .15em}
.station-dashboard[data-station-shape="portrait"] .station-day .hour-icon{order:-1;width:1.7em;height:1.7em}
.station-dashboard[data-station-shape="portrait"] .station-text-content{grid-template-columns:1fr}

/* Follow the parent kiosk header palette, including live menu + desktop changes. */
html.weather-station.kiosk-output[data-kiosk-header="light"]{
 --station-hero-bg:var(--ev-secondary);
 --station-hero-text:var(--ev-secondary-text);
}
.station-readings{min-width:0}
.station-feels:empty,.station-condition:empty{display:none}
.station-current{padding-block:.25em;overflow:hidden}
.station-dashboard[data-station-shape="portrait"] .station-meta{align-items:center;text-align:center}
/* Missing sections still occupy usable space through the shared geometry policy. */
.station-dashboard .station-note{overflow-wrap:anywhere}

/* Give hourly values the space formerly occupied by the oversized plot canvas. */
.station-hourly .station-chart{gap:.15em}
.station-hourly .station-chart>svg{flex:1 1 0;min-height:28px}
.station-hourly .station-hours{padding-block:.15em;gap:.5em}
.station-hourly .station-hours>div{align-content:start;gap:.15em .25em}
.station-hourly .station-hours .hour-icon{width:2.25em;height:2.25em}
.station-hourly .station-hours strong{font-size:1.3em;line-height:1.15}
.station-hourly .station-hours .station-hour-condition{font-size:.85em;line-height:1.2}
.station-hourly .station-hours .station-hour-time{font-size:.9em;line-height:1.25;padding-bottom:0}
.station-hourly .station-extra{font-size:.7em}

/* Prevent short kiosk viewports from crushing forecast rows. */
html.weather-station.kiosk-output .station-dashboard{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
html.weather-station.kiosk-output .station-current{container-type:size}
html.weather-station.kiosk-output .station-temperature{font-size:clamp(48px,min(18cqw,42cqh),360px)}
html.weather-station.kiosk-output .station-dashboard[data-station-shape="portrait"] .station-temperature{font-size:clamp(48px,min(22cqw,42cqh),360px)}

html.weather-station.kiosk-output .station-readings{gap:.2em}
html.weather-station.kiosk-output .station-feels{line-height:1.15}

/* In narrow instrument cards retain the full text before decorative gauges. */
html.weather-station.kiosk-output .station-instruments{container-type:inline-size}
@container(max-width:640px){html.weather-station.kiosk-output .station-instruments .station-card{padding-right:clamp(10px,1cqw,32px)}html.weather-station.kiosk-output .station-instruments .station-gauge{display:none}}
html.weather-station.kiosk-output .station-hero{container-type:inline-size}
@container(max-width:480px){html.weather-station.kiosk-output .station-current{flex-direction:column;gap:6px}html.weather-station.kiosk-output .station-symbol{width:48px;height:48px}html.weather-station.kiosk-output .station-readings{text-align:center}html.weather-station.kiosk-output .station-feels{white-space:normal}}

html.weather-station.kiosk-output .station-temperature{font-size:min(calc(var(--station-body)*3),max(48px,42cqh))!important}
@container(max-width:480px){html.weather-station.kiosk-output .station-symbol{width:48px!important;height:48px!important;max-height:48px!important;flex:0 0 48px!important}}

/* Readings share the same semantic ratios in Newline and kiosk. */
html.weather-station:is(.nsp-output,.kiosk-output) .station-current{container-type:size;gap:1em;padding-block:.5em}
html.weather-station:is(.nsp-output,.kiosk-output) .station-temperature{font-size:min(calc(var(--station-body)*3),max(32px,38cqh))!important;line-height:1.05}
html.weather-station:is(.nsp-output,.kiosk-output) .station-feels{font-size:1.2em;line-height:1.2}
html.weather-station:is(.nsp-output,.kiosk-output) .station-condition{font-size:1em;line-height:1.2}
html.weather-station:is(.nsp-output,.kiosk-output) .station-readings{gap:.3em}
html.weather-station:is(.nsp-output,.kiosk-output) .station-symbol{width:3em;height:3em;max-height:80%}

html.weather-station:is(.nsp-output,.kiosk-output) .station-dashboard{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.weather-station:is(.nsp-output,.kiosk-output) body main.shell .station-dashboard .station-temperature{font-size:min(calc(var(--station-body)*3),max(32px,38cqh))!important}


/* Approved station weather glyph: twenty percent above the shared reading size. */
html.weather-station:is(.nsp-output,.kiosk-output) .station-symbol{width:3.6em!important;height:3.6em!important;flex:0 0 3.6em!important;max-height:80%!important}
html.weather-station:is(.nsp-output,.kiosk-output) .station-readings{align-items:flex-start;text-align:left}

/* Portrait current conditions use their own panel area, shared by NSP and kiosk.
   Container width/height caps also protect narrow columns and short previews. */
html.weather-station:is(.nsp-output,.kiosk-output) .station-dashboard[data-station-shape="portrait"] .station-current{flex-direction:row;gap:4cqw}
html.weather-station:is(.nsp-output,.kiosk-output) body main.shell .station-dashboard[data-station-shape="portrait"] .station-temperature{font-size:min(20cqw,42cqh)!important}
html.weather-station:is(.nsp-output,.kiosk-output) .station-dashboard[data-station-shape="portrait"] .station-symbol{width:min(max(3.6em,17cqw),38cqh)!important;height:min(max(3.6em,17cqw),38cqh)!important;flex:0 0 min(max(3.6em,17cqw),38cqh)!important;max-height:100%!important}
html.weather-station:is(.nsp-output,.kiosk-output) .station-dashboard[data-station-shape="portrait"] .station-feels{font-size:min(max(1.2em,4.4cqw),14cqh);white-space:nowrap}
html.weather-station:is(.nsp-output,.kiosk-output) .station-dashboard[data-station-shape="portrait"] .station-condition{font-size:min(max(1em,3.4cqw),11cqh)}
