/* ============================================================
   麺処 炎路（架空・制作デモ）
   tone-53「ラーメン店の迫力直球」
   base #060604 / text #EAE6E3 / accent #AC0A09 / Noto Sans JP
   直線的・密度5/5・黒バック高コントラスト
   ※ scroll-behavior: smooth は使用禁止（検品ハーネス対策）
   ============================================================ */

:root {
  --base: #060604;
  --base-2: #0D0B09;
  --panel: #12100D;
  --text: #EAE6E3;
  --muted: #9A9088;
  --accent: #AC0A09;
  --accent-hi: #E23B1F;
  --line: rgba(234, 230, 227, 0.14);
  --font: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  background: var(--base);
  color: var(--text);
  font-family: var(--font);
  font-weight: 400;
  line-height: 1.9;
  overflow-x: clip;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }

.sr-only {
  position: absolute; width: 1px; height: 1px;
  clip: rect(0, 0, 0, 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}
.nw { display: inline-block; }

/* ── 小タグ（左上・ヘッダー相当） ──
   position:fixed だと viewport上端を通過する全h2に恒久的に重なるため absolute に変更
   （検品指摘: desktop 135×23px / mobile 207×23px の重なり実測） */
.site-tag {
  position: absolute; top: 14px; left: 14px; z-index: 60;
  display: flex; align-items: center; gap: 8px;
}
.tag-pill {
  background: var(--accent); color: var(--text);
  font-size: 11px; font-weight: 700; letter-spacing: 0.14em;
  padding: 5px 10px;
}
.tag-sub { font-size: 10px; letter-spacing: 0.12em; color: var(--muted); }

/* ── 共通セクション ── */
.section {
  padding: clamp(4rem, 9vh, 7rem) clamp(1.1rem, 5vw, 3.5rem);
  border-top: 1px solid var(--line);
  position: relative;
}
.section-head { max-width: 1100px; margin: 0 auto 2.6rem; }
.eyebrow {
  color: var(--accent-hi); font-size: 0.72rem; font-weight: 700;
  letter-spacing: 0.3em; margin-bottom: 0.7rem;
}
.section-title {
  font-size: clamp(1.9rem, 5.4vw, 3.4rem);
  font-weight: 900; letter-spacing: 0.04em; line-height: 1.25;
  text-wrap: balance;
}
.section-title::after {
  content: ""; display: block; width: 64px; height: 5px;
  background: var(--accent); margin-top: 0.7rem;
  transform: skewX(-14deg);
}
.section-lead { max-width: 640px; margin-top: 1.1rem; color: var(--muted); }
h3 { line-height: 1.4; }
p { line-height: 1.95; }

/* ── CTAボタン（鮮烈な赤・横長・直線的） ── */
.btn-cta {
  display: inline-block;
  background: var(--accent); color: var(--text);
  font-weight: 900; font-size: 1.05rem; letter-spacing: 0.18em;
  text-decoration: none; text-align: center;
  padding: 1.05rem 3.4rem;
  border: 1px solid rgba(234, 230, 227, 0.25);
  position: relative;
  transition: background 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}
.btn-cta:hover, .btn-cta:focus-visible {
  background: var(--accent-hi);
  transform: translateY(-2px);
  box-shadow: 0 10px 34px rgba(172, 10, 9, 0.45);
}
.btn-cta-big {
  font-size: clamp(1.15rem, 3vw, 1.5rem);
  padding: 1.3rem clamp(3rem, 9vw, 6.5rem);
}

/* ══ FV ══ */
.hero {
  position: relative;
  min-height: 100svh;
  display: flex; align-items: center;
  padding: clamp(4.6rem, 8vh, 6rem) clamp(1.1rem, 5vw, 3.5rem) clamp(2.5rem, 6vh, 4rem);
  overflow: clip;
}
.hero-bg {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(115deg, rgba(6, 6, 4, 0) 55%, rgba(172, 10, 9, 0.14) 55.2%, rgba(172, 10, 9, 0.14) 62%, rgba(6, 6, 4, 0) 62.3%),
    radial-gradient(900px 520px at 82% 30%, rgba(172, 10, 9, 0.18), transparent 70%),
    var(--base);
}
.hero-inner {
  position: relative; z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  grid-template-areas: "head visual" "more visual";
  column-gap: clamp(1.6rem, 4vw, 3.5rem);
  align-content: center;
  max-width: 1200px; margin: 0 auto; width: 100%;
}
.hero-head { grid-area: head; align-self: end; }
.hero-more { grid-area: more; align-self: start; }
.hero-visual { grid-area: visual; align-self: center; }
.hero-eyebrow {
  color: var(--accent-hi); font-weight: 700; font-size: 0.82rem;
  letter-spacing: 0.28em; margin-bottom: 1rem;
}
.hero-title {
  font-size: clamp(2.1rem, 5.1vw, 4.1rem);
  font-weight: 900; line-height: 1.34; letter-spacing: 0.02em;
}
.ht-line { display: inline-block; white-space: nowrap; }
.ht-red { color: var(--accent-hi); }
.hero-lead { margin-top: 1.4rem; max-width: 30em; color: rgba(234, 230, 227, 0.86); }
.hero-cta-row { margin-top: 1.9rem; }
.hero-info { margin-top: 1.3rem; font-size: 0.85rem; color: var(--muted); letter-spacing: 0.04em; }

.hero-visual { position: relative; min-height: 380px; }
.hero-photo {
  position: relative;
  border: 1px solid var(--line);
  transform: skewX(0deg);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
}
.hero-photo img { width: 100%; height: clamp(300px, 44vw, 520px); object-fit: cover; }
.hero-slash {
  position: absolute; top: -14px; left: -14px; width: 92px; height: 10px;
  background: var(--accent); transform: skewX(-14deg);
}

/* ── 魂のコピー回転（text-ring）: 写真上端の湯気の帯を回る円筒 ── */
.ring-clip {
  position: absolute; left: 50%; top: -36px;
  transform: translateX(-50%);
  width: 100%; height: 220px;
  overflow: hidden; pointer-events: none;
  background: linear-gradient(180deg, rgba(6, 6, 4, 0.15) 0%, rgba(6, 6, 4, 0.78) 50%, rgba(6, 6, 4, 0.15) 100%);
  /* 円筒の端（前後が潰れて重なる領域）は完全にフェードアウトさせて判読性を守る */
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 24%, #000 76%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0%, #000 24%, #000 76%, transparent 100%);
}
.ring-scale { width: 100%; height: 100%; transform: scale(0.72); }
.ring-stage {
  width: 100%; height: 100%; position: relative;
  perspective: 1100px;
}
.ring-anchor {
  position: absolute; top: 50%; left: 50%;
  width: 0; height: 0;
  transform-style: preserve-3d;
}
.ring-layer { position: absolute; top: 0; left: 0; width: 0; height: 0; transform-style: preserve-3d; }
.ring-item {
  position: absolute; top: 0; left: 0;
  backface-visibility: hidden;
  white-space: nowrap;
  will-change: transform;
}
.ring-word {
  pointer-events: auto;
  display: inline-block;
  font-weight: 900; font-size: 1.02rem; letter-spacing: 0.14em;
  color: rgba(234, 230, 227, 0.92);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.9);
  text-decoration: none;
  padding: 0.2em 0.55em;
  border: 1px solid transparent;
  transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease;
}
.ring-word.is-front {
  background: var(--accent); color: var(--text);
  transform: scale(1.12);
  box-shadow: 0 6px 24px rgba(172, 10, 9, 0.5);
}
.ring-char {
  font-size: 0.78rem; font-weight: 700; letter-spacing: 0;
  color: rgba(226, 59, 31, 0.75);
}
.ring-glyph { font-size: 0.7rem; color: rgba(234, 230, 227, 0.4); }
/* 3層を縦に分離して層どうしの文字衝突をなくす（検品指摘: 帯内で多重衝突→判読不能）
   .ring-layer の transform は毎フレームJSが書き換えるため、分離は top で行う */
