/* 公開ガイドページ（/guides/*）のスタイル。
   これらのページは Pages Functions がサーバで組み立てるので Astro のビルド済み CSS
   （ハッシュ付きファイル名）を当てにできない。トークンだけをここに写して自足させる。
   色を変えるときは src/styles/tokens.css を直し、npm run tokens:sync を実行すること。 */
  /* snowwind-shared-tokens:start */
:root,
html[data-theme="dark"],
[data-theme-lock="dark"] {
  /* SnowWind mineral palette: blue-hour rock, soft snow, glacier-blue actions. */
  --experience-surface-1: #222e39;
  --experience-surface-2: #2d3d4a;
  --experience-surface-3: #324350;
  --experience-muted: #a0b0be;
  --experience-line: #394956;
  --experience-line-strong: #536879;
  --experience-stage: #1c2630;
  --experience-scene: #2c3b49;
  --experience-scene-line: #7f97ab;
  --experience-stage-ink: #e2e8ed;
  --experience-stage-secondary: #b2bfcb;
  --experience-focal: #263440;
  --experience-focal-ink: #e2e8ed;
  --experience-focal-secondary: #b2bfcb;
  --experience-action: #a7c7de;
  --experience-action-hover: #bcd6e8;
  --experience-action-ink: #192936;
  --experience-link-on-light: #bacddd;
  --experience-link-on-dark: #bacddd;
  --experience-control-line-light: #7f97ab;
  --experience-control-line-dark: #7f97ab;
  --experience-info-bg: #2b3b4a;
  --experience-info-ink: #bdd0e0;
  --experience-pending-bg: #3b3322;
  --experience-pending-ink: #eed299;
  --experience-success-bg: #30434e;
  --experience-success-ink: #bfd0da;
  --experience-error-bg: #482f29;
  --experience-error-ink: #ffc0a7;

  --bg: #0e1521;
  --surface: #17212f;
  --surface-1: #131c2a; /* alt bands + proofbar + footer top */
  --surface-2: #1f2a3a;
  --surface-3: #283648; /* hover / pressed */
  --hairline: rgba(176, 196, 224, 0.13);
  --hairline-strong: rgba(168, 184, 204, 0.22);
  --line: var(--hairline);
  --snow-line: var(--hairline);

  --snow: #f7f3ec;
  --snow-soft: #eaeef3;
  --ink: #cfd4dd;
  --text: var(--ink);
  --text-dim: #bcc8d6;
  --lead-ink: #c2cedb;
  --hero-ink: #dbe5ef;
  --muted: #929cab;
  --muted-dim: #6f7d8d;

  /* ice-blue — one brand blue; no second family, no orange */
  --accent: #5b9bd1;
  --accent-deep: #2f6db0;
  --accent-text: #a8cbe9;
  --accent-soft: var(--accent-text);
  --accent-700: var(--accent); /* legacy alias — hover brightens within the family */
  --accent-ink: #ffffff; /* text inside primary buttons */
  --accent-tint: rgba(91, 155, 209, 0.14);
  --accent-glow: rgba(91, 155, 209, 0.34);
  --brand: var(--accent); /* legacy alias — no second blue */
  --brand-text: var(--accent-text);
  --brand-soft: var(--accent);
  --brand-glow: rgba(91, 155, 209, 0.30);
  --blue: var(--accent);

  --warn: #ffb870;
  --danger: #ff8a80;
  --ok: #63c39a;
  --status-external: #c79bd8;

  --glass: rgba(14, 21, 33, 0.86);
  --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.12);
  --shadow-card-hover: 0 8px 24px -16px rgba(0, 0, 0, 0.3);

  /* Shared geometry and text-link contracts. These values do not change with theme. */
  --radius-surface: 6px;
  --radius: var(--radius-surface);
  --radius-sm: 4px;
  --radius-pill: 999px;
  --radius-control: 4px;
  --link-underline-offset: 0.18em;
  --link-underline-thickness: 1px;
  --font: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", "Meiryo", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

html[data-theme="light"] {
  --experience-stage: #dce3e7;
  --experience-scene: #b9c8d3;
  --experience-scene-line: #607b90;
  --experience-stage-ink: #243442;
  --experience-stage-secondary: #43596b;
  --experience-focal: #d1dce3;
  --experience-focal-ink: #243442;
  --experience-focal-secondary: #43596b;
  --experience-surface-1: #d7e0e6;
  --experience-surface-2: #ccd7df;
  --experience-surface-3: #c5d2db;
  --experience-muted: #43596b;
  --experience-line: #b6c5d0;
  --experience-line-strong: #91a4b3;
  --experience-action: #446c88;
  --experience-action-hover: #36596f;
  --experience-action-ink: #edf2f5;
  --experience-link-on-light: #365e7a;
  --experience-link-on-dark: #365e7a;
  --experience-control-line-light: #607b90;
  --experience-control-line-dark: #607b90;
  --experience-info-bg: #cadae5;
  --experience-info-ink: #36566e;
  --experience-pending-bg: #e6d8b8;
  --experience-pending-ink: #634310;
  --experience-success-bg: #cad7de;
  --experience-success-ink: #345367;
  --experience-error-bg: #e9cec0;
  --experience-error-ink: #7b3026;
  /* Day = snow and ice, not paper: a cool white ground, navy ink, the same ice-blue accent. */
  --bg: #f6f8fa;
  --surface: #ffffff;
  --surface-1: #eff3f6;
  --surface-2: #edf2f6;
  --surface-3: #e1e9f0;
  --hairline: rgba(30, 50, 80, 0.13);
  --hairline-strong: rgba(30, 50, 80, 0.26);
  --line: var(--hairline);
  --snow-line: var(--hairline);

  --snow: #0f1a2b;
  --snow-soft: #1c2940;
  --ink: #243247;
  --text: var(--ink);
  --text-dim: #3c4c63;
  --lead-ink: #3c4c63;
  --hero-ink: #1c2940;
  --muted: #56667d;
  --muted-dim: #5d6d85;

  /* ice blue stays a fill/line/glow colour on snow; text uses the deep tone */
  --accent: #5b9bd1;
  --accent-deep: #2f6db0;
  --accent-text: #245c8c;
  --accent-soft: var(--accent-text);
  --accent-700: var(--accent-text);
  --accent-ink: #ffffff;
  --accent-tint: rgba(91, 155, 209, 0.16);
  --accent-glow: rgba(91, 155, 209, 0.22);
  --brand: var(--accent);
  --brand-text: var(--accent-text);
  --brand-soft: var(--accent);
  --brand-glow: rgba(91, 155, 209, 0.22);
  --blue: var(--accent);

  --warn: #9a5e0c;
  --danger: #a8322a;
  --ok: #1f7a50;
  --status-external: #7b4a94;

  --glass: rgba(246, 248, 250, 0.9);
  --shadow-card: 0 1px 2px rgba(20, 40, 70, 0.025);
  --shadow-card-hover: 0 12px 32px -22px rgba(20, 40, 70, 0.18);
}
  /* snowwind-shared-tokens:end */
* { box-sizing: border-box; }
/* The booking box hides controls with el.hidden; a later `display` rule would silently win over the
   UA sheet, leaving a "hidden" field on screen. Keep the attribute authoritative. */
[hidden] { display: none !important; }
body {
  margin: 0; background: var(--bg); color: var(--ink); font-family: var(--font);
  line-height: 1.75; -webkit-font-smoothing: antialiased;
}
:lang(en) body { letter-spacing: 0; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--accent-text); }
/* Every link in the page body is underlined text — no arrows, no "link-looking" cards. */
main a { text-decoration: underline; text-decoration-thickness: var(--link-underline-thickness); text-underline-offset: var(--link-underline-offset); }
main a.gp-card { text-decoration: none; }

/* Public-site navigation. These pages are rendered by Pages Functions rather than Astro, so
   the shell is mirrored here and its link data comes from the same siteNavigation module. */
