/* Reading layouts share the approved mineral experience scale and sans-serif family.
   This file owns editorial structure, not a second theme. Map HUDs and safety legends
   retain their own scale and semantics; activity composition lives in experience.css. */
html[data-design="light-alpine-v3"]:not([data-experience]) {
  --reading-display: clamp(2.1rem, 4.3vw, 3.5rem);
  --reading-title: clamp(1.5rem, 2.5vw, 2rem);
  --reading-subtitle: 1.25rem;
  --reading-body: 1rem;
  --reading-meta: .875rem;
  --reading-ink: var(--experience-stage-ink);
  --reading-secondary: var(--experience-stage-secondary);
  --reading-accent: var(--experience-link-on-dark);
  --reading-heading-font: var(--font-display, "Inter"), var(--font);
}
html[data-theme="dark"][data-design="light-alpine-v3"]:not([data-experience]), [data-design="light-alpine-v3"]:not([data-experience]) [data-theme-lock="dark"] { --reading-ink:var(--experience-stage-ink); --reading-secondary:var(--experience-stage-secondary); --reading-accent:var(--experience-link-on-dark); }
/* Taiwan glyph variants throughout Traditional Chinese chrome and reading pages. */
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) {
  --font: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
  --font-body: var(--font);
  --font-ui: var(--font);
  --font-display: var(--font-ui);
  --reading-heading-font: var(--font-display);
}
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) body { font-family: var(--font); font-weight: 400; }
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) :is(button,input,select,textarea) { font-family: var(--font-ui); }
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :where(h1,h2,h3,h4,h5,h6) { font-family: var(--reading-heading-font); letter-spacing: .025em; }
@media(max-width:760px) { html[data-design="light-alpine-v3"]:not([data-experience]) { --reading-display:2.1rem; --reading-title:1.5rem; } }

/* The older component sizes are intentionally normalised here, including spans and links
   inside headings, so a link cannot quietly reduce a heading back to body size. */