.ring-layer[data-ring="1"] { top: -52px; }
.ring-layer[data-ring="2"] { top: 2px; }
.ring-layer[data-ring="3"] { top: 48px; }

/* ══ こだわり ══ */
.kodawari-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.6rem;
  max-width: 1100px; margin: 0 auto;
}
.kodawari-card {
  background: var(--panel);
  border: 1px solid var(--line);
  border-top: 4px solid var(--accent);
  padding-bottom: 1.5rem;
}
.kc-photo img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.kc-title {
  font-size: 1.3rem; font-weight: 900; letter-spacing: 0.05em;
  padding: 1.2rem 1.3rem 0.4rem;
}
.kc-sub {
  display: block; font-size: 0.86rem; color: var(--accent-hi);
  font-weight: 700; letter-spacing: 0.08em; margin-top: 0.3rem;
}
.kodawari-card p {
  font-size: 0.92rem; color: rgba(234, 230, 227, 0.82);
  padding: 0.55rem 1.3rem 0;
}

/* 食い方の流儀 */
.ryugi { max-width: 1100px; margin: 1.6rem auto 0; }
.ryugi-inner {
  background: var(--panel);
  border: 1px solid var(--line);
  border-left: 6px solid var(--accent);
  padding: 1.6rem 1.8rem;
}
.ryugi-title {
  font-size: 1.15rem; font-weight: 900; letter-spacing: 0.14em;
  color: var(--accent-hi); margin-bottom: 0.6rem;
}
.ryugi-inner p { font-size: 0.92rem; color: rgba(234, 230, 227, 0.82); }
.ryugi-inner p + p { margin-top: 0.7rem; }