.gp-skip {
  position: fixed; left: 1rem; top: .5rem; z-index: 100; transform: translateY(-180%);
  padding: .55rem .8rem; border-radius: 8px; background: var(--snow); color: var(--bg); font-weight: 700;
}
.gp-skip:focus { transform: translateY(0); }
.gp-site-header {
  position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--hairline);
  background: var(--surface);
}
.gp-site-header__bar {
  max-width: 1120px; margin: 0 auto; padding: .72rem 1.25rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1.15rem;
}
.gp-site-brand { color: var(--snow); text-decoration: none; font-weight: 800; letter-spacing: -.015em; white-space: nowrap; }
.gp-site-nav { display: flex; align-items: center; gap: 1rem; }
.gp-site-nav__link { color: var(--text-dim); text-decoration: none; font-size: .86rem; white-space: nowrap; }
.gp-site-nav__link:hover, .gp-site-nav__link[aria-current="page"] { color: var(--snow); }
.gp-site-nav__link--group-start { margin-left: .15rem; padding-left: 1.15rem; border-left: 1px solid var(--hairline-strong); }
.gp-site-lang { display: inline-flex; gap: .1rem; margin-left: .15rem; }
.gp-site-lang a { padding: .12rem .38rem; border-radius: 6px; color: var(--muted); text-decoration: none; font-size: .75rem; }
.gp-site-lang a[aria-current="page"] { color: var(--snow); background: var(--surface-2); }
.gp-site-menu { display: none; position: relative; }
.gp-site-menu summary {
  list-style: none; cursor: pointer; border: 1px solid var(--hairline-strong); border-radius: var(--radius-pill);
  padding: .38rem .72rem; color: var(--snow); font-size: .84rem; font-weight: 700;
}
.gp-site-menu summary::-webkit-details-marker { display: none; }
.gp-site-menu summary::after { content: " +"; color: var(--accent-text); }
.gp-site-menu[open] summary::after { content: " −"; }
.gp-site-menu__panel {
  position: absolute; right: 0; top: calc(100% + .55rem); width: min(82vw, 310px);
  max-height: calc(100svh - 4.5rem); overflow-y: auto; overscroll-behavior: contain;
  display: grid; gap: .15rem; padding: .6rem; border: 1px solid var(--hairline-strong);
  border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-card-hover);
}
.gp-site-menu__panel > a { color: var(--text-dim); text-decoration: none; padding: .55rem .62rem; border-radius: 4px; }
.gp-site-menu__panel > a:hover, .gp-site-menu__panel > a[aria-current="page"] { color: var(--snow); background: var(--surface-2); }
.gp-site-menu__panel .gp-site-lang { margin: .35rem 0 0; padding: .5rem .3rem .1rem; border-top: 1px solid var(--hairline); }

.gp-wrap { max-width: 1040px; margin: 0 auto; padding: 2.5rem 1.25rem 4rem; }
.gp-head { margin-bottom: 2.5rem; }
/* The name / page title is the only large heading; every h2 stays at section size (≤ 22px). */
.gp-head h1, .gp-hero h1 { font-size: clamp(1.85rem, 4vw, 2.4rem); color: var(--snow); line-height: 1.2; margin: 0 0 .35rem; }
.gp-lead { color: var(--text-dim); max-width: 60ch; margin: 0 0 0.75rem; }
.gp-back { font-size: .86rem; margin: 0 0 1rem; }

/* 一覧 */
.gp-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.gp-card {
  display: block;
  background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius-surface);
  padding: 1.1rem 1.2rem; text-decoration: none; color: inherit;
  transition: border-color 0.15s;
}
.gp-card:hover { border-color: var(--hairline-strong); }
/* A portrait column exists only when the guide has a photo. */
.gp-card--photo { display: grid; grid-template-columns: 88px 1fr; gap: 1rem; align-items: start; }
.gp-card img { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; border: 1px solid var(--hairline-strong); }
.gp-card h2 { font-size: 1.08rem; color: var(--snow); margin: 0 0 0.2rem; }
.gp-meta { color: var(--muted); font-size: 0.85rem; margin: 0 0 0.35rem; }
.gp-qual { color: var(--accent-text); font-size: 0.82rem; margin: 0 0 0.35rem; }
.gp-bio { font-size: 0.9rem; color: var(--text-dim); margin: 0 0 0.4rem; }
.gp-price { margin: 0.2rem 0 .45rem; color: var(--muted); font-size: .85rem; }
.gp-price b { color: var(--snow); font-size: 1.25rem; font-variant-numeric: tabular-nums; line-height: 1.2; margin-right: .3rem; }
.gp-card__cta { color: var(--accent-text); font-size: .86rem; font-weight: 700; text-decoration: underline; text-decoration-thickness: var(--link-underline-thickness); text-underline-offset: var(--link-underline-offset); margin: .5rem 0 0; }
.gp-card--preview { border-color: color-mix(in srgb, var(--accent) 34%, transparent); }
.gp-sample-stamp {
  display: inline-block; margin: 0 0 .45rem; padding: .12rem .5rem; border-radius: 4px;
  background: var(--snow); color: var(--bg); font-size: .66rem; line-height: 1.5; font-weight: 800;
}

/* 実データが空でも、プロダクトの完成形と審査基準が分かる状態 — a calm one-line status, not a hero card */
.gp-empty-state { padding: 1.4rem 0; border-top: 1px solid var(--hairline); }
.gp-status-row {
  display: flex; flex-wrap: wrap; align-items: baseline; column-gap: .75rem; row-gap: .3rem;
  margin: 0; color: var(--ink); font-size: 1.02rem; line-height: 1.65;
}
.gp-status { color: var(--accent-text) !important; font-size: .78rem; font-weight: 700; letter-spacing: .04em; }
.gp-status-note { color: var(--text-dim); font-size: .9rem; line-height: 1.65; margin: .55rem 0 0; max-width: 62ch; }
.gp-section-head { margin-bottom: 1.1rem; }
.gp-section-head h2 { color: var(--snow); font-size: 1.3rem; line-height: 1.35; margin: 0 0 .5rem; }
.gp-section-head p { color: var(--text-dim); max-width: 62ch; margin: 0; }
.gp-preview-block { margin-top: 2.75rem; padding-top: 2rem; border-top: 1px solid var(--hairline); }
.gp-grid--preview { grid-template-columns: minmax(0, 720px); }

/* 個別 — paper hero: name + base area, portrait only when the guide has one */
.gp-hero { display: grid; grid-template-columns: 1fr; gap: 1.25rem; align-items: center; margin-bottom: 1.75rem; }
.gp-hero:has(.gp-hero__portrait) { grid-template-columns: 128px 1fr; }
.gp-hero__portrait { width: 128px; height: 128px; border-radius: 50%; object-fit: cover; border: 1px solid var(--hairline-strong); }
.gp-hero__area { color: var(--text-dim); margin: 0; }

/* Credential card (S1-C): every certification with level, verified date, JMGA scope + complement
   and a registry link-out; then insurance / languages / areas. Text only, equal weight. */
.gp-cred {
  margin: 0 0 2.25rem; border: 1px solid var(--hairline); border-radius: var(--radius);
  background: var(--surface); overflow: hidden;
}
.gp-cred ul { list-style: none; margin: 0; padding: 0; }
.gp-cred__quals li { padding: .9rem 1rem; border-bottom: 1px solid var(--hairline); font-size: .9rem; line-height: 1.55; }
.gp-cred__quals b { color: var(--snow); }
.gp-cred__level { color: var(--snow); }
.gp-cred__quals small, .gp-cred__quals [data-verified] { display: block; color: var(--muted); font-size: .78rem; }
.gp-cred__quals p { margin: .3rem 0 0; color: var(--text-dim); }
.gp-cred__quals p span { color: var(--muted); font-size: .78rem; }
.gp-cred__quals a { display: inline-block; margin-top: .35rem; font-size: .84rem; }
.gp-cred__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.gp-cred__facts li { padding: .8rem 1rem; border-right: 1px solid var(--hairline); font-size: .9rem; line-height: 1.5; color: var(--snow); }
.gp-cred__facts li:last-child { border-right: 0; }
.gp-cred__facts li span { display: block; color: var(--muted); font-size: .78rem; }
section[data-about-guide] .gp-cred { margin: 0 0 1.25rem; }

.gp-sec { margin: 2.75rem 0; }
.gp-sec h2 { font-size: 1.25rem; color: var(--snow); margin: 0 0 1rem; }
.gp-bio-sec p { margin: 0 0 .9rem; }
.gp-quals { list-style: none; padding: 0; margin: 0; }
.gp-quals li { padding: 0.5rem 0; border-bottom: 1px solid var(--hairline); font-size: 0.94rem; }
.gp-quals b { color: var(--snow); }

.gp-preview-banner {
  display: grid; grid-template-columns: auto 1fr; gap: 1rem; align-items: start;
  margin: 0 0 2rem; padding: 1rem 1.15rem; border: 1px solid color-mix(in srgb, var(--accent) 42%, transparent);
  border-radius: var(--radius); background: var(--accent-tint);
}
.gp-preview-banner__tag {
  margin: .1rem 0 0; padding: .18rem .52rem; border-radius: 4px;
  background: var(--snow); color: var(--bg); font-size: .66rem; font-weight: 800; white-space: nowrap;
}
.gp-preview-banner h2 { color: var(--snow); font-size: 1rem; margin: 0 0 .15rem; }
.gp-preview-banner div p { color: var(--text-dim); font-size: .86rem; margin: 0; }

