:root {
  --bg: #ffffff;
  --fg: #0b0d10;
  --fg-2: #374151;
  --muted: #5b616e;
  --line: #e5e7eb;
  --line-strong: #0b0d10;
  --soft: #f6f7f9;
  --accent: #0057ff;
  --bar: #a9c1ee;
  --warn: #d4380d;
  --caution: #b26b00;
  --good: #0b8a5f;
  --sans: "Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  color-scheme: light;
}

* { box-sizing: border-box; border-radius: 0; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 15px/1.5 var(--sans); -webkit-font-smoothing: antialiased; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font: inherit; color: inherit; }
.wrap { max-width: 1160px; margin: 0 auto; padding: 0 16px; }
.icon { width: 1.1em; height: 1.1em; flex: none; vertical-align: -0.18em; stroke-width: 1.5; }
.mono { font-family: var(--mono); }
.muted { color: var(--muted); }
.label { font: 500 11.5px/1.35 var(--mono); letter-spacing: 0.05em; text-transform: uppercase; color: #5b616b; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; animation: none !important; } }

/* ---------- nav ---------- */
.nav { position: sticky; top: 0; z-index: 1000; background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(8px); border-bottom: 1px solid var(--line); }
.nav-inner { display: flex; align-items: center; gap: 24px; height: 56px; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--fg); font: 600 15px var(--sans); letter-spacing: 0.16em; text-transform: uppercase; }
.brand:hover { text-decoration: none; }
.brand svg { width: 24px; height: 24px; }
.navlinks { display: flex; gap: 20px; margin-left: auto; }
.navlinks a { color: var(--muted); font-size: 13px; font-weight: 500; }
.navlinks a:hover { color: var(--fg); text-decoration: none; }
@media (max-width: 680px) {
  .nav-inner { flex-wrap: wrap; height: auto; row-gap: 0; padding-top: 10px; }
  .nav .jump-select { margin-left: auto; }
  .navlinks { order: 3; width: 100%; margin: 0; gap: 18px; overflow-x: auto; white-space: nowrap; scrollbar-width: none; padding: 9px 0 10px; -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent); }
  .navlinks::-webkit-scrollbar { display: none; }
  .wu-tabs { -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); mask-image: linear-gradient(90deg, #000 85%, transparent); }
}
section[id], .block { scroll-margin-top: 104px; }

.seg { display: inline-flex; border: 1px solid var(--line); }
.seg button { border: 0; background: transparent; padding: 5px 10px; cursor: pointer; font: 500 11px var(--mono); letter-spacing: 0.04em; color: var(--muted); display: inline-flex; align-items: center; gap: 6px; text-transform: uppercase; }
.seg button + button { border-left: 1px solid var(--line); }
.seg button[aria-pressed="true"] { background: var(--fg); color: var(--bg); }
.seg .icon { width: 14px; height: 14px; }
.toggle { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line); background: transparent; padding: 5px 10px; font: 500 11px var(--mono); letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); cursor: pointer; }
.toggle .icon { width: 14px; height: 14px; }
.toggle[aria-pressed="true"] { border-color: var(--accent); color: var(--accent); }

/* ---------- hero ---------- */
.hero { padding-top: 24px; }
.meta { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); padding-bottom: 10px; }
.headline h1 { font: 600 clamp(24px, 3vw, 32px)/1.15 var(--sans); letter-spacing: -0.025em; margin: 16px 0 8px; }
.headline p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--fg-2); max-width: 90ch; }
.kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-top: 26px; }
.kpi { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; background: none; border: 0; border-left: 1px solid var(--line); padding: 14px 16px 16px; cursor: pointer; min-height: 108px; }
.kpi:first-child { border-left: 0; padding-left: 0; }
.kpi:hover:not([disabled]) .kpi-value { color: var(--accent); }
.kpi[disabled] { cursor: default; }
.kpi-value { font: 500 clamp(26px, 4vw, 40px)/1.1 var(--mono); letter-spacing: -0.05em; margin-top: 6px; transition: color 0.12s; }
.kpi-value i { font: 400 13px var(--mono); color: var(--muted); font-style: normal; margin-left: 4px; letter-spacing: 0; }
.kpi-sub { font-size: 13px; color: var(--fg-2); }
@media (max-width: 520px) { .kpi { padding: 12px 10px; min-height: 96px; } .kpi:first-child { padding-left: 0; } .kpi .label { font-size: 10px; } .kpi-sub { font-size: 12px; } }
.status { margin: 10px 0 0; }

