/* FBLTWX · /winter/ (Round I, 2026-10-07). Loaded after np.css; colors from its :root variables only. */
.np-winter{padding:20px 0 30px}
/* the lines under the H1 (Round N2, winterpage.top_html): the off-season banner, what comes next, the recap */
.wn-top{max-width:760px}
.wn-banner{margin:6px 0 12px;padding:10px 14px;border:2px solid var(--page);border-left-width:8px;background:#fff;font-size:17px;line-height:1.4}
.wn-lead{margin:8px 0 0;font-size:19px;font-weight:700;line-height:1.35}
.wn-recap{margin:6px 0 0;font-size:16px;line-height:1.45;color:var(--ink2)}
/* each section opens with its bar (np.css .np-secbar, Round N1) and its stamp (.np-stamp) */
.wn-sec{margin:0}
.wn-sec .np-stamp{margin:-4px 0 8px}
.wn-how{max-width:760px;margin:36px 0 0}
.wn-linklist{list-style:none;margin:0;padding:0;display:grid;gap:6px}   /* When it snows (Round N11): links only */
.wn-links+.wn-how{margin-top:16px}
.wn-note{margin:8px 0 0}
.wn-quiet{margin:4px 0 0;font-size:16px;color:var(--ink2)}
/* Until winter.js has drawn (html.wn-drawn), the worker's api/ssr/winter-hold.html shows the sections that have data and
   keeps their drawn height (data-wait); without JavaScript the hold lets go after 10 seconds. */
.wn-sec[data-wait]{animation:wn-unwait 0s 10s forwards}
@keyframes wn-unwait{to{min-height:0}}

/* the season's four tiles (#season, Round N4, Winter 3: winterpage.tiles): the number big, the label small. Every tile is
   the same height (grid rows of 1fr) and keeps room for its longest line (2 lines wide, 3 on phones), so new numbers
   never change a tile's height; the label and the number never wrap. */
.wn-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;gap:12px;margin:0;padding:0;list-style:none}
.wn-tile{padding:10px 12px 12px;background:#fff;border:1px solid var(--rule);border-top:5px solid var(--slate)}
.wn-tile .k{display:block;font-size:13px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);white-space:nowrap}
.wn-tile .v{display:block;font-size:28px;font-weight:900;line-height:1.15;white-space:nowrap}
.wn-tile .s{display:block;min-height:2.7em;font-size:13px;line-height:1.35;color:var(--ink3)}
.wn-tiles3{grid-template-columns:repeat(3,minmax(0,1fr))}   /* the cold recap (Round N13): three tiles */
@media (max-width:899px){ .wn-tiles{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .wn-tile{padding:8px 10px 10px} .wn-tile .v{font-size:25px} .wn-tile .s{min-height:4.05em} }
@media (max-width:560px){ .np-winter .mp-title{font-size:32px} .wn-lead{font-size:17px} .wn-banner{font-size:16px} }

/* the season chart (#season, Round N5: winterpage.chart_svg draws it, flat, in the raw HTML). Three sizes, each shown
   where it draws at about its own size, so its 13 px words stay 12 px or more: wide from 900 px, mid from 561 to 899,
   phone to 560. Each svg's width and height keep its room (no shift). Bands: the middle 80% (--wk) and the middle half
   (--close5) of the complete seasons; this season in navy (4.7:1 on the darker band); the normal dashed in ink. */
.wn-gauge{margin:10px 0 0}
.wn-chart{margin:14px 0 0}
.wn-fig{margin:16px 0 0}
.wn-ctitle{margin:0 0 6px;font-size:17px;font-weight:800;line-height:1.3}
.wn-svg{display:none;width:100%;height:auto;overflow:visible}
.wn-svg.wide{display:block;max-width:760px}
@media (max-width:899px){ .wn-svg.wide{display:none} .wn-svg.mid{display:block;max-width:540px} }
@media (max-width:560px){ .wn-svg.mid{display:none} .wn-svg.phone{display:block;max-width:440px} }
.wn-grid{stroke:var(--rule);stroke-width:1}
.wn-ax{font-size:13px;fill:var(--ink3)}
.wn-b80{fill:var(--wk)}
.wn-b50{fill:var(--close5)}
.wn-normal{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:6 4}
.wn-this{fill:none;stroke:var(--navy);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round}
.wn-thisdot,.wn-jumpdot{fill:var(--navy);stroke:var(--paper);stroke-width:2}
.wn-unrep{stroke:var(--red-text);stroke-width:2}   /* a co-op day with no report (Round N3, Winter 17) */
.wn-lab{font-size:13px;fill:var(--ink2);font-weight:700}
.wn-svg .wn-lab{fill:var(--ink)}
.wn-svg .wn-lab-this{fill:var(--navy);font-weight:900}
.wn-svg .wn-lab-band{fill:var(--ink2);font-weight:600}
.wn-halo{paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round}
.wn-cap{margin:6px 0 0}
/* the compare picker (Round N15): a labeled select and Copy link; the other season's line in red text, solid */
.wn-picker{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0 0 8px}
.wn-picker label{font-size:15px;font-weight:700}
.wn-picker select{min-height:44px;max-width:100%;padding:0 8px;border:2px solid var(--ink);background:#fff;color:var(--ink);font:600 15px 'Libre Franklin','LF Fallback','LF Fallback Roboto',system-ui,sans-serif}
.wn-cmp{fill:none;stroke:var(--red-text);stroke-width:2.5;stroke-linejoin:round}
.wn-svg .wn-lab-cmp{fill:var(--red-text);font-weight:800}
.wn-cap span{display:block}
.wn-mo{text-anchor:start}

/* wind chill (#cold, I4) */
.wn-wc{fill:none;stroke:var(--cold);stroke-width:3;stroke-linejoin:round}
.wn-wcdot{fill:var(--cold);stroke:#fff;stroke-width:2}
.tc-grid.wn-zero{stroke:var(--ink);opacity:.8}
.wn-frost{margin:8px 0 0;padding:8px 12px;border-left:5px solid var(--cold);background:var(--slate-bg);font-size:16px;max-width:760px}
.wn-frost.m10{border-left-color:var(--navy)}
.wn-frost.m5{border-left-color:var(--red)}
/* the frostbite table (Round N12): the NWS chart's three bands, a swatch each from light to dark; the forecast's row marked */
.wn-frosttab{margin-top:14px;max-width:560px}
/* Round N-fu4: no frostbite risk in the next 72 hours: the table folded (the summary a 44 px tap target, as /night/'s log) */
.wn-more{margin:4px 0 0;max-width:560px}
.wn-more summary{font-weight:800;cursor:pointer;padding:11px 0}
.wn-more .wn-frosttab{margin-top:4px}
.wn-frosttab caption{caption-side:top;text-align:left;padding:0 0 6px;font-size:15px;font-weight:800;color:var(--ink)}
.wn-fsw{display:inline-block;width:12px;height:12px;margin-right:8px;vertical-align:-1px;border:1px solid var(--ink)}
.wn-fsw.m30{background:var(--wk)} .wn-fsw.m10{background:var(--close5)} .wn-fsw.m5{background:var(--navy)}
.wn-frosttab tr.is-now th,.wn-frosttab tr.is-now td{background:var(--slate-bg)}
.wn-fnow{display:block;color:var(--red-text)}

/* precipitation type (#types, I5): palette colors, each with its own pattern and a text label (never color alone) */
.ty-snow{fill:var(--slate)} .ty-rain{fill:var(--blue)} .ty-sleet{fill:var(--navy)} .ty-mix{fill:var(--cold)} .ty-fzra{fill:var(--red)}
.ty-none{fill:var(--slate-bg)}
.ty-lab{font-size:13px;font-weight:900;fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:3px}
.ty-tick{stroke:var(--ink);stroke-width:1}
.ty-time{text-anchor:start}
.tc-x.end{text-anchor:end}   /* an hour label at a chart's right end (I-fu6) */
.wn-runs{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;font-size:15px}
.wn-runs li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wn-sw svg{display:block;border:1px solid var(--ink)}
.wn-tot{margin-top:10px}

/* snow stake (#stake, I6) */
.wn-stake{margin:0;max-width:760px}
.wn-stake img{display:block;width:100%;height:auto;border:1px solid var(--rule)}
.wn-stakestrip{list-style:none;margin:10px 0 0;padding:0 0 4px;display:flex;gap:8px;overflow-x:auto}
.wn-stakestrip li{flex:0 0 120px}
.wn-stakestrip img{display:block;width:120px;height:auto;border:1px solid var(--rule)}

/* history, firsts (#history I8, #firsts I9) */
.wn-h4{margin:16px 0 6px;font-size:17px;font-weight:900}
.wn-h4:first-child{margin-top:0}
.wn-lines{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:16px;max-width:880px}
.wn-table{min-width:0;width:auto}
/* the biggest snowstorms (#history, Round N6, Winter 7): the full width; each storm's inches, then a flat bar to scale
   (the table's biggest storm fills the track) */
.wn-storms{width:100%}
/* Round N14: the season's storms beside the all-time list (stacked under 900 px); the last 10 winters and the record book */
.wn-storms2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 28px}
@media (max-width:899px){ .wn-storms2{grid-template-columns:minmax(0,1fr)} }
.wn-track{position:relative}
.wn-normmark{position:absolute;top:-3px;bottom:-3px;width:0;border-left:2px dashed var(--ink)}
.wn-recent tr.wn-sofar th,.wn-recent tr.wn-sofar td{border-top:6px solid var(--paper);padding-top:10px}
.wn-recent tr.wn-sofar .wn-bar{background:var(--close5);outline:1.5px solid var(--navy);outline-offset:-1.5px}
.wn-book{margin-top:22px}
.wn-bookgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 24px}
@media (max-width:899px){ .wn-bookgrid{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:560px){ .wn-bookgrid{grid-template-columns:minmax(0,1fr)} }
.wn-bookcard h4{margin:0 0 4px;font-size:15px;font-weight:900}
.wn-bookcard ol{margin:0;padding-left:22px;font-size:15px;line-height:1.5}
.wn-storms th[scope=row]{white-space:nowrap}
@media (max-width:359px){ .wn-storms th[scope=row],.wn-tile .k{white-space:normal} }   /* N-fu80: under 360 px a storm's dates and a tile's kicker wrap (at 320 "Jan. 21-25, 1982" and "Nights below zero" ran 19 px past the edge) */
.wn-storms .wn-snow{width:60%}
.wn-barrow{display:flex;align-items:center;gap:10px}
.wn-barv{flex:none;width:4.4em;text-align:right;font-variant-numeric:tabular-nums}
.wn-track{flex:1;min-width:40px}
.wn-bar{display:block;height:14px;background:var(--slate)}
@media (max-width:560px){ .wn-storms .wn-snow{width:50%} .wn-barrow{gap:6px} }
.wn-table td,.wn-table th{text-align:left}
/* snow by month (#months, Round N9: winterpage.months_svg): the season's bars in navy, the month under way lighter with a
   navy edge; each month's normal a line across its slot */
.wn-mbar{fill:var(--navy)}
.wn-mbar.so-far{fill:var(--close5);stroke:var(--navy);stroke-width:1.5}
.wn-mnorm{stroke:var(--ink);stroke-width:3}
.wn-days{margin-top:10px}
/* the milestones (#firsts, Round N8: winterpage.firsts_html): the first-snow tracker, then a timeline in order of the
   typical dates, each with this season's date and its station */
.wn-tracker{margin:0 0 16px}
.wn-tracker .wn-svg{margin-top:6px}
.wn-fsdot{fill:var(--navy)}
.wn-typ{stroke:var(--ink);stroke-width:2;stroke-dasharray:4 3}
.wn-today{stroke:var(--red-text);stroke-width:2}
.wn-timeline{list-style:none;margin:0 0 0 6px;padding:0;border-left:3px solid var(--rule);max-width:880px}
.wn-timeline li{position:relative;display:grid;grid-template-columns:5.2em minmax(0,1fr);gap:2px 12px;padding:8px 0 10px 16px}
.wn-timeline li::before{content:"";position:absolute;left:-10px;top:12px;width:11px;height:11px;border-radius:50%;background:var(--paper);border:3px solid var(--navy)}
.wn-tl-when{font-weight:800;font-variant-numeric:tabular-nums}
.wn-tl-what b{display:block;font-weight:800}
.wn-tl-this{display:block;color:var(--ink)}
.wn-tl-more{display:block;font-size:13px;line-height:1.4;color:var(--ink3)}
.wn-streaks{margin-top:12px}

/* heating degree days (#heating, I13) */
.wn-hdd{fill:var(--slate)}
.wn-hddn{stroke:var(--ink);stroke-width:2}


/* Round N17: "How rain becomes snow, sleet or freezing rain" (server/app/illo.py, the Round M10 kit). One drawing of the
   four steps when the figure is at least 760 px wide (its captions in a row under their panels: the axis strip is 74
   of its 760 units); narrower, the four panels stack, each with its caption. Every color a token; gradients only in
   .illo (unique ids). The drawings never shrink, so their labels never draw under their 12 and 13 px (Travis, Oct. 16,
   2026: the one drawing scaled to 688 px at 768 put "10,000 ft." at 10.9 px): the wide one shows only at its own width
   or more (a container query on the figure, since the page's columns set its width), and each stacked panel is 300 px,
   scrolling sideways inside its own step below that. Browsers without container queries keep the 560 px switch. */
.wn-more.wn-pt{max-width:900px}
.wn-pt summary{font-weight:800}
.wn-pt-fig{margin:6px 0 0;max-width:900px;container-type:inline-size}
.wn-pt-fig svg{display:block;width:100%;height:auto}
.wn-pt-fig svg.wn-pt-narrow{display:none}
.wn-pt-steps{display:grid;grid-template-columns:repeat(4,1fr);margin:8px 0 0 9.737%;padding:0;list-style:none}
.wn-pt-steps li{padding:0 8px 0 0;margin:0}
.wn-pt-steps p{margin:0;font-size:15px;line-height:1.4;color:var(--ink)}
.wn-pt-key{margin:10px 0 0;color:var(--ink2)}
@container (max-width:759.98px){
  .wn-pt-fig svg.wn-pt-wide{display:none}
  .wn-pt-steps{display:block;margin:4px 0 0}
  .wn-pt-steps li{padding:0;margin:0 0 16px;overflow-x:auto}
  .wn-pt-fig svg.wn-pt-narrow{display:block;width:300px;max-width:none;margin:0 0 6px}
}
@supports not (container-type:inline-size){ @media (max-width:560px){
  .wn-pt-fig svg.wn-pt-wide{display:none}
  .wn-pt-steps{display:block;margin:4px 0 0}
  .wn-pt-steps li{padding:0;margin:0 0 16px}
  .wn-pt-fig svg.wn-pt-narrow{display:block;max-width:300px;margin:0 0 6px}
} }
.il-s-cold-fill{stop-color:var(--cold)} .il-s-cold-edge{stop-color:var(--navy)}
.il-s-warm-fill{stop-color:var(--warm)} .il-s-warm-edge{stop-color:var(--red-text)}
.il-s-moist-fill{stop-color:var(--moist)} .il-s-moist-edge{stop-color:var(--slate)}
.il-paper{fill:var(--paper)}
.il-tick{stroke:var(--ink3);stroke-width:1}
.il-axis{font-family:inherit;font-size:12px;font-weight:700;fill:var(--ink2);text-anchor:end}
.il-ground{fill:var(--ground)}
.il-glass{stroke-width:1.5}
.il-glass.il-cold{fill:var(--illo-cold-soft);fill-opacity:.7;stroke:var(--illo-cold)}
.il-glass.il-warm{fill:var(--illo-warm-soft);fill-opacity:.8;stroke:var(--illo-warm)}
.il-frz{fill:none;stroke:var(--red);stroke-width:2.4;stroke-linecap:round}
.il-flake{fill:none;stroke:var(--navy);stroke-width:1.7;stroke-linecap:round}
.il-drop{fill:var(--blue);stroke:var(--navy);stroke-width:.8}
.il-refreeze .il-drop{fill:var(--illo-cold-soft)}
.il-pellet{fill:#fff;stroke:var(--navy);stroke-width:1.4}
.il-snow{fill:#fff;stroke:var(--slate);stroke-width:1}
.il-glaze{fill:var(--illo-cold-soft);stroke:var(--cold);stroke-width:1} .il-glaze-sheen{stroke:#fff;stroke-width:1.2}
.il-water{fill:var(--illo-cold);stroke:var(--cold);stroke-width:1}

.il-divide{stroke:#fff;stroke-width:2;opacity:.85}