.gp-tour-facts dt { color: var(--muted); font-size: .78rem; }
.gp-tour-facts dd { color: var(--snow); font-size: .9rem; line-height: 1.5; margin: .1rem 0 0; }

/* Trips: the numbers row is the only big type on the page */
.gp-tour {
  background: var(--surface); border: 1px solid var(--hairline);
  border-radius: var(--radius); padding: 1.25rem 1.4rem; margin-bottom: 1rem;
}
.gp-tour h3 { color: var(--snow); font-size: 1.12rem; margin: 0 0 0.6rem; }
.gp-tour p { margin: 0 0 0.7rem; }
.gp-numbers { display: flex; flex-wrap: wrap; gap: .5rem 2rem; margin: 0 0 1rem; color: var(--muted); font-size: .85rem; }
.gp-numbers span { display: inline-flex; align-items: baseline; gap: .35rem; }
.gp-numbers b { color: var(--snow); font-size: 1.85rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.gp-tour-facts {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0;
  margin: 1.15rem 0; border: 1px solid var(--hairline); border-radius: var(--radius-sm); overflow: hidden;
}
.gp-tour-facts div { min-width: 0; padding: .75rem .85rem; border-right: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.gp-tour-facts div:nth-child(2n) { border-right: 0; }
.gp-tour-facts div:nth-last-child(-n + 2) { border-bottom: 0; }
.gp-availability {
  margin: 1.5rem 0 2.5rem; padding: 1.05rem 1.15rem; border: 1px solid var(--hairline);
  border-radius: var(--radius); background: var(--surface);
}
.gp-availability h2 { color: var(--snow); font-size: 1.05rem; margin: 0 0 .45rem; }
.gp-availability > p { color: var(--text-dim); font-size: .9rem; line-height: 1.65; margin: 0; max-width: 72ch; }
.gp-availability > small { display: block; color: var(--muted); margin-top: .65rem; }
.gp-date-list { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: .9rem; }
/* The one secondary pill style on the page */
.gp-date-chip {
  appearance: none; border: 1px solid var(--hairline-strong); border-radius: var(--radius-pill);
  background: var(--surface-2); color: var(--snow); font: inherit; font-size: .84rem;
  font-weight: 650; padding: .52rem .78rem; cursor: pointer;
}
.gp-date-chip:hover, .gp-date-chip:focus-visible { border-color: var(--accent); }
.gp-date-chip:disabled { cursor: not-allowed; opacity: .62; }
.gp-il h4 { color: var(--text-dim); font-size: 0.85rem; margin: 0.9rem 0 0.3rem; font-weight: 600; }
.gp-il ul { margin: 0; padding-left: 1.1rem; color: var(--text-dim); font-size: 0.9rem; }
.gp-meet { font-size: 0.9rem; color: var(--text-dim); }
.gp-empty { color: var(--muted); }
.gp-context { margin: 0 0 1.5rem; padding: 1rem 1.1rem; border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent); border-radius: var(--radius); background: var(--surface); }
.gp-context h2 { margin: 0 0 .45rem; font-size: 1.15rem; color: var(--snow); }
.gp-context p { margin: .35rem 0; max-width: 72ch; color: var(--text-dim); }
.gp-context .gp-context__facts { color: var(--snow); font-size: .82rem; font-weight: 700; }
.gp-context > a { display: inline-block; margin-top: .45rem; font-size: .84rem; font-weight: 700; }
/* 空の一覧を行き止まりにしないための供給側の導線 */
.gp-join { color: var(--muted); font-size: .92rem; margin-top: 2rem; }

/* 申込フォーム */
.gp-form label { display: block; margin-bottom: 1rem; }
.gp-form label > span { display: block; font-size: 0.85rem; color: var(--text-dim); margin-bottom: 0.3rem; }
.gp-form small { display: block; color: var(--muted); font-size: 0.8rem; margin-top: 0.3rem; }
.gp-form > .gp-privacy-notice { margin: .15rem 0 1rem; line-height: 1.6; }
.gp-form input, .gp-form select, .gp-form textarea {
  width: 100%; padding: 0.65rem 0.8rem; font: inherit; font-size: 0.95rem;
  color: var(--snow); background: var(--surface-2); border: 1px solid var(--hairline);
  border-radius: var(--radius-sm);
}
.gp-form input:focus-visible, .gp-form select:focus-visible, .gp-form textarea:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px;
  border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-tint);
}
.gp-form textarea { resize: vertical; line-height: 1.6; }
.gp-row { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.gp-check { display: flex; gap: 0.6rem; align-items: flex-start; font-size: 0.9rem; color: var(--text-dim); }
.gp-check input { width: auto; margin-top: 0.35rem; flex: none; }
/* The one primary pill on the page */
.gp-form button {
  padding: 0.75rem 1.5rem; font: inherit; font-weight: 600; border: none; border-radius: var(--radius-pill);
  background: var(--accent-deep); color: var(--accent-ink); cursor: pointer;
}
.gp-form button:disabled { opacity: 0.5; cursor: not-allowed; }
.gp-form--preview {
  padding: 1.15rem; border: 1px dashed var(--hairline-strong); border-radius: var(--radius);
  background: var(--surface);
}
.gp-form--preview input:disabled, .gp-form--preview select:disabled, .gp-form--preview textarea:disabled {
  opacity: .68; color: var(--muted); cursor: not-allowed;
}
#rq-msg { min-height: 1.4em; margin: 0.75rem 0 0; font-size: 0.92rem; }
#rq-msg.ok { color: var(--ok); }
#rq-msg.err { color: var(--danger); }
.gp-ok {
  background: var(--surface); border: 1px solid var(--ok);
  color: var(--ok); border-radius: var(--radius-sm); padding: 0.85rem 1rem; margin-bottom: 1.5rem;
}

.gp-foot {
  border-top: 1px solid var(--hairline); margin-top: 3rem;
  padding: 1.75rem 1.25rem 3rem; max-width: 1040px; margin-inline: auto;
  color: var(--muted); font-size: 0.85rem;
}
.gp-foot p { margin: 0 0 0.4rem; }
.gp-foot-nav { display: flex; flex-wrap: wrap; gap: .35rem 1rem; }
.gp-status-page { min-height: 58vh; padding-top: clamp(3rem, 8vw, 6rem); }
.gp-status-page h1 { color: var(--snow); font-size: clamp(1.85rem, 4vw, 2.4rem); line-height: 1.2; margin: 0 0 .7rem; }

@media (max-width: 1040px) {
  .gp-site-nav--desktop { display: none; }
  .gp-site-menu { display: block; }
}

@media (max-width: 560px) {
  .gp-site-header__bar { padding: .6rem .9rem; }
  .gp-wrap { padding: 1.4rem .9rem 3rem; }
  .gp-preview-banner { grid-template-columns: 1fr; }
  .gp-hero:has(.gp-hero__portrait) { grid-template-columns: 1fr; }
  .gp-card--photo { grid-template-columns: 64px 1fr; }
  .gp-card img { width: 64px; height: 64px; }
  .gp-cred__facts { grid-template-columns: 1fr; }
  .gp-cred__facts li { border-right: 0; border-bottom: 1px solid var(--hairline); }
  .gp-cred__facts li:last-child { border-bottom: 0; }
  .gp-filter { grid-template-columns: 1fr 1fr; }
  .gp-tour-facts { grid-template-columns: 1fr; }
  .gp-tour-facts div { border-right: 0; border-bottom: 1px solid var(--hairline) !important; }
  .gp-tour-facts div:last-child { border-bottom: 0 !important; }
}

/* ── theme toggle (markup from src/server/guidePublic.ts; behaviour from src/lib/themeInit.ts).
   Mirrors src/components/ThemeToggle.astro's style — tokens only. ── */
.theme-toggle {
  flex: none; display: inline-flex; align-items: center; gap: .45rem;
  font-size: .8rem; padding: .45rem .85rem; border: 1px solid var(--hairline-strong); border-radius: var(--radius-pill);
  background: var(--surface); color: var(--ink); cursor: pointer; font-family: inherit;
  transition: border-color .2s, background .35s, transform .15s;
}
.theme-toggle:hover { border-color: var(--accent); transform: translateY(-1px); }
.theme-toggle__icon { font-size: .95rem; line-height: 1; }
.theme-toggle--compact { padding: .4rem .6rem; gap: 0; }

/* ── Tour page (S1-B): /guides/<g>/<t>/ — main column + booking box; sticky bar on phones ── */
main[data-page="tour"] { padding-bottom: 88px; }
.gp-tour-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; }
.gp-tour-main { min-width: 0; }
.gp-tour-main h1 { font-size: clamp(1.85rem, 4vw, 2.4rem); color: var(--snow); line-height: 1.2; margin: 0 0 1rem; }
.gp-gallery { margin: 0 0 1.25rem; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--hairline); }
.gp-gallery img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.gp-badges { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 .6rem; }
.gp-badges span {
  display: inline-block; padding: .14rem .55rem; border-radius: var(--radius-pill); font-size: .74rem; font-weight: 700;
  border: 1px solid var(--hairline-strong); color: var(--text-dim);
}
.gp-badges [data-badge="verified"] { color: var(--accent-text); border-color: color-mix(in srgb, var(--accent) 45%, transparent); }
.gp-badges [data-badge="sample"] { background: var(--snow); color: var(--bg); border-color: var(--snow); }
.gp-tour-facts-line { color: var(--snow); margin: 0 0 .25rem; }
.gp-guide-strip { color: var(--text-dim); margin: 0 0 2rem; }
.gp-safety { padding: 1.15rem 1.25rem; border: 1px solid var(--hairline-strong); border-radius: var(--radius); background: var(--surface); }
.gp-safety h2 { margin-bottom: .5rem; }
.gp-safety [data-no-danger] { color: var(--snow); font-weight: 600; margin: 0 0 .9rem; max-width: 62ch; }
.gp-safety .gp-tour-facts { margin: 0; }
.gp-tour-facts dd small { display: block; color: var(--muted); font-size: .78rem; }
.gp-tour__more { font-size: .9rem; margin: 0; }
.gp-tour h3 a { color: inherit; }
.gp-err {
  background: var(--surface); border: 1px solid var(--danger); color: var(--danger);
  border-radius: var(--radius-sm); padding: 0.85rem 1rem; margin-bottom: 1.5rem;
}
.gp-book {
  border: 1px solid var(--hairline-strong); border-radius: var(--radius); background: var(--surface);
  padding: 1.15rem 1.25rem; margin: 0 0 1.5rem;
}
.gp-book__price { margin: 0 0 .25rem; color: var(--muted); font-size: .85rem; }
.gp-book__price b { color: var(--snow); font-size: 1.85rem; line-height: 1.1; font-variant-numeric: tabular-nums; margin-right: .3rem; }
.gp-book__approx { margin: 0 0 .35rem; color: var(--text-dim); font-size: .88rem; font-variant-numeric: tabular-nums; }
.gp-book__cta {
  display: block; text-align: center; padding: .8rem 1.2rem; border-radius: var(--radius-pill); font-weight: 700;
  background: var(--accent-deep); color: var(--accent-ink); text-decoration: none !important;
}
.gp-book__note { margin: .8rem 0 0; color: var(--muted); font-size: .8rem; line-height: 1.55; }
.gp-attribution { color: var(--muted); font-size: .78rem; margin: 2rem 0 0; }
.gp-sticky-bar { display: none; }

