/* ==========================================================================
   SNOW Daily — the answer board (preview/answer-board, October 2026)
   Newsreader page headlines, Libre Franklin for the answer and everything else, one red figure. No italics (owner, 3 Nov 2026).
   Day edition: ivory paper and ink. Night edition (dark theme, automatic after
   dark): the same board in snow-white, coral figure, faint snowfall.
   Loaded after style.css (which now holds the former noir.css). Red/coral is used only on the answer figures.
   ========================================================================== */
:root {
  /* section, panel and board headings (owner, 3 Nov 2026): Libre Franklin, like the rest of the text. The variable keeps
     its old name (--ab-serif) so every heading rule follows it. */
  --ab-serif: 'Libre Franklin', 'Jost', 'Helvetica Neue', Arial, sans-serif;
  /* page headlines only (owner, 3 Nov 2026): the home and region answer headline and every .page-title, upright */
  --ab-page: 'Newsreader', Georgia, 'Times New Roman', serif;
  --ab-sans: 'Libre Franklin', 'Jost', 'Helvetica Neue', Arial, sans-serif;
  --ab-hot: #e04a35;            /* day coral: headline figures only (3.6:1 on ivory, large thin-to-light figures) */
  --ab-ink: #14120f;
  --ab-ink-2: #5f584e;
  --ab-rule: #14120f;
  --ab-hair: #d3d1c9;
  --ab-dot: #14120f;
  --ab-inv-bg: #14120f;
  --ab-inv-fg: #f4f3ef;
  --ab-inv-hot: #ff6a55;
}
[data-theme='dark'] {
  --ab-hot: #ff6a55;            /* coral on black, 7.0:1 */
  --ab-ink: #f4efe6;
  --ab-ink-2: #a39b8e;
  --ab-rule: #f4efe6;
  --ab-hair: #2c2925;
  --ab-dot: #f4efe6;
  --ab-inv-bg: #1c1a17;         /* dark: the featured figure stays an ink box, lifted off the page, coral number */
  --ab-inv-fg: #f4efe6;
  --ab-inv-hot: #ff6a55;
}

.answer-board { position: relative; isolation: isolate; padding-block: var(--space-6) var(--space-8); color: var(--ab-ink); }
.answer-board > :not(.ab-snow) { position: relative; z-index: 1; }
.ab-snow { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }

/* the question row: double rule */
.ab-q { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-2) var(--space-6);
  border-top: 1px solid var(--ab-rule); border-bottom: 1px solid var(--ab-rule); padding-block: var(--space-3); margin-bottom: var(--space-8); }  /* single rule (owner, 3 Nov 2026) */
.answer-board .ab-question { font-family: var(--ab-page); font-style: normal; font-weight: 500; font-size: clamp(1.7rem, 1.2rem + 1.8vw, 2.7rem); line-height: 1.05; letter-spacing: -0.01em; margin: 0; color: var(--ab-ink); }
.ab-meta { font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); display: inline-flex; align-items: center; gap: 0.6em; }
.ab-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ab-dot); animation: ab-pulse 2.4s ease-in-out infinite; }
@keyframes ab-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .35; transform: scale(.8); } }

.ab-grid { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); gap: var(--space-8) clamp(2rem, 4vw, 4.5rem); align-items: start; }
@media (max-width: 960px) { .ab-grid { grid-template-columns: 1fr; } }

/* the answer */
.ab-kicker { font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ab-ink-2); margin-bottom: var(--space-3); }
.ab-name-big { font-family: var(--ab-sans); font-weight: 600; text-transform: uppercase; letter-spacing: -0.045em; line-height: 0.9;
  font-size: clamp(3rem, 1rem + 6.4vw, 6.75rem); margin: 0 0 var(--space-3); overflow-wrap: normal; }   /* answer.js fitNames() shrinks long names to fit rather than breaking mid-word */
/* room for accents on the capitals (Ö, È, Â …), which sit above the tight 0.9 line box: space above the name in
   proportion to its size, and a little more between wrapped lines (28 Oct 2026) */
.ab-name-big { padding-top: 0.14em; }
.ab-name-big { line-height: 0.98; }
.ab-name-big a { color: inherit; text-decoration: none; }
.ab-name-big a:hover { text-decoration: underline; text-decoration-thickness: 3px; text-underline-offset: 0.12em; }
.ab-where { font-family: var(--ab-sans); font-size: var(--text-sm); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ab-ink-2); margin-bottom: var(--space-4); }
.ab-fig { display: flex; align-items: baseline; gap: 0.35rem; margin: 0; line-height: 0.9; }
.ab-fig b { font-family: var(--ab-sans); font-weight: 200; font-size: clamp(4.5rem, 2rem + 8vw, 9rem); letter-spacing: -0.04em; color: var(--ab-hot); font-variant-numeric: lining-nums; }
.ab-fig span { font-family: var(--ab-sans); font-weight: 400; font-size: var(--text-lg); color: var(--ab-ink); }
.ab-label { font-family: var(--ab-sans); font-size: var(--text-xs); line-height: 1.6; letter-spacing: 0.01em; color: var(--ab-ink-2); margin: var(--space-3) 0 var(--space-6); max-width: 62ch; }
/* the label defines its terms in sentences (owner, 3 Nov 2026): Estimate, S and, when it applies, Partly forecast */
.ab-label b { font-weight: 600; color: var(--ab-ink); }
.ab-ctas { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.ab-btn { display: inline-flex; align-items: center; min-height: 44px; padding: 0.7rem 1.2rem; font-family: var(--ab-sans); font-weight: 500; font-size: var(--text-sm); letter-spacing: 0.04em;
  background: var(--ab-ink); color: var(--color-bg); border: 1px solid var(--ab-ink); transition: background var(--transition), color var(--transition); }
.ab-btn:hover { background: transparent; color: var(--ab-ink); }
.ab-btn--ghost { background: transparent; color: var(--ab-ink); }
.ab-btn--ghost:hover { background: var(--ab-ink); color: var(--color-bg); }

/* the leaderboard */
.ab-board { border-top: 1px solid var(--ab-rule); }
.ab-board__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2); padding-block: var(--space-3); border-bottom: 1px solid var(--ab-hair); }
.ab-board__t { font-family: var(--ab-sans); font-style: normal; font-weight: 600; letter-spacing: -0.01em; font-size: var(--text-lg); }
.ab-tabs, .ab-level { display: inline-flex; gap: 2px; }
.ab-tabs { flex-wrap: wrap; }
.ab-tab { white-space: nowrap; font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; padding: 0.45rem 0.7rem; min-height: 32px; color: var(--ab-ink-2); border: 1px solid transparent; }
.ab-tab:hover { color: var(--ab-ink); border-color: var(--ab-hair); }
.ab-tab.is-on { background: var(--ab-ink); color: var(--color-bg); }
@media (max-width: 480px) { .ab-tab { padding-inline: 0.45rem; letter-spacing: 0.06em; } }
.ab-level { margin-top: var(--space-3); }
.ab-list { margin: 0; padding: 0; }
.ab-row { display: grid; grid-template-columns: 1.6rem minmax(0, 1.4fr) minmax(3rem, 1fr) 6.4rem 4.6rem; align-items: center; gap: var(--space-3); padding-block: 0.55rem; border-bottom: 1px solid var(--ab-hair); font-family: var(--ab-sans); }
.ab-rank { font-size: var(--text-xs); color: var(--ab-ink-2); font-variant-numeric: tabular-nums; }
.ab-name { min-width: 0; display: flex; flex-direction: column; line-height: 1.2; }
.ab-name a { font-weight: 500; color: var(--ab-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ab-name a:hover { text-decoration: underline; }
.ab-name small { font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ab-ink-2); }
.ab-bar { height: 10px; }
.ab-bar i { display: block; height: 100%; background-image: radial-gradient(circle, var(--ab-dot) 1.1px, transparent 1.5px); background-size: 5px 5px; }
.ab-row.is-lead .ab-bar i { background: var(--ab-dot); }
.ab-s .stn { font-size: 0.66rem; }
.ab-val { text-align: right; font-weight: 300; font-size: var(--text-lg); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ab-val small { font-size: 0.7rem; margin-left: 2px; color: var(--ab-ink-2); }
/* the lead row keeps the same figure weight and size as the others (owner, 3 Nov 2026); its bar still marks it */
.ab-s { text-align: right; }
.ab-s .ab-pf { white-space: nowrap; font-size: 0.68rem; }
.ab-empty { padding: var(--space-4) 0; color: var(--ab-ink-2); }
.ab-board__foot { font-size: var(--text-xs); color: var(--ab-ink-2); padding-top: var(--space-2); }

/* the strip under the home board */
/* personalised home switched on with nothing pinned yet (28 Oct 2026) */
.ab-mine-note { margin: var(--space-6) 0 calc(-1 * var(--space-4)); font-size: var(--text-sm, .9rem); color: var(--color-text-muted); }
.ab-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--space-8); border-top: 1px solid var(--ab-rule); border-bottom: 1px solid var(--ab-hair); }
.ab-cell { padding: var(--space-4) var(--space-5) var(--space-4) 0; }
.ab-cell + .ab-cell { padding-left: var(--space-5); border-left: 1px solid var(--ab-hair); }
.ab-cell__h { font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ab-ink); margin-bottom: var(--space-1); }
.ab-cell__t { font-family: var(--ab-sans); font-size: var(--text-sm); }
.ab-cell__t a { text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 760px) { .ab-strip { grid-template-columns: 1fr; } .ab-cell + .ab-cell { padding-left: 0; border-left: 0; border-top: 1px solid var(--ab-hair); } }

/* first paint: keep the rest of the home page hidden until the board has been drawn, so the older layout never shows first */
.answer-pending:not(.has-answer) #view-home > :not(#answerHome) { visibility: hidden; }

/* the home page below the board: the briefing has moved into the strip */
.has-answer #homeBriefing { display: none !important; }
/* the About heading matches the scorecard's record heading (.sdh__h): Libre Franklin semibold, panel-title size (owner, 3 Nov 2026) */
.about-box .about-box__h, .has-answer .about-box .about-box__h { font-family: var(--ab-sans); font-weight: 600; font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem); line-height: 1.2; letter-spacing: -0.01em; }

/* region page: the long explainer folds away */
.answer-board--region { padding-top: var(--space-4); }
.ab-how { margin-bottom: var(--space-4); }
.ab-how summary { cursor: pointer; font-family: var(--ab-sans); font-size: var(--text-sm); font-weight: 500; letter-spacing: 0.06em; text-decoration: underline; text-underline-offset: 3px; width: max-content; }
.ab-how[open] summary { margin-bottom: var(--space-2); }
#view-region .page-head #regionTitle { font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.3rem); }

/* resort page: the name as the answer, the verdict as the question answered */
.ab-resort .page-head--resort .page-title { font-family: var(--ab-sans); font-weight: 600; text-transform: uppercase; letter-spacing: -0.04em; line-height: 0.92; font-size: clamp(2.8rem, 1.2rem + 5vw, 5.6rem); }
.ab-rbox { border-top: 3px double var(--ab-rule); padding-top: var(--space-5); margin-bottom: var(--space-8); color: var(--ab-ink); }
/* resort summary ("Is there snow in ...?") in Newsreader, like the page headlines (owner, 3 Nov 2026) */
.ab-verdict { font-family: var(--ab-page); font-style: normal; font-weight: 400; font-size: clamp(1.3rem, 1rem + 1.2vw, 2rem); line-height: 1.25; max-width: 46ch; margin-bottom: var(--space-6); }
.ab-verdict b { font-weight: 700; color: var(--ab-ink); }
.ab-verdict__q { display: block; font-size: 0.62em; font-weight: 500; color: var(--ab-ink-2); margin-bottom: 0.2em; }
.ab-rfigs { display: grid; grid-template-columns: 1fr 1.2fr; border: 1px solid var(--ab-rule); max-width: 760px; }
.ab-rfig { padding: var(--space-4) var(--space-5); font-family: var(--ab-sans); }
.ab-rfig + .ab-rfig { border-left: 1px solid var(--ab-rule); }
.ab-rfig__l { font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); }
.ab-rfig__v { display: flex; align-items: baseline; gap: 0.3rem; margin: 0.2rem 0; }
.ab-rfig__v b { font-weight: 200; font-size: clamp(2.4rem, 1.6rem + 2.4vw, 3.6rem); letter-spacing: -0.03em; line-height: 1; font-variant-numeric: lining-nums; }
.ab-rfig__v span { font-size: var(--text-sm); }
.ab-rfig small { font-size: var(--text-xs); color: var(--ab-ink-2); }
.ab-rfig.is-inv { background: var(--ab-inv-bg); color: var(--ab-inv-fg); }
.ab-rfig.is-inv .ab-rfig__l, .ab-rfig.is-inv small { color: inherit; opacity: .78; }
.ab-rfig.is-inv .ab-rfig__v b { color: var(--ab-inv-hot); }

@media (max-width: 640px) {
  .ab-rfigs { grid-template-columns: 1fr 1fr; }
  
  
  .ab-row { grid-template-columns: 1.3rem minmax(0, 1.6fr) minmax(1.5rem, 0.5fr) 5.2rem 3.4rem; gap: var(--space-2); }
  .ab-s .ab-pf { font-size: 0.62rem; }
  /* long resort names wrap onto a second line on phones instead of being cut off (3 Nov 2026) */
  .ab-name a { white-space: normal; overflow: visible; text-overflow: clip; }
}