/* ---------- blocks ---------- */
.block { margin-top: 48px; }
.block-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px 16px; flex-wrap: wrap; border-bottom: 1px solid var(--line-strong); padding-bottom: 8px; }
.block-head h2 { margin: 0; font: 600 18px var(--sans); letter-spacing: -0.015em; }
.block-tools { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* powder picks */
.picks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
@media (max-width: 760px) { .picks { grid-template-columns: 1fr; } }
.pick { display: grid; grid-template-columns: 52px 1fr; gap: 4px 14px; align-items: center; padding: 14px 0; border: 0; border-bottom: 1px solid var(--line); background: none; text-align: left; cursor: pointer; width: 100%; }
.pick:hover b { color: var(--accent); }
.score { grid-row: span 2; width: 52px; height: 52px; display: grid; place-items: center; border: 1px solid var(--fg); font: 500 22px var(--mono); letter-spacing: -0.04em; }
.score[data-tier="3"] { background: var(--fg); color: var(--bg); }
.pick b { font-size: 16px; font-weight: 600; transition: color 0.12s; }
.pick .detail-line { font: 400 11.5px/1.5 var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: 0.03em; }
.meter-line { grid-column: 2; height: 3px; background: var(--line); }
.meter-line i { display: block; height: 100%; background: var(--accent); }
.empty { padding: 28px 0; color: var(--muted); border-bottom: 1px solid var(--line); }

/* toolbar */
.search { display: flex; align-items: center; gap: 6px; border: 1px solid var(--line); padding: 0 8px; height: 30px; }
.search:focus-within { border-color: var(--fg); }
.search .icon { color: var(--muted); width: 14px; height: 14px; }
.search input { border: 0; outline: 0; background: transparent; font: 13px var(--sans); color: var(--fg); width: 140px; }
.select { height: 30px; border: 1px solid var(--line); background: var(--bg); font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; padding: 0 6px; color: var(--fg); }
.filters { display: flex; gap: 0; overflow-x: auto; border-bottom: 1px solid var(--line); scrollbar-width: none; }
.filters::-webkit-scrollbar { display: none; }
.chip { flex: none; border: 0; background: none; padding: 10px 12px; font: 500 12px var(--mono); letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; gap: 5px; align-items: center; }
.chip:first-child { padding-left: 0; }
.chip .icon { width: 12px; height: 12px; }
.chip[aria-pressed="true"] { color: var(--fg); border-bottom-color: var(--fg); }

/* resort rows: name, 7-day total, one column per day, save */
.rows-head, .row { display: grid; grid-template-columns: minmax(150px, 0.9fr) 76px minmax(0, 2.4fr) 64px; gap: 0 16px; align-items: center; }
.rows-head { padding: 10px 0 8px; border-bottom: 1px solid var(--line); }
.rows-head .r-num { text-align: right; white-space: nowrap; }
.day-axis { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; }
.row { padding: 12px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.row:hover .r-name b { color: var(--accent); }
.r-name { min-width: 0; }
.r-name b { display: inline; font-size: 15px; font-weight: 600; transition: color 0.12s; }
.r-name small { display: block; font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.r-num { text-align: right; font-family: var(--mono); }
.r-num b { display: block; font: 500 22px/1.1 var(--mono); letter-spacing: -0.04em; }
.r-num small { font-size: 11px; color: var(--muted); white-space: nowrap; }
.r-days { min-width: 0; }
.dcols { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.dcol { display: flex; flex-direction: column; align-items: stretch; text-align: center; font: 500 11.5px/1.35 var(--mono); }
.dcol.over .dbar { opacity: 0.4; }
.dbar { height: 34px; display: flex; align-items: flex-end; border-bottom: 1px solid var(--muted); }
.dbar i { display: block; width: 100%; background: var(--bar); min-height: 0; }
.dbar i.peak { background: var(--accent); }
.dbar i.rain { background: var(--warn); }
.dbar i.mixed { box-shadow: inset 0 3px 0 var(--warn); }
.damt { margin-top: 3px; color: var(--fg); }
.damt.none { color: var(--muted); }
.dlow { color: var(--muted); font-weight: 400; }
.dgrade { font-weight: 600; }
.r-act { display: flex; align-items: center; justify-content: flex-end; gap: 2px; }
.chev { width: 8px; height: 8px; border-right: 1.5px solid var(--muted); border-top: 1.5px solid var(--muted); transform: rotate(45deg); margin: 0 4px 0 2px; }
.row:hover .chev { border-color: var(--fg); }
.flags { display: flex; gap: 8px; flex-wrap: wrap; min-height: 0; margin-top: 6px; }
.flags:empty { display: none; }
.flags span { white-space: nowrap; }
.flags .f-powder { color: var(--accent); }
.flags .f-rain { color: var(--warn); }
.flags .f-wind { color: var(--caution); }
.flags .f-cold { color: var(--fg-2); }
.fav { border: 0; background: none; padding: 9px; margin: -4px 0; cursor: pointer; color: #8b919a; justify-self: end; }
.fav:hover { color: var(--fg); }
.fav[aria-pressed="true"] { color: var(--accent); }
.fav .icon { width: 20px; height: 20px; }
.fav:focus-visible, .r-link:focus-visible, .link-btn:focus-visible, .pl-cell:focus-visible, .pl-name:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.list-group { margin: 22px 0 0; padding-bottom: 6px; border-bottom: 1px solid var(--fg); font: 600 14px var(--sans); }
.list-legend + .list-group { margin-top: 8px; }
@media (max-width: 720px) {
  .rows-head { display: none; }
  .row { grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "name num act" "days days days"; gap: 8px 10px; }
  .r-name { grid-area: name; }
  .r-num { grid-area: num; }
  .r-act { grid-area: act; }
  .r-days { grid-area: days; }
  .r-num b { font-size: 19px; }
  .dcol { font-size: 10.5px; }
}
.dcols-axis { display: none; }
@media (max-width: 720px) { .dcol::before { content: attr(data-d); font: 500 9.5px var(--mono); color: var(--muted); text-transform: uppercase; margin-bottom: 2px; } }

/* grid view */
.scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table { border-collapse: collapse; width: 100%; font-variant-numeric: tabular-nums; }
th, td { padding: 9px 8px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
thead th { font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); }
thead th .sub { display: block; font-size: 10px; color: var(--muted); }
.grid .resort-col { text-align: left; position: sticky; left: 0; background: var(--bg); z-index: 1; padding-left: 0; min-width: 150px; }
.grid tbody tr { cursor: pointer; }
.grid tbody tr:hover .name { color: var(--accent); }
.grid .name { display: block; font-weight: 600; }
.grid .sub { display: block; font-size: 11.5px; color: var(--muted); font-weight: 400; }
.grid td { font: 400 13px var(--mono); }
.grid td.total { font-weight: 500; font-size: 15px; }
.grid td.cell { min-width: 58px; box-shadow: inset 0 -3px 0 var(--c); }
.grid td.cell .range { display: block; font-size: 10px; color: var(--muted); }
.grid td.cell[data-conf="low"] .amt { color: var(--muted); }
.grid td.cell .rain-mark { color: var(--warn); font-size: 10px; display: block; text-transform: uppercase; }
.grid td.cell.over { background: rgba(11,13,16,0.03); }
.grid td.total .range { display: block; font-size: 10px; color: var(--muted); font-weight: 400; }
.grid caption { caption-side: top; text-align: left; padding: 8px 0; }
.grid td.fav-cell { padding: 0 0 0 4px; }

/* how it works */
.how-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
@media (max-width: 900px) { .how-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .how-grid { grid-template-columns: 1fr; } }
.how-grid article { padding: 18px 18px 22px 0; border-right: 1px solid var(--line); }
.how-grid article + article { padding-left: 18px; }
.how-grid article:last-child { border-right: 0; }
@media (max-width: 900px) { .how-grid article { border-right: 0; border-bottom: 1px solid var(--line); padding-left: 0 !important; } }
.how-grid h3 { margin: 6px 0 6px; font-size: 15px; font-weight: 600; }
.how-grid p { margin: 0; color: var(--fg-2); font-size: 14px; }
.glossary { border-bottom: 1px solid var(--line); padding: 14px 0; }
.glossary summary { cursor: pointer; font: 500 12px var(--mono); text-transform: uppercase; letter-spacing: 0.05em; }
.glossary dl { margin: 14px 0 0; display: grid; grid-template-columns: 180px 1fr; gap: 10px 20px; font-size: 14px; }
.glossary dt { font-weight: 600; }
.glossary dd { margin: 0; color: var(--fg-2); }
@media (max-width: 560px) { .glossary dl { grid-template-columns: 1fr; gap: 2px; } .glossary dd { margin-bottom: 10px; } }

.footer { margin-top: 64px; border-top: 1px solid var(--line-strong); padding: 20px 0 48px; font-size: 13px; color: var(--fg-2); }
.footer p { margin: 0 0 6px; max-width: 90ch; }

/* ---------- detail ---------- */
.detail { width: min(1120px, calc(100% - 32px)); max-height: calc(100% - 32px); padding: 0; border: 1px solid var(--fg); background: var(--bg); color: var(--fg); overflow-y: auto; box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18); }
.detail::backdrop { background: rgba(11, 13, 16, 0.45); }
@media (max-width: 640px) { .detail { width: 100%; max-width: 100%; max-height: 100%; height: 100%; margin: 0; border: 0; } }
.detail-head { position: sticky; top: 0; z-index: 2; background: var(--bg); border-bottom: 1px solid var(--line); padding: 14px 20px; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.detail-actions { display: flex; gap: 6px; }
.sq { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--line); background: var(--bg); cursor: pointer; color: var(--fg); padding: 0; }
.sq:hover { border-color: var(--fg); }
.sq .icon { width: 16px; height: 16px; }
.sq.fav[aria-pressed="true"] { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.d-body { padding: 0 20px 28px; }
.d-title h2 { font: 600 clamp(28px, 4vw, 40px)/1.05 var(--sans); letter-spacing: -0.035em; margin: 20px 0 4px; }
.d-title p { margin: 0; color: var(--muted); font-size: 13px; }
.summary { margin: 16px 0 0; font-size: 17px; line-height: 1.55; color: var(--fg-2); border-left: 2px solid var(--accent); padding-left: 14px; max-width: 70ch; }
.d-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-top: 22px; }
.d-kpis > div { padding: 12px 14px; border-left: 1px solid var(--line); }
.d-kpis > div:first-child { border-left: 0; padding-left: 0; }
.d-kpis b { display: block; font: 500 24px/1.2 var(--mono); letter-spacing: -0.04em; margin-top: 4px; }
.d-kpis span { font-size: 12px; color: var(--fg-2); }
@media (max-width: 560px) { .d-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } .d-kpis > div:nth-child(3) { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); } .d-kpis > div:nth-child(4) { border-top: 1px solid var(--line); } }
.days { display: grid; grid-template-columns: repeat(7, minmax(78px, 1fr)); border-bottom: 1px solid var(--line); overflow-x: auto; margin-top: 22px; border-top: 1px solid var(--line-strong); }
.day { display: flex; flex-direction: column; gap: 3px; padding: 10px 8px 12px; border-left: 1px solid var(--line); }
.day:first-child { border-left: 0; padding-left: 0; }
.day.snowy { box-shadow: inset 0 -3px 0 var(--c); }
.day .icon { width: 22px; height: 22px; color: var(--fg-2); margin: 4px 0; }
.day-snow { font: 500 20px/1.1 var(--mono); letter-spacing: -0.04em; }
.day-range, .day-temp { font: 400 11px var(--mono); color: var(--muted); }
.day-temp b { color: var(--fg); font-weight: 500; }
.day-flag { font: 500 10px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; margin-top: 2px; }
.day-flag.conf-high { color: var(--good); }
.day-flag.conf-medium { color: var(--muted); }
.day-flag.conf-low, .day-flag.rain { color: var(--warn); }
.day-flag.wind { color: var(--caution); }
.day-flag.fresh { color: var(--accent); }
.panel { margin-top: 32px; }
.panel .block-head h3 { margin: 0; font: 600 15px var(--sans); letter-spacing: -0.01em; }
.hint { margin: 8px 0 10px; font-size: 13px; color: var(--muted); max-width: 110ch; }
.chart { position: relative; height: 260px; }
.chart.short { height: 180px; }
.models td, .models th { font-family: var(--mono); font-size: 12.5px; }
.models th[scope="row"] { text-align: left; font-family: var(--sans); font-size: 13.5px; font-weight: 500; padding-left: 0; }
.models td { box-shadow: inset 0 -3px 0 var(--c); }
.models td.strong { font-weight: 600; box-shadow: none; }
.swatch { display: inline-block; width: 10px; height: 2px; margin-right: 8px; vertical-align: middle; }
.scale { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; margin-top: 12px; }
.scale span { height: 6px; background: var(--line); }
.scale span.on { background: var(--fg); }
.scale-labels { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; margin-top: 6px; }

/* ---------- loading ---------- */
.skeleton { background: linear-gradient(90deg, var(--soft) 0%, #eceef2 50%, var(--soft) 100%); background-size: 200% 100%; animation: sk 1.3s linear infinite; color: transparent !important; }
@keyframes sk { to { background-position: -200% 0; } }
.sk-line { height: 20px; margin: 10px 0; }
.sk-h1 { height: 46px; width: 75%; margin: 22px 0 12px; }
.sk-row { height: 66px; border-bottom: 1px solid var(--line); }

/* ---------- grades ---------- */
.grades { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; margin-top: 3px; text-align: center; font: 500 10.5px/1.4 var(--mono); }
.g-A { color: var(--accent); font-weight: 600; }
.g-B { color: var(--fg); }
.g-C { color: var(--muted); }
.g-D { color: var(--caution); }
.g-F { color: var(--warn); font-weight: 600; }
.grade { display: inline-grid; place-items: center; width: 20px; height: 20px; border: 1px solid currentColor; font: 600 11px var(--mono); }
.grade.g-A { background: var(--accent); color: #fff; border-color: var(--accent); }
.day-top { display: flex; justify-content: space-between; align-items: center; }
.cell-grade { display: block; font: 600 10px var(--mono); margin-top: 2px; }
.flags .f-setup { color: var(--fg); }
.grade-key { margin-top: 10px; }

/* ---------- storm guide ---------- */
.guide-text { margin: 10px 0 0; font-size: 15px; line-height: 1.6; color: var(--fg-2); max-width: 72ch; }
.setups { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-top: 16px; }
.setup { padding: 12px 16px 14px 0; }
.setup + .setup { border-left: 1px solid var(--line); padding-left: 16px; }
@media (max-width: 520px) { .setup + .setup { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; } }
.setup b { display: block; font-size: 15px; font-weight: 600; margin-top: 4px; }
.setup p { margin: 4px 0 0; font-size: 13px; color: var(--muted); }
.week-label { margin-top: 16px; }
.storm-list { list-style: none; margin: 6px 0 0; padding: 0; }
.storm-list li { display: grid; grid-template-columns: 96px 1fr auto; gap: 10px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.storm-list .mono { font-size: 11.5px; color: var(--muted); }
@media (max-width: 520px) { .storm-list li { grid-template-columns: 74px 1fr; } .storm-list .tag { grid-column: 2; justify-self: start; } }
.tag { font: 500 10px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; padding: 2px 6px; border: 1px solid var(--line); color: var(--muted); white-space: nowrap; }
.tag.on { border-color: var(--accent); color: var(--accent); }

/* ---------- lift wind grid ---------- */
.windgrid { margin-top: 14px; }
.windgrid th, .windgrid td { text-align: center; padding: 6px 2px; font: 500 11.5px var(--mono); border-bottom: 1px solid #fff; border-left: 1px solid #fff; }
.windgrid th[scope="row"] { text-align: left; padding-left: 0; font-family: var(--sans); font-size: 13px; color: var(--fg); background: var(--bg); }
.windgrid thead th { color: var(--muted); font-size: 10.5px; }
.windgrid td { min-width: 36px; }
.w-low { background: #eef3fb; color: var(--fg-2); }
.w-moderate { background: #ffe7b8; color: #6b4300; }
.w-high { background: var(--warn); color: #fff; }
.w-none { background: var(--soft); }
.arrow { width: 10px; height: 10px; display: block; margin: 2px auto 0; }
.legend i.w-low, .legend i.w-moderate, .legend i.w-high { width: 14px; height: 10px; }
.windgrid { table-layout: fixed; min-width: 330px; }
.windgrid th:first-child { width: 44px; }
.windgrid td { min-width: 0; padding: 6px 0; }
@media (max-width: 560px) { .flags span:nth-child(n+2) { display: none; } .windgrid td, .windgrid th { font-size: 10.5px; } }

/* ---------- forecast engine v2 ---------- */
.flags .f-muted { color: var(--muted); }
.grades.lows span { color: var(--muted); }
.day-flag.cold { color: var(--accent); }
.models td.na { background: repeating-linear-gradient(135deg, transparent 0 4px, var(--line) 4px 5px); }
.insights { list-style: none; margin: 14px 0 0; padding: 0; max-width: 72ch; border-top: 1px solid var(--line); }
.insights li { padding: 9px 0 9px 18px; border-bottom: 1px solid var(--line); font-size: 14.5px; line-height: 1.55; color: var(--fg-2); position: relative; }
.insights li::before { content: ""; position: absolute; left: 2px; top: 17px; width: 6px; height: 1px; background: var(--fg); }
.insights li[data-kind="ice"]::before, .insights li[data-kind="rain"]::before, .insights li[data-kind="thaw"]::before { background: var(--warn); height: 2px; }
.insights li[data-kind="setup"]::before, .insights li[data-kind="models"]::before { background: var(--accent); height: 2px; }
.notes { margin: 10px 0 0; padding-left: 18px; max-width: 72ch; }
.notes li { font-size: 15px; line-height: 1.6; color: var(--fg-2); margin-bottom: 6px; }
.ptype { display: grid; grid-template-columns: 56px 1fr; gap: 6px 10px; align-items: center; margin-top: 14px; }
.pt-strip { display: grid; grid-template-columns: repeat(var(--n), 1fr); height: 18px; border: 1px solid var(--line); }
.pt-axis { display: grid; grid-template-columns: repeat(var(--n), 1fr); font: 500 10px var(--mono); color: var(--muted); text-transform: uppercase; }
.pt-axis span { border-left: 1px solid var(--line); padding-left: 3px; }
.pt-none { background: transparent; }
.pt-sn { background: var(--accent); }
.pt-mx { background: #8b7fd6; }
.pt-ra { background: #3aa76d; }
.pt-pl { background: #e0a100; }
.pt-zr { background: var(--warn); }
.legend i.pt-sn, .legend i.pt-mx, .legend i.pt-ra, .legend i.pt-pl, .legend i.pt-zr { display: inline-block; width: 10px; height: 10px; margin-right: 5px; vertical-align: -1px; }
.odds-table td { text-align: left; }
.odds { display: inline-block; min-width: 46px; padding: 2px 4px; font: 500 12px var(--mono); background: linear-gradient(90deg, rgba(0, 87, 255, 0.16) var(--p), transparent var(--p)); }

/* ---------- resort pages and sign-up ---------- */
.resort-page { display: none; }
.page-mode .resort-page { display: block; margin: 24px 0 40px; border: 1px solid var(--line); }
.page-mode .hero, .page-mode #find-block, .page-mode #picks-block, .page-mode #signup-home, .page-mode #resorts { display: none; }
.page-mode .resort-page .detail-head { top: 57px; }
.sq.wide { width: auto; padding: 0 10px; font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; color: var(--fg); text-decoration: none; display: inline-flex; align-items: center; }
.r-link { color: inherit; text-decoration: none; }
.r-link:hover b, a.r-link.name:hover { text-decoration: underline; text-underline-offset: 3px; }
.signup { display: grid; grid-template-columns: 1fr minmax(280px, 420px); gap: 16px 32px; align-items: center; border: 1px solid var(--fg); padding: 18px 20px; margin-top: 28px; }
.signup h3 { margin: 0; font-size: 17px; font-weight: 600; }
.signup .hint { margin: 6px 0 0; }
.signup-row { display: flex; }
.signup input { flex: 1; min-width: 0; height: 40px; border: 1px solid var(--fg); border-right: 0; padding: 0 12px; font: 400 15px var(--sans); background: var(--bg); color: var(--fg); }
.signup .btn { height: 40px; padding: 0 16px; border: 1px solid var(--fg); background: var(--fg); color: var(--bg); font: 500 13px var(--sans); cursor: pointer; }
.signup-msg { grid-column: 1 / -1; margin: 0; min-height: 0; }
.signup-msg:empty { display: none; }
@media (max-width: 640px) { .signup { grid-template-columns: 1fr; } }
.feel { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--line); margin-top: 14px; }
.feel-step { padding: 12px 14px; border-left: 1px solid var(--line); color: var(--muted); }
.feel-step:first-child { border-left: 0; }
.feel-step b { display: block; font-size: 14px; font-weight: 600; color: var(--fg-2); margin-bottom: 4px; }
.feel-step span { font-size: 13px; line-height: 1.45; }
.feel-step.on { background: var(--fg); color: #d1d5db; }
.feel-step.on b { color: #fff; }
@media (max-width: 640px) { .feel { grid-template-columns: 1fr 1fr; } .feel-step:nth-child(3) { border-left: 0; } .feel-step:nth-child(n+3) { border-top: 1px solid var(--line); } }

/* ---------- digestible resort view ---------- */
.verdict { margin-top: 20px; border: 1px solid var(--fg); padding: 16px 18px; }
.verdict-title { margin: 6px 0 0; font: 600 clamp(19px, 2.4vw, 24px)/1.3 var(--sans); letter-spacing: -0.02em; max-width: 40ch; }
.verdict-sub { margin: 8px 0 0; font-size: 15px; line-height: 1.55; color: var(--fg-2); max-width: 70ch; }
button.day { font: inherit; color: inherit; background: var(--bg); border: 0; border-left: 1px solid var(--line); text-align: left; cursor: pointer; padding-left: 8px; }
button.day:first-child { border-left: 0; padding-left: 8px; }
button.day:hover { background: #f6f7f9; }
button.day[aria-pressed="true"] { background: #f1f5ff; box-shadow: inset 0 2px 0 var(--accent); }
button.day.snowy[aria-pressed="true"] { box-shadow: inset 0 2px 0 var(--accent), inset 0 -3px 0 var(--c); }
.day-flag.cold { color: var(--accent); }
.day-why { margin: 0; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 14.5px; line-height: 1.55; color: var(--fg-2); max-width: 75ch; min-height: 3.1em; }
.day-why b { color: var(--fg); font-weight: 600; }
.sub-h { margin: 26px 0 0; font: 600 15px var(--sans); }
.sub-h + .insights { margin-top: 8px; }
.more { margin-top: 32px; border-top: 1px solid var(--fg); border-bottom: 1px solid var(--line); }
.more > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 0; }
.more > summary::-webkit-details-marker { display: none; }
.more > summary b { display: block; font-size: 15px; font-weight: 600; }
.more > summary .hint { margin: 2px 0 0; display: block; }
.more-icon { width: 12px; height: 12px; border-right: 1.5px solid var(--fg); border-bottom: 1.5px solid var(--fg); transform: rotate(45deg); margin-right: 6px; transition: transform 0.15s; flex: none; }
.more[open] .more-icon { transform: rotate(-135deg); }
.more[open] { padding-bottom: 24px; }
.more > .insights { margin-top: 0; }
/* list: plain-word flags and a legend */
.flags { font: 500 12px/1.4 var(--sans); letter-spacing: 0; text-transform: none; gap: 10px; }
.flags span::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 5px; vertical-align: 1px; background: currentColor; }
.list-legend { margin: 0 0 6px; font-size: 12.5px; color: var(--muted); }
.list-legend b { color: var(--fg-2); font-weight: 500; }
.weekend { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--fg); border-bottom: 1px solid var(--line); }
.wk { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; align-items: start; text-align: left; font: inherit; color: inherit; background: var(--bg); border: 0; border-left: 1px solid var(--line); padding: 14px 16px; cursor: pointer; }
.wk:first-child { border-left: 0; padding-left: 0; }
.wk:hover b { text-decoration: underline; text-underline-offset: 3px; }
.wk b { display: block; font-size: 16px; font-weight: 600; }
.wk-day { font-size: 13px; color: var(--muted); }
.wk-why { grid-column: 2; font-size: 13.5px; line-height: 1.45; color: var(--fg-2); }
.wk .grade { width: 30px; height: 30px; font-size: 15px; }
.page-mode #weekend-block { display: none; }
@media (max-width: 640px) { .weekend { grid-template-columns: 1fr; } .wk { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; } .wk:first-child { border-top: 0; } }
.mchips { display: flex; flex-direction: column; gap: 8px; margin: 10px 0 6px; }
.seg.mini button { height: 26px; padding: 0 10px; font-size: 11px; }
.mchip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.mchip { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border: 1px solid var(--line); background: var(--bg); color: var(--fg); font: 500 12px var(--sans); cursor: pointer; }
.mchip i { width: 12px; height: 3px; display: inline-block; }
.mchip[aria-pressed="false"] { color: var(--muted); text-decoration: line-through; }
.readout { margin: 6px 0 4px; min-height: 20px; font: 400 12.5px/1.5 var(--mono); color: var(--fg-2); }
.readout b { color: var(--fg); font-weight: 500; }

/* Model scoreboard and trend */
.models.skill td { box-shadow: none; text-align: center; }
.models.skill thead th { font-size: 11px; line-height: 1.3; vertical-align: bottom; }
.models.skill tbody tr:first-child th, .models.skill tbody tr:first-child td { font-weight: 600; }
.rank { display: inline-block; width: 18px; font: 500 11px var(--mono); color: var(--muted); }
.hint.small { font-size: 12px; }
.models td.rec { box-shadow: none; font-family: var(--sans); font-size: 12.5px; color: var(--fg-2); }
.trend { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--line); font-size: 14px; color: var(--fg-2); display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.trend .label { min-width: 44px; }
.trend[data-dir="up"]::after { content: "▲"; color: var(--accent, #0057ff); font-size: 10px; }
.trend[data-dir="down"]::after { content: "▼"; color: var(--warn); font-size: 10px; }
.models.skill thead th:not(:first-child) { text-align: center; }
.acc { display: block; width: 72px; height: 2px; margin: 5px auto 0; background: var(--line); }
.acc i { display: block; height: 2px; background: var(--fg); }
.trend > span:last-child { flex: 1; min-width: 0; }

/* Ski-day hour by hour */
.skiday { padding: 12px 0 14px; border-bottom: 1px solid var(--line); }
.skiday-head { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.hourly { width: 100%; table-layout: fixed; min-width: 360px; border-collapse: collapse; }
.hourly th, .hourly td { text-align: center; padding: 6px 0; font: 500 11.5px var(--mono); border-bottom: 1px solid var(--line); white-space: nowrap; }
.hourly thead th { color: var(--muted); font-size: 10.5px; border-bottom-color: var(--fg); }
.hourly th[scope="row"] { width: 74px; text-align: left; font: 500 12.5px var(--sans); color: var(--fg-2); }
.hourly .h-snow { color: var(--accent); font-weight: 600; }
.hourly .h-wet { color: var(--good); font-weight: 600; }
.hourly .h-cold { color: var(--accent); }
.hourly .h-w-moderate { background: #ffe7b8; color: #6b4300; }
.hourly .h-w-high { background: var(--warn); color: #fff; }
@media (max-width: 560px) { .hourly { min-width: 0; } .hourly th[scope="row"] { width: 66px; font-size: 11px; } .hourly td, .hourly th { font-size: 10.5px; } }
.hourly tr > :first-child { width: 128px; }
@media (max-width: 560px) { .hourly tr > :first-child { width: 84px; white-space: normal; line-height: 1.2; } }
@media (max-width: 560px) { .hourly tr.sky td { font-size: 9px; letter-spacing: -0.03em; } }

/* Weekend planner */
.pl-controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 4px 0 12px; }
.pl-controls .seg.mini button svg { width: 12px; height: 12px; margin-right: 5px; vertical-align: -1px; }
.pl-rec { margin: 0 0 14px; font-size: 16px; line-height: 1.5; max-width: 70ch; color: var(--fg-2); }
.pl-rec b { color: var(--fg); font-weight: 600; }
.pl-table { border-top: 1px solid var(--fg); }
.pl-row { display: grid; grid-template-columns: minmax(130px, 0.7fr) repeat(var(--cols), minmax(0, 1fr)); gap: 12px; align-items: center; width: 100%; padding: 10px 0; border: 0; border-bottom: 1px solid var(--line); background: var(--bg); font: inherit; color: inherit; text-align: left; cursor: pointer; }
.pl-row:hover .pl-name b { text-decoration: underline; text-underline-offset: 3px; }
.pl-head { cursor: default; padding: 8px 0; }
.pl-name { display: flex; flex-direction: column; gap: 2px; }
.pl-name b { font-weight: 600; font-size: 15px; }
.pl-cell { display: flex; gap: 10px; align-items: center; font-size: 13px; color: var(--fg-2); padding: 4px 8px; border: 1px solid transparent; }
.pl-cell.best { border-color: var(--fg); color: var(--fg); }
.pl-cell .grade { flex: none; width: 24px; height: 24px; font-size: 12px; }
@media (max-width: 640px) {
  .pl-row { grid-template-columns: 1fr repeat(var(--cols), minmax(0, 1.25fr)); gap: 6px; }
  .pl-cell { flex-direction: column; align-items: flex-start; gap: 4px; padding: 4px 6px; font-size: 11.5px; line-height: 1.3; }
  .pl-name b { font-size: 14px; }
}

/* FAQ */
.faq { padding-top: 24px; }
.faq h1 { margin: 0; font: 600 22px var(--sans); letter-spacing: -0.02em; }
.faq-toc { display: flex; flex-wrap: wrap; gap: 6px 18px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.faq-h { margin: 28px 0 0; padding-bottom: 8px; border-bottom: 1px solid var(--fg); font: 500 12px var(--mono); text-transform: uppercase; letter-spacing: 0.05em; scroll-margin-top: 72px; }
.faq-q { border-bottom: 1px solid var(--line); scroll-margin-top: 72px; }
.faq-q summary { cursor: pointer; padding: 14px 0; font-size: 16px; font-weight: 500; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
.faq-q summary::-webkit-details-marker { display: none; }
.faq-q summary::after { content: "+"; font: 400 18px var(--mono); color: var(--muted); }
.faq-q[open] summary::after { content: "–"; }
.faq-q p { margin: 0 0 14px; max-width: 70ch; color: var(--fg-2); font-size: 15px; line-height: 1.6; }
.navlinks a[aria-current="page"] { color: var(--fg); }

/* First-visit tips and help links */
.tips { display: grid; grid-template-columns: auto 1fr auto; gap: 12px 20px; align-items: start; margin-top: 20px; padding: 14px 16px; border: 1px solid var(--fg); }
.tips ol { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 20px; counter-reset: tip; }
.tips li { font-size: 14px; color: var(--fg-2); line-height: 1.45; counter-increment: tip; }
.tips li::before { content: "0" counter(tip); display: block; font: 500 11px var(--mono); color: var(--muted); margin-bottom: 2px; }
.tips .tips-actions { display: flex; flex-direction: column; gap: 6px; align-items: flex-end; white-space: nowrap; }
.tips button { font: 500 12px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; padding: 6px 10px; border: 1px solid var(--fg); background: var(--fg); color: #fff; cursor: pointer; }
.tips a { font-size: 13px; }
.qlink { display: inline-grid; place-items: center; width: 16px; height: 16px; margin-left: 8px; border: 1px solid var(--line-strong); font: 500 10px var(--mono); color: var(--fg); vertical-align: 2px; text-decoration: none !important; }
.qlink:hover { background: var(--fg); color: #fff; }
@media (max-width: 760px) { .tips { grid-template-columns: 1fr; } .tips ol { grid-template-columns: 1fr; } .tips .tips-actions { flex-direction: row; align-items: center; justify-content: space-between; } }

/* Compare two mountains */
.cmp { border-top: 1px solid var(--fg); }
.cmp-row { display: grid; grid-template-columns: 120px minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line); }
.cmp-pick { padding: 12px 0; }
.cmp-pick .select { width: 100%; font-size: 15px; font-weight: 600; text-transform: none; letter-spacing: 0; font-family: var(--sans); }
.cmp-verdict p { margin: 0; font-size: 14px; line-height: 1.45; color: var(--fg); font-weight: 500; }
.cmp-cell { display: flex; gap: 10px; align-items: center; min-height: 32px; padding: 4px 8px; border: 1px solid transparent; font-size: 13.5px; color: var(--fg-2); }
.cmp-cell b { font-size: 16px; font-weight: 600; color: var(--fg); }
.cmp-cell span:not(.grade) { color: var(--fg-2); }
.cmp-cell b + span { font-size: 12.5px; color: var(--muted); }
.cmp-cell.win { border-color: var(--fg); }
.cmp-cell .grade { flex: none; width: 22px; height: 22px; }
.cmp-links a { font-size: 13px; }
@media (max-width: 640px) {
  .cmp-row { grid-template-columns: 52px minmax(0, 1fr) minmax(0, 1fr); gap: 6px; }
  .cmp-row > .label { font-size: 10px; }
  .cmp-cell { flex-direction: column; align-items: flex-start; gap: 3px; font-size: 11.5px; padding: 4px 5px; }
  .cmp-cell b { font-size: 14px; }
  .cmp-pick .select { font-size: 13px; padding-left: 6px; }
  .cmp-verdict p { font-size: 12.5px; }
}
.detail-head > .label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.detail-actions { flex: none; }
.sq.wide { white-space: nowrap; }
@media (max-width: 560px) { .detail-head { padding: 10px 12px; } .sq.wide { padding: 0 8px; font-size: 10.5px; } }

/* Ski pass */
.navlinks + .jump-select { margin-left: 4px; }
.jump-select { width: 180px; }
.pass-tag { display: inline-block; margin-left: 8px; padding: 1px 5px; border: 1px solid var(--line); font: 500 9.5px var(--mono); letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted); vertical-align: 2px; }
.d-title h2 .pass-tag { vertical-align: 6px; font-size: 10.5px; }
.pass-tag.p-epic { color: #0b3d91; border-color: #c7d4ea; }
.pass-tag.p-ikon { color: #0b0d10; border-color: #0b0d10; }
.pass-tag.p-indy { color: #8a4b00; border-color: #ead7bd; }
@media (max-width: 680px) { .jump-select { margin-left: auto; width: auto; flex: 1; min-width: 0; max-width: 200px; } .nav .seg { margin-left: 6px; } }
.nav .seg button { white-space: nowrap; }
@media (max-width: 680px) { .nav-inner { gap: 10px; } .nav .seg button { padding: 0 7px; } }

/* NWS alerts and forecaster notes */
.flags .f-alert { color: var(--warn); font-weight: 600; }
.nws-alerts { margin-top: 18px; display: grid; gap: 8px; }
.nws-alert { border: 1px solid var(--warn); border-left-width: 4px; padding: 10px 14px; display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; }
.nws-alert b { color: var(--warn); font-weight: 600; font-size: 15px; }
.nws-alert[data-sev="Minor"] { border-color: var(--caution); }
.nws-alert[data-sev="Minor"] b { color: var(--caution); }
.nws-alert p { flex-basis: 100%; margin: 4px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--fg-2); max-width: 80ch; }
.afd { padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.afd .afd-src { margin: 0 0 8px; }
.afd p:not(.afd-src) { margin: 0 0 8px; font-size: 14.5px; line-height: 1.6; color: var(--fg-2); max-width: 75ch; }
.afd a { font-size: 13px; }

/* Storm watch and timeline */
.storm-watch { margin-top: 20px; padding: 14px 16px; border: 1px solid var(--accent); border-left-width: 4px; display: grid; grid-template-columns: auto 1fr auto; gap: 6px 18px; align-items: baseline; }
.storm-watch .label { color: var(--accent); font-weight: 600; }
.storm-watch p { margin: 0; font-size: 15px; line-height: 1.5; color: var(--fg-2); }
.storm-watch b { color: var(--fg); font-weight: 600; }
.storm-watch a { font-size: 13px; white-space: nowrap; }
@media (max-width: 640px) { .storm-watch { grid-template-columns: 1fr; } }
.st { border-top: 1px solid var(--fg); }
.st-row { display: grid; grid-template-columns: 140px 1fr 48px; gap: 12px; align-items: center; width: 100%; padding: 7px 0; border: 0; border-bottom: 1px solid var(--line); background: var(--bg); font: inherit; color: inherit; text-align: left; cursor: pointer; }
.st-row:hover .st-name { text-decoration: underline; text-underline-offset: 3px; }
.st-axis { cursor: default; padding: 6px 0; }
.st-name { font-size: 14px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.st-track { position: relative; height: 16px; }
.st-axis .st-track span { position: absolute; top: 0; font: 500 10.5px var(--mono); color: var(--muted); text-transform: uppercase; }
.st-track i { position: absolute; top: -7px; bottom: -7px; width: 1px; background: var(--line); }
.st-bar { position: absolute; top: 3px; height: 10px; min-width: 3px; }
.st-peak { position: absolute; top: 0; width: 2px; height: 16px; background: var(--fg); }
.st-total { font: 600 13px var(--mono); text-align: right; }
@media (max-width: 640px) { .st-row { grid-template-columns: 86px 1fr 40px; gap: 6px; } .st-name { font-size: 12.5px; } .st-axis .st-track span { font-size: 9px; } }

/* Daily write-up */
.wu-tabs { display: flex; gap: 0; overflow-x: auto; border-bottom: 1px solid var(--line); margin-bottom: 4px; scrollbar-width: none; }
.wu-tabs button { flex: none; padding: 10px 14px 9px; border: 0; border-bottom: 2px solid transparent; background: none; font: 500 13px var(--sans); color: var(--muted); cursor: pointer; }
.wu-tabs button:first-child { padding-left: 0; }
.wu-tabs button[aria-selected="true"] { color: var(--fg); border-bottom-color: var(--fg); }
.wu { max-width: 72ch; }
.wu h3 { margin: 14px 0 8px; font: 600 20px/1.3 var(--sans); letter-spacing: -0.015em; }
.wu p { margin: 0 0 10px; font-size: 15.5px; line-height: 1.65; color: var(--fg-2); }
.wu p.hint { margin-top: 12px; }

/* Outbound links */
.links-row { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; }
.links-row .label { margin-right: 4px; }
.links-row a::after { content: " ↗"; font-size: 11px; color: var(--muted); }
.day-flag.busy { color: var(--caution); }
.hourly .h-fog { color: var(--muted); font-style: italic; }
.skiday-seg button { padding: 2px 8px; }
.wu-outlook { padding-top: 10px; border-top: 1px solid var(--line); } .wu-outlook .label { display: block; margin-bottom: 2px; }

/* Storm report cards */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; margin-top: 12px; }
.rc { border: 1px solid var(--line); padding: 12px 14px; }
.rc header { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; align-items: baseline; padding-bottom: 8px; border-bottom: 1px solid var(--fg); margin-bottom: 4px; }
.rc header b { font-weight: 600; }
.rc-row { display: grid; grid-template-columns: 110px 1fr auto; gap: 10px; align-items: center; padding: 5px 0; font-size: 13px; }
.rc-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rc-bars { position: relative; height: 12px; background: var(--soft); }
.rc-bars i { position: absolute; top: 0; height: 12px; }
.rc-range { background: var(--line); }
.rc-est { left: 0; top: 3px !important; height: 6px !important; background: var(--accent); }
.rc-fc { width: 2px; background: var(--fg); }
.rc-num { font: 500 12px var(--mono); white-space: nowrap; }
@media (max-width: 640px) { .cards { grid-template-columns: 1fr; } .rc-row { grid-template-columns: 84px 1fr auto; } }

/* share */
[data-share] { position: relative; }
[data-share][data-copied]::after { content: attr(data-copied); position: absolute; top: calc(100% + 6px); right: 0; background: var(--fg); color: var(--bg); font: 500 10px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; padding: 4px 6px; white-space: nowrap; }
.trend[data-dir="weekend"] b { font-weight: 600; }
@media (max-width: 560px) {
  .detail-head { flex-wrap: wrap; row-gap: 8px; }
  .detail-head > .label { flex-basis: 100%; white-space: normal; }
  .detail-actions { margin-left: auto; }
}

/* ---------- clarity update ---------- */
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.navlinks a[aria-current] { color: var(--fg); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }
.hl-facts { margin: 14px 0 0; display: grid; gap: 6px; max-width: 70ch; }
.hl-facts div { display: grid; grid-template-columns: 110px 1fr; gap: 12px; align-items: baseline; padding-top: 6px; border-top: 1px solid var(--line); }
.hl-facts dd { margin: 0; font-size: 15px; line-height: 1.5; color: var(--fg-2); }
@media (max-width: 560px) { .hl-facts div { grid-template-columns: 1fr; gap: 2px; } }
.kpi-name { font: 600 clamp(19px, 2.4vw, 24px)/1.15 var(--sans); letter-spacing: -0.02em; margin-top: 8px; transition: color 0.12s; }
.kpi-line { font: 500 13.5px/1.4 var(--mono); color: var(--fg); margin-top: 2px; }
.kpi:hover:not([disabled]) .kpi-name { color: var(--accent); }
@media (max-width: 720px) { .kpis { grid-template-columns: 1fr; } .kpi { border-left: 0; border-top: 1px solid var(--line); padding: 12px 0; min-height: 0; } .kpi:first-child { border-top: 0; } }
.search.big { height: 48px; margin-top: 14px; padding: 0 14px; border-color: var(--fg); }
.search.big .icon { width: 18px; height: 18px; }
.search.big input { width: 100%; font-size: 16px; }
.mini-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0 24px; }
.mini { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 12px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.mini:hover b { color: var(--accent); }
.mini-main { min-width: 0; }
.mini b { font-size: 16px; font-weight: 600; }
.mini-num { display: block; font: 500 15px var(--mono); margin-top: 4px; }
.mini-num small { font-size: 11.5px; color: var(--muted); font-weight: 400; }
.mini-line { display: block; font-size: 13px; color: var(--fg-2); }
.find-results:not(:empty) { margin-top: 4px; }
#mine .hint { margin-top: 12px; }
.link-btn { display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border: 1px solid var(--fg); background: var(--bg); color: var(--fg); font: 500 13px var(--sans); cursor: pointer; text-decoration: none !important; }
.link-btn:hover { background: var(--fg); color: var(--bg); }
.empty p { margin: 0; color: var(--fg-2); }
.empty-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.pl-pass { display: inline-flex; align-items: center; gap: 8px; }
.pl-pass .link-btn { min-height: 26px; padding: 0 8px; font-size: 12px; }
.pl-universe { margin: 0 0 10px; font-size: 13px; color: var(--muted); max-width: 75ch; }
.pl-row { cursor: default; align-items: stretch; }
.pl-head { align-items: end; }
.pl-name { display: flex; flex-direction: column; justify-content: center; gap: 2px; border: 0; background: none; padding: 0; text-align: left; font: inherit; color: inherit; cursor: pointer; }
.pl-name:hover b { text-decoration: underline; text-underline-offset: 3px; }
button.pl-cell { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; width: 100%; padding: 8px 10px; border: 1px solid var(--line); background: var(--bg); font: inherit; text-align: left; cursor: pointer; color: var(--fg-2); }
button.pl-cell:hover { border-color: var(--fg); }
button.pl-cell.best { border-color: var(--fg); box-shadow: inset 0 2px 0 var(--fg); }
.pl-grade { display: flex; align-items: center; gap: 8px; }
.pl-grade b { font-size: 14px; font-weight: 600; color: var(--fg); }
.pl-grade .label { margin-left: auto; }
.pl-lines { display: flex; flex-direction: column; font-size: 12.5px; line-height: 1.4; }
@media (max-width: 640px) { button.pl-cell { padding: 6px; } .pl-lines { font-size: 11.5px; } .pl-grade b { font-size: 12.5px; } .pl-grade .label { display: none; } }
.picks-verdict { margin: 12px 0 0; font-size: 15px; color: var(--fg-2); }
.picks-verdict b { color: var(--fg); font-weight: 600; }
.d-fresh { margin: 6px 0 0 !important; font-size: 13px; color: var(--fg-2) !important; }
.day-sub { font: 400 10px var(--mono); color: var(--muted); text-transform: uppercase; letter-spacing: 0.03em; margin-top: -2px; }
.day-flag.over { color: var(--muted); }
button.day.over svg { opacity: 0.4; }
.elev { margin: 4px 0 0; }
.elev caption { caption-side: top; text-align: left; padding: 10px 0 4px; }
.elev th, .elev td { font: 500 12.5px var(--mono); padding: 7px 8px; }
.elev th[scope="row"] { text-align: left; font: 500 13px var(--sans); padding-left: 0; }
.elev thead th { font-size: 10.5px; }
.full-link { display: flex; flex-direction: column; gap: 2px; margin-top: 24px; padding: 14px 16px; border: 1px solid var(--fg); color: var(--fg); }
.full-link:hover { background: var(--fg); color: var(--bg); text-decoration: none; }
.full-link:hover span { color: #d1d5db; }
.full-link b { font-size: 16px; font-weight: 600; }
.full-link b::after { content: " →"; }
.full-link span { font-size: 13px; color: var(--fg-2); }
.sq.wide.primary { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.sq.fav[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: #fff; }
.sq.fav { margin: 0; padding: 0; color: var(--fg); }
.takeaway { margin: 10px 0 0; font-size: 14.5px; line-height: 1.5; color: var(--fg); max-width: 72ch; }
.recent .trend:first-child { border-top: 0; }
.about-fc p { margin: 8px 0 0; font-size: 13.5px; line-height: 1.6; color: var(--fg-2); max-width: 75ch; }
.d-title h1 { font: 600 clamp(28px, 4vw, 40px)/1.05 var(--sans); letter-spacing: -0.035em; margin: 20px 0 4px; }
.d-title h1 .pass-tag { vertical-align: 6px; font-size: 10.5px; }
@media (max-width: 640px) { .sq { width: 40px; height: 40px; } .seg button { min-height: 32px; } .select { height: 36px; } .chip { padding: 12px 12px; } }
.faq-models { max-width: 80ch; }
.faq-models p { margin: 12px 0 0; color: var(--fg-2); font-size: 15px; line-height: 1.6; }
.faq-models h3 { margin: 22px 0 0; font: 600 16px var(--sans); }
.faq-table { margin-top: 10px; }
.faq-table th, .faq-table td { text-align: left; white-space: normal; box-shadow: none !important; font-family: var(--sans); font-size: 13.5px; vertical-align: top; }
.faq-table td:nth-child(3), .faq-table td:nth-child(4) { white-space: nowrap; }
.faq-table thead th { font-family: var(--mono); font-size: 11px; }
.faq-table { table-layout: fixed; min-width: 560px; }
.faq-table th:nth-child(1) { width: 17%; } .faq-table th:nth-child(2) { width: 18%; } .faq-table th:nth-child(3) { width: 15%; } .faq-table th:nth-child(4) { width: 13%; }
.faq-table td:nth-child(3), .faq-table td:nth-child(4) { white-space: normal; }

/* List tools: measure switch, sort and layout on one line */
.list-tools { display: flex; gap: 8px 12px; align-items: center; justify-content: space-between; flex-wrap: wrap; margin: 12px 0 4px; }
.list-hint { margin: 8px 0 0; }
.list-tools .seg { max-width: 100%; overflow-x: auto; }
.list-tools .seg button { white-space: nowrap; }
.dcols:not(.m-snow) .dcol { justify-content: flex-start; padding-top: 4px; }
.dcols:not(.m-snow) .dhi { font-size: 13px; color: var(--fg); }
.dhi.above, .dhi.strong, .dhi.wet { color: var(--warn); font-weight: 600; }
@media (max-width: 560px) { .list-tools { align-items: stretch; } .list-tools > .seg { width: 100%; } .list-tools > .seg button { flex: 1; justify-content: center; padding: 0 6px; } }

/* Resort page: three facts, section index, section headings */
.facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-top: 18px; }
.facts > div { padding: 12px 14px; border-left: 1px solid var(--line); min-width: 0; }
.facts > div:first-child { border-left: 0; padding-left: 0; }
.facts b { display: block; font: 500 24px/1.2 var(--mono); letter-spacing: -0.04em; margin: 4px 0 2px; }
.facts span:not(.label) { display: block; font-size: 12.5px; color: var(--fg-2); line-height: 1.4; }
@media (max-width: 560px) { .facts { grid-template-columns: 1fr; } .facts > div { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); } .facts > div:first-child { border-top: 0; } }
.sec-index { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 10px 0; border-bottom: 1px solid var(--line); font: 500 11.5px var(--mono); text-transform: uppercase; letter-spacing: 0.04em; }
.sec-index a { color: var(--fg-2); text-decoration: none; padding: 4px 0; }
.sec-index a:hover { color: var(--fg); text-decoration: underline; }
.d-sec { scroll-margin-top: 80px; }
.sec-h { margin: 36px 0 4px; padding-top: 14px; border-top: 1px solid var(--fg); font: 600 20px/1.2 var(--sans); letter-spacing: -0.02em; }
#daily .sec-h { margin-top: 24px; }
.overlap { margin: 8px 0 0; }
.faq-prose p { margin: 12px 0 0; font-size: 15px; line-height: 1.6; color: var(--fg-2); max-width: 75ch; }
.faq-prose b { color: var(--fg); }

/* Legends under charts */
.legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 8px; }
.legend span { display: inline-flex; align-items: center; gap: 6px; }
.legend i { display: inline-block; width: 14px; height: 3px; }
.mchips .seg { align-self: flex-start; max-width: 100%; overflow-x: auto; }

/* Precipitation strip: midnight lines and alternate-day shading */
.pt-strip i.alt.pt-none { background: rgba(11,13,16,0.05); }
.pt-strip i.mid { box-shadow: inset 1px 0 0 var(--muted); }
.pt-axis span:nth-child(even) { background: rgba(11,13,16,0.05); }

/* Inline help */
.help-pop { position: absolute; z-index: 1200; width: min(340px, calc(100vw - 32px)); background: var(--bg); border: 1px solid var(--fg); padding: 12px 14px; font: 400 13.5px/1.5 var(--sans); color: var(--fg-2); box-shadow: 0 6px 24px rgba(11,13,16,0.12); text-transform: none; letter-spacing: 0; }
.help-pop b { display: block; color: var(--fg); margin-bottom: 4px; font-weight: 600; }
.help-pop p { margin: 0 0 8px; }
.help-pop a { font-size: 12.5px; }
button.qlink { background: var(--bg); cursor: pointer; padding: 0; }
button.qlink[aria-expanded="true"] { background: var(--fg); color: var(--bg); }
.models.by-day :is(td, th):is(:nth-child(3), :nth-child(5), :nth-child(7)):not(.na) { background-color: rgba(11,13,16,0.04); }
.windgrid tbody tr:nth-child(even) th { background: rgba(11,13,16,0.045); }
.windgrid .wdir { display: block; font-size: 9.5px; color: var(--fg-2); letter-spacing: 0.02em; margin-top: 1px; }
.ddir { color: var(--fg-2); font-size: 10px; font-weight: 400; }

/* Tighter home top; notes run the width of what they describe */
.hero + .block { margin-top: 28px; }
.overlap, .list-hint, .legend-text { max-width: none; }
.takeaway, .day-why, .about-fc p, .afd p:not(.afd-src) { max-width: 100ch; }
/* Wider text blocks so notes use the space they sit in */
.insights, .notes, .wu { max-width: 100ch; }
.day-why { max-width: none; }
.footer p { max-width: none; }
@media (min-width: 641px) { .cmp-row { grid-template-columns: 170px minmax(0, 1fr) minmax(0, 1fr); } }
.sec-h + .panel, .sec-h + section > .panel:first-child { margin-top: 12px; }
.sec-h { margin-top: 32px; }
@media (max-width: 680px) { .meta { flex-wrap: wrap; } .meta > span { white-space: nowrap; } }

/* Audit fixes: links in running text are underlined; reserve space while data loads */
p a, li a, dd a, .footer a { text-decoration: underline; text-underline-offset: 2px; }
.page-mode #resort-page { min-height: 100vh; }
#list { min-height: 60vh; }
.headline { min-height: 150px; } @media (max-width: 560px) { .headline { min-height: 330px; } }
button.day, .st-total, .sr-host { position: relative; }

/* Readability: secondary numbers larger and darker */
.r-num small { font-size: 12px; color: var(--fg-2); }
.dlow { color: var(--fg-2); font-weight: 400; font-size: 12px; }
.ddir { color: var(--fg-2); font-size: 11.5px; }
.windgrid .wdir { font-size: 11px; }
.grid td.cell .range, .grid td.total .range { font-size: 11.5px; color: var(--fg-2); }
.cal-line { margin-top: 8px; color: var(--fg-2); }
tr.m-off td.m-off-note { font-style: italic; color: var(--muted); text-align: left; }
.rows-head, .row { grid-template-columns: minmax(150px, 0.9fr) 92px minmax(0, 2.4fr) 64px; }
.rows-head .r-num { white-space: normal; line-height: 1.3; align-self: end; }
@media (max-width: 720px) { .row { grid-template-columns: minmax(0, 1fr) auto auto; } }

/* Pre-rendered snapshot (replaced by the app on load; read by crawlers) */
body[data-resort] .hero, body[data-resort] #resorts { display: none; }
body[data-resort] .resort-page { display: block; margin: 24px 0 40px; border: 1px solid var(--line); }
.prerender { padding: 20px; }
.prerender h1 { margin: 0 0 6px; }
.prerender h2 { font-size: 18px; margin: 20px 0 6px; }
.prerender table { border-collapse: collapse; margin: 12px 0; font-size: 14px; }
.prerender caption { text-align: left; color: var(--muted); font-size: 13px; padding-bottom: 6px; }
.prerender th, .prerender td { padding: 4px 16px 4px 0; text-align: left; border-bottom: 1px solid var(--line); }
ul.prerender { list-style: none; padding: 0; margin: 0; columns: 2; font-size: 14px; }
ul.prerender li { padding: 4px 0; }
.foot-resorts { margin: 14px 0; font-size: 13px; line-height: 1.8; }
.foot-resorts p { margin: 0; }

/* Larger logo */
.brand { font-size: 18px; gap: 12px; }
.brand svg { width: 30px; height: 30px; }
@media (max-width: 400px) { .brand { font-size: 15px; gap: 8px; letter-spacing: 0.08em; } .brand svg { width: 26px; height: 26px; } }