@media (min-width: 1024px) {
  .gp-tour-layout { grid-template-columns: minmax(0, 1fr) 320px; align-items: start; }
  aside.gp-book { position: sticky; top: 120px; }
}

@media (max-width: 743px) {
  /* The fixed bar already carries the CTA; the in-flow box keeps price + facts only. */
  aside.gp-book .gp-book__cta { display: none; }
  .gp-sticky-bar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: .7rem .9rem calc(.7rem + env(safe-area-inset-bottom));
    background: var(--surface); border-top: 1px solid var(--hairline-strong);
  }
  .gp-sticky-bar__price { color: var(--text-dim); font-size: .82rem; }
  .gp-sticky-bar__price b { color: var(--snow); font-size: 1.15rem; font-variant-numeric: tabular-nums; margin-right: .25rem; }
  .gp-sticky-bar a {
    flex: none; padding: .6rem 1.1rem; border-radius: var(--radius-pill); font-weight: 700; font-size: .9rem;
    background: var(--accent-deep); color: var(--accent-ink); text-decoration: none;
  }
}

/* ── Directory (S1-C): SSR filter form + one card per published tour ── */
.gp-filter {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .75rem 1rem; align-items: end;
  margin: 0 0 1.25rem; padding: 1rem 1.1rem; border: 1px solid var(--hairline); border-radius: var(--radius); background: var(--surface);
}
.gp-filter label { display: block; margin: 0; }
.gp-filter label > span { display: block; font-size: .78rem; color: var(--muted); margin-bottom: .25rem; }
.gp-filter select {
  width: 100%; padding: .5rem .6rem; border: 1px solid var(--hairline-strong); border-radius: var(--radius-sm);
  background: var(--bg); color: var(--ink); font: inherit; font-size: .9rem;
}
.gp-filter button {
  padding: .55rem 1.1rem; border: 0; border-radius: var(--radius-pill); font: inherit; font-weight: 700; cursor: pointer;
  background: var(--accent-deep); color: var(--accent-ink);
}
.gp-count { color: var(--muted); font-size: .85rem; margin: 0 0 1rem; }
.gp-count span { color: var(--snow); font-weight: 700; font-variant-numeric: tabular-nums; }
.gp-grid--tours { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.gp-tcard {
  display: flex; flex-direction: column; border: 1px solid var(--hairline); border-radius: var(--radius);
  background: var(--surface); overflow: hidden;
}
.gp-tcard:hover { border-color: var(--hairline-strong); }
.gp-grid--tours { align-items: start; }
/* Poster-less card (no route): a short neutral band instead of an empty two-thirds. */
.gp-tcard:not(:has(.gp-tcard__media))::before {
  content: ''; display: block; height: 3.5rem;
  background: linear-gradient(180deg, var(--surface-2), var(--surface));
  border-bottom: 1px solid var(--hairline);
}
.gp-tcard__media { display: block; }
.gp-tcard__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.gp-tcard__body { padding: 1rem 1.1rem 1.1rem; display: grid; gap: .3rem; }
.gp-tcard h2 { font-size: 1.08rem; color: var(--snow); line-height: 1.3; margin: 0; }
.gp-tcard h2 a { color: inherit; }
.gp-tcard__meta { color: var(--muted); font-size: .82rem; margin: 0 0 .6rem; }
.gp-tcard__guide { color: var(--accent-text); font-size: .84rem; margin: 0 0 .6rem; }
.gp-tcard__price { margin: .4rem 0 0; color: var(--muted); font-size: .85rem; }
.gp-tcard__price b { color: var(--snow); font-size: 1.4rem; font-variant-numeric: tabular-nums; line-height: 1.2; margin-right: .2rem; }
.gp-tcard__price span { display: block; font-size: .8rem; }

/* ── Tour page (S2-C): guide-stated details from 0011 — every block is absent when the field is empty ── */
.gp-gallery--photos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 4px; }
.gp-gallery--photos img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; }
.gp-tags, .gp-list, .gp-highlights { margin: .25rem 0 0; padding: 0; list-style: none; }
.gp-tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.gp-tags li { padding: .18rem .6rem; border-radius: var(--radius-pill); font-size: .82rem; border: 1px solid var(--hairline-strong); color: var(--text-dim); }
.gp-list li, .gp-highlights li { padding: .3rem 0; border-top: 1px solid var(--hairline); line-height: 1.55; }
.gp-list li:first-child, .gp-highlights li:first-child { border-top: 0; }
[data-highlights] { margin: .5rem 0 1rem; }
[data-highlights] h3 { font-size: .85rem; color: var(--muted); margin: 0 0 .2rem; text-transform: uppercase; letter-spacing: .04em; }
.gp-itinerary { margin: 0; padding: 0; list-style: none; }
.gp-itinerary li { display: flex; gap: .9rem; padding: .45rem 0; border-top: 1px solid var(--hairline); }
.gp-itinerary li:first-child { border-top: 0; }
.gp-itinerary time { flex: none; min-width: 3.5em; color: var(--accent-text); font-variant-numeric: tabular-nums; font-weight: 700; }
.gp-triad { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 1.25rem; }
.gp-triad h2 { font-size: 1rem; margin: 0 0 .25rem; }
.gp-gear-table { width: 100%; border-collapse: collapse; margin: 1rem 0 0; table-layout: fixed; }
.gp-gear-table th { text-align: left; font-size: .82rem; color: var(--muted); padding: 0 .6rem .3rem 0; border-bottom: 1px solid var(--hairline-strong); }
.gp-gear-table td { vertical-align: top; padding: .6rem .6rem 0 0; font-size: .9rem; }
.gp-gear-table td p { margin: 0; }
.gp-meeting__facts { margin: .3rem 0 0; color: var(--text-dim); }
.gp-meeting__facts time { font-variant-numeric: tabular-nums; }
.gp-cancel__tier { margin: 0 0 .4rem; }
[data-cancel-tiers] { margin: 0 0 .75rem; padding-left: 1.2rem; }
[data-cancel-tiers] li { padding: .15rem 0; }
[data-conditions-cancel] { color: var(--snow); font-weight: 600; margin: 0 0 .75rem; }
[data-cutoff] { color: var(--muted); font-size: .88rem; margin: .5rem 0 0; }
[data-faq] details { border-top: 1px solid var(--hairline); padding: .55rem 0; }
[data-faq] summary { cursor: pointer; font-weight: 600; color: var(--snow); }
[data-faq] details p { margin: .4rem 0 0; color: var(--text-dim); }
.gp-tiers { width: 100%; border-collapse: collapse; margin: .25rem 0 .5rem; font-size: .88rem; font-variant-numeric: tabular-nums; }
.gp-tiers caption { text-align: left; color: var(--muted); font-size: .78rem; padding: 0 0 .3rem; }
.gp-tiers th { text-align: left; font-weight: 500; color: var(--text-dim); padding: .2rem 0; border-top: 1px solid var(--hairline); }
.gp-tiers td { text-align: right; color: var(--snow); padding: .2rem 0; border-top: 1px solid var(--hairline); }
.gp-book__min { margin: 0 0 .35rem; color: var(--text-dim); font-size: .88rem; }
.gp-book__min b { color: var(--snow); }
.gp-addons { margin: .75rem 0 1rem; padding-top: .75rem; border-top: 1px solid var(--hairline); }
.gp-addons h3 { font-size: .85rem; color: var(--muted); margin: 0 0 .3rem; }
.gp-addons ul { margin: 0; padding: 0; list-style: none; font-size: .88rem; }
.gp-addons li { padding: .2rem 0; color: var(--text-dim); }
.gp-addons li b { color: var(--snow); }
.gp-addons .gp-book__note { margin-top: .4rem; }
.gp-tcard__chips { margin: 0; }
.gp-tcard__chips span { display: inline-block; padding: .12rem .5rem; border-radius: var(--radius-pill); font-size: .74rem; border: 1px solid var(--hairline-strong); color: var(--text-dim); }