/* ══ お品書き ══ */
.menu { background: var(--base-2); }

/* 券売機フラップボード（flap-board） */
.board-wrap { max-width: 1100px; margin: 0 auto 2.4rem; overflow-x: auto; }
.board {
  min-width: 620px;
  border: 1px solid rgba(172, 10, 9, 0.55);
  background: #0A0908;
  padding: 1.1rem 1.2rem 1rem;
  box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.7);
}
.board-row {
  display: grid;
  grid-template-columns: minmax(15rem, 1.4fr) 9rem 6rem;
  gap: 1rem; align-items: center;
  padding: 0.55rem 0.2rem;
  border-bottom: 1px dashed rgba(234, 230, 227, 0.12);
}
.board-head {
  color: var(--muted); font-size: 0.72rem; font-weight: 700;
  letter-spacing: 0.28em; text-transform: uppercase;
  border-bottom: 1px solid rgba(172, 10, 9, 0.5);
}
.js-flap-row { cursor: pointer; }
.js-flap-row:hover, .js-flap-row:focus-visible { background: rgba(172, 10, 9, 0.08); }
.board-foot {
  display: flex; align-items: center; gap: 1rem;
  padding-top: 0.8rem;
}
.bf-label {
  color: var(--accent-hi); font-size: 0.72rem; font-weight: 700;
  letter-spacing: 0.28em;
}