/* the ticker: briefing items with a small key */
.ab-tk__k { font-size: 0.66rem; letter-spacing: 0.2em; text-transform: uppercase; color: #a39b8e; margin-right: 0.5em; }

/* ==========================================================================
   The rest of the site in the answer-board voice (8 Oct 2026)
   Page heads: double rule, upright Newsreader title (page headlines only). Headline figures: thin Jost,
   in red by day and coral by night. Section heads: Libre Franklin under a rule.
   Table bars: the board's speckled ink (white at night). Wordmark: monochrome.
   ========================================================================== */
.page-head { border-top: 3px double var(--ab-rule); margin-top: var(--space-6); padding-top: var(--space-6); }
.page-head::before { display: none; }
.page-head .eyebrow, .eyebrow { color: var(--ab-ink-2); letter-spacing: 0.22em; font-weight: 500; }
.page-head .page-title { font-family: var(--ab-page); font-style: normal; font-weight: 500; letter-spacing: -0.015em; line-height: 1.02;
  font-size: clamp(2.4rem, 1.4rem + 3.4vw, 4.4rem); color: var(--ab-ink); }
.page-head .page-lede { color: var(--ab-ink-2); font-size: clamp(1rem, 0.95rem + 0.3vw, 1.15rem); }
.section-h { font-family: var(--ab-serif); font-style: normal; font-weight: 500; border-top: 1px solid var(--ab-rule); padding-top: var(--space-4); margin-top: var(--space-10); }
.section-h .muted { font-family: var(--ab-sans); font-style: normal; font-size: var(--text-sm); letter-spacing: 0.02em; }

/* headline figures: thin Jost; the lead figure in the hot colour */
.sc-card__big, .price-grid b {
  font-family: var(--ab-sans); font-weight: 200; letter-spacing: -0.03em; font-variant-numeric: lining-nums; }
.sc-card__big { color: var(--ab-hot); font-size: clamp(2.6rem, 1.8rem + 2.4vw, 3.8rem); line-height: 1; }

/* table bars: speckled, like the board */
.snow-table .bar { height: 6px; border-radius: 0; opacity: 1; background: radial-gradient(circle, var(--ab-dot) 0.9px, transparent 1.3px) 0 0 / 4px 4px; }
.snow-table tbody tr:first-child .bar { background: var(--ab-dot); height: 4px; }

/* chips and buttons in ink by day, coral by night */
/* night: every button and selected control is snow-white; coral stays on the headline numbers */
[data-theme='dark'] .chip.is-active, [data-theme='dark'] .fc-btn.is-open, [data-theme='dark'] .hero__dots button.is-active { background: #f4efe6; border-color: #f4efe6; color: #0d0c0b; }
[data-theme='dark'] .btn:not(.btn--ghost), [data-theme='dark'] .site-footer .btn { background: #f4efe6; border-color: #f4efe6; color: #0d0c0b; }
[data-theme='dark'] .btn:not(.btn--ghost):hover { background: #ffffff; border-color: #ffffff; color: #0d0c0b; }
[data-theme='dark'] .btn--ghost { border-color: #f4efe6; color: #f4efe6; }
[data-theme='dark'] .site-nav a.is-active::after, [data-theme='dark'] .tab.is-active { background: #f4efe6; border-bottom-color: #f4efe6; }
[data-theme='dark'] .tab.is-active { background: none; color: #f4efe6; }

/* the wordmark: monochrome; colour is kept for the answers */
.site-header .brand--stack .brand__daily, [data-theme='light'] .site-header .brand--stack .brand__daily { color: var(--ab-ink); font-weight: 300; }
.brand--footer.brand--stack .brand__daily, [data-theme='light'] .brand--footer.brand--stack .brand__daily { color: #ede6da; font-weight: 300; }
.sc-status b { display: block; font-family: var(--ab-sans); font-weight: 200; font-size: clamp(2rem, 1.4rem + 2vw, 3rem); letter-spacing: -0.03em; line-height: 1.05; color: var(--ab-ink); }
.sc-status > div:first-child b { color: var(--ab-hot); }
/* the footer is a dark band in both editions: its buttons are white too */
[data-theme='light'] .site-footer .btn { background: #f4efe6; border-color: #f4efe6; color: #14120f; }
/* resort name stays the answer: Jost capitals, not the serif page title */
.view--resort.ab-resort .page-head--resort .page-title { font-family: var(--ab-sans); font-style: normal; font-weight: 600; text-transform: uppercase; letter-spacing: -0.04em; line-height: 0.92; font-size: clamp(2.8rem, 1.2rem + 5vw, 5.6rem); }
/* day figures one weight heavier so the coral strokes hold */
[data-theme='light'] .ab-fig b, [data-theme='light'] .ab-rfig__v b, [data-theme='light'] .sc-card__big, [data-theme='light'] .sc-status b { font-weight: 300; }
[data-theme='light'] .ab-rfig.is-inv .ab-rfig__v b { color: #ff6a55; }
/* Season Pass in the menu: coral at night; by day coral in an ink box (bright coral on ink, 6.4:1) */

/* panel headings (home columns, resort panels): Libre Franklin semibold, upright (owner, 3 Nov 2026) */
.panel__title { font-family: var(--ab-sans); font-style: normal; font-weight: 600; letter-spacing: -0.01em; }
.panel__title .panel__sub { font-family: var(--ab-sans); font-style: normal; }

/* scorecard's wide tables (by region, forecast zone, station class, observation type): fit the screen instead of
   scrolling sideways; on a phone each row becomes a card with the column names beside the figures */
.sc-wide .sc-table th[scope="row"] { min-width: 9rem; }
.sc-wide .sc-prov { display: block; margin: 0.15rem 0 0; }
.sc-wide .sc-table thead th { white-space: normal; vertical-align: bottom; }
@media (max-width: 1100px) {
  .sc-wide .sc-table th, .sc-wide .sc-table td { padding-left: 0.35rem; padding-right: 0.35rem; font-size: 0.8rem; }
  .sc-wide .sc-table thead th { font-size: 0.6rem; letter-spacing: 0.04em; }
}
@media (max-width: 760px) {
  .sc-wide .sc-table, .sc-wide .sc-table tbody, .sc-wide .sc-table tr, .sc-wide .sc-table th, .sc-wide .sc-table td { display: block; width: 100%; }
  .sc-wide .sc-table thead { display: none; }
  .sc-wide .sc-table tr { border: 1px solid var(--color-border); margin-bottom: var(--space-3); background: var(--color-surface); }
  .sc-wide .sc-table tbody tr:nth-child(even) th[scope="row"], .sc-wide .sc-table th[scope="row"] { position: static; box-shadow: none; background: var(--color-surface-offset); padding: 0.6rem 0.8rem; font-size: 0.85rem; }
  .sc-wide .sc-table td { text-align: right; padding: 0.35rem 0.8rem; border-top: 1px solid var(--color-divider); font-size: 0.85rem; }
  .sc-wide .sc-table td::before { content: attr(data-label); float: left; margin-right: 1rem; color: var(--color-text-muted); font-size: 0.72rem; line-height: 1.6; letter-spacing: 0.06em; text-transform: uppercase; }
  .sc-wide .sc-table td[colspan] { text-align: left; }
  .sc-wide .sc-table td[colspan]::before { content: none; }
  /* no empty band under the last card, and the Detailed view closes just below its last table (owner review, 2 November 2026) */
  .sc-wide .sc-table tbody tr:last-child { margin-bottom: 0; }
  .sc-wide .sc-table td.num { white-space: normal; }   /* a long figure with its range wraps under its label instead of running off the card */
  .sdx__body > .table-wrap:last-child { margin-bottom: 0; }
  /* the How to read this paragraph and the When we said lines sit closer to the table they explain (owner review, 2 November 2026) */
  .table-wrap:has(+ .sc-def), .table-wrap:has(+ .sc-calls) { margin-bottom: var(--space-4); }
}
/* resort links (website, webcams, piste map): the external arrow in coral, both editions */
.resort-links .btn { display: inline-flex; align-items: center; gap: 0.45rem; }
.resort-share-done { margin: var(--space-2) 0 0; font-size: var(--text-sm); color: var(--color-text-muted); }
.ext-ico { display: inline-block; flex: none; color: #ff6a55; }

/* the fortnight at the lead resort (home): past seven days in ink, next seven in coral, out from today */
.ab-fn { margin: calc(-1 * var(--space-2)) 0 var(--space-5); padding: var(--space-3) 0 0; border-top: 1px solid var(--ab-rule); max-width: 34rem; font-family: var(--ab-sans); }
.ab-fn__h { font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-2); margin: 0 0 var(--space-2); }
.ab-fn__track { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--space-2); }
.ab-fn__past, .ab-fn__next { position: relative; height: 0.7rem; background: repeating-linear-gradient(90deg, var(--ab-hair) 0 2px, transparent 2px 5px); }
.ab-fn__past { display: flex; justify-content: flex-end; }
.ab-fn__past i, .ab-fn__next i { display: block; height: 100%; }
.ab-fn__past i { background: var(--ab-ink); }
.ab-fn__next i { background: var(--ab-hot); }
.ab-fn__today { font-size: 0.66rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; padding: 0.15rem 0.45rem; border: 1px solid var(--ab-rule); line-height: 1.2; }
.ab-fn__figs { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin-top: var(--space-2); }
.ab-fn__figs .is-next { text-align: right; }
.ab-fn__l { font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-2); margin: 0; }
.ab-fn__v { margin: 0.1rem 0 0; font-size: var(--text-sm); }
.ab-fn__v b { font-weight: 300; font-size: 1.6rem; letter-spacing: -0.02em; font-variant-numeric: lining-nums; }
.ab-fn__figs .is-next .ab-fn__v b { color: var(--ab-hot); }
.ab-fn__s { margin: 0; font-size: var(--text-xs); color: var(--ab-ink-2); }
[data-theme='light'] .ab-fn__v b { font-weight: 400; }

/* resort page: how to open the three-hour breakdown, under the Daily levels heading (pass holders) */

/* headline facts under the coral figure (home and region): snow quality, elevation, snow line */
.ab-hfacts { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); margin: var(--space-3) 0 0; font-family: var(--ab-sans); }
.ab-hf__l { margin: 0; font-size: 0.66rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); }
.ab-hf__v { margin: 0.1rem 0 0; font-size: var(--text-base); font-weight: 600; color: var(--ab-ink); }
.ab-hfacts + .ab-label { margin-top: var(--space-3); }

/* region table: the Daily levels icon takes the highlight colour so it stands out (coral on dark, ink on light) */
[data-theme='dark'] .fc-btn:not(:hover):not(.is-open), [data-theme='dark'] .fc-btn.is-locked:not(:hover) { color: #ff6a55; }
[data-theme='light'] .fc-btn:not(:hover):not(.is-open), [data-theme='light'] .fc-btn.is-locked:not(:hover) { color: #14120f; }

/* ---------- header: Find Resort, in the Season Pass chip's place (ink box, coral text) ---------- */
.nav-find { position: relative; display: flex; align-items: center; margin-left: var(--space-2); }
.nav-find__input { width: 11rem;   /* roomy enough to read a resort name as it is typed */ min-width: 0; padding: var(--space-2) var(--space-3); border: 0; border-radius: 0; background: #14120f; color: #ff6a55; font: inherit; font-size: var(--text-sm); font-weight: 500; letter-spacing: 0.04em; transition: width var(--transition), background var(--transition); -webkit-appearance: none; appearance: none; }
.nav-find__input::placeholder { color: #ff6a55; opacity: 1; }
.nav-find__input:hover { background: #2a2620; }
.nav-find__input:focus { outline: 2px solid #ff6a55; outline-offset: 1px; width: 15rem; }
.nav-find__input:focus::placeholder { opacity: 0.6; }
.nav-find__input::-webkit-search-cancel-button { filter: invert(55%) sepia(80%) saturate(2000%) hue-rotate(330deg); }
[data-theme='dark'] .nav-find__input { box-shadow: inset 0 0 0 1px #3a352d; }
.nav-find__list { position: absolute; z-index: 60; right: 0; top: calc(100% + 0.25rem); width: min(22rem, 90vw); margin: 0; padding: 0.25rem; list-style: none; background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-border); border-radius: 0.5rem; box-shadow: 0 8px 24px rgba(0,0,0,.18); max-height: 22rem; overflow-y: auto; text-align: left; }
/* each result: the resort link, then its pin star at the right-hand edge (28 Oct 2026) */
.nav-find__list li[role="option"] { display: flex; align-items: center; gap: 0.25rem; border-radius: 0.35rem; }
.nav-find__list li[role="option"] > a { flex: 1 1 auto; min-width: 0; }
.nav-find__list .nav-find__pin { flex: none; margin-right: 0.35rem; }
.nav-find__list li a { display: flex; flex-direction: column; gap: 0.1rem; padding: 0.5rem 0.75rem; border-radius: 0.35rem; color: inherit; text-decoration: none; white-space: normal; font-size: var(--text-sm); letter-spacing: 0; }
.nav-find__list li a::after { display: none; }
.nav-find__list li a span { font-size: var(--text-xs); color: var(--color-text-faint); }
.nav-find__list li.is-active, .nav-find__list li[role="option"]:hover { background: var(--color-border); }
.find-resort__none { padding: 0.6rem 0.75rem; font-size: var(--text-sm); color: var(--color-text-faint); }
@media (max-width: 1140px) {
  .nav-find { margin: var(--space-2) 0 0; }
  .nav-find__input, .nav-find__input:focus { width: min(18rem, 100%); font-size: var(--text-base); padding: var(--space-3); }
  .nav-find__list { left: 0; right: auto; }
}

/* footer: Season Pass link after the blurb */

@media (min-width: 1141px) and (max-width: 1320px) { .nav-find__input { font-size: 0.8rem; width: 8.5rem; padding-inline: 0.5rem; } .nav-find__input:focus { width: 11rem; } }
.nav-find__input::-webkit-search-decoration, .nav-find__input:placeholder-shown::-webkit-search-cancel-button { display: none; -webkit-appearance: none; }
/* Two-part accuracy record: summary view and detailed view (protocol 2026-27 v2) */
.sdh { padding: var(--space-5) var(--space-6); margin: var(--space-5) 0; }
.sdh__kicker { margin: 0 0 var(--space-1); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-text-muted); }
/* toned down to the panel-title size and weight (owner, 3 Nov 2026) */
.sdh__h { margin: 0; font-family: var(--ab-sans); font-weight: 500; font-size: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem); letter-spacing: -0.01em; line-height: 1.2; color: var(--ab-ink); }
.sdh__lead { margin: var(--space-3) 0 var(--space-1); max-width: 62ch; }
.sdh__scope { margin: var(--space-2) 0 var(--space-4); color: var(--color-text-muted); font-size: 0.9rem; }
.sdh__rows { list-style: none; margin: 0 0 var(--space-3); padding: 0; }
.sdh__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); align-items: start; padding: var(--space-3) 0; border-top: 1px solid var(--color-border, #8883); }
.sdh__text { display: block; font-size: 1rem; line-height: 1.4; }
.sdh__base, .sdh__n { display: block; font-size: 0.82rem; color: var(--color-text-muted); margin-top: 2px; }
.sdh__vals { display: grid; grid-template-columns: repeat(3, 5.2rem); gap: var(--space-2); text-align: right; }
.sdh__val b { display: block; font-family: var(--ab-sans); font-weight: 400; font-size: 1.15rem; line-height: 1.1; color: var(--ab-ink); font-variant-numeric: tabular-nums; }
.sdh__val.is-main b { font-size: 1.7rem; font-weight: 500; }
.sdh__val small { display: block; font-size: 0.72rem; color: var(--color-text-muted); }
@media (max-width: 640px) { .sdh__row { grid-template-columns: 1fr; gap: var(--space-2); } .sdh__vals { grid-template-columns: repeat(3, 1fr); text-align: left; } }
.sdx { padding: var(--space-4) var(--space-5); margin: var(--space-6) 0; }
.sdx summary { cursor: pointer; }
.sdx h3 { font-size: 1rem; margin: var(--space-4) 0 var(--space-2); }
.pd { margin: var(--space-3) 0; max-width: 320px; }
.pd svg { width: 100%; height: auto; }
.pd__frame { fill: none; stroke: var(--color-border, #8884); }
.pd__csi { fill: none; stroke: var(--color-text-faint, #8886); stroke-dasharray: 3 3; }
.pd__bias { stroke: var(--color-text-faint, #8886); }
.pd__pt { fill: var(--ab-hot); }
.pd__lab, .pd__ax { font-size: 10px; fill: var(--color-text-muted, #666); }
@media (max-width: 560px) { .sdh { padding: var(--space-4); } }
/* Monthly report: what went well beside what went wrong (owner request, 30 October 2026) */
.rep__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: var(--space-5); }
.rep__cols > div > h3:first-child { margin-top: var(--space-2); }
.sdx > summary { font-size: 1.05rem; padding: var(--space-1) 0; }
.sc-legacy > summary, .sc-legacy .sdx > summary, .view--reports .sdx > summary { font-size: 0.9rem; font-weight: 700; }
.sdx__body > .section-h:first-child { margin-top: var(--space-4); }
/* Scorecard: definitions and How to read it at the top of the Detailed view (owner request, 30 October 2026) */
.sc-intro { grid-template-columns: minmax(0, 1fr); }
.sdx__read { margin: 0 0 var(--space-5); max-width: 75ch; }
.sdx__read h2 { font-size: 1.15rem; margin: var(--space-3) 0 var(--space-2); }

/* ---------- member mark in the header (Season Pass holders, preview 1 November 2026) ---------- */
.member-mark { display: none; align-items: center; gap: 0.45rem; align-self: center; margin-left: var(--space-2); padding: 0.28rem 0.6rem 0.28rem 0.5rem;
  font-family: 'Jost', 'Futura', 'Helvetica Neue', Arial, sans-serif; font-size: 0.62rem; font-weight: 500; letter-spacing: 0.26em; text-transform: uppercase; text-decoration: none;  /* Jost, to match the wordmark beside it (owner, 3 Nov 2026) */
  color: var(--ab-ink); border: 1px solid color-mix(in srgb, var(--ab-ink) 45%, transparent); white-space: nowrap; }
.member-mark:hover { color: var(--ab-ink); border-color: var(--ab-ink); }
body.has-pass .member-mark, html.has-pass-hint .member-mark { display: inline-flex; }
/* on a phone it sits in line beside the logo, where the Season Pass button is for everyone else, not over the logo (owner review, 3 November 2026) */
@media (max-width: 640px) { body.has-pass .member-mark, html.has-pass-hint .member-mark { position: static; margin: 0; padding: 0.2rem 0.45rem; font-size: 0.55rem; letter-spacing: 0.2em; } }
@media (max-width: 380px) { body.has-pass .member-mark, html.has-pass-hint .member-mark { gap: 0.3rem; padding: 0.2rem 0.3rem; letter-spacing: 0.08em; } }

/* ---------- Season Pass settings: snow briefing (preview, 1 November 2026) ---------- */
.pass-member__block--feature { border-top: 3px solid var(--ab-hot); }
.brief-freq { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: var(--space-2); border: 0; padding: 0; margin: var(--space-3) 0; }
.brief-freq legend { font-size: var(--text-xs); letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); margin-bottom: var(--space-2); }
.brief-opt { display: flex; gap: var(--space-2); align-items: flex-start; padding: var(--space-3); border: 1px solid var(--color-border); cursor: pointer; min-height: 44px; }
.brief-opt.is-on { border-color: var(--ab-ink); box-shadow: inset 0 0 0 1px var(--ab-ink); }
.brief-opt b { display: block; font-weight: 500; }
.brief-opt small { display: block; color: var(--ab-ink-2); font-size: var(--text-xs); }
.pass-member__block--feature fieldset { border: 0; padding: 0; margin: var(--space-3) 0; min-width: 0; }
.pass-member__block--feature fieldset legend { font-size: var(--text-xs); letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); margin-bottom: var(--space-2); padding: 0; }
/* ---------- Trip Planner (preview, 1 November 2026): picks, readable cells, last winter, compare, calmer Go grid ---------- */
.tp-picks { margin: var(--space-5) 0 var(--space-4); }
.tp-picks__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: var(--space-3); }
.tp-pick { border: 1px solid var(--color-border); background: var(--color-surface); padding: var(--space-4) var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); font-family: var(--ab-sans); }
.tp-pick:first-child { border-top: 3px solid var(--ab-hot); }
.tp-pick__n { margin: 0; font-size: 0.7rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ab-hot); }
.tp-pick__name { margin: 0; font-family: var(--ab-sans); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; font-size: 1.25rem; line-height: 1.15; }
.tp-pick__name a { text-decoration: none; color: inherit; }
.tp-pick__where { margin: 0; font-size: var(--text-xs); color: var(--ab-ink-2); }
.tp-pick__figs { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-3); padding: var(--space-2) 0; border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.tp-pick__figs > div { display: flex; flex-direction: column; gap: 0.15rem; }
.tp-pick__figs small, .tp-pick__row small { font-size: var(--text-xs); color: var(--ab-ink-2); }
.tp-pick__l { font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); }
.tp-pick__v b { font-weight: 200; font-size: 2.1rem; line-height: 1; letter-spacing: -0.02em; }
.tp-pick__figs > div:first-child .tp-pick__v b { color: var(--ab-hot); }
.tp-pick__row { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; font-size: var(--text-sm); }
.tp-pick__row .tp-pick__l { min-width: 8.5rem; }
.tp-pick__row b { font-weight: 500; }
.tp-pick__act { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: auto; padding-top: var(--space-2); }
/* range bar: middle half of 20 winters as a band, the typical fortnight as a mark */
.tp-rbar { position: relative; display: block; height: 6px; min-width: 5rem; margin: 0.3rem 0 0.15rem; background: var(--color-surface-offset-2); }
.tp-rbar__band { position: absolute; top: 0; bottom: 0; background: color-mix(in srgb, var(--ab-hot) 40%, transparent); }
.tp-rbar__mid { position: absolute; top: -3px; width: 2px; height: 12px; margin-left: -1px; background: var(--ab-hot); }
/* 20 winters as dots */
.tp-dots { display: inline-grid; grid-template-columns: repeat(10, 6px); gap: 2px; vertical-align: middle; }
.tp-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--color-surface-offset-2); }
.tp-dots i.on { background: var(--ab-ink); }
/* table cells */
.tp-short .tp-snowcell, .tp-short .tp-wcell, .tp-short .tp-lycell { min-width: 6.5rem; }
.tp-short .tp-snowcell b, .tp-short .tp-lycell b { font-weight: 300; font-size: 1.45rem; }
.tp-short .tp-snowcell small, .tp-short .tp-wcell small, .tp-short .tp-lycell small, .tp-short .tp-tcell small { display: block; }
.tp-short .tp-wcell .tp-dots { justify-content: end; }
.tp-short .tp-tcell b { font-weight: 500; }
.tp-vchip { display: inline-block; padding: 0.15rem 0.5rem; font-size: 0.72rem; letter-spacing: 0.06em; border: 1px solid var(--color-border); white-space: nowrap; cursor: help; }
.tp-vchip--lead { border-color: var(--ab-hot); color: var(--ab-hot); }
.tp-vchip--similar { border-color: var(--ab-ink); }
.tp-vchip--less, .tp-vchip--na { color: var(--ab-ink-2); }
.tp-cmpbox { display: inline-flex; align-items: center; gap: 0.35rem; font-size: var(--text-xs); min-height: 32px; cursor: pointer; white-space: nowrap; }
.tp-cmpbox input { accent-color: var(--ab-hot); width: 1rem; height: 1rem; }
/* last winter */
.tp-ly { margin: var(--space-4) 0; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); background: var(--color-surface-offset); font-family: var(--ab-sans); }
.tp-ly--compact { margin: var(--space-3) 0 0; padding: var(--space-3); }
.tp-ly__h { margin: 0 0 0.25rem; font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; }
.tp-ly__h .muted { letter-spacing: 0.04em; }
.tp-ly__v { margin: 0 0 var(--space-2); font-size: var(--text-sm); }
.tp-ly__v b { font-weight: 600; font-size: inherit; }   /* one text size in the block (owner, 14 Nov 2026) */
.tp-ly__w { font-size: inherit; }
.tp-ly__w--snowier { color: var(--ab-hot); }
.tp-ly__w--less { color: var(--ab-ink-2); }
.tp-ly__bars { display: grid; grid-template-columns: repeat(var(--ly-n, 14), minmax(0, 1fr)); gap: 3px; align-items: start; }
.tp-ly__d { display: flex; flex-direction: column; align-items: stretch; text-align: center; min-width: 0; }
.tp-ly__cm { font-size: 0.72rem; font-variant-numeric: tabular-nums lining-nums; padding-bottom: 2px; }
.tp-ly__bar { height: 3.4rem; display: flex; align-items: flex-end; border-bottom: 1px solid var(--ab-rule); }
.tp-ly--compact .tp-ly__bar { height: 2.4rem; }
.tp-ly__dt { font-size: 0.66rem; color: var(--ab-ink-2); padding-top: 3px; line-height: 1.15; }
.tp-ly__dt small { display: block; font-size: 0.58rem; letter-spacing: 0.08em; text-transform: uppercase; }
.tp-ly--compact .tp-ly__cm, .tp-ly--compact .tp-ly__dt { font-size: 0.6rem; }
.tp-ly__unit { margin: 0.35rem 0 0; font-size: 0.66rem; letter-spacing: 0.08em; color: var(--ab-ink-2); }
.tp-ly__bar i { display: block; width: 100%; background: var(--ab-ink); }
.tp-ly__note { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--ab-ink-2); }
/* compare */
.tp-cmp { margin: var(--space-6) 0; padding: var(--space-5); border: 1px solid var(--ab-rule); background: var(--color-surface); }
.tp-cmp__top { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; }
.tp-cmp__grid { display: grid; grid-template-columns: repeat(var(--n), minmax(15rem, 1fr)); gap: var(--space-4); overflow-x: auto; margin-top: var(--space-3); }
.tp-cmp__col { border-top: 1px solid var(--ab-rule); padding-top: var(--space-3); font-family: var(--ab-sans); }
.tp-cmp__col.is-lead { border-top: 3px solid var(--ab-hot); }
.tp-cmp__head { display: flex; flex-direction: column; gap: 0.15rem; margin-bottom: var(--space-3); }
.tp-cmp__head a { font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; font-size: 1.1rem; text-decoration: none; color: inherit; }
.tp-cmp__head small { color: var(--ab-ink-2); font-size: var(--text-xs); }
.tp-cmp__head .link-btn { align-self: flex-start; font-size: var(--text-xs); }
.tp-cmp__dl { margin: 0; display: grid; gap: 0; }
.tp-cmp__dl > div { padding: 0.5rem 0; border-bottom: 1px solid var(--color-border); }
.tp-cmp__dl dt { font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); }
.tp-cmp__dl dd { margin: 0.15rem 0 0; font-size: var(--text-sm); }
.tp-cmp__dl dd b { font-weight: 300; font-size: 1.35rem; }
.tp-cmp__dl dd small { display: block; color: var(--ab-ink-2); font-size: var(--text-xs); }
.tp-tray { position: sticky; bottom: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); padding: var(--space-3) var(--space-4); margin-top: var(--space-4); background: var(--ab-inv-bg); color: var(--ab-inv-fg); border-top: 3px solid var(--ab-hot); font-family: var(--ab-sans); }
.tp-tray__l { font-size: 0.7rem; letter-spacing: 0.22em; text-transform: uppercase; }
.tp-tray__r { font-weight: 500; }
.tp-tray__r + .tp-tray__r::before { content: '·'; margin-right: var(--space-2); opacity: 0.6; }
.tp-tray__hint { font-size: var(--text-xs); opacity: 0.75; margin-right: auto; }
.tp-tray .link-btn { color: inherit; }
.tp-tray .btn { background: var(--ab-hot); border-color: var(--ab-hot); color: #0d0c0b; }
.tp-tray .btn[disabled] { opacity: 0.5; }
/* Go grid: quiet days recede, the best day is filled, the score is a bar */
.tp-grid .tp-gd--quiet { color: var(--ab-ink-2); opacity: 0.55; text-align: center; }
.tp-grid .tp-gd.is-best { background: color-mix(in srgb, var(--ab-hot) 16%, transparent); box-shadow: inset 0 0 0 2px var(--ab-hot); }
.tp-gd__pds { display: block; width: 3.4rem; height: 4px; margin: 0.3rem auto 0.1rem; background: var(--color-surface-offset-2); }
.tp-gd__pds i { display: block; height: 100%; background: var(--ab-hot); }
.tp-grid .tp-gd__conf .tp-conf { font-size: 0.62rem; padding: 0.05rem 0.35rem; }
.tp-short .tp-u { font-size: var(--text-xs); color: var(--ab-ink-2); }

.tp-curve__t { font-size: 13px; }
.tp-curve__unit { font-size: 12px; letter-spacing: 0.04em; }
.tp-curve__bestl { fill: #e04a35; font-weight: 600; }
.tp-dots--rain i.on { background: #5b8fc7; }
/* ---------- resort page (preview, 1 November 2026) ---------- */
/* the fortnight: past seven report days in ink, next seven in coral, today boxed; scrolls sideways on a phone */
.fn { margin: var(--space-10) 0 var(--space-6); font-family: var(--ab-sans); color: var(--ab-ink); }
.fn__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-2) var(--space-4); border-top: 1px solid var(--ab-rule); padding-top: var(--space-3); }
.fn__head .section-h { margin: 0; border-top: 0; padding-top: 0; }

 

.fn__grid { display: grid; grid-template-columns: repeat(14, minmax(3.1rem, 1fr)); gap: 0.4rem; min-width: 46rem; align-items: end; }
.fn__day { display: flex; flex-direction: column; align-items: stretch; gap: 0.35rem; text-align: center; }
.fn__cm { font-size: var(--text-sm); font-variant-numeric: tabular-nums lining-nums; }
.fn__day--next .fn__cm { color: var(--ab-hot); }
.fn__bar { position: relative; height: 9.5rem; display: flex; align-items: flex-end; border-bottom: 1px solid var(--ab-rule); }
.fn__bar i { display: block; width: 100%; background: var(--ab-ink); }
.fn__day--next .fn__bar i { background: var(--ab-hot); }
.fn__day.is-today .fn__bar { box-shadow: inset 0 0 0 1px var(--ab-hair); }
.fn__day.is-gap .fn__bar { background: repeating-linear-gradient(135deg, var(--ab-hair) 0 2px, transparent 2px 7px); }
.fn__dn { font-size: 0.7rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; padding: 0.15rem 0; border: 1px solid transparent; }
.fn__day.is-today .fn__dn { border-color: var(--ab-rule); }
.fn__dt { font-size: 0.7rem; color: var(--ab-ink-2); }

/* top of the slopes and the base; how sure is the forecast */
.resort-pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: var(--space-4); margin: 0 0 var(--space-6); }
.resort-pair .panel { margin: 0; padding: var(--space-5); font-family: var(--ab-sans); }
.resort-pair .panel__title { margin: 0 0 var(--space-4); font-size: clamp(1.35rem, 1.1rem + 0.8vw, 1.8rem); }
.sl__pts { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--color-border); }
.sl__pt { padding: var(--space-3) var(--space-3) 0 0; }
.sl__pt + .sl__pt { padding-left: var(--space-3); border-left: 1px solid var(--color-border); }
.sl__l { margin: 0; font-size: var(--text-xs); letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-2); }
.sl__v { margin: 0.2rem 0; font-size: var(--text-sm); }
.sl__v b { font-weight: 200; font-size: 2.6rem; letter-spacing: -0.02em; line-height: 1; font-variant-numeric: lining-nums; }
.sl__v span { color: var(--ab-ink-2); }
.sl__s { margin: 0; font-size: var(--text-sm); color: var(--ab-ink-2); }
.sl__s b { color: var(--ab-hot); font-weight: 500; }
.sl__scale { display: block; margin-top: var(--space-5); }
.sl__track { position: relative; display: block; height: 0.75rem; background: var(--color-surface-offset-2); }
.sl__band { position: absolute; top: 0; bottom: 0; background: var(--ab-ink); }
.sl__today { position: absolute; top: -0.3rem; width: 3px; height: 1.35rem; margin-left: -1px; background: var(--ab-hot); }
.sl__ends { display: flex; justify-content: space-between; margin-top: 0.35rem; font-size: var(--text-xs); color: var(--ab-ink-2); }
.sl__words, .sure__words { margin: var(--space-3) 0 0; font-size: var(--text-sm); line-height: 1.5; }
.sure__track { position: relative; display: block; height: 0.75rem; background: var(--color-surface-offset-2); }
.sure__band { position: absolute; top: 0; bottom: 0; background: color-mix(in srgb, var(--ab-hot) 35%, transparent); }
.sure__mark { position: absolute; top: -0.3rem; width: 3px; height: 1.35rem; margin-left: -1px; background: var(--ab-hot); }
.sure__l { margin: var(--space-5) 0 var(--space-2); font-size: var(--text-xs); letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-2); }
.sure__l .muted { letter-spacing: 0; text-transform: none; }

@media (max-width: 640px) {
   
  .sl__pts { grid-template-columns: 1fr; } .sl__pt + .sl__pt { padding-left: 0; border-left: 0; border-top: 1px solid var(--color-border); margin-top: var(--space-3); }
  
}

/* ---------- resort page, free and Season Pass editions (preview, 1 November 2026) ---------- */
.ab-rfigs--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); max-width: none; }
.ab-rfigs--4 .ab-rfig + .ab-rfig { border-left: 1px solid var(--ab-rule); }
.ab-rfigs--4 .ab-rfig.is-inv + .ab-rfig.is-inv { border-left-color: color-mix(in srgb, var(--ab-inv-fg) 25%, transparent); }
.ab-verdict__wk { display: block; margin-top: 0.35rem; }
@media (max-width: 760px) { .ab-rfigs--4 { grid-template-columns: 1fr 1fr; } .ab-rfigs--4 .ab-rfig:nth-child(3) { border-left: 0; } .ab-rfigs--4 .ab-rfig:nth-child(n+3) { border-top: 1px solid var(--ab-rule); } }