/* ── Booking box (S3-C): mode, day states, departures, party stepper.
      The four day states are shape + colour + text, never colour alone. ── */
.gp-vh {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}
.gp-book__total { margin: 0 0 .25rem; color: var(--snow); font-size: .95rem; font-variant-numeric: tabular-nums; }
.gp-book__deposit { margin: 0 0 .35rem; color: var(--text-dim); font-size: .85rem; font-variant-numeric: tabular-nums; }
.gp-mode { border: 0; margin: .75rem 0 .6rem; padding: 0; display: flex; gap: .5rem; flex-wrap: wrap; }
.gp-mode legend { padding: 0 0 .3rem; color: var(--muted); font-size: .8rem; }
.gp-mode label {
  flex: 1 1 45%; display: flex; align-items: center; gap: .4rem; cursor: pointer;
  border: 1px solid var(--hairline-strong); border-radius: 10px; padding: .45rem .6rem; font-size: .88rem;
}
.gp-mode label:has(input:checked) { border-color: var(--accent-deep); color: var(--snow); }
.gp-book__controls { margin: 0 0 .75rem; }
.gp-book__date { display: block; margin: 0 0 .5rem; font-size: .85rem; color: var(--muted); }
.gp-book__date input { display: block; width: 100%; margin-top: .25rem; }
.gp-chips { list-style: none; display: flex; gap: .4rem; flex-wrap: wrap; margin: 0 0 .5rem; padding: 0; }
.gp-cal { margin: 0 0 .6rem; font-size: .85rem; }
.gp-cal summary { cursor: pointer; color: var(--muted); }
.gp-cal__month h4 { margin: .6rem 0 .3rem; font-size: .82rem; color: var(--muted); font-weight: 600; }
.gp-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.gp-cal__grid button {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--hairline); border-radius: 10px;
  background: transparent; color: var(--text-dim); font-size: .8rem; cursor: pointer;
}
.gp-cal__grid button[data-state="open"] { color: var(--accent-deep); border-color: var(--accent-deep); }
.gp-cal__grid button[data-state="request"] { color: var(--snow); }
.gp-cal__grid button[disabled] { cursor: not-allowed; opacity: .45; }
.gp-cal__legend { display: flex; gap: .7rem; flex-wrap: wrap; margin: .5rem 0 0; color: var(--muted); font-size: .76rem; }
.gp-departures { margin: 0 0 .6rem; }
.gp-departures h3 { font-size: .85rem; color: var(--muted); margin: 0 0 .3rem; }
.gp-departure {
  display: flex; gap: .5rem; align-items: flex-start; cursor: pointer;
  border-top: 1px solid var(--hairline); padding: .45rem 0; font-size: .85rem; color: var(--text-dim);
}
.gp-departure[data-state="full"], .gp-departure[data-state="off"] { opacity: .55; cursor: not-allowed; }
.gp-departure [data-guaranteed] { color: var(--accent-deep); font-size: .74rem; }
.gp-book__pax label { display: flex; align-items: center; gap: .4rem; font-size: .85rem; color: var(--muted); }
.gp-book__pax label > span { flex: 1 1 auto; }
.gp-book__pax button {
  width: 2rem; height: 2rem; border-radius: var(--radius-pill); border: 1px solid var(--hairline-strong);
  background: transparent; color: var(--snow); font-size: 1rem; cursor: pointer;
}
.gp-book__pax input { width: 3.2rem; text-align: center; font-variant-numeric: tabular-nums; }
.gp-book__pax small { display: block; margin-top: .25rem; color: var(--muted); font-size: .76rem; }

/* ── 客の注文ページ (S4-B): /guides/booking/<id>/ — 一列、装飾なし、script も無し ── */
.gp-order { max-width: 46rem; }
.gp-order__status { margin: 0 0 1.5rem; }
.gp-order .gp-chip {
  display: inline-block; border: 1px solid var(--hairline-strong); border-radius: var(--radius-pill);
  padding: .2rem .7rem; font-size: .82rem; color: var(--snow);
}
.gp-order__banner {
  border: 1px solid var(--hairline-strong); border-left-width: 3px; border-radius: 4px;
  padding: .6rem .8rem; margin: 0 0 1rem; color: var(--snow); font-size: .9rem;
}
.gp-order__facts { margin: 0; }
.gp-order__row {
  display: flex; gap: 1rem; justify-content: space-between;
  border-top: 1px solid var(--hairline); padding: .45rem 0;
}
.gp-order__row dt { color: var(--text-dim); font-size: .85rem; }
.gp-order__row dd { margin: 0; color: var(--snow); font-variant-numeric: tabular-nums; text-align: right; }
.gp-order__note { color: var(--muted); font-size: .8rem; max-width: 60ch; }