/* split-flap ユニット（4層構造） */
.flap-word { display: inline-flex; gap: 2px; }
.flap-unit {
  position: relative;
  width: 1.35em; height: 1.7em;
  perspective: 320px;
  font-weight: 800; font-size: 1.02rem;
  font-feature-settings: "tnum";
  color: #F1B33B;
  background: #14110D;
  border: 1px solid rgba(234, 230, 227, 0.08);
}
.flap-word.is-tag .flap-unit { color: #EAE6E3; }
.flap-half, .flap-leaf {
  position: absolute; left: 0; width: 100%; height: 50%;
  overflow: hidden; background: #14110D;
}
.flap-half.top, .flap-leaf.top { top: 0; border-bottom: 1px solid rgba(0, 0, 0, 0.55); }
.flap-half.bottom, .flap-leaf.bottom { bottom: 0; }
.flap-glyph {
  position: absolute; left: 0; width: 100%; height: 200%;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
}
.flap-half.top .flap-glyph, .flap-leaf.top .flap-glyph { top: 0; }
.flap-half.bottom .flap-glyph, .flap-leaf.bottom .flap-glyph { top: -100%; }
.flap-leaf { z-index: 2; will-change: transform; }
.flap-leaf.top { transform-origin: bottom center; }
.flap-leaf.bottom { transform-origin: top center; transform: rotateX(90deg); }
/* 残像（::after が transform:inherit を45ms遅れて追う） */
.flap-leaf::after {
  content: "";
  position: absolute; inset: 0;
  background: rgba(241, 179, 59, 0.28);
  opacity: 0.28;
  filter: blur(1.4px);
  transform: inherit;
  transition: transform var(--flap-dur, 70ms) linear 45ms;
  pointer-events: none;
}

/* メニューカード（隙間なく密に） */
.menu-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  max-width: 1100px; margin: 0 auto;
}
.menu-card {
  background: var(--panel); border: 1px solid var(--line);
  display: flex; flex-direction: column;
}
.menu-card figure img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.mc-body { padding: 1rem 1.1rem 1.2rem; }
.menu-card h3 {
  font-size: 1.05rem; font-weight: 900; letter-spacing: 0.04em;
  display: flex; justify-content: space-between; align-items: baseline; gap: 0.6rem;
}
.mc-price { color: var(--accent-hi); font-size: 1rem; white-space: nowrap; }
.menu-card p { font-size: 0.85rem; color: rgba(234, 230, 227, 0.78); margin-top: 0.5rem; }
.mid-cta { text-align: center; margin-top: 2.6rem; }

/* ══ 店主の一言 ══ */
.master-grid {
  display: grid; grid-template-columns: minmax(0, 380px) minmax(0, 1fr);
  gap: clamp(1.6rem, 4vw, 3rem);
  max-width: 1100px; margin: 0 auto;
  align-items: start;
}
.master-photo { border: 1px solid var(--line); }
.master-photo img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.master-photo figcaption {
  font-size: 0.72rem; color: var(--muted);
  padding: 0.5rem 0.7rem; letter-spacing: 0.06em;
}
.master-quote {
  font-size: clamp(1.25rem, 3vw, 1.7rem);
  font-weight: 900; line-height: 1.6; letter-spacing: 0.03em;
  border-left: 5px solid var(--accent);
  padding-left: 1.1rem;
  margin-bottom: 1.4rem;
  text-wrap: balance;
}
.master-text p:not(.master-quote) {
  color: rgba(234, 230, 227, 0.84);
  margin-top: 0.9rem;
}

/* ══ FAQ ══ */
.faq { background: var(--base-2); }
.faq-list {
  max-width: 900px; margin: 0 auto;
  display: grid; gap: 1rem;
}
.faq-item {
  background: var(--panel); border: 1px solid var(--line);
  padding: 1.2rem 1.4rem;
}
.faq-item dt {
  font-weight: 900; letter-spacing: 0.04em;
  color: var(--text);
}
.faq-item dt::before { content: "問— "; color: var(--accent-hi); }
.faq-item dd { margin-top: 0.4rem; font-size: 0.92rem; color: rgba(234, 230, 227, 0.8); }

/* ══ 店舗情報 ══ */
.access-grid {
  display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(1.6rem, 4vw, 3rem);
  max-width: 1100px; margin: 0 auto;
  align-items: start;
}
.access-logo { margin-bottom: 1.4rem; }
.al-main {
  display: block; font-size: 2rem; font-weight: 900; letter-spacing: 0.16em;
}
.al-sub { font-size: 0.7rem; letter-spacing: 0.3em; color: var(--accent-hi); font-weight: 700; }
.access-list div {
  display: grid; grid-template-columns: 6.2em 1fr; gap: 0.8rem;
  padding: 0.65rem 0.2rem;
  border-bottom: 1px dashed rgba(234, 230, 227, 0.14);
}
.access-list dt { font-weight: 700; color: var(--accent-hi); font-size: 0.88rem; }
.access-list dd { font-size: 0.92rem; color: rgba(234, 230, 227, 0.86); }
.access-note { margin-top: 1.2rem; font-size: 0.9rem; color: var(--muted); }
.access-map {
  border: 1px solid var(--line);
  background: #0B0908;
}
.access-map svg { display: block; width: 100%; height: auto; }