.fn__grid--past { grid-template-columns: repeat(7, minmax(3.1rem, 1fr)); min-width: 24rem; }

.fn__lvtabs { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-2) 0 var(--space-3); }
.fn__lvtabs .chip { min-height: 40px; }
.sure__chs { display: grid; gap: 0.4rem; }
.sure__ch { display: grid; grid-template-columns: 8.5rem repeat(3, minmax(0, 1fr)); gap: var(--space-3); align-items: baseline; font-size: var(--text-sm); }
.sure__pct small { display: block; font-size: 0.7rem; color: var(--ab-ink-2); }
.sure__pct b { font-weight: 300; font-size: 1.4rem; color: var(--ab-hot); font-variant-numeric: lining-nums; }
@media (max-width: 640px) { .sure__ch { grid-template-columns: 6.5rem repeat(3, minmax(0, 1fr)); } }
.resort-sub { font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; margin: var(--space-6) 0 var(--space-3); color: var(--ab-ink); }
.resort-sub .muted { letter-spacing: 0; text-transform: none; font-weight: 400; }

 /* four items, two by two: no item left on its own row */

@media (min-width: 761px) { .fn--pass .fn__grid--past { max-width: 812px; padding-left: 104px; box-sizing: border-box; min-width: 0; } }

/* station beside the S badge (1 Nov 2026) */