/* Public guide pages share SnowWind's spacious field-guide hierarchy. */
.gp-directory, .gp-profile { max-width:1120px; padding-top:3.5rem; }
.gp-directory-head { max-width:820px; margin-bottom:2.5rem; }
.gp-directory-head h1 { font-size:clamp(2.4rem,5vw,4.2rem); font-weight:650; line-height:1.12; letter-spacing:-.04em; margin-bottom:0; max-width:17ch; text-wrap:balance; }
:lang(ja) .gp-directory-head h1, :lang(zh-Hant) .gp-directory-head h1 { max-width:15em; line-height:1.3; letter-spacing:-.035em; }
.gp-process { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2rem; padding:1.8rem 0 2rem; margin-bottom:2.6rem; border-block:1px solid var(--hairline); }
.gp-process > div { min-width:0; }
.gp-process span { color:var(--accent-text); font-size:.78rem; font-variant-numeric:tabular-nums; }
.gp-process h2 { color:var(--snow); font-size:1.05rem; font-weight:600; margin:.6rem 0 .5rem; line-height:1.5; }
.gp-process p { color:var(--text-dim); font-size:.9rem; line-height:1.75; margin:0; max-width:35ch; }
.gp-directory .gp-empty-state { border:0; padding:0; background:transparent; margin-bottom:3rem; }
.gp-directory .gp-status-row { font-size:1.1rem; }
.gp-directory .gp-preview-block { border-top:1px solid var(--hairline); padding-top:2rem; }
.gp-directory .gp-grid--preview { grid-template-columns:repeat(2,minmax(0,1fr)); gap:2.5rem; }
.gp-directory .gp-card { padding:1.6rem; border-radius:var(--radius); }
.gp-directory .gp-card--photo { grid-template-columns:100px minmax(0,1fr); gap:1.5rem; }
.gp-directory .gp-card--photo img { width:100px; height:125px; border-radius:4px; }
.gp-directory .gp-card h2 { font-size:1.35rem; }
.gp-directory .gp-card p { max-width:70ch; }
.gp-profile .gp-hero { padding-block:.5rem 1.8rem; margin-bottom:1.8rem; border-bottom:1px solid var(--hairline); gap:1.6rem; }
.gp-profile .gp-hero h1 { font-size:clamp(2.2rem,4vw,3.4rem); font-weight:600; letter-spacing:-.035em; }
.gp-profile .gp-hero__portrait { border-radius:4px; height:150px; }
.gp-profile-grid { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:2.5rem; align-items:start; }
.gp-profile-main { min-width:0; grid-column:1; grid-row:1; }.gp-profile-aside { min-width:0; grid-column:2; grid-row:1; position:sticky; top:6rem; }
.gp-profile-main > .gp-sec:first-child { margin-top:0; }.gp-profile-main .gp-bio-sec { font-size:1.05rem; line-height:1.9; }
.gp-profile-aside .gp-cred { background:transparent; border-inline:0; border-radius:0; }.gp-profile-aside .gp-cred__quals li { padding:1rem 0; }.gp-profile-aside .gp-cred__facts { grid-template-columns:1fr; }.gp-profile-aside .gp-cred__facts li { padding:1rem 0; border-right:0; border-bottom:1px solid var(--hairline); }
.gp-profile .gp-form { padding:1.5rem; background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); }
.gp-directory :is(a,button,input,select):focus-visible, .gp-profile :is(a,button,input,select):focus-visible { outline:2px solid var(--accent-text); outline-offset:4px; }
@media(max-width:760px) {
 .gp-directory, .gp-profile { padding-top:2rem; }
 .gp-directory-head { margin-bottom:1.7rem; }
 .gp-process { grid-template-columns:1fr; gap:1.3rem; padding-block:1.4rem; }
 .gp-process > div { display:grid; grid-template-columns:25px 1fr; gap:.1rem .8rem; }.gp-process h2 { margin:0; }.gp-process p { grid-column:2; max-width:none; }
 .gp-directory .gp-grid--preview { grid-template-columns:1fr; }
 .gp-directory .gp-card { padding:1.2rem; }.gp-directory .gp-card--photo { grid-template-columns:72px minmax(0,1fr); gap:1rem; }.gp-directory .gp-card--photo img { width:72px; height:90px; }
 .gp-profile-grid { display:flex; flex-direction:column; gap:1rem; }.gp-profile-aside { position:static; width:100%; }.gp-profile-main { width:100%; }.gp-profile-aside .gp-cred { margin-bottom:.5rem; }
 .gp-profile .gp-form { padding:1.1rem; }
}

/* Partnership portfolio: the guide's own work, with no third-party embeds. */
.gp-social-links { display:flex; flex-wrap:wrap; gap:1.2rem; padding:0; list-style:none; }
.gp-social-links a { display:inline-block; padding:.7rem 0; text-decoration:underline; text-underline-offset:4px; font-weight:600; }
.gp-portfolio-photos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.gp-portfolio-photos figure { margin:0; }.gp-portfolio-photos img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:4px; }.gp-portfolio-photos figcaption { color:var(--text-dim); font-size:.85rem; }
.gp-preparation { border-block-start:1px solid var(--hairline); padding:1.1rem 0; }.gp-preparation summary { cursor:pointer; font-weight:600; min-height:32px; }.gp-preparation dt { font-weight:600; margin-top:1rem; }.gp-preparation dd { margin:.4rem 0 1rem; color:var(--text-dim); }
@media(max-width:600px) { .gp-portfolio-photos { grid-template-columns:1fr; } }
.gp-meeting-progress { padding:1.5rem; background:var(--surface-1); border:1px solid var(--hairline); border-radius:var(--radius); margin:2rem 0; }
.gp-meeting-progress h2 { font-size:clamp(1.35rem,3vw,2rem); }.gp-meeting-steps { display:flex; gap:1.1rem; padding:0; list-style:none; color:var(--text-dim); flex-wrap:wrap; }.gp-meeting-steps li { border-bottom:2px solid var(--hairline);padding:.6rem 0; }.gp-meeting-steps [aria-current] { color:var(--accent-text);border-color:var(--accent-text);font-weight:700; }
[data-meeting-warning]:not(:empty),[data-meeting-error]:not(:empty) { border-left:3px solid var(--accent-text);padding-left:.8rem;font-weight:600; }
[data-meeting-updated],[data-meeting-changed],[data-meeting-fetched] { color:var(--text-dim);font-size:.85rem; }
.gp-meeting-progress .gp-btn { min-height:44px; margin-top:1rem; padding:.7rem 1.1rem; border:1px solid var(--hairline-strong); border-radius:24px; background:var(--surface); color:var(--accent-text); font:inherit; font-weight:600; cursor:pointer; }
.gp-meeting-progress .gp-btn:disabled { opacity:.55;cursor:wait; }.gp-meeting-progress summary { cursor:pointer;color:var(--text-dim);font-size:.85rem; }.gp-meeting-progress :is(button,summary):focus-visible {outline:2px solid var(--accent-text);outline-offset:3px;}
@media(max-width:600px) { .gp-meeting-steps {display:grid;gap:.35rem;} .gp-meeting-steps li {border-bottom:0;border-left:2px solid var(--hairline);padding:.35rem .85rem;} .gp-meeting-steps [aria-current] {border-left-color:var(--accent-text);} }