/* ══ 最下部CTA（B型: 場所） ══ */
.final-cta {
  position: relative; overflow: clip;
  padding: clamp(6rem, 16vh, 10rem) clamp(1.1rem, 5vw, 3.5rem);
  text-align: center;
}
.final-bg { position: absolute; inset: 0; }
.final-bg img {
  width: 100%; height: 100%; object-fit: cover;
  opacity: 0.42;
}
.final-bg::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, var(--base) 0%, rgba(6, 6, 4, 0.25) 45%, var(--base) 100%);
}
.final-inner { position: relative; z-index: 2; }
.final-copy {
  font-size: clamp(2rem, 6.4vw, 4.4rem);
  font-weight: 900; letter-spacing: 0.05em; line-height: 1.3;
  text-shadow: 0 4px 30px rgba(0, 0, 0, 0.8);
  text-wrap: balance;
}
.final-sub { margin-top: 0.9rem; color: rgba(234, 230, 227, 0.85); }
.final-cta .btn-cta { margin-top: 2.2rem; }

/* ══ フッター ══ */
.site-footer {
  border-top: 1px solid var(--line);
  padding: 2.2rem clamp(1.1rem, 5vw, 3.5rem) 2.8rem;
  text-align: center;
  font-size: 0.78rem; color: var(--muted);
}
.site-footer p + p { margin-top: 0.35rem; }
.ft-credit { margin-top: 1.1rem; letter-spacing: 0.12em; font-size: 0.7rem; }

/* ══ 暖簾カーテン（curtain-routes） ══ */
.curtain {
  position: fixed; inset: 0; z-index: 90;
  pointer-events: none;
  visibility: hidden;
}
.curtain.is-active { visibility: visible; }
.curtain-bands { position: absolute; inset: -2% -8%; display: flex; }
.curtain-band {
  position: relative;
  height: 104%;
  transform: skewX(-14deg) translateY(110%);
  background: linear-gradient(180deg, #7E0807 0%, var(--accent) 30%, #5E0605 100%);
  border-left: 2px solid rgba(234, 230, 227, 0.22);
  will-change: transform;
}
.curtain-title {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-size: clamp(1.8rem, 6vw, 3.6rem);
  font-weight: 900; letter-spacing: 0.24em; color: var(--text);
  text-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
  opacity: 0;
  white-space: nowrap;
}

/* ══ スポットライト（curtain-routes ambient） ══ */
.spotlight {
  position: fixed; z-index: 1;
  width: 640px; height: 640px;
  margin: -320px 0 0 -320px;
  top: 0; left: 0;
  pointer-events: none;
  background: radial-gradient(circle, rgba(226, 59, 31, 0.1) 0%, rgba(172, 10, 9, 0.05) 40%, transparent 70%);
  mix-blend-mode: screen;
  will-change: transform;
}

/* ══ お客様の声（掲載準備中の枠取り・§2.6） ══ */
.voices { max-width: 1100px; margin: 2.2rem auto 0; }
.voices-head {
  font-size: 1.15rem; font-weight: 900; letter-spacing: 0.14em;
  color: var(--accent-hi); margin-bottom: 0.5rem;
}
.voices-note { font-size: 0.85rem; color: var(--muted); margin-bottom: 1rem; }
.voices-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.voice-slot {
  background: var(--panel);
  border: 1px dashed rgba(234, 230, 227, 0.22);
  min-height: 110px;
  display: flex; align-items: center; justify-content: center;
  color: var(--muted); font-size: 0.82rem; letter-spacing: 0.16em;
}

/* ══ 来店の連絡（申込導線の実体・デモのため送信されないフォーム） ══ */
.visit { background: var(--base-2); }
.visit-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: clamp(1.6rem, 4vw, 3rem);
  max-width: 1100px; margin: 0 auto; align-items: start;
}
.visit-facts { border-left: 6px solid var(--accent); padding-left: 1.2rem; }
.visit-facts p { font-size: 0.94rem; color: rgba(234, 230, 227, 0.84); }
.visit-facts p + p { margin-top: 0.7rem; }
.visit-facts .vf-line { font-weight: 700; color: var(--text); letter-spacing: 0.04em; }
.visit-form {
  background: var(--panel); border: 1px solid var(--line);
  border-top: 4px solid var(--accent);
  padding: 1.4rem 1.5rem 1.6rem;
}
.vf-note {
  font-size: 0.84rem; color: var(--accent-hi); font-weight: 700;
  letter-spacing: 0.04em; margin-bottom: 1rem;
}
.vf-grid { display: grid; gap: 0.9rem; }
.vf-grid label {
  display: block; font-size: 0.82rem; font-weight: 700;
  letter-spacing: 0.1em; color: var(--muted);
}
.vf-grid input, .vf-grid select, .vf-grid textarea {
  display: block; width: 100%; margin-top: 0.35rem;
  background: #0A0908; color: var(--text);
  border: 1px solid rgba(234, 230, 227, 0.22);
  padding: 0.6rem 0.7rem;
  font-family: var(--font); font-size: 0.92rem; line-height: 1.6;
}
.vf-grid textarea { resize: vertical; }
.vf-grid input:focus, .vf-grid select:focus, .vf-grid textarea:focus {
  outline: 2px solid var(--accent-hi); outline-offset: 1px;
}
.vf-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem; }
.vf-use { font-size: 0.8rem; color: var(--muted); margin: 0.9rem 0 0.8rem; }
.visit-form .btn-cta { width: 100%; font-size: 1rem; padding: 0.95rem 1.4rem; border: none; cursor: pointer; font-family: var(--font); }
.vf-result {
  margin-top: 0.9rem; font-size: 0.88rem; font-weight: 700;
  color: var(--text); border: 1px solid rgba(172, 10, 9, 0.6);
  background: rgba(172, 10, 9, 0.14); padding: 0.7rem 0.8rem;
}
.vf-privacy { margin-top: 1rem; font-size: 0.82rem; color: var(--muted); }
.vf-privacy summary { cursor: pointer; color: var(--accent-hi); font-weight: 700; letter-spacing: 0.06em; }
.vf-privacy p { margin-top: 0.5rem; font-size: 0.82rem; line-height: 1.8; }

