/* FBLTWX · the 7-day forecast page (/forecast/, Round K). Colors are np.css's and bands.css's variables only. */
.np-forecast{padding:22px 0 30px}
.np-forecast p a{text-decoration:underline;text-underline-offset:2px}   /* links in running text: not by color alone (Lighthouse link-in-text-block) */
.fc-updated{margin:4px 0 0}
.fc-src{font-size:14px;color:var(--ink3)}
.fc-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));column-gap:14px;row-gap:0;margin:12px 0 0}
.fc-day{border-top:4px solid var(--ink);background:#fff;padding:10px 14px 14px;min-width:0;margin:0 0 14px}
.fc-dname{margin:0;font-size:20px;font-weight:900;line-height:1.2}
.fc-date{font-size:14px;font-weight:700;color:var(--ink3)}
.fc-words{margin:6px 0 0;font-size:16px}
.fc-temps{margin:8px 0 0;font-size:16px;line-height:1.4}
.fc-temps>span{display:block}
.fc-temps>span+span{margin-top:2px}
.fc-temps b{font-size:22px;font-weight:900}
.fc-low b{font-size:19px}
/* model agreement (K3): the Ensembles tab's rating colors (np.css .qc-card: navy, its orange border, red) as a swatch; the
   word carries the meaning, in ink, red for Not sure as on that tab */
.fc-agree{margin:8px 0 0;font-size:15px}
.fc-agree b{font-weight:900}
.fc-agree b::before{content:"";display:inline-block;width:10px;height:10px;margin:0 6px 0 2px;background:var(--navy)}
.fc-agree.fair b::before{background:#e07b12}
.fc-agree.not b{color:var(--red)}
.fc-agree.not b::before{background:var(--red)}
.fc-split,.fc-judged{display:block;font-size:14px;color:var(--ink2)}   /* O-fu2: each part's judged spread and whose */
/* Outdoors (K11-K13): short labeled rows */
.fc-out{list-style:none;margin:8px 0 0;padding:6px 0 0;border-top:1px solid var(--rule);font-size:15px;line-height:1.35}
.fc-out li{margin:3px 0 0;display:grid;grid-template-columns:7.6em minmax(0,1fr);gap:8px}
.fc-out b{font-weight:800}
.fc-notes{margin:28px 0 0}   /* W-fu1: the key's fold, with no section bar */
@media (max-width:560px){
  .np-forecast{padding-top:14px}
  .fc-days{grid-template-columns:minmax(0,1fr)}
}
/* how it moved (K4): high warm, low cold, from the palette */
.fc-moved{margin:10px 0 0;border-top:1px solid var(--rule);padding-top:6px}
.fc-mv-h{margin:0;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2)}
.fc-mv{display:block;width:100%;max-width:300px;height:auto}
.fc-mv polyline{fill:none;stroke-width:2}
polyline.fc-mv-high{stroke:var(--warm)} circle.fc-mv-high{fill:var(--warm)}
polyline.fc-mv-low{stroke:var(--cold)} circle.fc-mv-low{fill:var(--cold)}
/* SVG units: the chart can draw as narrow as a 260 px card (scale 0.89), so 13.5 keeps its text 12 px or more (layout.py --text) */
.fc-mv-v{font-size:13.5px;font-weight:800;fill:var(--ink);text-anchor:end}
.fc-mv-v.end{text-anchor:start}
.fc-mv-x{font-size:13.5px;fill:var(--ink3);text-anchor:middle}
.fc-mv-x.now{font-weight:800;fill:var(--ink)}   /* O-fu4: the card's own forecast, the last point */
.fc-mv-s{margin:2px 0 0;font-size:14px}
/* O5 (7-Day 8): ours against the NWS's, a small table; a row K5 flags has words in its last cell and a warm left edge */
.fc-cmp{border-collapse:collapse;font-size:14px;margin:0}
.fc-cmp th,.fc-cmp td{padding:2px 10px 2px 0;text-align:left;font-weight:400}
.fc-cmp thead th{font-size:13px;font-weight:800;color:var(--ink3)}
.fc-cmp tbody th{font-weight:700}
.fc-cmp td:nth-child(2),.fc-cmp td:nth-child(3),.fc-cmp thead th:nth-child(2),.fc-cmp thead th:nth-child(3){font-variant-numeric:tabular-nums;text-align:right}
.fc-cmp tr.diff th{box-shadow:inset 3px 0 0 var(--warm);padding-left:6px}
.fc-cmp tr.diff b{font-weight:800}
.fc-why{margin:4px 0 0;font-size:14px;color:var(--ink2);max-width:40ch}
/* against normal and the co-op record (K6) */
.fc-normal{margin:8px 0 0}
.fc-nb{display:block;width:100%;max-width:280px;height:auto}   /* O4: a 240-unit drawing, 232 to 280 px */
.fc-nb-track{stroke:var(--rule);stroke-width:2}
.fc-nb-normal{fill:var(--slate-bg);stroke:var(--rule)}
.fc-nb-low{fill:var(--cold)} .fc-nb-high{fill:var(--warm)}
.fc-nb-c{stroke:var(--ink);stroke-width:2}
.fc-nb-rec{stroke:var(--ink);stroke-width:2}
.fc-rec{margin:4px 0 0;font-size:14px;font-weight:700}
/* rain (K7): the line, and the NWS hourly chance by part of the day; the shade is the site blue at rising strength */
.fc-rain,.fc-dry{margin:6px 0 0;font-size:15px}   /* O-fu6: a dry card's one line, in the bars' place */
.fc-tcap{margin:6px 0 0;font-size:13px;font-weight:700;color:var(--ink2)}   /* O-fu3: heads the bars on a card with no rain line */
.fc-timing{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font-size:13px}
/* O5 (7-Day 6): one row a part, its name, a bar as long as the chance, the chance; rows, so a name never clips */
.fc-timing li{display:grid;grid-template-columns:5.6em minmax(0,1fr) 3.2em;align-items:center;gap:6px}
.fc-timing .n{font-weight:700;color:var(--ink2)}
.fc-timing .b{height:10px;background:var(--slate-bg);outline:1px solid var(--rule);outline-offset:-1px}
.fc-timing .b i{display:block;height:100%;background:var(--blue2)}
.fc-timing b{font-size:14px;font-weight:900;text-align:right}
/* the week ribbon (K8; labeled in Round O7): palette colors only. The drawing stretches to the plot's width at a fixed
   240 px at every width (7-Day 2: its rows hold labels); everything written is HTML over it at its real size: the axes'
   numbers in the gutters, each full day's high and low at their points, the bands' names in their rows, "Night", and the
   day names above it (7-Day 21, 22). No legend. */
.fc-week{margin:18px 0 0}
.fc-rb-wrap{position:relative;margin:6px 46px 0 40px;padding-top:24px}   /* the gutters: °F, %, mph left; in. right */
.fc-rb-days{position:absolute;left:0;right:0;top:0;height:24px}
.fc-rb-days span{position:absolute;top:2px;display:grid;justify-items:center;font-size:13px;line-height:1.15;color:var(--ink2);font-weight:700}
.fc-rb-days span.end{justify-items:end}      /* today's sliver: its name hangs left into the gutter */
.fc-rb-days span.start{justify-items:start}  /* the last day's sliver: right */
.fc-rb-days b{font-size:14px;font-weight:900;color:var(--ink);white-space:nowrap}
.fc-rb-area{position:relative;height:240px;background:#fff}
.fc-rb{display:block;width:100%;height:240px}
.fc-rb *{vector-effect:non-scaling-stroke}
.fc-rb-night{fill:var(--slate-bg)}
.fc-rb-mid{stroke:var(--rule);stroke-width:1}
.fc-rb-grid{stroke:var(--rule);stroke-width:1;stroke-dasharray:2 4}
.fc-rb-base{stroke:var(--ink3);stroke-width:1}
.fc-rb-temp{fill:none;stroke:var(--warm);stroke-width:2.5;stroke-linejoin:round}
.fc-rb-pop{fill:var(--blue2);opacity:.28}
.fc-rb-qpf{fill:var(--navy)}
.fc-rb-wind{fill:none;stroke:var(--slate);stroke-width:2}
.fc-rb-gust{fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:0 7}
.fc-rb-marks{position:absolute;inset:0;pointer-events:none}
.fc-rb-marks span{position:absolute;font-size:12px;line-height:1;white-space:nowrap}
.fc-rb-marks .m-y{transform:translate(calc(-100% - 6px),-50%);font-weight:700;color:var(--ink2)}     /* the left axis */
.fc-rb-marks .m-y2{transform:translate(6px,-50%);font-weight:700;color:var(--ink2)}                  /* the right axis */
.fc-rb-marks .m-hi{transform:translate(-50%,calc(-100% - 4px));font-size:13px;font-weight:900;color:var(--warm)}
.fc-rb-marks .m-lo{transform:translate(-50%,5px);font-size:13px;font-weight:900;color:var(--ink)}
.fc-rb-marks .m-title{left:4px!important;font-weight:800;color:var(--ink2);transform:translateY(-15%)}
.fc-rb-marks .m-night{transform:translateY(3px);font-weight:700;color:var(--ink3)}
@media (max-width:560px){
  .fc-rb-days span{font-size:11px}
  .fc-rb-days b{font-size:12px}
}
/* severe and winter (K9) */
.fc-severe,.fc-winter{margin:8px 0 0;font-size:15px;font-weight:700}
.fc-severe.high{border-left:4px solid var(--red);padding-left:8px}
.fc-severe.fc-quiet{font-weight:400;color:var(--ink2)}      /* O14: a quiet day in SPC's own terms */
.fc-severe a,.fc-winter a{font-size:14px;margin-left:4px}
/* best and worst day (K10): the best in the home page's nicest-day gold */
.fc-picks{margin:14px 0 0;display:grid;gap:6px}
/* O10 (7-Day 1): the week's story, the page's first sentence */
.fc-story{margin:0;max-width:760px;font-size:18px;font-weight:700;line-height:1.4}
/* O11 (7-Day 23 and 29): the week's rain under the story; the weekend's two columns */
.fc-wkrain{margin:0;max-width:760px;font-size:16px}
.fc-wkend{margin:22px 0 0}
.fc-wk{border-collapse:collapse;font-size:15px;margin:10px 0 0}
.fc-wk th,.fc-wk td{padding:4px 18px 4px 0;text-align:left;vertical-align:top;font-weight:400}
.fc-wk thead th{font-weight:800}
.fc-wk thead .fc-date{font-weight:400;color:var(--ink3);font-size:13px;white-space:nowrap}
.fc-wk tbody th{font-weight:700;color:var(--ink2);white-space:nowrap}
.fc-wk td{font-variant-numeric:tabular-nums}
.fc-wk .fc-nw{white-space:nowrap}   /* O-fu12: the wind breaks only at its comma */
/* O-fu12: two whole wind pieces ("SSW 10 to 15 mph,") and the labels don't fit 390 at 15 px (the table was 414 px wide),
   so on a phone the table is 14 px with 8 px gaps and a label may wrap ("Low that / night"); a question for Travis */
@media (max-width:480px){
  .fc-wk{font-size:14px}
  .fc-wk th,.fc-wk td{padding-right:8px}
  .fc-wk tbody th{white-space:normal;min-width:5.6em}
}
.fc-wkend .fc-best{margin:10px 0 0;max-width:760px}
/* O13 (7-Day 26): what changed since the last logged update */
.fc-changed{margin:0;padding:6px 10px;border-left:4px solid var(--rule);font-size:15px}
.fc-ch-h{margin:0;font-weight:700}
.fc-changed ul{margin:4px 0 0;padding-left:18px}
.fc-changed li{margin:2px 0 0}
.fc-best,.fc-worst{margin:0;padding:6px 10px;font-size:16px;font-weight:700}
.fc-best{background:var(--nice-bg);border-left:4px solid var(--nice);color:var(--ink)}
.fc-worst{background:var(--slate-bg);border-left:4px solid var(--slate)}
/* the Moon row's link to /night/ (Round L7) */
.fc-night{font-size:14px;text-decoration:underline;text-underline-offset:2px;margin-left:4px}
/* ---------- Round O2: the restyle (data-page="forecast": orange bars with ink labels, np.css), the week chart's finding,
   the key (np.css .np-keylist) and the method, closed. Round W-fu1 (Oct. 17, 2026): the key is a closed fold at the
   page's foot in the day cards' panel style (white, a 4 px ink top rule; it was np.css's pink .np-sidebox), its line
   48 px tall with a "›" that turns down when open; forecast.js opens it from the day bar's "Key" ---------- */
.fc-find{margin:0;font-size:19px;font-weight:900;line-height:1.3}
.fc-rb-src{margin:2px 0 0}
.fc-key{background:#fff;border-top:4px solid var(--ink);padding:0 14px}
.fc-key[open]{padding-bottom:14px}
.fc-key>summary{min-height:48px;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:17px;font-weight:900;list-style:none}
.fc-key>summary::-webkit-details-marker{display:none}
.fc-key[open] .fc-key-go{transform:rotate(90deg)}
.fc-key>p.np-small{margin:0;color:var(--ink2)}
.fc-key dl{margin:10px 0 0;columns:300px 3;column-gap:28px}
.fc-keyrow{break-inside:avoid;margin:0 0 14px;min-width:0}
.fc-key dt{font-size:16px;font-weight:900}
.fc-key dd{margin:4px 0 0}
.fc-key dd>p{margin:4px 0 0}
.fc-key dd>p.np-small{font-size:14px;color:var(--ink2)}
.fc-key .fc-agree,.fc-key .fc-vs,.fc-key .fc-rain,.fc-key .fc-dry{margin:2px 0 0}
.fc-keybar .sw.k-normal{--sw:var(--slate-bg);outline:1px solid var(--rule);outline-offset:-1px}
.fc-keybar .sw.k-low{--sw:var(--cold)} .fc-keybar .sw.k-high{--sw:var(--warm)}
.fc-keybar .sw.k-c,.fc-keybar .sw.k-rec{--sw:var(--ink)}
.fc-keybar .sw.k-c{width:3px;height:14px}
.fc-method{margin:16px 0 0}
.fc-method summary{min-height:44px;display:flex;align-items:center;font-size:16px;font-weight:800;cursor:pointer}
.fc-method p{margin:6px 0 0;max-width:80ch;font-size:14px;color:var(--ink2)}
/* Round O3: the stamps (np.css .np-stamp): "Updated" is the newest input's own time; each older input has its own line */
.fc-updated{margin:4px 0 0}
.fc-times{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:0 18px}
.fc-times .np-stamp{margin:2px 0}
.fc-weekin>.np-stamp{margin:2px 0 0}
/* ---------- Round O4: cards that line up. Each card is a subgrid of .fc-days, one row track per slot (forecastpage.SLOTS,
   12), so a slot sits at the same height across a row of cards at 768 and 1440; an empty slot keeps its track, empty. ---------- */
.fc-day{display:grid;grid-row:span 12;grid-template-rows:subgrid;row-gap:0;align-content:start}
@supports not (grid-template-rows:subgrid){ .fc-day{display:block;grid-row:auto} }
.fc-s{min-width:0}
.fc-s:not(:empty){padding-top:8px}
.fc-s-head:not(:empty){padding-top:0}
.fc-s>:first-child{margin-top:0}
/* M3's icons beside the NWS's words (7-Day 14) */
.fc-ic{display:inline-block;flex:none;width:36px;height:36px;margin-right:8px;vertical-align:middle}
.fc-ic svg{display:block;width:100%;height:100%}
.fc-words{display:flex;align-items:center;flex-wrap:wrap;gap:4px 0}
.fc-low .fc-ic{width:26px;height:26px;margin-right:6px}
.fc-d7{font-size:15px;color:var(--ink2)}
.fc-norm{display:block;font-size:15px;color:var(--ink2)}   /* 7-Day 16, its own line under the high */
/* the bar's labels (7-Day 4): SVG text at 13.5 units, 12 px or more on the narrowest card */
.fc-nb-t{font-size:13.5px;font-weight:700;fill:var(--ink2)}
.fc-nb-t.end{text-anchor:end}
.fc-nb-t.c{text-anchor:middle;font-weight:900;fill:var(--ink)}
/* the record badge (7-Day 15): the full sentence is its title and, for screen readers, its text */
.fc-badge{display:inline-block;margin:4px 6px 0 0;padding:1px 8px;border:2px solid var(--ink);font-size:13px;font-weight:800;line-height:1.4}
/* wind (7-Day 13) */
.fc-wind{margin:0;font-size:15px}
/* the Today card (7-Day 11): the NWS's periods left today */
.fc-today{border-top-color:var(--page,var(--ink))}
.fc-left{display:block;font-size:14px;font-weight:700;color:var(--ink3)}
.fc-part{display:flex;align-items:center;width:100%}
/* ---------- Round O8: fold, stick and promote ---------- */
/* the bus stop (7-Day 20): its own row at the top of that morning's card, highlighted as the home page's bus line */
.fc-bus{margin:0;padding:6px 10px;background:var(--t70);color:var(--ink);font-size:15px;font-weight:700}
.fc-bus b{font-weight:900}
/* Plans and sky (7-Day 5): the planner rows in a closed details; the summary names anything notable */
.fc-plans{border-top:1px solid var(--rule)}
.fc-plans summary{min-height:44px;display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;cursor:pointer;font-size:15px}
.fc-plans summary b{font-weight:900}
.fc-note{font-size:14px;color:var(--ink2)}
.fc-plans .fc-out{border-top:0;margin-top:0;padding-top:0}
/* the day bar (7-Day 25): np.css .np-sticky; at 390 its links scroll inside it */
.fc-daybar{margin:0 0 10px}
/* Round O9 (7-Day 17): the first-freeze callout at the top, until a freeze is observed (cold blue, the frost color) */
.fc-freeze{margin:14px 0 0;padding:8px 12px;background:var(--wk);border-left:6px solid var(--cold)}
.fc-freeze p{margin:0;font-size:16px;line-height:1.4}
.fc-freeze p+p{margin-top:2px}
.fc-freeze b{font-weight:900}
.fc-freeze .np-small{font-size:14px}
/* O15 (7-Day 7): the week as a table. ?view=table shows it in place of the cards (forecast/index.html's SSI wraps it in
   .fc-tv); in the default view it's in the page for print only. */
.fc-tablesec,.fc-tview{display:none}
.fc-tv .fc-tablesec{display:block;margin:22px 0 0}
.fc-tv .fc-tview{display:block;margin:8px 0 0}
.fc-twrap{overflow-x:auto}
.fc-tbl{border-collapse:collapse;width:100%;min-width:700px;margin:10px 0 0;font-size:14px;font-variant-numeric:tabular-nums}
.fc-tbl th,.fc-tbl td{padding:6px 12px 6px 0;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule);font-weight:400}
.fc-tbl thead th{font-size:13px;font-weight:800;color:var(--ink3)}
.fc-tbl tbody th,.fc-tbl td{white-space:nowrap}
.fc-tbl tbody th{font-weight:700}
.fc-tbl .fc-date{font-weight:400;color:var(--ink3)}
/* O-fu14 (Travis, Oct. 14, 2026): under 700 px the table scrolls inside .fc-twrap; the Day column stays put (the report
   card's way, .rc-table; its rule inset, which a collapsed table draws), the rest sliding under it */
.fc-tbl tbody th,.fc-tbl thead th:first-child{position:sticky;left:0;z-index:1;background:var(--paper);box-shadow:inset -1px 0 0 var(--rule)}
@media print{
  .fc-daysec{display:none!important}
  .fc-tablesec{display:block!important}
  .fc-twrap{overflow:visible}
  .fc-tbl{min-width:0}
  .fc-tbl tbody th,.fc-tbl thead th:first-child{position:static;box-shadow:none}
}