/* R4 discovery: public facts, booking actions and deferred SnowWind map. */
.gp-filter input{box-sizing:border-box;min-height:46px;max-width:100%;width:100%;font:inherit;font-size:16px;background:var(--bg);color:var(--text);border:1px solid var(--hairline-strong);border-radius:4px;padding:.65rem}.gp-tcard__placeholder{height:180px;background:linear-gradient(135deg,var(--surface-2),var(--bg));display:grid;place-items:center;color:var(--muted);font-size:.8rem}.gp-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;flex-shrink:0}.gp-avatar--empty{display:inline-grid;place-items:center;background:var(--surface-2);color:var(--text)}.gp-tcard__guide{display:flex;gap:.6rem;align-items:center}.gp-route-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--hairline-strong);margin:1rem 0}.gp-route-metrics>div{padding:.65rem;border-bottom:1px solid var(--hairline);min-width:0}.gp-route-metrics dt{font-size:.7rem;color:var(--muted)}.gp-route-metrics dd{margin:.3rem 0 0;font-size:.9rem;font-weight:600}.gp-fact-source{font-size:.68rem!important;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}.gp-next{font-size:.8rem;line-height:1.6}.gp-discovery-cta{display:block;min-height:46px;padding:.8rem;text-align:center;background:var(--accent-deep);color:var(--accent-ink);border-radius:4px;font-weight:700;text-decoration:none}.gp-trip-map iframe{width:100%;height:490px;border:1px solid var(--hairline);margin-top:1rem}.gp-trip-map button{min-height:48px;padding:.8rem 1rem}.gp-tcard__body{display:flex;flex-direction:column}.gp-discovery-cta{margin-top:auto}.gp-tour-main{min-width:0}.gp-trip-map{overflow-wrap:anywhere}@media(min-width:760px){.gp-trip-map .gp-route-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* Person first, price last (guides-product-v1 §5): the guide-profile link now sits at the top of
   the card, right under the guide strip, so it needs its own real tap target — a secondary pill
   alongside .gp-discovery-cta's primary one, not a bare inline text link. */
.gp-guide-profile-link{display:inline-block;min-height:44px;padding:.55rem 1rem;margin:-.15rem 0 .6rem;border:1px solid var(--hairline-strong);border-radius:var(--radius-pill);color:var(--accent-text);font-weight:600;text-decoration:none;line-height:1.6}.gp-guide-profile-link:hover{border-color:var(--accent-text)}
.gp-gear-check{display:flex;align-items:center;gap:.7rem;min-height:48px;padding:.5rem 0;border-bottom:1px solid var(--hairline);overflow-wrap:anywhere}.gp-gear-check input{width:22px;height:22px;flex-shrink:0}.gp-gear-check span{min-width:0}[data-gear-form] fieldset{border:0;padding:0;min-width:0}[data-gear-form] button{margin-top:1rem;min-height:48px}[data-gear-error]{color:var(--danger)}[data-trip-guide] .gp-avatar{width:60px;height:60px}
[data-gear-form] button{background:var(--accent-deep);color:var(--accent-ink);border:0;border-radius:10px;padding:.8rem 1rem;font:inherit;font-weight:700;cursor:pointer}[data-gear-form] button:disabled{opacity:.55;cursor:default}
.gp-sample-trips{margin-top:1.5rem}.gp-sample-trips .gp-preview-banner__tag{font-size:.72rem}

/* Destination is step 1, visually: a full-width image-tile grid before anything is chosen (the
   one choice that actually matters, no longer a 33-option <select> styled like "Sort" — guides-
   product-v1 §2), collapsing to a one-line "current destination · change" summary once picked so
   the guide/tour results below land on the first screen instead of a second tile grid. */
.gp-destination { grid-column: 1 / -1; min-width: 0; border-bottom: 1px solid var(--hairline); padding-bottom: 1rem; }
.gp-destination h2 { font-size: 1.3rem; margin: 0 0 1rem; }
.gp-destination p { color: var(--muted); font-size: .85rem; margin: .75rem 0 0; }
.gp-destination--picker { padding-bottom: 1.25rem; }
.gp-destination--picker > .gp-dest-grid { margin-bottom: 1rem; }
.gp-destination--picker > label { display: block; max-width: 420px; }
.gp-destination--picker > button { margin-top: .75rem; padding: .55rem 1.1rem; border: 0; border-radius: var(--radius-pill); font: inherit; font-weight: 700; cursor: pointer; background: var(--accent-deep); color: var(--accent-ink); min-height: 46px; }
.gp-dest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: .6rem; }
.gp-dest-tile { position: relative; display: grid; align-content: end; min-height: 88px; border-radius: var(--radius-sm); overflow: hidden; text-decoration: none; background: var(--surface-2); border: 1px solid var(--hairline); }
.gp-dest-tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gp-dest-tile::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, #142235d9); }
.gp-dest-tile--noimg::after { background: none; }
.gp-dest-tile--noimg { background: var(--surface-2); border-color: var(--hairline-strong); }
.gp-dest-tile__label { position: relative; z-index: 1; padding: .55rem .6rem; color: #fff; font-weight: 600; line-height: 1.3; }
.gp-dest-tile--noimg .gp-dest-tile__label { color: var(--text); padding: .8rem .6rem; }
.gp-dest-tile:hover, .gp-dest-tile:focus-visible { border-color: var(--accent-text); outline: none; }
.gp-destination--chosen { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-bottom: .85rem; }
.gp-destination__current { margin: 0; color: var(--text-dim); }
.gp-destination__current strong { color: var(--snow); }
.gp-destination__current a { color: var(--accent-text); }
.gp-destination--chosen label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.gp-filter select, .gp-filter button { min-height: 46px; box-sizing: border-box; }
.gp-filter select { color: var(--text); font-size: 16px; }
.gp-filter > label { min-width: 0; }
/* Step 2, collapsed: everything that isn't the destination pick. */
.gp-filter-more { grid-column: 1 / -1; border-top: 1px solid var(--hairline); margin-top: .25rem; padding-top: .9rem; }
.gp-filter-more > summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; color: var(--accent-text); font-weight: 700; list-style: none; }
.gp-filter-more > summary::-webkit-details-marker { display: none; }
.gp-filter-more[open] > summary { margin-bottom: .85rem; }
.gp-filter-more__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .75rem 1rem; align-items: end; }
.gp-date-note { grid-column: 1 / -1; color: var(--muted); margin: -.45rem 0 0; }
@media (max-width: 540px) { .gp-filter { grid-template-columns: minmax(0, 1fr); } .gp-dest-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Real guide cards among the results (guides-product-v1 §1) — a grid, not the single-column
   sample layout .gp-grid--preview uses for one or two fictional profiles. */
.gp-grid--guides { margin-bottom: 1.75rem; }
.gp-enquiry-note { color: var(--muted); margin: -.5rem 0 1.25rem; }

/* Product profile: photographs and qualifications precede planning and long-form copy. */
.gp-profile .gp-product-showcase { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr); gap:2rem; align-items:start; margin-bottom:2.5rem; }
.gp-profile .gp-product-gallery { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; min-width:0; }
.gp-product-gallery figure { margin:0; min-width:0; }
.gp-product-gallery figure:first-child { grid-column:1 / -1; }
.gp-product-gallery img { display:block; width:100%; height:180px; object-fit:cover; border-radius:6px; }
.gp-product-gallery figure:first-child img { height:360px; object-position:center 30%; }
.gp-product-gallery figcaption { font-size:.75rem; color:var(--text-dim); line-height:1.5; padding:.45rem 0; }
.gp-product-credentials { min-width:0; padding:1.3rem; border:1px solid var(--hairline); background:var(--surface); border-radius:6px; }
.gp-profile .gp-product-credentials h2 { margin:0 0 1rem; font-size:1.4rem; }
.gp-product-credentials .gp-cred { margin:0; border:0; padding:0; }
.gp-product-credentials .gp-cred__quals li { padding:.8rem 0; }
.gp-product-credentials .gp-cred__facts { grid-template-columns:1fr; }
.gp-profile .gp-product-plan { padding:1.75rem; border:1px solid var(--hairline-strong); background:var(--surface); border-radius:8px; margin-bottom:3rem; scroll-margin-top:6rem; }
.gp-product-plan__heading { display:flex; justify-content:space-between; align-items:start; gap:1rem; flex-wrap:wrap; }
.gp-profile .gp-product-plan h2 { font-size:1.7rem; margin:.3rem 0; }
.gp-product-plan > p,.gp-product-note { font-size:.88rem; color:var(--text-dim); }
.gp-product-form > label,.gp-product-form fieldset { display:block; margin:1.25rem 0; }
.gp-product-form label > span { display:block; font-size:.9rem; margin-bottom:.5rem; }
.gp-product-form :is(select,input[type=number]) { width:100%; box-sizing:border-box; min-height:48px; padding:.7rem; border:1px solid var(--hairline-strong); border-radius:4px; color:var(--text); background:var(--bg); font:inherit; font-size:16px; }
.gp-product-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.2rem; }
.gp-product-options label { min-width:0; }
.gp-product-dates { padding:0; border:0; min-width:0; }
.gp-product-dates legend { margin-bottom:.75rem; }
.gp-product-dates > div { display:flex; flex-wrap:wrap; gap:.65rem; }
.gp-product-dates label { position:relative; cursor:pointer; }
.gp-product-dates input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; }
.gp-product-dates label > span { display:block; padding:.8rem; border:1px solid var(--hairline-strong); border-radius:4px; margin:0; font-variant-numeric:tabular-nums; }
.gp-product-dates input:checked + span { background:var(--accent-deep); border-color:var(--accent-text); color:var(--accent-ink); }
.gp-product-dates input:focus-visible + span { outline:2px solid var(--accent-text); outline-offset:3px; }
.gp-product-price { border-top:1px solid var(--hairline); padding-top:1.25rem; }
.gp-product-price strong { font-size:1.8rem; margin-left:.6rem; }
.gp-product-price small { display:block; color:var(--text-dim); margin-top:.4rem; }
.gp-product-form button { min-height:48px; padding:.75rem 1.3rem; background:var(--accent-deep); color:var(--accent-ink); border:0; border-radius:4px; font:inherit; font-weight:700; cursor:pointer; }
.gp-product-summary { border-top:1px solid var(--hairline); margin-top:1.5rem; padding-top:1rem; }
.gp-product-summary dl { display:grid; grid-template-columns:minmax(100px,1fr) 2fr; gap:.6rem 1rem; }
.gp-product-summary dd { margin:0; overflow-wrap:anywhere; }
.gp-product-summary dt { color:var(--text-dim); }
.gp-product-summary button:disabled { opacity:.5; cursor:not-allowed; }
.gp-product-summary > span { display:block; margin-top:.8rem; font-size:.85rem; color:var(--text-dim); }
@media(max-width:760px) {
 .gp-profile .gp-product-showcase { grid-template-columns:minmax(0,1fr); gap:1.25rem; }
 .gp-product-gallery figure:first-child img { height:300px; }
 .gp-product-gallery img { height:130px; }
 .gp-profile .gp-product-plan { padding:1rem; }
 .gp-product-options { grid-template-columns:minmax(0,1fr); }
 .gp-product-plan__heading { display:block; }
 .gp-profile .gp-hero h1 { font-size:clamp(1.7rem,6vw,2.3rem); }
}
.gp-profile .gp-product-disclosure { padding:.7rem 1rem; margin-bottom:1rem; display:flex; gap:1rem; align-items:baseline; }
.gp-product-disclosure p { margin:.6rem 0 0; font-size:.85rem; }
.gp-product-disclosure summary { cursor:pointer; font-size:.9rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-profile .gp-hero { padding:.5rem 0 1.25rem; margin-bottom:1.5rem; }
[data-design="light-alpine-v3"]:not([data-experience]) .gp-profile .gp-hero h1 { font-size:clamp(1.8rem,3vw,2.5rem) !important; }
@media(max-width:760px) {
 .gp-profile .gp-product-disclosure { display:block; }
 .gp-product-disclosure details { margin-top:.4rem; }
 .gp-profile .gp-product-gallery { grid-template-columns:1fr 1fr; gap:.6rem; }
 .gp-product-gallery figure:first-child { grid-column:1; grid-row:1 / span 2; }
 .gp-product-gallery figure:first-child img { height:240px; }
 .gp-product-gallery img { height:90px; }
 .gp-product-gallery figcaption { font-size:.7rem; }
 [data-design="light-alpine-v3"]:not([data-experience]) .gp-profile .gp-hero h1 { font-size:1.7rem !important; }
 .gp-product-credentials { padding:1rem; }
}

/* guides-as-people (W1): guide-first section above the destination/tour flow on /guides/. */
.gp-guides-intro { margin-bottom: 2rem; }
.gp-grid--guide-intro { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.gp-intro-card { display: grid; grid-template-columns: 56px 1fr; gap: .9rem; align-items: start; padding: 1rem; border: 1px solid var(--hairline); border-radius: var(--radius); text-decoration: none; }
.gp-intro-card:hover { border-color: var(--hairline-strong); }
.gp-avatar--lg { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; font-size: 1.4rem; font-weight: 700; }
.gp-intro-card__body h3 { margin: 0 0 .2rem; font-size: 1.02rem; color: var(--snow); }
.gp-intro-card .gp-meta, .gp-intro-card .gp-qual, .gp-intro-card .gp-bio { margin: 0 0 .3rem; font-size: .85rem; }
.gp-intro-card .gp-bio { color: var(--text-dim); }
.gp-intro-card__cta { display: block; font-size: .82rem; color: var(--accent-text); font-weight: 700; }

/* Placeholder-only events/clinics slot (W1); the sibling event sprint styles its real content. */
[data-guide-events] { margin-bottom: 1.5rem; }

/* ── W2: guide events (講習/拼班/聚會/活動) ── */
.gp-filter-form { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; margin: 0 0 1.75rem; }
.gp-filter-form label { display: block; }
.gp-filter-form label > span { display: block; font-size: .82rem; color: var(--text-dim); margin-bottom: .3rem; }
.gp-filter-form select {
  padding: .5rem .7rem; border-radius: 10px; border: 1px solid var(--hairline-strong);
  background: var(--surface); color: var(--snow); font: inherit;
}
.gp-filter-form button {
  padding: .55rem 1.1rem; border-radius: 24px; border: 1px solid var(--hairline-strong);
  background: var(--surface); color: var(--accent-text); font: inherit; font-weight: 600; cursor: pointer;
}
.gp-event-list { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.gp-event-card {
  border: 1px solid var(--hairline); border-radius: 14px; padding: 1.1rem 1.25rem;
  background: var(--surface-2);
}
.gp-event-card h3 { margin: .2rem 0 .5rem; font-size: 1.05rem; }
.gp-event-card h3 a { color: var(--snow); }
.gp-event-card p { margin: 0 0 .5rem; font-size: .9rem; color: var(--text-dim); }
.gp-event-card__kind { font-size: .75rem; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); margin: 0 0 .3rem; }
.gp-event-card__meta { color: var(--snow); }
.gp-event-card__foot { font-weight: 600; color: var(--snow); }
.gp-event-mini-list { list-style: none; margin: 0 0 1rem; padding: 0; }
.gp-event-mini-list li { padding: .4rem 0; border-bottom: 1px solid var(--hairline); display: flex; justify-content: space-between; gap: 1rem; }
.gp-event-mini-list__date { color: var(--muted); font-size: .85rem; white-space: nowrap; }
.gp-event-btn {
  display: inline-block; padding: .7rem 1.2rem; border-radius: 24px; border: 1px solid var(--hairline-strong);
  background: var(--surface); color: var(--accent-text); font-weight: 600;
}
.gp-legal { font-size: .82rem; color: var(--muted); margin-top: 2rem; border-top: 1px solid var(--hairline); padding-top: 1rem; }
@media (max-width: 760px) {
  .gp-event-list { grid-template-columns: 1fr; }
}

/* Activity questions remain readable/tappable without JavaScript. */
.gp-form fieldset { min-width: 0; margin: .5rem 0; padding: .75rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); }
.gp-form legend { padding: 0 .3rem; color: var(--snow); font-weight: 600; }
.gp-form .gp-check { display: flex; min-height: 44px; padding-block: .4rem; margin-bottom: .25rem; }
.gp-form .gp-check > span { flex: 1; margin: 0; }
.gp-form fieldset:disabled { opacity: .65; }
.gp-event [data-booking-state] { overflow-wrap: anywhere; }

/* Activity reading and registration: one clear column on phones; side by side on desktop. */
.gp-event-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem}
.gp-event-details{min-width:0;overflow-wrap:anywhere}.gp-booking-panel{border:1px solid var(--hairline-strong);border-radius:20px;padding:clamp(18px,3vw,32px);margin-top:0;align-self:start}
.gp-booking-panel h2{margin-top:0}.gp-booking-panel fieldset{border:0;margin:0 0 18px;padding:0;min-width:0}
.gp-booking-panel legend{font-weight:700;margin:0 0 10px}.gp-booking-panel .gp-check{padding:10px 0;align-items:flex-start}
.gp-booking-summary{border-left:3px solid var(--accent);padding-left:20px;margin:24px 0}.gp-app-link{margin:14px 0}
.gp-live{font-size:.88rem;min-height:1.5em;opacity:.8;margin:20px 0}.gp-event .gp-row{grid-template-columns:1fr}
@media(min-width:900px){.gp-event:has(.gp-event-layout){max-width:1120px}.gp-event-layout{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:40px}}