/* ══ レスポンシブ ══ */
@media (max-width: 980px) {
  .kodawari-grid { grid-template-columns: 1fr; max-width: 640px; }
  .menu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .master-grid, .access-grid, .visit-grid { grid-template-columns: 1fr; }
  .voices-grid { grid-template-columns: 1fr; }
  .master-photo { max-width: 420px; }
}
@media (max-width: 780px) {
  .hero { min-height: auto; padding-top: 4.6rem; }
  .hero-inner {
    grid-template-columns: 1fr;
    grid-template-areas: "head" "visual" "more";
    row-gap: 1.1rem;
  }
  .hero-title { font-size: clamp(1.9rem, 8.6vw, 2.6rem); }
  .hero-lead { font-size: 0.9rem; line-height: 1.8; margin-top: 0.9rem; }
  .hero-photo img { height: clamp(200px, 32vh, 280px); }
  .hero-visual { min-height: 0; }
  .hero-cta-row { margin-top: 1.2rem; }
  .hero-info { margin-top: 0.9rem; font-size: 0.78rem; }
  .ring-clip { top: -28px; height: 150px; }
  .ring-scale { transform: scale(0.62); transform-origin: center; }
  .btn-cta { width: 100%; max-width: 420px; padding: 1rem 1.4rem; }
  .board { min-width: 560px; }
  .vf-row2 { grid-template-columns: 1fr; }
  .visit-form .btn-cta { max-width: none; }
  .flap-unit { font-size: 0.9rem; }
}
@media (max-width: 480px) {
  .menu-grid { grid-template-columns: 1fr; }
  .hero-eyebrow { margin-bottom: 0.7rem; }
  .hero-cta-row { margin-top: 1.2rem; }
}