[data-design="light-alpine-v3"]:not([data-experience]) :is(.bc-main,.gp-wrap,.bc-footer,.gp-foot,.bc-header,.gp-site-header) { font-size:var(--reading-body); color:var(--reading-ink); }
[data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap,.bc-footer,.gp-foot,.bc-header,.gp-site-header) :where(div,section,article,header,footer,aside,nav,figure,form,fieldset,details,p,ul,ol,dl,li,dt,dd,table,thead,tbody,tfoot,tr,th,td,caption,legend,a,span,strong,b,em,time,small,label,button,input,select,textarea,summary,figcaption,code):where(:not(.r3d, .r3d *, .bc-map, .bc-map *, [data-map-host], [data-map-host] *, .plan-timeline, .plan-timeline *)) { font-size:inherit !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :where(h1,h2,h3,h4,h5,h6):where(:not(.r3d *, .bc-map *, [data-map-host] *)) { color:var(--reading-ink); font-family:var(--reading-heading-font); font-weight:700 !important; letter-spacing:-.025em; text-wrap:balance; }
html[lang="ja"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :where(h1,h2,h3,h4,h5,h6):where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-family:"Noto Sans JP",var(--font); }
[data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) h1:where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-size:var(--reading-display) !important; font-weight:700 !important; line-height:1.3 !important; }
html[lang="ja"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) h1:where(:not(.r3d *, .bc-map *, [data-map-host] *)) { line-height:1.32 !important; }
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) h1:where(:not(.r3d *, .bc-map *, [data-map-host] *)) { line-height:1.32 !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) h2:where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-size:var(--reading-title) !important; line-height:1.35 !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :is(h3,h4,h5,h6):where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-size:var(--reading-subtitle) !important; line-height:1.5 !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.home-step h2,.gp-card h2,.gp-tcard h2,.plan-step-heading h2,.app-release__steps h2,.app-release__note h2,.bc-card__name) { font-size:var(--reading-subtitle) !important; font-weight:700 !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.bc-lead,.gp-lead) { font-size:var(--reading-subtitle) !important; line-height:1.8 !important; color:var(--reading-secondary); }
/* Home hero lead is a subtitle under a display-size H1, so it sits at body size (owner's wife, 2026-09-14: 「這個是副標題，所以字體要縮小一些」); component font-size values cannot win against the !important normaliser above, so its type lives here. */
[data-design="light-alpine-v3"]:not([data-experience]) .home-hero__lead { font-size:var(--reading-body) !important; line-height:1.7 !important; color:var(--reading-secondary); }
@media(max-width:760px) { [data-design="light-alpine-v3"]:not([data-experience]) .home-hero__lead { --reading-body:.95rem; } }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.home-step p,.home-app__copy>p:not(.bc-eyebrow),.home-trips__notice,.gp-bio,.track-import__intro,.app-release__steps p,.plan-destination__body>p:not(.plan-kicker)) { font-size:var(--reading-body) !important; line-height:1.85; color:var(--reading-secondary); }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.bc-eyebrow,.gp-eyebrow,.home-hero__readout,.home-hero__foot,.home-step__eyebrow,.home-step__status,.home-step__cta,.guide-search__note,.guide-search label,.home-trip__region,.home-trip__facts,.home-trip__guide,.home-trip__sample,.home-trip__bottom small,.home-trip__bottom p>span,.home-trip figcaption,.home-app small,.home-app figcaption,.home-app li>span,.gp-qual,.gp-meta,.gp-sample-stamp,.gp-preview-banner__tag,.gp-tcard__meta,.gp-tcard__guide,.gp-next,.gp-fact-source,.gp-card-details,.gp-card__cta,.gp-price,.gp-tcard__price,.gp-tour-facts-line,.gp-guide-strip,.plan-kicker,.plan-date-note,.plan-map-link,.plan-kind,.plan-custom-date,.plan-dates,.plan-tabs small,.app-release__download>span,.app-release__download p,.app-showcase figcaption,.app-release__checksum,.bc-footer__tag,.bc-footer__legal,.bc-attrib,.proofbar__item,.replay-sample figcaption,.gp-date-note,.gp-enquiry-note,.gp-destination__current,.gp-dest-tile__label,.gp-tcard__price b) { font-size:var(--reading-meta) !important; line-height:1.7; }
/* 2026-09-23 guides-product-v1 §5: .gp-tcard__price b dropped from this "loudest" group (it was
   the single loudest element on every directory card, 2rem bold, while the guide who runs the
   trip sat at .875rem) — it now sizes with the rest of .gp-tcard__price via the meta group above. */
[data-design="light-alpine-v3"]:not([data-experience]) :is(.gp-price b,.home-trip__bottom strong,.bc-stat__v,.track-stat__value,.gp-book__price b) { font-size:var(--reading-title) !important; font-weight:700 !important; color:var(--reading-ink); }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.plan-search input,.plan-custom-date input,.guide-search input,.guide-search select,.gp-filter input,.gp-filter select,.bc-btn,.gp-discovery-cta,.plan-tabs strong) { font-size:var(--reading-body) !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.plan-tabs strong,.track-upload>strong) { font-size:var(--reading-subtitle) !important; font-weight:700; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.plan-tabs__index,.plan-step-heading>span,.plan-destination small,.track-upload>small,.track-stat__label,.gp-gear-table th,.gp-tiers caption,.gp-cal,.gp-tags,.gp-tcard__chips,.gp-count,.gp-filter label,.gp-route-metrics dt) { font-size:var(--reading-meta) !important; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.home-hero,.home-find,.home-tools,.home-app,.home-knowledge,.proofbar,.bc-footer,.gp-directory,.gp-profile,.app-release,.plan-page__heading,.plan-chooser,.track-import,[data-page="tour"]) {
  --snow:var(--reading-ink); --snow-soft:var(--reading-ink); --ink:var(--reading-ink); --text:var(--reading-ink); --hero-ink:var(--reading-ink);
  --text-dim:var(--reading-secondary); --lead-ink:var(--reading-secondary); --muted:var(--reading-secondary); --muted-dim:var(--reading-secondary);
  --accent-text:var(--reading-accent); --brand-text:var(--reading-accent);
}
.home-hero__title { max-width:12ch; }.home-hero__lead { max-width:31ch; }
html[lang="ja"] .home-hero__title { max-width:10em; }