/* Owner-provided profile photography: uncropped, independent of tour galleries. */
.gp-profile[data-editorial-guide] .gp-hero:has(.gp-hero__portrait) { grid-template-columns:112px minmax(0,1fr); }
.gp-profile[data-editorial-guide] .gp-hero__portrait { width:112px; height:112px; max-width:112px; }
.gp-profile[data-editorial-guide] .gp-editorial-gallery { min-width:0; }
.gp-editorial-column { min-width:0; }
.gp-editorial-column > .gp-product-gallery { margin-top:2rem; }
.gp-editorial-gallery h2 { margin:0 0 .65rem; font-size:1.4rem; }
.gp-editorial-gallery__note { margin:0 0 1.25rem; color:var(--text-dim); font-size:.9rem; line-height:1.7; }
.gp-editorial-gallery__photos { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,1fr); gap:1rem; align-items:start; }
.gp-editorial-gallery figure { min-width:0; margin:0; }
.gp-editorial-gallery a { display:block; }
.gp-editorial-gallery img { display:block; width:100%; height:auto; object-fit:contain; }
.gp-editorial-gallery figcaption { padding-top:.6rem; font-size:.8rem; line-height:1.6; color:var(--text-dim); overflow-wrap:anywhere; }
@media(max-width:600px) {
  .gp-profile[data-editorial-guide] .gp-hero:has(.gp-hero__portrait) { grid-template-columns:112px minmax(0,1fr); gap:16px; align-items:center; }
  .gp-profile[data-editorial-guide] .gp-hero h1 { font-size:clamp(1.4rem,5.8vw,1.8rem); overflow-wrap:anywhere; }
  .gp-editorial-gallery__photos { grid-template-columns:minmax(0,1fr); gap:1.75rem; }
}