/* the fortnight for pass holders: past 7 days in front of the forecast, in one table per height */
.fc--fortnight .fc__table { min-width: 58rem; }
.fc--fortnight .fc__ph { color: var(--ab-ink-2); font-weight: 500; }
.fc--fortnight .fc__snow--past { background: var(--color-surface-offset); }
.fc--fortnight .fc__snow--past .fc__bar i { background: var(--ab-ink); }
.fc--fortnight .fc__pastsum { font-size: 0.8rem; text-align: center; }
.fc--fortnight .fc__pastsum b { font-weight: 300; font-size: 1.3rem; }
.fc--fortnight .fc__pastnote { background: var(--color-surface-offset); border-top: 1px solid var(--color-border); text-align: center; vertical-align: middle; font-size: 0.78rem; color: var(--ab-ink-2); padding: var(--space-3); }
.fc--fortnight .fc__pastnote span { display: inline-block; max-width: 22rem; line-height: 1.5; }
.fc--fortnight .fc__pastnote b { color: var(--ab-ink); font-weight: 500; }
/* snow or rain by height: a grid, top of the mountain first */
.sr-grid { margin: var(--space-3) 0 var(--space-6); font-family: var(--ab-sans); }
.sr-table { width: 100%; min-width: 38rem; border-collapse: separate; border-spacing: 3px; table-layout: fixed; }
.sr-table thead th { font-size: 0.7rem; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 500; color: var(--ab-ink-2); text-align: center; }
.sr-table thead th small { display: block; letter-spacing: 0; font-size: 0.75rem; color: var(--ab-ink); }
.sr-table th[scope="row"] { width: 9rem; text-align: left; font-weight: 400; padding-right: var(--space-2); }
.sr-table th[scope="row"] b { display: block; font-weight: 500; font-size: 0.85rem; }
.sr-table th[scope="row"] small { color: var(--ab-ink-2); font-size: 0.72rem; }
.sr-cell { height: 3.1rem; text-align: center; vertical-align: middle; font-size: 0.78rem; }
.sr-cell span { display: block; font-weight: 500; }
.sr-cell small { display: block; font-size: 0.7rem; opacity: 0.85; }
.sr-cell--snow { background: #f4efe6; color: #14120f; }
.sr-cell--rain { background: #3d6f9e; color: #f4efe6; }
.sr-cell--sensitive { background: repeating-linear-gradient(135deg, #f4efe6 0 6px, #9fb7cf 6px 12px); color: #14120f; }
.sr-cell--dry { background: var(--color-surface-offset); color: var(--ab-ink-2); }
.sr-cell--unknown { background: transparent; color: var(--ab-ink-2); }
[data-theme='light'] .sr-cell--snow { background: #ffffff; box-shadow: inset 0 0 0 1px var(--color-border); }
.sr-line td { text-align: center; font-size: 0.72rem; color: var(--ab-ink-2); padding-top: 0.3rem; }
.sr-line th b { font-size: 0.72rem !important; color: var(--ab-ink-2); }
.sr-key { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 0.8rem; font-size: 0.75rem; color: var(--ab-ink-2); margin: var(--space-2) 0; }
.sr-key span { display: inline-block; padding: 0.15rem 0.5rem; font-weight: 500; }
.resort-levels .fc--fortnight { max-width: none; }
.fc--fortnight .fc__table th[scope="row"] { width: 7.4rem; overflow-wrap: normal; word-break: normal; hyphens: none; }
.sr-table th[scope="row"], .sr-table th[scope="row"] b, .sr-table th[scope="row"] small { letter-spacing: 0; text-transform: none; }
/* resort page round 3 (1 Nov 2026) */
.fc--fortnight .fc__table tbody td, .fc--fortnight .fc__table tbody th { padding-top: 0.55rem; padding-bottom: 0.55rem; }
.fc--fortnight .fc__table { border-spacing: 0.25rem 0.2rem; }

.h3pop { border: 1px solid var(--ab-ink); }
[data-theme='dark'] .h3pop { border-color: #ff6a55; }

.map3d-go.is-locked { opacity: 0.92; }

/* free fortnight (1 Nov 2026): past and next 7 days as summaries, upper slopes and base; bars are the pass view */

.fn__suml { margin: 0 0 var(--space-3); font-size: var(--text-xs); letter-spacing: 0.2em; text-transform: uppercase; }
.fn__suml .muted { letter-spacing: 0.04em; text-transform: none; }

/* ---------- Scorecard and monthly reports (preview, 1 November 2026) ---------- */
/* the two pages as one pair: live scorecard, final reports */
.sc-switch { display: flex; flex-wrap: wrap; gap: 0; margin: 0 0 var(--space-5); border: 1px solid var(--ab-rule); width: max-content; max-width: 100%; font-family: var(--ab-sans); }
.sc-switch a { display: flex; flex-direction: column; justify-content: center; min-height: 44px; padding: 0.35rem 1rem; text-decoration: none; color: var(--ab-ink); font-weight: 500; }
.sc-switch a + a { border-left: 1px solid var(--ab-rule); }
.sc-switch a small { font-size: 0.7rem; font-weight: 400; letter-spacing: 0.04em; color: var(--ab-ink-2); }
.sc-switch a[aria-current="page"] { background: var(--ab-ink); color: var(--color-bg); }
.sc-switch a[aria-current="page"] small { color: inherit; opacity: 0.75; }
.live-pill { display: inline-flex; align-items: center; gap: 0.4rem; font-family: var(--ab-sans); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; padding: 0.2rem 0.6rem; border: 1px solid currentColor; color: var(--ab-ink); }
.live-pill::before { content: ''; width: 0.45rem; height: 0.45rem; border-radius: 50%; background: #3fae6a; animation: ab-pulse 2.4s ease-in-out infinite; }  /* flashes like the home page's live dot */
.live-pill--final::before { border-radius: 0; background: var(--ab-ink); animation: none; }  /* final: a still square */
@media (prefers-reduced-motion: reduce) { .live-pill::before { animation: none; } }
/* status and reconciliation notices read left-aligned, not centred like a plain loading notice (owner request, 2 November 2026) */
.rep__status, .rep-recon { text-align: left; }
.rep__status:not(.notice--ok), .rep-recon:not(.notice--ok) { padding-inline: 0; }  /* no background box: line up with the page edge */
.sc-live { margin: 0 0 var(--space-3); }

.sc-period__l { font-family: var(--ab-sans); font-size: var(--text-xs); letter-spacing: 0.18em; text-transform: uppercase; color: var(--ab-ink-2); margin-right: var(--space-1); }
.rep__tabs [aria-pressed="true"] { background: var(--ab-ink); color: var(--color-bg); border-color: var(--ab-ink); }
/* light theme (owner, 3 Nov 2026): the noir section of style.css fills every .btn with ink by day, so all the period and month chips looked
   selected. Unselected chips are outlines, as at night; the selected one stays filled. */
[data-theme='light'] .rep__tabs .btn:not([aria-pressed="true"]) { background: transparent; color: var(--ab-ink); border-color: var(--ab-ink); }
[data-theme='light'] .rep__tabs .btn:not([aria-pressed="true"]):hover { background: var(--ab-ink); color: var(--color-bg); }
/* the chip text in the type of the home page buttons ("See how accurate we are"): sentence case, not spaced capitals
   (owner, 3 Nov 2026) */
.rep__tabs .btn { font-family: var(--ab-sans); font-weight: 500; font-size: var(--text-sm); letter-spacing: 0.04em; text-transform: none; }
.sdh__shared { margin: 0 0 var(--space-2); font-size: var(--text-xs); color: var(--ab-ink-2); }
.rep-recon { margin: 0 0 var(--space-4); }
/* Updated observations has no box, so none of the box padding (owner, 6 Nov 2026): 20px below the limited-evidence line
   and 24px above How the month went, as between the other blocks of the report */
.rep-recon:not(.notice--ok) { padding-block: 0; margin-bottom: var(--space-6); }
.rep-brief { margin: var(--space-5) 0; padding: var(--space-5); font-family: var(--ab-sans); }

/* Home headline as a statement (owner, 3 Nov 2026): Jost, upright, smaller than the old question */
#answerHome .ab-question { font-family: var(--ab-page); font-weight: 500; font-size: clamp(1.45rem, 1rem + 1.5vw, 2.3rem); letter-spacing: -0.01em; }
/* ticker: a fixed fade at both ends so a scrolling item is never cut mid-word at the edge (owner, 3 Nov 2026) */
.ticker__track { -webkit-mask-image: linear-gradient(90deg, transparent, #000 56px, #000 calc(100% - 40px), transparent); mask-image: linear-gradient(90deg, transparent, #000 56px, #000 calc(100% - 40px), transparent); }
/* every page headline in upright Newsreader, wherever it sits (region title, resort name, legal pages) */
.page-title { font-family: var(--ab-page); font-style: normal; font-weight: 500; letter-spacing: -0.012em; }
.answer-board .ab-question { letter-spacing: -0.012em; }
.section-h, .sdh__h, .about-box__h { font-weight: 600; letter-spacing: -0.01em; }
/* One heading size for the resort page and the detailed views (owner, 3 Nov 2026): the size of the resort panel title
   "Top of the slopes and the base" (.resort-pair .panel__title). Faces and weights unchanged. */
:root { --sd-head-s: clamp(1.35rem, 1.1rem + 0.8vw, 1.8rem); }
#view-resort .section-h, #view-resort .panel__title, #view-resort .dbd__h, #view-resort .offer__h, #view-resort .dbd__t,
.sdx .section-h { font-size: var(--sd-head-s); line-height: 1.25; font-weight: 600; letter-spacing: -0.01em; }

/* Desktop headings in proportion (owner, 3 Nov 2026): on screens wider than 640 px every heading is its phone size x 1.15,
   so desktop keeps the balance of the phone view (before, the big titles grew far more than the small headings).
   Phone sizes are unchanged. --qs is the answer headline size, also used to centre it between its rules. */
.answer-board .ab-q { --qs: clamp(1.7rem, 1.2rem + 1.8vw, 2.7rem); }
#answerHome .ab-q { --qs: clamp(1.45rem, 1rem + 1.5vw, 2.3rem); }
@media (min-width: 641px) {
  .answer-board .ab-q { --qs: 1.955rem; }                       /* region headline: 27.2 px x 1.15 = 31.3 px */
  #answerHome .ab-q { --qs: 1.6675rem; }                        /* home headline: 23.2 px x 1.15 = 26.7 px */
  .answer-board .ab-q .ab-question, #answerHome .ab-q .ab-question { font-size: var(--qs); }
  /* optical centring: the letters' body sat high between the rules, so headline and meta move down together */
  .answer-board .ab-q > .ab-question, .answer-board .ab-q > .ab-meta { position: relative; top: calc(0.12 * var(--qs)); }
  html .sd-edition__name, html .hello__t { font-size: 1.6675rem; }   /* 26.7 px, as the home headline */
  .page-title { font-size: 2.53rem; }                                /* 35.2 x 1.15 */
  .page-head .page-title { font-size: 2.76rem; }                     /* 38.4 x 1.15 = 44.2 px */
  #view-region .page-head #regionTitle { font-size: 1.84rem; }       /* 25.6 x 1.15 = 29.4 px */
  .ab-resort .page-head--resort .page-title, .view--resort.ab-resort .page-head--resort .page-title { font-size: 3.22rem; }   /* 44.8 x 1.15 = 51.5 px */
  :root { --sd-head-s: 1.5525rem; }                                  /* resort and detailed-view headings: 21.6 x 1.15 = 24.8 px */
  .sdh__h, .about-box .about-box__h, .has-answer .about-box .about-box__h, .panel__title { font-size: 1.4375rem; }   /* 20 x 1.15 = 23 px */
  #view-resort .panel__title { font-size: var(--sd-head-s); }
  .ab-board__t { font-size: 1.318rem; }                              /* 18.3 x 1.15 = 21.1 px */
  html .ab-name-big { font-size: 2.99rem; }                          /* the answer name: 41.6 x 1.15 = 47.8 px */
}
/* the space under the answer headline's bottom rule matches the space above its top rule (owner, 3 Nov 2026): 24 px to the
   letters of the line above the resort name, which carries about 5 px of line spacing above its capitals */
.answer-board .ab-q { margin-bottom: calc(var(--space-6, 1.5rem) - 5px); }
/* phones: a section heading's grey note goes on its own line, so the title is not balanced across two lines and split
   inside a resort name ('The fortnight at Val / d'Isère') (owner, 3 Nov 2026) */
@media (max-width: 640px) { .section-h > .muted { display: block; margin-top: 0.3rem; line-height: 1.3; } }
/* phones: a little more space between 'Is there snow in ...?' and the commentary below it (owner, 3 Nov 2026) */
@media (max-width: 640px) { .ab-verdict__q { margin-bottom: 0.45em; } }
/* Spacing sweep (owner, 3 Nov 2026): one inner padding for content panels, one gap from a heading to its content */
.panel.sl, .panel.sure, .panel.avy, .panel.season, .panel.sdh, .panel.sdx, .panel.sc-lead, .panel.rep__why, .panel.rep__card { padding: var(--space-5) var(--space-6); }
@media (max-width: 640px) { .panel.sl, .panel.sure, .panel.avy, .panel.season, .panel.sdh, .panel.sdx, .panel.sc-lead, .panel.rep__why, .panel.rep__card { padding: var(--space-4); } }
#view-home .panel__head { padding-bottom: calc(var(--space-4) - 1px); }   /* home panel titles 16 px to their tables, as on resort pages */
.sdh__scope { margin-top: var(--space-3); }                                /* 12 px under the record heading, as in the monthly report */
.movers__head { row-gap: var(--space-2); }
/* a note that belongs to the table above it sits close under it (16 px), not after the 48 px gap before a new section
   (owner, 3 Nov 2026): resort station checks, Scorecard and report tables */
.table-wrap:has(+ .fc__note), .table-wrap:has(+ .sc-def) { margin-bottom: var(--space-3); }
.table-wrap + .fc__note, .table-wrap + .sc-def { margin-top: var(--space-2); }
/* Site rhythm to match the home page (owner, 3 Nov 2026): 32 px before a new section and after a table, 24 px between
   stacked panels (unchanged); notes directly under a table keep their 12 px (rule above) */
.section-h { margin-top: var(--space-8); }
.table-wrap { margin-bottom: var(--space-8); }
.table-wrap:has(+ .fc__note), .table-wrap:has(+ .sc-def) { margin-bottom: var(--space-3); }
.fn { margin-top: var(--space-8); }
#view-resort .offer { margin-block: var(--space-8); }
#view-reports .prose.scorecard-notes, #view-scorecard .prose.scorecard-notes { margin-top: var(--space-8); }

/* Newsreader for sentences people read (owner, 3 Nov 2026): news headlines and the hemisphere summaries; page
   introductions, data, labels and controls stay in Libre Franklin */
.hero__caption h3 { font-family: var(--ab-page); font-weight: 500; letter-spacing: -0.01em; }
.news-item__title { font-family: var(--ab-page); font-weight: 500; font-size: 1.12rem; line-height: 1.3; letter-spacing: 0; }
.ab-cell__t { font-family: var(--ab-page); font-size: 1.02rem; line-height: 1.45; }
/* resort names in capitals: enough line spacing that accents (Ö, Ü, É) on a second line clear the line above (owner, 3 Nov 2026) */
.ab-resort .page-head--resort .page-title, .view--resort.ab-resort .page-head--resort .page-title { line-height: 1.04; }
/* Monthly reports (owner, 3 Nov 2026): the status line under the archive chips has no box, so no box padding; the same
   gaps as the Scorecard (16px from the chips to the Live chip, 24px from the text to the headline panel) */
.rep__status:not(.notice--ok) { padding-block: 0; margin-bottom: var(--space-6); }
/* Scorecard and Monthly reports (owner, 3 Nov 2026): the gap from the period or archive chips to the Live chip is the
   same 24px as the gap above the headline panel */
#view-reports .rep__tabs { margin-bottom: var(--space-6); }
   /* the Live chip sits 2px down its line on desktop */
/* the boxes under the headline panel (Early season, the cards, How the month went): 24px apart, as above the panel */
#view-scorecard .sdh, #view-reports .sdh, #view-scorecard .sc-early, #view-reports .rep__why { margin-bottom: var(--space-6); }
/* from the page introduction to the content (owner, 3 Nov 2026): 24px to a row of chips, as on the Scorecard, Events
   and the region pages; 40px to anything else, as on every other page */
#view-reports .page-head .page-lede { margin-bottom: 0; }
#methodologyBody > .gate:first-child { margin-top: 0; }
#view-trip .tp-hold, #view-trip .trip__stages { margin-top: 0; }

/* Forward-only scorecard: keep the primary record readable on phones. */
.sc-forward { padding: var(--space-4); }
.sc-forward > p { margin: var(--space-3) 0; }

/* Resort mobile view: forecast first; reveal the previous week on request. */
.fn__history-toggle { display: none; }
@media (max-width: 720px) {
  .fn__history-toggle { display: inline-flex; align-items: center; min-height: 40px; margin: var(--space-1) 0; }
  
  .fn__history-desktop { display: none; }
  .fn--history-ready:not(.fn--past-open) .fc--fortnight .fc__table { min-width: 34rem; }
  .fn--history-ready:not(.fn--past-open) :is(.fc__ph, .fc__snow--past, .fc__parts--past, .fc__pastnote) { display: none; }
}

/* Shared tracks keep corresponding comparison entries aligned after any text wraps. */
.tp-cmp__grid { grid-template-rows: repeat(var(--rows), auto); row-gap: 0; }
.tp-cmp__col { display: grid; grid-row: 1 / span var(--rows); grid-template-rows: subgrid; border-top-width: 3px; min-width: 0; }
.tp-cmp__dl { grid-row: 2 / span var(--metrics); grid-template-rows: subgrid; }
.tp-cmp__col > .tp-ly { grid-row: -2 / -1; }
/* Trip Planner panel on the resort page (owner, 6 Nov 2026; 24px above it like the other panels, 7 Nov 2026): the resort's place in the visitor's trip,
   then the actions. Laid out like the report panels: an eyebrow, one line, a smaller line of figures, chips. */
.rt { margin: var(--space-6) 0 var(--space-8); padding: var(--space-5) var(--space-6); font-family: var(--ab-sans); border-left: 4px solid var(--color-border); }
.fn__ly { margin-top: var(--space-5); }   /* this time last year, under the daily levels (owner, 6 Nov 2026) */
.rt__eyebrow { margin: 0 0 var(--space-2); font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ab-ink-2); }
.rt__line { margin: 0; font-size: var(--text-base); line-height: 1.5; color: var(--ab-ink); max-width: 70ch; }
.rt__more { margin: var(--space-1) 0 0; font-size: var(--text-sm); line-height: 1.5; color: var(--ab-ink-2); max-width: 70ch; }
.rt__acts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: var(--space-4); }
.rt__acts .chip { min-height: 40px; font-size: var(--text-sm); }
.rt__acts .chip[disabled] { opacity: 0.55; cursor: default; }
.rt__acts .btn { margin-left: auto; }

@media (max-width: 640px) {
  .rt { padding: var(--space-4); }
  .rt__acts .btn { margin-left: 0; width: 100%; justify-content: center; }
}
/* Shortlist before a date is chosen (owner, 6 Nov 2026): one prompt under the date and area, nothing ranked yet */
.tp-dateprompt { margin: var(--space-5) 0 var(--space-3); padding: var(--space-4) var(--space-5); border-left: 4px solid var(--color-primary); background: var(--color-surface); font-family: var(--ab-sans); font-size: var(--text-base); line-height: 1.5; color: var(--ab-ink); max-width: 70ch; }
.tp-saved [data-trip-save][disabled] { opacity: 0.5; cursor: default; }   /* no trip to save until a date is chosen */
/* My mountains above the top picks, and the ones not shown with the current choices (owner, 6 Nov 2026) */
.tp-missing { margin: var(--space-3) 0 0; font-family: var(--ab-sans); font-size: var(--text-sm); color: var(--ab-ink-2); }
.tp-missing p { margin: 0 0 var(--space-1); }
.tp-missing ul { margin: 0; padding-left: 1.1rem; display: grid; gap: var(--space-1); }
.tp-missing b { color: var(--ab-ink); font-weight: 600; }
.tp-missing .link-btn { margin-left: var(--space-1); text-decoration: underline; color: var(--ab-ink); min-height: 32px; }
/* the visitor's own picks (owner, 6 Nov 2026): the same cards, each with how it compares with the snowiest resort here */
.tp-picks--mine { margin-bottom: var(--space-6); }
.tp-pick__verdict { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); margin: var(--space-1) 0 var(--space-2); font-family: var(--ab-sans); font-size: var(--text-sm); color: var(--ab-ink-2); }
/* phones: the Compare box sits beside the resort name; the Compare column, off screen there, is hidden */
.tp-cmpbox--name { display: none; }
@media (max-width: 640px) {
  .tp-cmpbox--name { display: inline-flex; margin: var(--space-1) 0; }
  .tp-short .tp-cmpcell { display: none; }
}
/* what the top picks are for (owner, 6 Nov 2026) */
.tp-picks__h { margin: 0 0 var(--space-1); font-family: var(--ab-sans); font-size: 1.15rem; font-weight: 600; color: var(--ab-ink); }
.tp-picks__h .muted { font-weight: 400; font-size: 1rem; margin-left: var(--space-1); }
.tp-picks__def { margin: 0 0 var(--space-4); }
/* model agreement, moved from the resort's title line into How sure is the forecast? (owner, 6 Nov 2026) */
.sure__agree { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-2); margin: 0 0 var(--space-4); font-family: var(--ab-sans); font-size: var(--text-sm); line-height: 1.5; color: var(--ab-ink-2); }
.sure__agree .agree-badge { margin: 0; font-weight: 600; color: var(--ab-ink); }
/* Compare bar on phones (owner, 6 Nov 2026): pinned to the bottom of the screen, not sticky inside the planner, so it
   stays in view while scrolling through the picks and the table (iPhone Safari did not keep the sticky bar in view).
   The page gets room underneath so the bar never hides the last rows. */
@media (max-width: 640px) {
  .tp-tray { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; margin: 0; padding: var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom, 0px)); box-shadow: 0 -6px 18px rgb(0 0 0 / 0.18); }
  .view--trip:has(.tp-tray) { padding-bottom: 9rem; }
}
/* the installed app (home screen) has its own bar at the foot of the screen (install.css, z-index 70): the Compare bar
   sits just above it, as the three-hour pop-up does, instead of behind it (owner, 6 Nov 2026, iPhone home-screen app) */
html.hs-navbar-on .tp-tray { bottom: var(--hs-navbar-h, 5.2rem); }
/* .view fades in with animation-fill-mode both (style.css), which makes the planner section its own stacking layer, so
   the bar's z-index only counted inside it and the footer, later on the page, painted over the bar. While the bar is
   showing, the section sits above the footer; the site header (50) and the app's bar (70) stay above it. */
.view--trip:has(.tp-tray) { position: relative; z-index: 2; }
@media (max-width: 640px) { html.hs-navbar-on .tp-tray { padding-bottom: var(--space-3); } }

/* Shortlist resort column (owner, 6 Nov 2026): the name, the Compare box (phones) and Season history centred in the
   column and stacked the same way in every row; the Compare label in plain text, not the column's capitals */
.tp-short thead th:nth-child(2), .tp-short tbody th[scope="row"] { text-align: center; }
.tp-short tbody th[scope="row"] .tp-season-btn { display: block; width: fit-content; margin: var(--space-2) auto 0; }
.tp-short tbody th[scope="row"] .tp-cmpbox--name span { text-transform: none; letter-spacing: 0; font-weight: 500; font-size: var(--text-sm); }
@media (max-width: 640px) { .tp-short tbody th[scope="row"] .tp-cmpbox--name { justify-content: center; margin: var(--space-2) auto 0; } }

/* Go (owner, 6 Nov 2026): Rank best day by as the region pages' dropdown; the trip resorts' detail folded under the grid */
.tp-go-rankrow { margin: var(--space-3) 0; }
.tp-go-rank .rank-menu__list .chip.is-active { background: var(--color-surface-offset); color: var(--color-text); }
.tp-decide { margin: var(--space-4) 0; border-top: 1px solid var(--ab-hair); padding-top: var(--space-2); font-family: var(--ab-sans); }
.tp-decide > summary { cursor: pointer; min-height: 44px; display: list-item; padding-block: calc((44px - 1.5em) / 2); font-size: var(--text-sm); line-height: 1.5; color: var(--ab-ink); }
/* Go's single chip rows (Rank, Your days) stand alone, so the label column used to line up stacked rows only left a
   gap: the chips sit just after their label (owner, 6 Nov 2026) */
.tp-chipset--tight .tp-chips .chips__label { min-width: 0; margin-right: var(--space-3); }

/* Region tables (owner, 6 November 2026): the resort name stays in view while the table scrolls sideways,
   the first 50 rows with Show all, one country list on phones, and one small mark where there is no likely range */
.region-country-pick { display: none; }
.region-country-pick select { font: inherit; padding: 0.45rem 0.6rem; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-bg); color: inherit; max-width: 100%; }
.region-key { margin: 0 0 var(--space-2); }
.rng--none { font-weight: 600; color: var(--color-text-muted); cursor: help; padding: 0 0.15rem; }
.region-more td { text-align: center; padding-block: var(--space-4); }
#regionTable tbody tr:not(.fc-row):not(.region-more) > td:first-child, #regionTable thead tr > th:first-child { position: sticky; left: 0; z-index: 1; background: var(--color-surface); }
#regionTable thead tr > th:first-child { z-index: 2; background: var(--color-surface) !important; }   /* the shared header style is see-through */
#regionTable tbody tr:not(.fc-row):not(.region-more) > td:first-child { box-shadow: 1px 0 0 var(--color-divider, var(--color-border)); }
/* each cell draws its own row line, so the fixed name cell keeps it (owner, 7 Nov 2026) */
#regionTable { border-collapse: separate; border-spacing: 0; }
/* yesterday's column widths (owner, 7 Nov 2026): the fixed name column had narrowed, so names and places wrapped */
#regionTable thead th:nth-child(1) { min-width: 11rem; }
#regionTable thead th:nth-child(2) { min-width: 8.75rem; }
#regionTable tbody tr.is-pinned:not(.fc-row):not(.region-more) > td { background: var(--color-surface-offset); }   /* every cell of a pinned row matches the fixed name cell */
#regionTable tbody tr.is-pinned:not(.fc-row):not(.region-more) > td:first-child { background: var(--color-surface-offset); box-shadow: inset 3px 0 0 var(--gold), 1px 0 0 var(--color-divider, var(--color-border)); }   /* My mountains keep their highlight */
@media (max-width: 860px) {
  /* the table scrolls with the page, not in a box of its own (owner, 7 Nov 2026: the box trapped swipes on phones) */
  #regionCountries > .chip { display: none; }
  #regionCountries > .region-country-pick { display: block; width: 100%; }
  #regionCountries > .region-country-pick select { width: 100%; }
}
/* tighter table on phones (owner, 8 Nov 2026): the resort and location columns took the whole screen, so they are
   narrower and their text may wrap, and the past 30 and 7 day headings wrap onto two lines, so less sideways scrolling */
@media (max-width: 640px) {
  #regionTable thead th:nth-child(1) { min-width: 7.5rem; }
  #regionTable thead th:nth-child(2) { min-width: 6.5rem; }
  #regionTable th, #regionTable td { padding-inline: 0.5rem; }
  #regionTable tbody tr:not(.fc-row):not(.region-more) > td { padding-block: 0.6rem; }
  #regionTable thead th { letter-spacing: 0.06em; }
  #regionTable thead th:nth-child(3), #regionTable thead th:nth-child(4) { white-space: normal; min-width: 4.4rem; }
  #regionTable td .resort { font-size: 0.85rem; overflow-wrap: anywhere; }
  #regionTable td:nth-child(2) .loc { font-size: 0.72rem; line-height: 1.3; overflow-wrap: anywhere; }
}
/* free fortnight (owner, 6 November 2026): the past 7 days as bars above the locked day by day */
.fn--free .fn__freepast { margin: var(--space-3) 0 var(--space-5); }
.fn--free .fn__grid--past { min-width: 0; }
.fn--free .fn__bar { height: 6rem; }
/* resort header on phones (owner, 6 November 2026): the four link buttons as an even 2 by 2 grid, so the answer starts on the first screen */
@media (max-width: 640px) {
  .resort-links { display: grid !important; grid-template-columns: 1fr 1fr; gap: 0.4rem !important; margin-top: var(--space-3) !important; }
  .resort-links .btn { width: auto !important; min-height: 0 !important; padding: 0.5rem 0.6rem !important; font-size: 0.85rem !important; justify-content: center; letter-spacing: 0.04em; }
}
/* Trip Planner additions (6 November 2026): Flying into, share and save controls */
.tp-share { margin: 0 0 var(--space-3); display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.tp-shared { margin: var(--space-2) 0; padding: var(--space-2) var(--space-3); border-left: 3px solid var(--color-accent, currentColor); font-size: var(--text-sm); }
.tp-hub select { max-width: 100%; }
.tp-cmp__act { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.tp-trip__kind { font-size: var(--text-xs); color: var(--color-text-muted); border: 1px solid var(--color-border); border-radius: 999px; padding: 0 0.45rem; margin-left: 0.3rem; vertical-align: middle; }
/* the station reading written out on the resort page (owner, 6 November 2026) */
.stn--label { display: inline-block; margin-left: 0.35rem; padding: 0 0.4rem; font-size: 0.78em; font-weight: 500; letter-spacing: 0; text-transform: none; white-space: nowrap; border: 1px solid var(--color-border); border-radius: 999px; color: var(--color-text-muted); cursor: help; }
/* What changed since yesterday as one line that opens for the detail (owner, 6 November 2026) */
.change-wrap { margin: var(--space-4) 0 var(--space-6); border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.change-wrap > summary { cursor: pointer; list-style: none; padding: var(--space-3) 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.6rem; }
.change-wrap > summary::-webkit-details-marker { display: none; }
.change-wrap__h { font-weight: 600; }
.change-wrap__line { color: var(--color-text-muted); }
.change-wrap__more { margin-left: auto; font-size: var(--text-sm); text-decoration: underline; text-underline-offset: 3px; }
.change-wrap[open] .change-wrap__more { visibility: hidden; }
.change-wrap__since { margin-top: 0; }
/* monthly reports (owner, 6 November 2026): the newest three months as buttons, older months in a list; compact on phones */
.rep__older select { font: inherit; font-size: var(--text-sm); padding: 0.4rem 0.6rem; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); color: inherit; }
@media (max-width: 640px) {
  #view-reports .rep__tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; }
  #view-reports .rep__tabs .sc-period__l { grid-column: 1 / -1; }
  #view-reports .rep__tabs .btn { width: auto; min-height: 0; padding: 0.5rem 0.6rem; font-size: 0.85rem; justify-content: center; }
  #view-reports .rep__older { display: flex; }
  #view-reports .rep__older select { width: 100%; height: 100%; font-size: 0.85rem; }
}
/* homepage buttons on phones (owner, 6 November 2026): side by side as compact buttons, See where it's snowing on the right */
@media (max-width: 640px) {
  #answerHome .ab-ctas { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; }
  #answerHome .ab-ctas .ab-btn { min-height: 0; padding: 0.55rem 0.5rem; font-size: 0.8rem; letter-spacing: 0.02em; justify-content: center; text-align: center; line-height: 1.25; }
  #answerHome .ab-ctas .ab-btn:not(.ab-btn--ghost) { order: 2; }
  #answerHome .ab-ctas .ab-btn--ghost { order: 1; }
}
/* compact buttons on phones (owner, 7 November 2026), as on the resort header and the homepage:
   the Trip Planner's Shortlist and Go tabs side by side; the resort page's Trip Planner buttons two to a row with
   Open in Trip Planner below; Save for offline, 3D map and Piste map on one row. The news and events filters stay as
   they are, all on view. */
@media (max-width: 640px) {
  .trip__stages { display: grid !important; grid-template-columns: 1fr 1fr; gap: 0.4rem !important; }
  .trip__stages .tp-stage { width: auto !important; min-height: 0 !important; padding: 0.55rem 0.6rem !important; font-size: 0.9rem !important; }
  .trip__stages .tp-stage small { font-size: 0.72rem !important; line-height: 1.3; }
  .rt__acts { display: grid !important; grid-template-columns: 1fr 1fr; gap: 0.4rem !important; }
  .rt__acts > * { width: auto !important; min-height: 0 !important; justify-content: center; text-align: center; font-size: 0.82rem !important; padding: 0.5rem !important; }
  .rt__acts > a { grid-column: 1 / -1; }
  body .off-save .off-chip { grid-template-columns: auto auto auto; }
  body .off-save .off-chip__seg span { white-space: nowrap; }
  body .off-save .off-chip:has(> .off-chip__seg:nth-child(2):last-child) { grid-template-columns: 1fr 1fr; }
  body .off-save .off-chip__seg:first-child, body .off-save .off-chip__seg:nth-child(2):last-child { grid-column: auto; }
  body .off-save .off-chip__seg + .off-chip__seg { border-top: 0; border-left: 1px solid var(--color-border); }
  body .off-save .off-chip__seg { min-height: 0; justify-content: center; text-align: center; font-size: 0.78rem; padding: 0.45rem 0.35rem; gap: 0.25rem; }
}

/* Shared trips and comparisons, the public page (SHARE-PUBLIC-20261107-v1, owner approved 7 November 2026) */
.shr-shared { display: inline-block; margin: var(--space-2) 0 0; padding: 0.35rem 0.6rem; border: 1px solid var(--color-border); background: var(--color-surface); font-size: var(--text-sm); color: var(--color-text-muted); }
.shr-grid { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: var(--space-3); margin: var(--space-5) 0 var(--space-2); }
@media (max-width: 760px) { .shr-grid { grid-template-columns: 1fr; } }
.shr-card { background: var(--color-surface); border: 1px solid var(--color-border); padding: var(--space-4); }
.shr-badge { display: inline-block; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; background: #0d0c0b; color: var(--color-primary); padding: 0.25rem 0.5rem; margin-bottom: var(--space-2); }   /* coral on the dark label (owner, 7 Nov 2026) */
.shr-card { position: relative; }
/* the snowiest resort: a dark Most snow band across the top, and only its figure in coral (owner, 7 Nov 2026, option G) */
.shr-best { display: block; margin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-3); padding: 0.45rem; text-align: center; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; background: #0d0c0b; color: var(--color-primary); }
.shr-card:not(.shr-card--best) .shr-big { color: var(--color-text); }
.shr-card--best .shr-big { font-weight: 400; }
.shr-name { font-size: 1rem; letter-spacing: 0.1em; text-transform: uppercase; margin: 0; }
.shr-name a { color: inherit; text-decoration: none; }
.shr-where { margin: 2px 0 var(--space-3); font-size: var(--text-sm); color: var(--color-text-muted); }
.shr-lede { margin: 0 0 var(--space-2); font-size: 0.78rem; color: var(--color-text-muted); }
.shr-lede b { color: var(--color-text); font-weight: 500; }
.shr-big { margin: 0; font-size: 2.8rem; font-weight: 200; line-height: 1; color: var(--color-primary); }
.shr-big small { font-size: 0.95rem; margin-left: 0.2rem; color: var(--color-text); }
.shr-range { margin: 0.2rem 0 var(--space-3); font-size: var(--text-sm); color: var(--color-text-muted); }
.shr-call { margin: 0 0 var(--space-3); padding: 0.4rem 0.6rem; border-left: 3px solid var(--color-text); background: var(--color-bg); font-size: var(--text-sm); }
.shr-call i, .shr-row i { display: block; font-style: normal; font-size: 0.75rem; line-height: 1.35; color: var(--color-text-muted); margin-top: 2px; }
.shr-row { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); padding: 0.5rem 0; border-top: 1px solid var(--color-border); }
.shr-row b { font-weight: 500; font-size: var(--text-sm); }
.shr-row span { white-space: nowrap; font-weight: 500; }
.shr-locked { margin: var(--space-5) 0; padding: var(--space-4); border: 1px dashed var(--color-border); background: repeating-linear-gradient(135deg, transparent 0 8px, rgba(0, 0, 0, 0.025) 8px 16px); }
.shr-locked p { margin: 0 0 var(--space-2); }
.shr-locked ul { list-style: disc; margin: 0; padding-left: 1.1rem; color: var(--color-text-muted); font-size: var(--text-sm); }
.shr-offer { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-5); align-items: center; padding: var(--space-5); margin: var(--space-5) 0; background: #0d0c0b; color: #f4efe6; }
@media (max-width: 760px) { .shr-offer { grid-template-columns: 1fr; } }
.shr-offer p { margin: 0; color: #cfc7b9; font-size: var(--text-sm); }
.shr-k { font-size: 0.7rem !important; letter-spacing: 0.2em; text-transform: uppercase; color: var(--color-primary) !important; }
.shr-offer__h { font-family: var(--font-display, Georgia, serif); font-weight: 500; font-size: 1.6rem; margin: 0.3rem 0 0.5rem; color: #f4efe6; }
.shr-price { font-size: 2.4rem !important; font-weight: 200; color: #f4efe6 !important; margin-bottom: var(--space-3) !important; }
.shr-price small { font-size: 0.9rem; margin-left: 0.3rem; color: #cfc7b9; }
.shr-fine { margin-top: var(--space-2) !important; font-size: 0.78rem !important; color: #a99f8e !important; }
.shr-fine .link-btn { color: #f4efe6; }
.shr-open { margin: var(--space-3) 0 0; }
/* Scorecard, How far ahead by region (owner, 8 Nov 2026): on phones the 6 and 7 day columns were cut off. The seven days
   stay side by side for comparison: the word "snowy" goes (the note under the table explains the smaller figure) and
   the cells are tighter, and if a translation is still too wide the table scrolls instead of being cut off */
@media (max-width: 640px) {
  .sc-ahead { overflow-x: auto; }
  .sc-ahead .sc-ahead__w { display: none; }
  .sc-ahead .sc-table th, .sc-ahead .sc-table td { padding-left: 0.2rem; padding-right: 0.2rem; }
  .sc-ahead .sc-table th[scope="row"] { padding-left: 0.5rem; font-size: 0.72rem; letter-spacing: 0.04em; }
  .sc-ahead .sc-table thead th { white-space: normal; vertical-align: bottom; }
}
/* Scorecard, Powder Day Score (owner, 8 Nov 2026): nine figures under three group headings must fit the column on a
   laptop, so compact headings and cells as in the other wide tables; on a phone the rows become cards as before */
@media (min-width: 761px) {
  .sc-pds { overflow-x: auto; }
  .sc-pds .sc-table th, .sc-pds .sc-table td { padding-left: 0.35rem; padding-right: 0.35rem; }
  .sc-pds .sc-table thead th { font-size: 0.6rem; letter-spacing: 0.04em; }
  .sc-pds .sc-table th[scope="row"] { min-width: 7rem; }
  .sc-pds .sc-table th.sc-group { text-align: center; }
}
/* Biggest movers on phones (owner, 8 Nov 2026): compact buttons as on the home page and the resort header, two of equal
   width to a row across the box, the change on the right; a long resort name wraps inside its button */
@media (max-width: 640px) {
  .movers__row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; align-items: stretch; }
  .movers__row .movers__label { grid-column: 1 / -1; min-width: 0; }
  .movers__row .mover { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: start; min-width: 0; padding: 0.5rem 0.55rem; font-size: 0.82rem; line-height: 1.25; }
  .movers__row .mover__name { overflow-wrap: anywhere; }
  .movers__row .mover__tot { font-size: 0.7rem; }
}

/* ---------- UI-20261111-v1 (owner, 11 November 2026): resort and home page usability ---------- */
/* U1: the action buttons follow the answer and the four figures; on a phone the official website and sharing sit behind More */
.ab-rbox:has(+ .resort-links) { margin-bottom: var(--space-4); }
.ab-rbox + .resort-links { margin-top: 0 !important; margin-bottom: var(--space-6); }
.resort-links__more { display: none !important; }
@media (max-width: 720px) {
  .resort-links .is-extra { display: none !important; }
  .resort-links.is-more-open .is-extra { display: inline-flex !important; }
  .resort-links__more { display: inline-flex !important; }
}
/* U5: the trust badge is short; its station type and count are in the panel it opens */
.trust__n { font-size: var(--text-xs); color: var(--color-text-muted); margin-left: 0.35rem; }
/* U7: on the resort page, last winter's bars are a lighter ink, so they read as a reference beside this season's figures */
.fn__ly .tp-ly__bar i { opacity: 0.42; }
/* U8: "partly forecast" opens its explanation on tap, click or keyboard */
.ab-s .ab-pf { all: unset; cursor: pointer; white-space: nowrap; font-size: 0.68rem; border-bottom: 1px dotted currentColor; color: var(--ab-ink-2); }
.ab-s .ab-pf:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.ab-pf__tip { grid-column: 2 / -1; font-size: 0.74rem; line-height: 1.4; color: var(--ab-ink-2); }
@media (max-width: 720px) { .ab-s .ab-pf { font-size: 0.62rem; } }
/* U2: section shortcuts that stay under the site header while the resort page scrolls */
.resort-jump { position: sticky; top: 0; z-index: 40; display: flex; gap: var(--space-2); overflow-x: auto; scrollbar-width: none; margin: 0 0 var(--space-6); padding: var(--space-2) 0; background: var(--color-bg); border-bottom: 1px solid var(--color-border); }
.resort-jump::-webkit-scrollbar { display: none; }
.resort-jump__chip { flex: 0 0 auto; white-space: nowrap; padding: 0.3rem 0.8rem; border: 1px solid var(--color-border); border-radius: 999px; font-family: var(--ab-sans); font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.02em; color: var(--color-text); text-decoration: none; }
.resort-jump__chip:hover { border-color: var(--color-text); }
.resort-jump__chip:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.resort-jump__chip.is-on { background: var(--ab-ink); border-color: var(--ab-ink); color: var(--color-bg); }
/* U3: phones and tablets (900 px and below) show the forecast week with its key rows; "More detail" adds the rest. The
   previous-week control (MOBILE-CONTROLS-20261105-v1 R2) now also applies up to 900 px, where the fortnight did not fit.
   Opening the previous week shows every row, so the past-days note keeps its place beside them. */
.fn__rows-toggle { display: none; }
@media (max-width: 900px) {
  .fn__history-toggle { display: inline-flex; align-items: center; min-height: 40px; margin: var(--space-1) 0; }
  
  .fn__history-desktop { display: none; }
  .fn--history-ready:not(.fn--past-open) .fc--fortnight .fc__table { min-width: 34rem; }
  .fn--history-ready:not(.fn--past-open) :is(.fc__ph, .fc__snow--past, .fc__parts--past, .fc__pastnote) { display: none; }
  .fn--history-ready:not(.fn--past-open) .fn__rows-toggle { display: inline-flex; align-items: center; min-height: 40px; margin: var(--space-1) 0 var(--space-1) var(--space-2); }
  .fn--history-ready:not(.fn--past-open):not(.fn--rows-open) .fc__extra { display: none; }
}
.ab-rfig__span { display: block; margin-top: 0.15rem; }
/* U6: the resort's accuracy table as one card per forecast length on a phone (the Scorecard's .sc-wide cards) */
@media (max-width: 760px) {
  .record__wrap { overflow-x: visible; }
  .record__wrap .record__table { min-width: 0 !important; width: 100%; }
  .record__wrap .record__table :is(th, td) { box-sizing: border-box; }
}
/* Spacing (owner, 11 November 2026): with the buttons moved below the figures, the resort header no longer needs the
   bottom padding that held them; 16 px from the trust line to the answer's rule, as between the other sections' parts */
.ab-resort .page-head--resort { padding-bottom: var(--space-4); }
.ab-resort .page-head--resort > :last-child { margin-bottom: 0; }
/* UI-20261111-v2 B1: the three-hour breakdown as a panel under the day-by-day table, pointing at the day tapped */
.h3pop.h3pop--inline { position: relative; z-index: auto; width: auto; max-width: none; margin: var(--space-3) 0 var(--space-5); box-shadow: none; border-color: var(--color-border); }
.h3pop--inline::before { content: ""; position: absolute; top: -7px; left: calc(var(--h3-px, 50%) - 6px); width: 12px; height: 12px; background: var(--color-surface); border-left: 1px solid var(--color-border); border-top: 1px solid var(--color-border); transform: rotate(45deg); }
.h3pop--inline.h3pop--nopoint::before { display: none; }
.h3pop--inline .h3pop__in { gap: var(--space-3); padding: var(--space-4); }
.h3pop__lede { font-size: var(--text-sm); line-height: 1.5; color: var(--color-text); max-width: 62ch; }
.h3pop__parts { display: grid; gap: var(--space-2); }
.h3pop--inline .h3pop__parts, .h3pop--inline .h3pop__note { max-width: 46rem; }
.h3pop__part { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg); }
.h3pop__part.is-top { border-color: var(--color-text); }
.h3pop__part summary { list-style: none; display: grid; grid-template-columns: 1fr auto auto; gap: var(--space-3); align-items: center; padding: 0.6rem 0.75rem; cursor: pointer; }
.h3pop__part summary::-webkit-details-marker { display: none; }
.h3pop__part summary:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.h3pop__pn { display: grid; line-height: 1.25; }
.h3pop__pn b { font-weight: 600; font-size: var(--text-sm); }
.h3pop__pn small { font-size: var(--text-xs); color: var(--color-text-muted); }
.h3pop__pv { font-family: var(--font-data); font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.h3pop__pv small { font-size: 0.7rem; color: var(--color-text-muted); }
.h3pop__chev { width: 0.55rem; height: 0.55rem; border-right: 1.5px solid var(--color-text-muted); border-bottom: 1.5px solid var(--color-text-muted); transform: rotate(45deg) translateY(-2px); transition: transform var(--transition); }
.h3pop__part[open] .h3pop__chev { transform: rotate(225deg) translateY(-2px); }
@media (prefers-reduced-motion: reduce) { .h3pop__chev { transition: none; } }
.h3pop__ps { list-style: none; margin: 0; padding: 0 0.75rem 0.4rem; border-top: 1px solid var(--color-border); }
.h3pop__p { display: grid; grid-template-columns: minmax(7.2rem, auto) minmax(2rem, 1fr) auto; gap: 0.15rem var(--space-3); align-items: center; padding: 0.5rem 0; border-bottom: 1px solid var(--color-divider, var(--color-border)); font-size: var(--text-xs); }
.h3pop__p:last-child { border-bottom: 0; }
.h3pop__pt { font-weight: 600; color: var(--color-text-muted); }
.h3pop__p.has-snow .h3pop__pt { color: var(--color-text); }
.h3pop__p .h3pop__bar { width: 100%; height: 0.45rem; }
.h3pop__p .h3pop__bar i { background: var(--color-snow-bar); }
.h3pop__p .h3pop__bar i.is-wet, .h3pop__p .h3pop__bar i.is-mixed { background: var(--color-accent); }
.h3pop__pc { font-family: var(--font-data); font-variant-numeric: tabular-nums; text-align: right; min-width: 3.4rem; }
.h3pop__pm { grid-column: 1 / -1; color: var(--color-text-muted); font-size: 0.72rem; }
.h3pop__p .h3pop__bar { display: block !important; }

/* ---------- UI-20261111-v3 (owner, 11 November 2026): Trip Planner, region pages and Scorecard ---------- */
/* X1: the empty region table gives a plain message and a way back, in view at every width */
#regionTable td.empty { position: sticky; left: 0; white-space: normal; text-align: left; padding: var(--space-4); }
#regionTable td.empty .empty__msg { display: block; margin-bottom: var(--space-2); }
/* X4: the Rank by list ends with a button that closes it */
.rank-menu__list .rank-menu__done { margin: var(--space-2) var(--space-3) var(--space-3); align-self: flex-start; }

/* R1: phones and tablets see the resort (with country and height), past 24 h, next 7 days and the daily forecast;
   More detail adds the location, past 30 and 7 days, today and temperatures. R2: the column names stay under the
   site header while the table scrolls (the box no longer scrolls on its own where nothing is hidden). */
.resort-sub, .region-cols { display: none; }
@media (max-width: 860px) {
  .region-cols { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; margin: var(--space-2) 0; }
  .region-cols .fc__note { margin: 0; }
  #regionTable:not(.is-full) > thead > tr > :is(:nth-child(2), :nth-child(3), :nth-child(4), :nth-child(6), :nth-child(9)),
  #regionTable:not(.is-full) > tbody > tr:not(.fc-row):not(.region-more) > :is(:nth-child(2), :nth-child(3), :nth-child(4), :nth-child(6), :nth-child(9)) { display: none; }
  #regionTable:not(.is-full) { min-width: 0 !important; width: 100%; }
  #regionTable:not(.is-full) > thead > tr > th:first-child { min-width: 0; }
  #regionTable .resort-sub { display: block; font-size: 0.7rem; line-height: 1.3; color: var(--color-text-muted); letter-spacing: 0; text-transform: none; }
  .table-wrap--region:has(> #regionTable:not(.is-full)) { overflow: visible; }
  .table-wrap--region:has(> #regionTable:not(.is-full)) #regionTable > thead > tr > th { position: sticky; top: var(--sd-head, 0px); z-index: 3; background: var(--color-surface); }
}
@media (min-width: 1100px) {
  .table-wrap--region { overflow: visible; }
  #regionTable > thead > tr > th { position: sticky; top: var(--sd-head, 0px); z-index: 3; background: var(--color-surface); }
}
/* R4: the opened 7-day row on a phone shows its key rows, with More detail, and opens within the screen */
.fc-row .fc-rows-btn { display: none; }
@media (max-width: 900px) {
  .fc-row .fc-rows-btn { display: inline-flex; margin: var(--space-2) 0; }
  .fc-row:not(.is-rows-open) .fc__extra { display: none; }
  .fc-row .fc__note { white-space: normal; }
}

@media (max-width: 860px) { #regionTable:not(.is-full) > :is(thead, tbody) > tr > :is(td, th).cams-col { width: 3rem; } #regionTable:not(.is-full) .resort-cell { min-width: 0; } }
@media (max-width: 860px) { #regionTable:not(.is-full) > thead > tr > th { white-space: normal; padding-left: 0.4rem; padding-right: 0.4rem; } #regionTable:not(.is-full) > tbody > tr:not(.fc-row):not(.region-more) > td { padding-left: 0.4rem; padding-right: 0.4rem; } }
@media (max-width: 860px) {
  .table-wrap--region:has(> #regionTable:not(.is-full)) #regionTable > thead > tr > th { background: var(--color-surface) !important; box-shadow: 0 1px 0 var(--color-border); }
  #regionTable:not(.is-full) .resort-cell { flex-wrap: wrap; }
  #regionTable:not(.is-full) .resort-sub { flex-basis: 100%; padding-left: 1.6rem; margin: 0 !important; }
}
@media (min-width: 1100px) { #regionTable > thead > tr > th { background: var(--color-surface) !important; box-shadow: 0 1px 0 var(--color-border); } }
@media (max-width: 860px) { #regionTable:not(.is-full) .resort-cell { align-content: flex-start; align-items: center; row-gap: 0.1rem; min-height: 0; height: auto; } #regionTable:not(.is-full) > tbody > tr:not(.fc-row):not(.region-more) > td { padding-top: 0.55rem; padding-bottom: 0.55rem; height: auto; } }
@media (min-width: 961px) { #regionAnswer .ab-answer > .ab-level { margin-top: var(--space-5); } }
/* R5: on phones the area chips are one scrolling row, and the "*" key follows the table it explains */
@media (max-width: 720px) {
  #regionAreas { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
  #regionAreas::-webkit-scrollbar { display: none; }
  #regionAreas .chip { flex: 0 0 auto; }
}

/* S1, S2: the plain sentence first; card headings say what they count */
.sc-plain { font-size: var(--text-base); line-height: 1.5; color: var(--color-text); max-width: 66ch; }
.sc-card__scope { display: block; font-size: 0.68rem; color: var(--color-text-muted); letter-spacing: 0; text-transform: none; font-weight: 400; }
/* S3: phones show three figures per card, with More figures; the expert scores start closed */
.sc-morefig { display: none; }
@media (max-width: 760px) {
  .sc-keyrows .sc-table tbody tr:not(.is-open) > td:not(.sc-morefig):nth-child(n+5) { display: none !important; }
  .sc-keyrows .sc-table td.sc-morefig { display: block; text-align: left; }
  .sc-keyrows .sc-table td.sc-morefig::before { content: none !important; }
}
/* S4: find and sort in By resort */
.sc-filters input[type="search"] { min-height: 2.4rem; padding: 0 0.6rem; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); font: inherit; }
.sc-expert > summary { cursor: pointer; font-weight: 600; margin: var(--space-6) 0 var(--space-3); }

/* S6: notices left aligned, the reading guide as a drop-down, the method link looks like a link, steadier spacing */
#view-scorecard .notice { text-align: left; }
.sc-notes p { margin: 0; }
.sc-notes p + p { margin-top: var(--space-2); }
.sdx__read > summary { cursor: pointer; font-weight: 600; margin: 0 0 var(--space-3); }
#view-scorecard a[href="/our-snow-model"] { text-decoration: underline; text-underline-offset: 2px; }
#view-scorecard .sdx__body > .fc__note { margin-bottom: var(--space-3); }
#view-scorecard .sdx__body > :last-child, #view-scorecard .sc-legacy > :last-child, #view-scorecard .sc-expert > :last-child { margin-bottom: 0; padding-bottom: 0; }
@media (max-width: 760px) { #view-scorecard .sc-cards { align-items: start; } }

/* P1: the Shortlist options as one line with Change */
.tp-opts { margin: var(--space-3) 0 var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.tp-opts > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); padding: 0.6rem 0.8rem; font-size: var(--text-sm); }
.tp-opts > summary::-webkit-details-marker { display: none; }
.tp-opts > summary:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.tp-opts__chg { font-weight: 700; text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
.tp-opts[open] .tp-opts__chg { visibility: hidden; }
.tp-opts > .tp-chipset { padding: 0 0.8rem 0.8rem; }
.tp-pick__why { font-size: var(--text-xs); color: var(--color-text-muted); margin: 0.1rem 0 0.4rem; }
/* P3: Flying into fits a phone; the Area menu keeps clear of the Country label */
.tp-hub select { max-width: 100%; }
@media (max-width: 720px) { .trip__controls .tp-hub, .trip__controls .tp-hub select { max-width: calc(100vw - 2rem); min-width: 0; } }
.trip__controls label + label { margin-left: var(--space-3); }
.trip__controls select { max-width: 16rem; }
/* owner, 11 November 2026: each list is sized against the screen, not as a share of its own label, so the label's text keeps
   its room and never runs under the next list (Area and Country in Go and the Shortlist) */
.trip__controls > label { flex: none; max-width: 100%; flex-wrap: wrap; white-space: nowrap; }
.trip__controls > label > select { min-width: min(19rem, calc(100vw - 2rem)); max-width: calc(100vw - 2rem); }
@media (max-width: 720px) {
  .trip__controls > label { width: 100%; flex-wrap: nowrap; margin-left: 0 !important; }
  .trip__controls > label > select { flex: 1 1 auto; min-width: 0; max-width: none; }
}

/* P2: Go's grid on a phone: the summary line, a narrower resort column in normal case, and a fade at the right edge */
.tp-grid-sum { font-size: var(--text-base); margin: var(--space-2) 0 var(--space-1); }
.tp-liftnote { margin: 0 0 var(--space-2); }
@media (max-width: 720px) {
  .tp-grid tbody th[scope="row"] { text-transform: none !important; letter-spacing: 0 !important; max-width: 7.5rem; min-width: 6rem; white-space: normal; font-size: 0.82rem; }
  .tp-gridwrap { -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent); }
}

/* ---------- UI-20261111-v4 (owner, 11 November 2026) ---------- */
/* G1: the two Go tables each open with a short ink panel, lower than the Shortlist's top-picks panels */
.fn__feature.tp-gohead { margin: var(--space-6) 0 var(--space-3); padding: 0.65rem 1.1rem; }
.tp-gohead .dbd__k { margin: 0; }
.tp-gohead .tp-picks__h { font-size: 1.1rem; line-height: 1.25; margin: 0.1rem 0 0; }
.tp-gohead .tp-picks__def { margin-top: 0.15rem; font-size: 0.8rem; }
/* G2: Go's resort column in normal case at every width */
.tp-grid tbody th[scope="row"] { text-transform: none !important; letter-spacing: 0 !important; }

/* G3 (owner, 11 November 2026): each table's own controls sit inside its panel, on the right on wide screens */
.tp-gohead { align-items: center; }
.tp-gohead > div:first-child { flex: 1 1 20rem; }
.tp-gohead__ctl { flex: 0 1 auto; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); }
.tp-gohead__ctl .tp-chipset, .tp-gohead__ctl .trip__controls { margin: 0 !important; padding: 0; border: 0; }
.tp-gohead__ctl label, .tp-gohead__ctl .chips__label { color: var(--pm-ink-muted) !important; }
.tp-gohead__ctl .chip { background: transparent !important; color: var(--pm-ink-fg) !important; border: 1px solid var(--pm-ink-muted) !important; }
.tp-gohead__ctl .chip.is-active, .tp-gohead__ctl .chip[aria-pressed="true"] { background: var(--pm-ink-fg) !important; color: var(--pm-ink) !important; border-color: var(--pm-ink-fg) !important; }
.tp-gohead__ctl select { background: transparent !important; color: var(--pm-ink-fg) !important; border: 1px solid var(--pm-ink-muted) !important; }
.tp-gohead__ctl select option { color: #14120f; background: #f8f7f4; }
.tp-gohead__ctl .chip:focus-visible, .tp-gohead__ctl select:focus-visible { outline: 2px solid var(--pm-ink-fg); outline-offset: 2px; }
@media (max-width: 720px) { .tp-gohead__ctl { flex-basis: 100%; } }

/* G5: the fortnight's height switch inside its ink panel, above the three-hour breakdown button */
.fn__top.fn__top--in { display: block !important; grid-template-columns: none !important; }
.fn__top--in > .fn__feature { width: 100%; box-sizing: border-box; margin-top: 0; }
.fn__feature > .fn__featside { flex: 0 1 auto !important; display: flex; flex-direction: column; align-items: stretch; gap: var(--space-3); min-width: 0; }
.fn__featctl .fn__lvtabs { display: flex !important; flex-wrap: wrap; flex-direction: row !important; gap: var(--space-2); margin: 0; grid-template-columns: none !important; }
.fn__featctl .fn__lvtabs .chip { background: transparent !important; color: var(--pm-ink-fg) !important; border: 1px solid var(--pm-ink-muted) !important; min-height: 0 !important; width: auto !important; max-width: none !important; flex: 1 1 auto !important; white-space: nowrap; text-align: center; padding: 0.4rem 0.8rem !important; }
.fn__featctl .fn__lvtabs .chip.is-active { background: var(--pm-ink-fg) !important; color: var(--pm-ink) !important; border-color: var(--pm-ink-fg) !important; }
.fn__featctl .chip:focus-visible { outline: 2px solid var(--pm-ink-fg); outline-offset: 2px; }
@media (max-width: 720px) { .fn__feature > .fn__featside { flex: 1 1 100% !important; } }
/* owner, 11 November 2026: on phones a long resort name wraps beside its star, not on a line of its own below it; the
   star lines up with the name's first line */
@media (max-width: 860px) {
  #regionTable:not(.is-full) .resort-cell { flex-wrap: wrap; align-items: flex-start; }
  #regionTable:not(.is-full) .resort-cell > .resort { flex: 1 1 0; min-width: 0; padding-top: 0.15rem; }
  #regionTable:not(.is-full) .resort-cell > .pin-btn { margin-top: -0.05rem; }
  #regionTable:not(.is-full) .resort-sub { padding-left: 1.8rem; }
}
/* owner, 11 November 2026: More detail on phones. The Location column already gives the country and height, so the
   line under the name is left out; the name keeps a readable width beside its star and breaks between words only. */
@media (max-width: 860px) {
  #regionTable.is-full > thead > tr > th:first-child, #regionTable.is-full > tbody > tr > td:first-child { min-width: 10.5rem; }
  #regionTable.is-full .resort-cell { flex-wrap: nowrap; align-items: flex-start; }
  #regionTable.is-full .resort-cell > .resort { flex: 1 1 auto; min-width: 0; padding-top: 0.15rem; overflow-wrap: break-word; }
  #regionTable.is-full .resort-cell > .pin-btn { margin-top: -0.05rem; }
  #regionTable.is-full .resort-sub { display: none !important; }
}

/* ---------- Trip Planner: Arrival, your day in resort (TRIP-ARRIVAL-20261112-v1, preview 12 November 2026) ---------- */
.ar { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); margin-top: var(--space-3); min-width: 0; max-width: 60rem; }
.ar > *, .ar-hero > *, .ar-hero__snow > *, .ar-hero__wx > * { min-width: 0; }
.ar-trip { margin: 0; font-size: var(--text-sm); color: var(--color-text-muted); }
.ar-lvl { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.ar-lvl .chip small { color: inherit; opacity: 0.75; font-weight: 500; }
.ar-h { font-family: var(--font-display); font-size: var(--text-lg); margin: 0 0 var(--space-3); }
.ar-note { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-flag { display: inline-block; margin: 0 0 var(--space-3); padding: 0.2rem 0.55rem; font-size: var(--text-xs); font-weight: 700; border: 1px dashed var(--color-primary); color: var(--color-primary); border-radius: 4px; }

/* the trip strip: one tappable card per day, scrolls sideways inside itself on phones */
.ar-days { display: flex; gap: var(--space-2); overflow-x: auto; padding-bottom: var(--space-1); scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
.ar-day { flex: 0 0 auto; scroll-snap-align: start; display: grid; gap: 0.15rem; justify-items: center; min-width: 4.6rem; padding: var(--space-2) var(--space-2) var(--space-3); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); color: var(--color-text); font: inherit; cursor: pointer; }
.ar-day__n { font-weight: 700; font-size: var(--text-sm); }
.ar-day__d { font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-day__cm { font-family: var(--font-display); font-weight: 700; font-size: 1.45rem; line-height: 1.1; margin-top: 0.15rem; }
.ar-day__cm small { font-size: 0.7rem; font-weight: 500; }
.ar-day__wx { display: inline-flex; align-items: center; gap: 0.25rem; font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-day.is-snowy .ar-day__cm { color: var(--color-primary); }
.ar-day.is-today { border-color: var(--color-text); }
.ar-day.is-active { background: var(--pm-ink); color: var(--pm-ink-fg); border-color: var(--pm-ink); }
.ar-day.is-active .ar-day__d, .ar-day.is-active .ar-day__wx { color: var(--pm-ink-muted); }
.ar-day.is-active.is-snowy .ar-day__cm { color: #ff6a55; }

/* the hero: the day at a glance, ink panel as Go's headings */
.ar-hero { background: var(--pm-ink); color: var(--pm-ink-fg); border-radius: 6px; padding: var(--space-5); display: grid; gap: var(--space-4); }
.ar-hero .muted, .ar-hero .ar-note, .ar-hero .ar-tile__s, .ar-hero .ar-k { color: var(--pm-ink-muted); }
.ar-k { margin: 0; overflow-wrap: anywhere; font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; }
.ar-hero__t { margin: 0.2rem 0 0; font-family: var(--font-display); font-size: var(--text-2xl); line-height: 1; }
.ar-hero__t small { display: block; font-family: var(--font-body); font-size: var(--text-sm); font-weight: 500; color: var(--pm-ink-muted); margin-top: 0.35rem; }
.ar-hero__snow { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.ar-big { display: grid; gap: 0.2rem; padding: var(--space-3) var(--space-4); border-radius: 6px; background: color-mix(in oklab, var(--pm-ink-fg) 8%, transparent); }
.ar-big__k { font-size: var(--text-sm); color: var(--pm-ink-muted); }
.ar-big__v { font-family: var(--font-display); font-weight: 800; font-size: clamp(2.6rem, 2rem + 3vw, 3.6rem); line-height: 1; color: #ff6a55; }
.ar-big__v small { font-size: 0.35em; font-weight: 600; color: var(--pm-ink-fg); }
.ar-hero__say { margin: 0; font-size: var(--text-base); }
.ar-hero.is-rain .ar-hero__say { color: #9ec9ff; }
.ar-hero__wx { display: grid; grid-template-columns: 1fr 1fr 1.2fr; gap: var(--space-3); }
.ar-tile { display: grid; align-content: start; gap: 0.25rem; padding: var(--space-3); border: 1px solid color-mix(in oklab, var(--pm-ink-fg) 18%, transparent); border-radius: 6px; min-width: 0; }
.ar-tile__k { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.08em; color: var(--pm-ink-muted); }
.ar-tile__v { display: inline-flex; align-items: center; gap: 0.35rem; font-family: var(--font-display); font-weight: 700; font-size: 1.6rem; line-height: 1.1; }
.ar-tile__v small { font-size: 0.55em; font-weight: 500; }
.ar-tile__s { font-size: var(--text-xs); }
.ar-arrow { display: inline-block; flex: 0 0 auto; transition: transform var(--transition); }

/* snow line and 0 degree line against the slopes */
.ar-gauge { position: relative; height: 7.5rem; margin-top: 0.2rem; }
.ar-gauge__mtn { position: absolute; left: 0; width: 34%; background: linear-gradient(180deg, color-mix(in oklab, var(--pm-ink-fg) 55%, transparent), color-mix(in oklab, var(--pm-ink-fg) 18%, transparent)); clip-path: polygon(50% 0, 100% 100%, 0 100%); }
.ar-gauge__h { position: absolute; left: 100%; padding-left: 0.3rem; font-size: 0.65rem; white-space: nowrap; color: var(--pm-ink-muted); }
.ar-gauge__h--top { top: -0.35rem; } .ar-gauge__h--bot { bottom: -0.35rem; }
.ar-gauge__line { position: absolute; left: 0; right: 0; border-top: 2px dashed currentColor; }
.ar-gauge__line span { position: absolute; right: 0; top: -1.05rem; font-size: 0.68rem; font-weight: 700; white-space: nowrap; max-width: 62%; overflow: hidden; text-overflow: ellipsis; }
.ar-gauge__mtn { max-width: 6rem; }
.ar-gauge__line.is-sl { color: #ff6a55; }
.ar-gauge__line.is-fl { color: #9ec9ff; }
.ar-gauge__line.is-down span { top: 0.2rem; }

/* the day by time */
.ar-time, .ar-card { border: 1px solid var(--color-border); border-radius: 6px; padding: var(--space-4) var(--space-5); background: var(--color-surface); min-width: 0; }
.ar-rows { list-style: none; margin: 0; padding: 0; display: grid; }
.ar-row { display: grid; grid-template-columns: minmax(6.5rem, 9rem) 1fr 4.2rem auto; align-items: center; column-gap: var(--space-3); row-gap: 0.1rem; padding: var(--space-3) 0; border-top: 1px solid var(--color-border); }
.ar-row:first-child { border-top: 0; }
.ar-row__t { display: grid; line-height: 1.15; } .ar-row__t small { color: var(--color-text-muted); font-size: var(--text-xs); }
.ar-row__bar { height: 0.7rem; background: var(--color-surface-offset); border-radius: 3px; overflow: hidden; }
.ar-row__bar i { display: block; height: 100%; background: var(--color-snow-bar); border-radius: 3px; }
.ar-row__bar i.is-wet, .ar-row__bar i.is-mixed { background: #6aa8e8; }
.ar-row__cm { text-align: right; font-family: var(--font-display); font-weight: 700; font-size: 1.25rem; }
.ar-row__cm small { font-size: 0.65em; font-weight: 500; }
.ar-row__sky { display: inline-flex; align-items: center; gap: 0.35rem; min-width: 5.5rem; font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-sun { width: 1.15rem; height: 1.15rem; border-radius: 50%; background: conic-gradient(#f2b632 var(--sun), color-mix(in oklab, var(--color-text-muted) 35%, transparent) 0); flex: 0 0 auto; }
.ar-row__m { grid-column: 2 / -1; font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-row.is-rain .ar-row__m { color: #3a7bd5; }

/* before you arrived and since yesterday */
.ar-two { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-4); }
.ar-before__sum { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; margin: 0 0 var(--space-3); }
.ar-before__sum .ar-big__v { color: var(--color-primary); }
.ar-before__sum .ar-big__v small { color: var(--color-text); }
.ar-before__days { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.ar-before__days li { display: grid; grid-template-columns: 1fr auto 5.5rem; gap: var(--space-3); font-size: var(--text-sm); }
.ar-before__days small { text-align: right; }

@media (max-width: 760px) {
  .ar-hero { padding: var(--space-4); }
  .ar-hero__wx { grid-template-columns: 1fr 1fr; }
  .ar-tile--gauge { grid-column: 1 / -1; }
  .ar-gauge { height: 6rem; }
  .ar-two { grid-template-columns: 1fr; }
  .ar-time, .ar-card { padding: var(--space-4); }
  .ar-row { grid-template-columns: 5.6rem 1fr 3.4rem; }
  .ar-row__sky { grid-column: 2 / -1; min-width: 0; }
}

/* Arrival: one resort, chosen explicitly (owner, 12 November 2026) */
.ar-where { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: var(--space-3); row-gap: 0.1rem; }
.ar-where .ar-k { flex-basis: 100%; color: var(--color-text-muted); }
.ar-where__n { margin: 0; font-family: var(--font-display); font-weight: 800; font-size: var(--text-xl); line-height: 1.1; overflow-wrap: anywhere; }
.ar-link { background: none; border: 0; padding: 0.2rem 0; font: inherit; font-size: var(--text-sm); font-weight: 600; color: var(--color-primary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ar-choose { display: grid; gap: var(--space-2); max-width: 40rem; margin-top: var(--space-3); padding: var(--space-5); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); }
.ar-choose__t { margin: 0; font-family: var(--font-display); font-size: var(--text-xl); }
.ar-choose__k { margin-top: var(--space-3); color: var(--color-text-muted); }
.ar-choices { display: grid; gap: var(--space-2); }
.ar-choice { display: grid; gap: 0.15rem; text-align: left; width: 100%; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-bg); color: var(--color-text); font: inherit; cursor: pointer; }
.ar-choice b { font-size: var(--text-base); }
.ar-choice small { color: var(--color-text-muted); font-size: var(--text-xs); }
.ar-choice--big { padding: var(--space-4) var(--space-5); border-width: 2px; }
.ar-choice--big b { font-family: var(--font-display); font-size: var(--text-lg); }
.ar-choice:hover, .ar-choice:focus-visible { border-color: var(--color-text); }
.ar-find { width: 100%; min-height: 48px; padding: 0 var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-bg); color: var(--color-text); font: inherit; font-size: 16px; }
@media (max-width: 760px) { .ar-choose { padding: var(--space-4); } }

/* Arrival: periods stated, groups and subtotals (owner, 12 November 2026) */
.ar-key { margin: var(--space-3) 0 0; font-size: var(--text-sm); color: var(--color-text); }
.ar-key--strip { margin: 0 0 var(--space-2); font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-hero__then { margin: 0; font-size: var(--text-sm); color: var(--pm-ink-muted); }
.ar-hero__then b { color: var(--pm-ink-fg); }
.ar-grps { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.ar-grp { border: 1px solid var(--color-border); border-radius: 6px; padding: var(--space-2) var(--space-3); }
.ar-grp--day { border-color: var(--color-text); }
.ar-grp__h { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); padding: var(--space-1) 0; }
.ar-grp__h small { color: var(--color-text-muted); font-size: var(--text-xs); }
.ar-grp__v { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; color: var(--color-primary); }
.ar-grp__v small { font-size: 0.6em; color: var(--color-text); font-weight: 500; }
.ar-grp .ar-row { grid-template-columns: minmax(6.5rem, 9rem) 1fr 3.6rem auto; }

/* Trip notes */
.ar-switch { display: flex; align-items: flex-start; gap: var(--space-3); cursor: pointer; font-size: var(--text-sm); }
.ar-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ar-switch__ui { flex: 0 0 auto; width: 2.6rem; height: 1.5rem; border-radius: 999px; background: var(--color-surface-offset); border: 1px solid var(--color-border); position: relative; transition: background var(--transition); }
.ar-switch__ui::after { content: ''; position: absolute; top: 2px; left: 2px; width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--color-text-muted); transition: transform var(--transition), background var(--transition); }
.ar-switch input:checked + .ar-switch__ui { background: var(--color-text); border-color: var(--color-text); }
.ar-switch input:checked + .ar-switch__ui::after { transform: translateX(1.1rem); background: var(--color-bg); }
.ar-switch input:focus-visible + .ar-switch__ui { outline: 2px solid var(--color-text); outline-offset: 2px; }
.ar-notes .ar-flag { margin-top: var(--space-3); }
.ar-msg { margin-top: var(--space-2); padding: var(--space-3) var(--space-4); border-radius: 12px; background: var(--color-surface-offset); font-size: var(--text-sm); }
.ar-msg p { margin: 0; }
.ar-msg .ar-msg__h { font-size: var(--text-xs); font-weight: 700; color: var(--color-text-muted); margin-bottom: 0.2rem; }

/* Your hotel */
.ar-hotel { display: grid; gap: var(--space-2); }
.ar-hotel .ar-h { margin-bottom: 0; }
.ar-hotel__n { margin: 0; display: grid; } .ar-hotel__n b { font-size: var(--text-lg); } .ar-hotel__n small { color: var(--color-text-muted); font-size: var(--text-xs); }
.ar-hotel__elev { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-sm); }
.ar-hotel__elev input { width: 6.5rem; min-height: 40px; padding: 0 var(--space-2); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-bg); color: var(--color-text); font: inherit; font-size: 16px; }
.ar-hotel__at { margin-top: var(--space-2); padding: var(--space-3); border-radius: 6px; background: var(--color-surface-offset); }
.ar-hotel__wx { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: grid; gap: 0.25rem; font-size: var(--text-sm); }
.ar-hotel__wx li { display: flex; justify-content: space-between; gap: var(--space-3); }
.ar-hotel__wx b.is-snow { color: var(--color-text); } .ar-hotel__wx b.is-wet-snow { color: #3a7bd5; } .ar-hotel__wx b.is-rain { color: #1f5fbf; }
.ar-hotel__act { margin: 0; font-size: var(--text-sm); }
.ar-hsearch { display: grid; gap: var(--space-2); margin-top: var(--space-2); }
.ar-hsearch__row { display: flex; gap: var(--space-2); } .ar-hsearch__row .ar-find { flex: 1 1 auto; min-width: 0; }
.ar-privacy { font-style: normal; }
.ar-hotel__map { position: relative; height: 22rem; border-radius: 6px; overflow: hidden; border: 1px solid var(--color-border); background: var(--color-surface-offset); }
.ar-hotel__map.resort-map--3d { height: 26rem; }
.ar-pin { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: #14120f; border: 2px solid #ff6a55; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); }
.ar-pin span { transform: rotate(45deg); color: #fff; font-weight: 800; font-size: 13px; line-height: 1; }
.ar-plist { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.ar-place { display: grid; grid-template-columns: 1fr; align-items: stretch; gap: var(--space-2); }
.ar-place:has(> .ar-place__edit) { grid-template-columns: 1fr auto; }   /* Change, Use ours, Remove or Add it beside each place (owner, 14 Nov 2026) */
.ar-place__edit { align-self: center; padding: var(--space-2); border: 0; background: none; color: var(--color-text-muted); font: inherit; font-size: var(--text-sm); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.ar-place__edit:hover { color: var(--color-text); }
.ar-pedit { margin: var(--space-3) 0; padding: var(--space-3); border: 1px solid var(--color-border); border-radius: 6px; }
.ar-pedit__pin { margin-top: var(--space-3); }
.ar-place__b { display: grid; gap: 0.1rem; text-align: left; padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-bg); color: var(--color-text); font: inherit; cursor: pointer; min-width: 0; }
.ar-place__b[aria-pressed="true"] { border-color: #ff6a55; box-shadow: inset 3px 0 0 #ff6a55; }
.ar-place__k { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-text-muted); }
.ar-place__b small { font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-place__d { font-size: var(--text-sm); font-weight: 700; }
/* one short, full-width row per place: kind, name, then the distance or "Click to show on the map" (owner, 14 Nov 2026) */
.ar-place > button.ar-place__b { grid-template-columns: auto minmax(0, 1fr); column-gap: var(--space-3); row-gap: 0.15rem; align-items: baseline; padding: 0.45rem var(--space-3); }
.ar-place > button.ar-place__b > .ar-place__d { grid-column: 2; text-align: left; font-size: var(--text-xs); font-weight: 500; color: var(--color-text-muted); }   /* the way on foot under the name, never beside it (owner, 14 Nov 2026) */
@media (max-width: 640px) {   /* phones: the kind, the name and the way on foot one under another */
  .ar-place > button.ar-place__b { grid-template-columns: minmax(0, 1fr); }
  .ar-place > button.ar-place__b > .ar-place__d { grid-column: 1; }
  .ar-place__edit { padding-inline: var(--space-1) 0; }
}
.ar-place > button.ar-place__b > .ar-place__d:empty { display: none; }
.ar-place__n small { font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-plist__hint { margin: 0 0 var(--space-2); }
.ar-hint { margin-left: 0.4rem; font-weight: 400; text-transform: none; letter-spacing: 0; color: inherit; opacity: 0.8; }
.ar-place.is-none .ar-place__b { cursor: default; }
@media (max-width: 760px) {
  .ar-grp .ar-row { grid-template-columns: 5.6rem 1fr 3.2rem; }
  .ar-hotel__map { height: 18rem; } .ar-hotel__map.resort-map--3d { height: 22rem; }
}

/* Arrival layout (TRIP-ARRIVAL-20261113-v1, owner 13 November 2026): resort and hotel at the top; the day panel narrower
   with the map beside it, under the hotel; places and the weather at the hotel under the map; stacked on a phone */
.ar { max-width: 76rem; }
.ar-main { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-4); align-items: start; }
.ar-main .ar-hero { padding: var(--space-4); }
.ar-main .ar-hero__wx { grid-template-columns: 1fr 1fr; }
.ar-main .ar-tile--gauge { grid-column: 1 / -1; }
.ar-main .ar-big__v { font-size: clamp(2.3rem, 1.8rem + 2vw, 3rem); }
.ar-side { display: grid; gap: var(--space-2); min-width: 0; }
.ar-side .ar-hotel__map { height: 30rem; }
.ar-side .ar-hotel__map.resort-map--3d { height: 32rem; }
.ar-choice--loc { border-style: dashed; }
.ar-via { margin-top: var(--space-3); }
.ar-via .chip[disabled] { opacity: 0.5; cursor: default; }
.ar-offline .pass__actions { margin-top: var(--space-2); }
@media (max-width: 900px) {
  .ar-main { grid-template-columns: 1fr; }
  .ar-side .ar-hotel__map, .ar-side .ar-hotel__map.resort-map--3d { height: 22rem; }
}
.off-page--arrival .off-save--live { margin-bottom: var(--space-3); }

/* Trip Planner journey (FLOW-A1 to A8, owner 13 November 2026) */
.tp-journey { display: grid; grid-template-columns: auto 1fr; column-gap: var(--space-4); row-gap: 0.15rem; align-items: baseline; margin: 0 0 var(--space-3); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); }
.tp-journey p { margin: 0; }
.tp-journey__k { grid-row: span 3; font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; color: var(--color-text-muted); }
.tp-journey__d b { font-family: var(--font-display); font-size: var(--text-lg); }
.tp-journey__d span { margin-left: var(--space-2); font-weight: 600; color: var(--color-primary); }
.tp-journey__r, .tp-journey__n { font-size: var(--text-sm); color: var(--color-text-muted); }
.tp-journey__r b { color: var(--color-text); }
.tp-mine-btn { margin-top: 0.3rem; font-size: var(--text-xs); }
.tp-mine-res { display: inline-block; margin-top: 0.3rem; padding: 0.15rem 0.5rem; border-radius: 999px; background: var(--pm-ink); color: var(--pm-ink-fg); font-size: var(--text-xs); font-weight: 700; }
.tp-before { display: grid; gap: var(--space-3); margin-bottom: var(--space-4); }
.tp-before__t td, .tp-before__t th { vertical-align: middle; }
.tp-thisweek { margin: var(--space-3) 0; }
.tp-thisweek > summary { cursor: pointer; font-weight: 600; }
@media (max-width: 640px) { .tp-journey { grid-template-columns: 1fr; } .tp-journey__k { grid-row: auto; } }
.ar-dates { display: flex; flex-wrap: wrap; gap: var(--space-3); flex-basis: 100%; margin-top: var(--space-2); }
.ar-dates label { display: grid; gap: 0.2rem; }
.ar-dates .ar-k { color: var(--color-text-muted); }
.ar-date { width: auto; min-width: 9rem; }

/* Trip Planner alternative (TRIPALT, 13 November 2026): Arrival as a resort companion */
.ar--alt .ar-id { display: grid; gap: var(--space-2); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); }
.ar--alt .ar-id .ar-trip { margin: 0; }
.ar-tripadd > summary, .ar-around > summary, .ar-time > summary, .ar-sample > summary { cursor: pointer; font-weight: 600; font-size: var(--text-sm); }
.ar-tripadd { font-size: var(--text-sm); }
.ar-tripadd[open] { display: grid; gap: var(--space-2); }
.ar--alt .ar-main { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.ar-col { display: grid; gap: var(--space-4); align-content: start; min-width: 0; }
.ar-around { display: grid; gap: var(--space-3); align-content: start; min-width: 0; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); }
.ar-around[open] > summary { margin-bottom: var(--space-2); }
.ar-around > summary small, .ar-time > summary small { font-weight: 400; color: var(--color-text-muted); }
.ar-around > summary .ar-h, .ar-time > summary .ar-h { display: inline; margin: 0; font-size: var(--text-base); }
/* Getting around: always shown, its heading as "Your resort" at the top (owner, 14 Nov 2026) */
.ar-around__t { margin-bottom: var(--space-1); }
.ar--alt .ar-two { grid-template-columns: 1fr; }
.ar-big__k small { display: block; font-size: var(--text-xs); color: var(--pm-ink-muted); }
.ar-day.is-trip { box-shadow: inset 0 -3px 0 var(--color-primary); }
.ar-day__trip { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--color-primary); }
.ar-status { margin: 0 0 var(--space-3); padding: var(--space-2) var(--space-3); border-radius: 6px; background: var(--color-surface-offset); font-size: var(--text-sm); }
.ar-status.is-live { background: color-mix(in oklab, #2e9e4f 15%, transparent); }
.ar-sample { margin-top: var(--space-3); }
.tp-window { margin: var(--space-3) 0; }
.tp-pick__own { display: block; margin-top: 0.2rem; color: var(--color-text); font-weight: 600; }
@media (max-width: 900px) { .ar--alt .ar-main { grid-template-columns: 1fr; } }
/* the village on the Arrival map */
.ar-mk span { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid #fff; color: #fff; font: 700 10px/1 var(--font-body); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35); }
.ar-mapkey { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); font-size: var(--text-xs); color: var(--color-text-muted); }
.ar-mapkey li { display: inline-flex; align-items: center; gap: 0.3rem; }
.ar-mapkey i { display: grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; color: #fff; font: 700 9px/1 var(--font-body); font-style: normal; }
.ar-mapkey i.ar-mapkey__h { background: #14120f; border: 1.5px solid #ff6a55; }
.ar-side .ar-hotel__map { background: #ece7de; }
[data-theme='dark'] .ar-side .ar-hotel__map { background: #26221d; }
.ar-change__s { margin: 0; font-size: var(--text-base); }
.ar-change__s .is-up { color: var(--color-primary); font-weight: 700; }
.ar-change__s .is-down { font-weight: 700; }
.ar--alt .ar-id { grid-template-columns: minmax(14rem, auto) minmax(0, 1fr); align-items: start; column-gap: var(--space-5); }
.ar-id__l { display: grid; gap: var(--space-2); align-content: start; min-width: 0; }
.ar--alt .ar-id .ar-strip { min-width: 0; }
.ar--alt .ar-id .ar-days { padding-bottom: var(--space-1); }
@media (max-width: 900px) { .ar--alt .ar-id { grid-template-columns: 1fr; } }
/* Shortlist's forecast section (Go folded in, 13 November 2026) and Arrival's most-snow mark */
.tp-fc { display: grid; gap: var(--space-3); margin: var(--space-4) 0 var(--space-5); }
.tp-fc--wait { padding: var(--space-3) var(--space-4); border: 1px dashed var(--color-border); border-radius: 6px; }
.tp-fc__wait { margin: 0; font-size: var(--text-sm); }
.tp-oneday > summary { cursor: pointer; font-weight: 600; }
.tp-oneday[open] { display: grid; gap: var(--space-3); }
.ar-day__top { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; color: #ff6a55; }
.ar-change__all { margin-top: var(--space-2); font-size: var(--text-sm); }
.ar-links { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.ar-xlink { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.3rem 0.65rem; border: 1px solid var(--color-border); border-radius: 999px; font-size: var(--text-sm); font-weight: 600; color: var(--color-text); text-decoration: none; min-height: 36px; }
.ar-xlink:hover, .ar-xlink:focus-visible { border-color: var(--color-text); }
.ar-xlink small { font-weight: 400; color: var(--color-text-muted); }
.ar-avy .avy__chip { font-size: var(--text-xs); }
.ar--alt .ar-id__links { grid-column: 1 / -1; display: grid; gap: var(--space-1); }
.ar-more { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-2); min-width: 0; }
.ar-more__s { border-top: 1px solid var(--color-border); padding-top: var(--space-2); min-width: 0; }
.ar-more__b .fn__ly { margin-top: var(--space-4); }
.ar-time__h small { font-weight: 400; font-size: var(--text-sm); color: var(--color-text-muted); }
.ar-more__s > summary { cursor: pointer; font-weight: 600; }
.ar-more__b { margin-top: var(--space-3); min-width: 0; overflow-x: auto; }
.ar-more__b .panel { margin: 0; }
.ar-routebar { margin-top: var(--space-2); padding: var(--space-2) var(--space-3); border-radius: 6px; background: var(--color-surface-offset); font-size: var(--text-sm); }
.ar-routebar p { margin: 0; }
.ar-routebar__go { margin-top: 0.3rem !important; display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.ar-routebar__go a { display: inline-flex; align-items: center; gap: 0.3rem; min-height: 36px; padding: 0 0.7rem; border: 1px solid var(--color-border); border-radius: 999px; font-weight: 600; color: var(--color-text); text-decoration: none; }
/* the forecast against past winters (owner, 14 November 2026) */
.tp-fcvs { margin: 0 0 var(--space-3); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-left: 3px solid var(--color-text-muted); border-radius: 6px; background: var(--color-surface); }
.tp-fcvs--above { border-left-color: var(--ab-hot, #e4572e); }
.tp-fcvs--below { border-left-color: #2563eb; }
.tp-fcvs__h { margin: 0; font-size: var(--text-xs); letter-spacing: 0.08em; text-transform: uppercase; }
.tp-fcvs__v { margin: var(--space-1) 0 0; }
.tp-fcvs__w { font-weight: 600; }
.tp-fcvs__n { margin: var(--space-1) 0 0; font-size: var(--text-xs); color: var(--color-text-muted); }
/* This time last year and Historic winters on the same dates (CHART-20261115, owner approved 15 Nov 2026) */
.tp-cmpx { font-family: var(--ab-sans); }
.tp-cmpx--hist { margin: var(--space-4) 0; }
.tp-cmpx__k { margin: 0 0 0.25rem; font-size: 0.7rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--color-text-muted); }
.tp-cmpx__h { margin: 0; font-size: var(--text-base); font-weight: 600; }
.tp-cmpx__d { margin: 0.15rem 0 var(--space-2); font-size: var(--text-xs); color: var(--color-text-muted); }
.tp-cmpx__v { margin: 0 0 var(--space-2); font-size: var(--text-base); font-weight: 600; }
.tp-cmpx__v--more, .tp-cmpx__v--above { color: var(--ab-hot, #e4572e); }
.tp-cmpx__v--below { color: #2563eb; }
.tp-cmpx__s { margin: 0 0 var(--space-2); font-size: var(--text-sm); }
.tp-cmpx__tot { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); margin: 0 0 var(--space-3); }
.tp-cmpx__tot dt { font-size: var(--text-xs); color: var(--color-text-muted); }
.tp-cmpx__tot dd { margin: 0; font-size: var(--text-lg); font-variant-numeric: tabular-nums lining-nums; }
.tp-cmpx__ct { margin: 0 0 0.35rem; font-size: var(--text-xs); font-weight: 600; }
.tp-cmpx--hist .tp-curve { margin-bottom: 0; }
/* WIND-20261113-v1 W4: wind and temperature in each three-hour row */
.ar-row__wx { grid-column: 2 / -1; display: inline-flex; align-items: center; gap: 0.3rem; flex-wrap: wrap; font-size: var(--text-xs); color: var(--color-text); }
.ar-row__wx .ar-arrow { flex: none; }

/* Extras (HNW-20261114-v1): the Settings block and Getting there in Arrival */
.linkish { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; }
.xt + .xt { margin-top: var(--space-3); }
.xt__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.xt__p, .xt__h { display: grid; gap: var(--space-2); padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border); min-width: 0; }
.xt__pe b { overflow-wrap: anywhere; }
.xt__fs { display: flex; flex-wrap: wrap; gap: 0.3rem 1.1rem; font-size: 0.9rem; }
.xt__f { display: inline-flex; gap: 0.35rem; align-items: center; cursor: pointer; }
.xt__acts { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.xt__add { display: grid; gap: var(--space-2); }
.xt__add .chip, .xt__h > .chip, [data-h-form] > .chip { justify-self: start; }
.xt__h { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); align-items: end; }
.xt__lbl { display: grid; gap: 0.25rem; font-size: 0.85rem; color: var(--color-text-muted); min-width: 0; }
.xt__lbl input, .xt__cal input { font: inherit; font-size: 1rem; color: var(--color-text); padding: 0.45rem 0.55rem; border: 1px solid var(--color-border); border-radius: 4px; background: var(--color-surface); min-width: 0; width: 100%; box-sizing: border-box; }
.xt__cal { display: flex; gap: 0.5rem; align-items: center; margin: 0; }
.xt__cal input { flex: 1; font-size: 0.85rem; }
.xt__msg { margin: 0; font-size: 0.9rem; }
.ar-get { display: grid; gap: var(--space-3); margin-top: var(--space-4); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); min-width: 0; }
.ar-get__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: var(--space-3) var(--space-5); }
.ar-get__h { margin: 0 0 0.4rem; font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 600; }
.ar-get__l { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.3rem; font-size: 0.95rem; }
.ar-get__l li { display: flex; flex-wrap: wrap; gap: 0.2rem 0.5rem; align-items: baseline; }
.ar-get__l--days li { display: block; }
.xt__t { margin-left: auto; font-variant-numeric: tabular-nums; }
.ar-get .ar-note { margin: 0; }
.xt__name { padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border); }
.ar-air { display: grid; gap: 0.35rem; padding: var(--space-2) 0; border-top: 1px solid var(--color-border); }
.ar-air__n, .ar-air__d { margin: 0; }
.ar-air__d { font-size: 0.85rem; color: var(--color-text-muted); }
.ar-air__raw summary { cursor: pointer; font-size: 0.85rem; color: var(--color-text-muted); }
.ar-air__raw code { display: block; margin-top: 0.3rem; font-size: 0.78rem; white-space: pre-wrap; overflow-wrap: anywhere; }

/* Your season (owner, 14 November 2026): the members' private page for homes, airports, people and calendar */
.ys { display: grid; gap: var(--space-6); max-width: 60rem; }
.ys-h { margin: 0; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-text-muted); }
.ys-note { margin: 0; font-size: 0.88rem; color: var(--color-text-muted); max-width: 70ch; }
.ys-lead { margin: 0; font-size: 1.15rem; line-height: 1.5; max-width: 60ch; }
.ys-k { display: block; font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-text-muted); margin-bottom: 0.2rem; }
.ys-tbl { border-collapse: collapse; width: 100%; font-size: 0.92rem; font-variant-numeric: tabular-nums; }
.ys-tbl th, .ys-tbl td { padding: 0.45rem 0.6rem; border-bottom: 1px solid var(--color-border); text-align: left; white-space: nowrap; }
.ys-tbl .num { text-align: right; }
.ys-tbl thead th { font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 600; }
.ys-tbl--days td { text-align: center; }
.ys-tbl--days tbody th { font-weight: 500; color: var(--color-text-muted); font-size: 0.82rem; }
.ys-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ys-home, .ys-apt { display: grid; gap: var(--space-2); padding: var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); min-width: 0; }
.ys-home + .ys-home, .ys-apt + .ys-apt { margin-top: var(--space-3); }
.ys-home__h { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.2rem 1rem; }
.ys-home__n { margin: 0; font-size: 1.25rem; font-weight: 600; }
.ys-home__m { margin: 0; font-size: 0.9rem; color: var(--color-text-muted); }
.ys-apt__tr { margin: 0; display: flex; flex-wrap: wrap; gap: 0.3rem 1.2rem; font-size: 0.92rem; }
.ys-apt__tr b { font-variant-numeric: tabular-nums; }
.ys-apt-add { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-2); margin-top: var(--space-3); }
.ys-apt-add .xt__lbl { flex: 1 1 16rem; }
.ys-edit summary { cursor: pointer; font-size: 0.9rem; }
.ys-edit[open] summary { margin-bottom: var(--space-3); }
.ys-foot { margin-top: var(--space-2); }
.xt__season { margin: 0 0 var(--space-3); }
.ys-tbl tbody th { letter-spacing: normal; text-transform: none; font-family: inherit; }
.ys-tbl tbody th a { color: inherit; }
[data-ys-people], [data-ys-cal] { display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-surface); min-width: 0; }
[data-ys-people] > *, [data-ys-cal] > * { margin: 0; }
@media (max-width: 640px) {
  .ys-tbl--days th, .ys-tbl--days td { padding: 0.4rem 0.3rem; font-size: 0.82rem; }
  .ys-home, .ys-apt, [data-ys-people], [data-ys-cal] { padding: var(--space-3); }
}
.ys-h--sub { margin-top: var(--space-4); }
.ys-tbl--days td.ys-alt { white-space: normal; text-align: left; vertical-align: top; min-width: 7rem; font-size: 0.85rem; }
.tp-holidays { margin-top: var(--space-2); }
.tp-holidays__n { font-size: 0.8rem; }


/* Le Domaine (owner, 15 November 2026): the members' page. A dark opening section with mountain line art and the week's
   figures, a grid of service cards with drawn icons, one detail open below the grid, hidden services at the foot */
.nav-domaine[hidden] { display: none !important; }
.dm { display: grid; gap: var(--space-6); max-width: 64rem; }
.dm-hero { position: relative; overflow: hidden; border-radius: 8px; background: #0d0c0b; color: #f4f3ef; padding: clamp(1.8rem, 1rem + 3vw, 3.4rem) clamp(1.2rem, 0.6rem + 3vw, 3rem) clamp(2rem, 1rem + 3vw, 3rem); min-height: 15rem; display: flex; align-items: flex-end; }
.dm-hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120% 90% at 85% -10%, rgba(244, 243, 239, 0.12), transparent 60%); pointer-events: none; }
.dm-hero__in { position: relative; display: grid; gap: 0.6rem; width: 100%; }
.dm-hero__t { margin: 0; font-family: var(--font-display); font-weight: 400; font-size: clamp(2.6rem, 1.6rem + 4.4vw, 4.6rem); line-height: 1; letter-spacing: -0.01em; color: #f4f3ef; }
.dm-hero__l { margin: 0; font-size: 1.05rem; color: rgba(244, 243, 239, 0.85); max-width: 46ch; }
.dm-hero a, .dm-hero a:visited { color: #f4f3ef; }
.dm-btn { display: inline-block; margin-top: 0.4rem; padding: 0.8rem 1.4rem; border: 1px solid #f4f3ef; background: #f4f3ef; color: #0d0c0b !important; font: 500 0.78rem/1 var(--font-body); letter-spacing: 0.18em; text-transform: uppercase; text-decoration: none; cursor: pointer; }
.dm-stats { display: flex; flex-wrap: wrap; gap: 1.2rem 2.6rem; margin-top: 1.4rem; padding-top: 1.2rem; border-top: 1px solid rgba(244, 243, 239, 0.22); }
.dm-stat { display: grid; gap: 0.3rem; min-width: 0; }
.dm-stat b { font-weight: 300; font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.2rem); line-height: 1; color: #f4f3ef; }
.dm-stat b small { font-size: 0.5em; color: rgba(244, 243, 239, 0.7); }
.dm-stat span { font-size: 0.8rem; letter-spacing: 0.04em; color: rgba(244, 243, 239, 0.72); }
.dm-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr)); gap: var(--space-3); }
.dm-card { position: relative; min-width: 0; }
.dm-card__b { display: grid; grid-template-rows: auto auto 1fr auto; gap: 0.45rem; width: 100%; height: 100%; min-height: 11.5rem; text-align: left; padding: 1.3rem 1.3rem 1.1rem; border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-surface); color: var(--color-text); font: inherit; cursor: pointer; transition: border-color var(--transition), transform var(--transition), box-shadow var(--transition); }
.dm-card__b:hover, .dm-card__b:focus-visible { border-color: var(--color-text); transform: translateY(-2px); box-shadow: 0 10px 24px -18px rgba(0, 0, 0, 0.45); }
.dm-card.is-open .dm-card__b { border-color: var(--color-text); box-shadow: inset 0 0 0 1px var(--color-text); }
.dm-ico { width: 2.1rem; height: 2.1rem; color: var(--color-text); }
.dm-ico--s { width: 1.4rem; height: 1.4rem; flex: none; }
.dm-card__n { font-family: var(--font-display); font-size: 1.3rem; line-height: 1.2; }
.dm-card__s { font-size: 0.9rem; line-height: 1.45; color: var(--color-text-muted); }
.dm-card__go { font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-text); }
.dm-card__hide { position: absolute; top: 0.9rem; right: 0.9rem; padding: 0.25rem 0.5rem; border: 0; background: none; font: inherit; font-size: 0.72rem; letter-spacing: 0.08em; color: var(--color-text-muted); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.dm-card__hide:hover, .dm-card__hide:focus-visible { color: var(--color-text); }
.dm-detail { display: grid; gap: var(--space-3); padding: clamp(1rem, 0.6rem + 1.6vw, 1.8rem); border: 1px solid var(--color-text); border-radius: 8px; scroll-margin-top: 5rem; min-width: 0; }
.dm-detail__h { display: flex; align-items: center; gap: 0.8rem; }
.dm-detail__h h2 { margin: 0; font-family: var(--font-display); font-weight: 400; font-size: 1.6rem; }
.dm-detail__b { display: grid; gap: var(--space-3); min-width: 0; }
.dm-hidden { border-top: 1px solid var(--color-border); padding-top: var(--space-3); }
.dm-hidden summary { cursor: pointer; font-size: 0.85rem; letter-spacing: 0.08em; color: var(--color-text-muted); }
.dm-hidden ul { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: grid; gap: var(--space-2); }
.dm-hidden li { display: flex; align-items: center; gap: 0.8rem; font-size: 0.9rem; color: var(--color-text-muted); }
.dm-hidden li span { flex: 1; min-width: 0; }
.dm-hidden li b { color: var(--color-text); font-weight: 600; margin-right: 0.3rem; }
.dm-empty { padding: var(--space-4); border: 1px dashed var(--color-border); border-radius: 8px; }
.dm-link { font-weight: 600; }
@media (max-width: 640px) {
  .dm-hero { min-height: 13rem; }
  .dm-grid { grid-template-columns: 1fr 1fr; gap: var(--space-2); }
  .dm-card__b { min-height: 10rem; padding: 1rem 0.9rem 0.9rem; }
  .dm-card__n { font-size: 1.1rem; }
  .dm-card__s { font-size: 0.8rem; }
  .dm-card__hide { top: 0.55rem; right: 0.45rem; }
  .dm-hidden li { flex-wrap: wrap; }
}
@media (max-width: 380px) { .dm-grid { grid-template-columns: 1fr; } }
/* the mountain lines stay behind the figures: softer, and lower on phones */
.dm-stats { position: relative; }
@media (max-width: 640px) { .dm-hero { padding-bottom: 4.2rem; } }

/* owner, 15 Nov 2026: no mountain outline in the banner; a quiet light from the top right instead */
.dm-hero { min-height: 0; }
@media (max-width: 640px) { .dm-hero { padding-bottom: clamp(2rem, 1rem + 3vw, 3rem); } }

/* owner, 15 Nov 2026: the site's own type, as on the page before: the banner title is a page title (Bodoni in Piste
   Noire), card and detail names are the body font in bold */
.dm-hero__t { font-family: var(--font-display); font-weight: 800; letter-spacing: -0.02em; }
.dm-card__n { font-family: inherit; font-weight: 600; font-size: 1.15rem; }
.dm-detail__h h2 { font-family: inherit; font-weight: 600; font-size: 1.3rem; }
@media (max-width: 640px) { .dm-card__n { font-size: 1.02rem; } }

/* Le Domaine detail, richer (owner, 15 Nov 2026): it opens under the row of the card tapped; each resort is a panel with
   its figures and seven day tiles */
.dm-detail-li { grid-column: 1 / -1; list-style: none; }
.dm-detail { border-width: 1px; }
.dm-lead { display: grid; gap: 0.2rem; padding: 0.2rem 0 0.4rem; }
.dm-lead p { margin: 0; font-size: 1.15rem; line-height: 1.5; max-width: 62ch; }
.dm-res { display: grid; gap: 0.9rem; padding: 1.2rem 1.2rem 1.1rem; border: 1px solid var(--color-border); border-radius: 8px; background: var(--color-surface); min-width: 0; }
.dm-res + .dm-res { margin-top: var(--space-3); }
.dm-res__h { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.8rem 1.6rem; flex-wrap: wrap; }
.dm-res__n { margin: 0; font-weight: 600; font-size: 1.3rem; line-height: 1.2; }
.dm-res__n a { color: inherit; text-decoration: none; }
.dm-res__n a:hover { text-decoration: underline; }
.dm-res__m { margin: 0.2rem 0 0; font-size: 0.85rem; color: var(--color-text-muted); }
.dm-res__big { display: grid; justify-items: end; text-align: right; }
.dm-res__big b { font-weight: 300; font-size: 2.3rem; line-height: 1; font-variant-numeric: tabular-nums; }
.dm-res__big b small { font-size: 0.45em; color: var(--color-text-muted); }
.dm-res__big span { font-size: 0.78rem; color: var(--color-text-muted); }
.dm-res__f { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1.4rem; font-size: 0.85rem; color: var(--color-text-muted); }
.dm-res__f b { color: var(--color-text); font-weight: 600; }
.dm-res__avy { display: inline-flex; align-items: center; gap: 0.4rem; }
.dm-avy { font-size: 0.78rem; }
.dm-res__l { margin: 0; font-size: 0.95rem; }
.dm-days { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(6.4rem, 1fr)); gap: 0.45rem; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 0.2rem; }
.dm-day { position: relative; display: grid; justify-items: center; gap: 0.25rem; padding: 0.75rem 0.4rem 0.7rem; border: 1px solid var(--color-border); border-radius: 6px; text-align: center; scroll-snap-align: start; min-width: 0; }
.dm-day.is-snow { background: color-mix(in srgb, var(--color-text) 4%, transparent); }
.dm-day.is-best { border-color: var(--color-text); box-shadow: inset 0 0 0 1px var(--color-text); }
.dm-day__w { font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-muted); }
.dm-day__w small { letter-spacing: 0; font-size: 1em; }
.dm-day__best { position: absolute; top: -0.55rem; left: 50%; transform: translateX(-50%); padding: 0.05rem 0.45rem; background: var(--color-text); color: var(--color-bg); font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase; border-radius: 3px; }
.dm-day__i svg { width: 1.5rem; height: 1.5rem; color: var(--color-text); }
.dm-day:not(.is-snow) .dm-day__i svg { color: var(--color-text-muted); }
.dm-day__cm { font-size: 1.25rem; font-weight: 600; line-height: 1.1; font-variant-numeric: tabular-nums; }
.dm-day__cm small { font-size: 0.6em; font-weight: 400; color: var(--color-text-muted); }
.dm-day__q { font-size: 0.75rem; color: var(--color-text-muted); }
.dm-day__home { font-size: 0.75rem; font-weight: 600; padding: 0.1rem 0.4rem; border-radius: 3px; border: 1px solid var(--color-border); }
.dm-day__home.is-snow, .dm-day__home.is-wet-snow { border-color: var(--color-text); }
.dm-day__t { font-size: 0.8rem; font-variant-numeric: tabular-nums; }
.dm-day__x { font-size: 0.68rem; color: var(--color-text-muted); line-height: 1.3; min-height: 1.8em; }
html[data-style='maison'] .dm-res, html[data-style='maison'] .dm-day, html[data-style='maison'] .dm-day__best, html[data-style='maison'] .dm-day__home { border-radius: 0; }
@media (max-width: 640px) {
  .dm-res { padding: 1rem 0.8rem; }
  .dm-res__big { justify-items: start; text-align: left; }
  .dm-days { grid-template-columns: repeat(7, 6rem); }
  .dm-detail { padding: 0.9rem 0.7rem; }
}

.dm-days { padding-top: 0.75rem; }   /* room for the Best label above its tile */

/* owner, 15 Nov 2026: the banner title is the site's own page title, only coloured for the dark band */
.dm-hero .dm-hero__title { margin: 0; color: #f4f3ef; }

/* the home's own height on each tile: snow (whole cm) or rain, and the temperature range, about (owner, 15 Nov 2026) */
.dm-day__home { display: grid; gap: 0.1rem; line-height: 1.2; }
.dm-day__home small { font-weight: 400; font-size: 0.68rem; color: var(--color-text-muted); }
.ar-brief { margin-top: var(--space-3); }
.dm-day__hk { font-style: normal; font-weight: 500; font-size: 0.58rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-muted); }

/* Le Domaine homes: events coming up at the resort, its webcams link and its own news headlines (owner, 15 Nov 2026) */
.dm-coming, .dm-news { margin-top: var(--space-3); }
.dm-coming ul, .dm-news ul { list-style: none; margin: 0.35rem 0 0; padding: 0; display: grid; gap: 0.35rem; font-size: 0.9rem; }
.dm-coming li, .dm-news li { display: grid; grid-template-columns: 9rem 1fr; gap: 0.75rem; align-items: baseline; }
.dm-coming__d { color: var(--color-text-muted); font-variant-numeric: tabular-nums; font-size: 0.82rem; }
@media (max-width: 560px) { .dm-coming li, .dm-news li { grid-template-columns: 1fr; gap: 0.1rem; } }
.dm-cams { display: inline-block; font-size: 0.9rem; }
.xt__invite a { margin-left: 0.25rem; text-decoration: underline; text-underline-offset: 0.2em; }

/* a home's tile: the upper slopes named at the top, the home's own height in its box at the foot (owner, 15 Nov 2026) */
.dm-day__lv { font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-muted); }
.dm-day__home { margin-top: 0.35rem; }

/* a home's place: live view beside events and news (owner, 15 Nov 2026); a placeholder until a camera is arranged */
.dm-place { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--space-4); margin-top: var(--space-4); align-items: start; }
.dm-place__side .dm-coming:first-child, .dm-place__side .dm-news:first-child { margin-top: 0; }
.dm-coming__none { margin: 0.35rem 0 0; font-size: 0.85rem; color: var(--color-text-muted); }
.dm-cam { margin: 0; }
.dm-cam__frame { position: relative; aspect-ratio: 16 / 9; border: 1px solid var(--color-border); overflow: hidden; background: var(--color-surface-2, var(--color-surface)); }
.dm-cam__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.dm-cam__ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.35rem; padding: var(--space-3); text-align: center;
  background: repeating-linear-gradient(135deg, transparent 0 14px, color-mix(in srgb, var(--color-text) 3%, transparent) 14px 15px); }
.dm-cam__ph svg { width: 2.4rem; height: 2.4rem; color: var(--color-text-muted); }
.dm-cam__t { margin: 0; font-weight: 600; }
.dm-cam__s { margin: 0; max-width: 30ch; font-size: 0.82rem; color: var(--color-text-muted); }
.dm-cam__ph .dm-cams { margin-top: 0.4rem; font-size: 0.85rem; }
.dm-cam figcaption { margin-top: 0.45rem; font-size: 0.82rem; color: var(--color-text-muted); display: flex; flex-wrap: wrap; gap: 0.25rem 0.6rem; align-items: baseline; }
.dm-cam figcaption .dm-cams { margin-left: auto; }
@media (max-width: 760px) { .dm-place { grid-template-columns: 1fr; } }
.dm-place__side li { grid-template-columns: 1fr !important; gap: 0.05rem !important; }
.dm-day__lv { white-space: nowrap; letter-spacing: 0.08em; font-size: 0.58rem; }
.dm-cams { text-decoration: underline; text-underline-offset: 0.2em; }

/* Le Domaine tiles: the upper slopes of a day with 1 cm or more open the three-hour breakdown below the row (owner, 15 Nov 2026) */
.dm-day__up, .dm-day__open.fc__snowbtn { display: grid; justify-items: center; gap: 0.25rem; width: 100%; grid-template-rows: none; padding: 0.15rem 0 0.25rem; border-radius: 4px; }
.dm-day__open.fc__snowbtn.is-open { box-shadow: inset 0 -2px 0 var(--color-text); }
.dm-day__more { font-size: 0.66rem; color: var(--color-text-muted); text-decoration: underline dotted; text-underline-offset: 3px; }
.dm-days + .h3pop { margin-top: var(--space-3); }
.dm-day__more.is-blank { text-decoration: none; }

/* Settings, Offline (OFFSET-20261115-v1): what is saved on this phone, with Update, Open and Delete for each */
.off-set { list-style: none; margin: var(--space-3) 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--color-border); }
.off-set__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 0.5rem 1rem; padding: 0.7rem 0; border-bottom: 1px solid var(--color-border); }
.off-set__txt { display: grid; gap: 0.1rem; min-width: 0; }
.off-set__txt small { color: var(--color-text-muted); font-size: 0.8rem; }
.off-set__row.is-old .off-set__txt small:first-of-type { color: var(--color-primary); }
.off-set__btns { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.off-set__btns .btn { min-height: 2.25rem; padding: 0.35rem 0.8rem; font-size: 0.85rem; }
.off-note--ok { border-color: var(--color-border); }
/* no 3D or piste map to add: the chip is just "Save for offline" (or "View offline"), full width with its text centred (owner, 15 Nov 2026) */
body .off-save .off-chip:has(> .off-chip__seg:only-child) { display: grid; width: 100%; grid-template-columns: 1fr; }
body .off-save .off-chip__seg:only-child { justify-content: center; text-align: center; grid-column: 1 / -1; }

/* Shortlist: Holidays as a menu beside the dates (owner, 15 Nov 2026) */
.tp-holidays { display: inline-flex; align-items: center; gap: 0.4rem; margin-top: var(--space-2); }
.tp-holidays__n { display: block; margin-top: 0.25rem; font-size: 0.78rem; }
.off-set__h { margin: var(--space-4) 0 0; font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-muted); font-weight: 600; }
.off-set__h + .off-set { margin-top: var(--space-2); }