/* Sources read as an ordered list, not a sentence fractured across arbitrary wraps. */
[data-design="light-alpine-v3"]:not([data-experience]) .proofbar { background:transparent; box-shadow:none; border-top:1px solid var(--hairline); }
[data-design="light-alpine-v3"]:not([data-experience]) .proofbar__row { display:grid; grid-template-columns:1fr 2fr; gap:3rem; padding-block:2.5rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .proofbar__row h2 { margin:0; }
.proofbar__row ul { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:1fr 1fr; gap:1rem 2rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .proofbar__item { display:flex; align-items:baseline; gap:1rem; font-family:var(--font); letter-spacing:0; text-transform:none; }
.proofbar__item>span { color:var(--reading-accent); font-variant-numeric:tabular-nums; }
[data-design="light-alpine-v3"]:not([data-experience]) .bc-footer__groups { border-top:1px solid var(--hairline); padding-top:2rem; gap:2.5rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .bc-footer__group { gap:.1rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .bc-footer__group a { font-size:var(--reading-meta) !important; font-weight:400; padding-block:.5rem; min-height:44px; display:flex; align-items:center; }
/* Preserve the supplied monochrome logo itself; give its white artwork a dark brand plate
   instead of relying on a filter that can turn it black or disappear on a light footer. */
[data-design="light-alpine-v3"]:not([data-experience]) .bc-promo { background:#142235; justify-self:start; padding:1rem 1.5rem; border-radius:3px; }
[data-design="light-alpine-v3"]:not([data-experience]) .bc-promo img { filter:none; opacity:1; width:120px; height:auto; }

.plan-kind { display:flex; gap:1rem; border-bottom:1px solid var(--hairline); margin-bottom:1rem; }.plan-kind button { background:none; border:0; border-bottom:3px solid transparent; color:var(--reading-secondary); padding:.8rem 0; min-height:48px; cursor:pointer; font:inherit; }.plan-kind button[aria-pressed="true"] { border-color:var(--reading-ink); color:var(--reading-ink); font-weight:700; }.plan-kind span { margin-left:.5rem; }
.plan-custom-date { display:grid; gap:.65rem; margin-top:1rem; }.plan-custom-date input { min-height:48px; border:1px solid var(--hairline-strong); border-radius:4px; padding:.7rem; background:var(--surface); color:var(--reading-ink); font:inherit; }
.plan-dates { flex-wrap:wrap; }
[data-design="light-alpine-v3"]:not([data-experience]) .plan-area-grid button { border-color:var(--hairline); font-size:var(--reading-body) !important; }
[data-design="light-alpine-v3"]:not([data-experience]) .plan-area-grid button[aria-pressed="true"] { font-weight:700; border-color:var(--hairline); }
@media(max-width:760px) { [data-design="light-alpine-v3"]:not([data-experience]) .proofbar__row { grid-template-columns:1fr; gap:1.5rem; }.proofbar__row ul { grid-template-columns:1fr; gap:.9rem; }[data-design="light-alpine-v3"]:not([data-experience]) .bc-footer__groups { gap:2rem 1.5rem; } }

/* Guide people: one calm portrait-led feature, then paired readable summaries. Credentials
   and prices retain their example labels; detailed biographies stay on profile pages. */
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-grid--preview { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 3rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card { padding:2rem 0; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card--featured { grid-column:1/-1; display:grid; grid-template-columns:280px minmax(0,1fr); gap:3rem; margin-bottom:1rem; align-items:center; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-card__portrait { position:relative; margin:0; overflow:hidden; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card__portrait img { width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; border:0; border-radius:3px; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card--featured .gp-card__portrait img { height:350px; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card--featured h2 { font-size:var(--reading-title) !important; margin-bottom:1rem; }
.gp-card__content { min-width:0; }.gp-card__portrait figcaption { position:absolute; inset-inline:0; bottom:0; padding:.6rem .8rem; color:#fff; background:#142235ed; }
[data-design="light-alpine-v3"]:not([data-experience]) :is(.gp-card__portrait figcaption,.gp-profile-portrait figcaption,.gp-art-caption) { font-size:var(--reading-meta) !important; line-height:1.7; }
.gp-profile-portrait { margin:0; }.gp-profile-portrait figcaption { color:var(--reading-secondary); margin-top:.6rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-profile-portrait .gp-hero__portrait { width:280px; height:350px; border-radius:3px; border:0; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-profile .gp-hero:has(.gp-profile-portrait) { grid-template-columns:280px 1fr; gap:3rem; align-items:center; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-card .gp-qual { margin:.6rem 0; line-height:1.8; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-card .gp-meta { margin:.7rem 0 1rem; color:var(--reading-accent); }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-card .gp-bio { max-width:62ch; margin:1rem 0; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-card .gp-price b { font-size:var(--reading-subtitle) !important; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-sample-stamp { padding:0 0 .5rem; border:0; background:transparent; color:var(--reading-secondary); letter-spacing:.05em; }
.gp-art-caption { margin:0; padding:.65rem .8rem; background:var(--surface-2); color:var(--reading-secondary); }
@media(max-width:760px) { [data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-grid--preview { grid-template-columns:1fr; }[data-design="light-alpine-v3"]:not([data-experience]) .gp-directory .gp-card--featured,[data-design="light-alpine-v3"]:not([data-experience]) .gp-profile .gp-hero:has(.gp-profile-portrait) { grid-template-columns:1fr; gap:1.5rem; }[data-design="light-alpine-v3"]:not([data-experience]) .gp-card__portrait { max-width:360px; } }

/* The sample only downloads when played. Controls and the full-frame source credit remain visible. */
.replay-sample { border-top:1px solid var(--hairline); margin-top:3rem; padding-top:2.5rem; order:2; }
.replay-sample header { max-width:64ch; margin-bottom:1.5rem; }.replay-sample h2 { margin:.75rem 0 1rem; }.replay-sample p { line-height:1.85; color:var(--reading-secondary); }
.replay-sample figure { margin:0; }.replay-sample video { display:block; width:100%; height:auto; aspect-ratio:16/9; background:#142235; border-radius:4px; }
.replay-sample figcaption { margin-top:.75rem; max-width:90ch; color:var(--reading-secondary); }.replay-sample details { margin-top:1rem; }.replay-sample summary { cursor:pointer; min-height:44px; padding-block:.65rem; color:var(--reading-accent); }
[data-design="light-alpine-v3"]:not([data-experience]) .replay-sample details { font-size:var(--reading-meta) !important; }.replay-sample a { text-underline-offset:4px; color:var(--reading-accent); }

/* A quieter editorial weight for Traditional Chinese, with familiar sans-serif controls. */
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :is(h1,h2):where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-weight: 700 !important; line-height: 1.3 !important; letter-spacing: -.035em; }
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) :where(.bc-main,.gp-wrap) :is(h3,h4,h5,h6):where(:not(.r3d *, .bc-map *, [data-map-host] *)) { font-family: var(--font-ui); font-weight: 600 !important; letter-spacing: 0; }

/* Homepage poem: a quiet TC sans face, independent of editorial page headings. */
html[lang="zh-Hant"][data-design="light-alpine-v3"]:not([data-experience]) .bc-main h1.home-hero__title {
  font-family: var(--font-ui);
  font-weight: 500 !important;
  --reading-display: clamp(2rem, 3.9vw, 3.5rem);
  font-size: var(--reading-display) !important;
  line-height: 1.5 !important;
  letter-spacing: .025em;
  font-synthesis: none;
  text-wrap: initial;
}
