﻿/* ============================================================
   BASQUE BAR TOYAMA — v4 style（レイアウト/コンポーネント）
   BLUE YARD 構造の色違い版。アニメ状態は motion.css。
   ============================================================ */

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html.js,html.js body{overflow-x:clip}
body{
  font-family:var(--f-body);font-size:var(--t-base);line-height:1.85;
  color:var(--ink);background:var(--cream);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
/* <picture> は既定 inline のため、図の寸法をそのまま <img> へ引き継げない。
   面を埋める用途はブロック化し、レイアウトに介入させたくない箇所は display:contents で透過させる。 */
.hero__slide picture,.band__media picture,.footer__media picture,
.access__fig picture,.route__fig picture,.signature__media picture,
.recruit__fig picture,.wcard__media picture,
.dishes figure picture,.reco__i figure picture,.scenes li picture,
.deck__main picture,.course-hero picture{display:block;width:100%;height:100%}
.nav__logo picture,.loader__logo picture,.footer__logo picture{display:contents}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4{line-height:1.14;font-weight:700;letter-spacing:.01em}

/* ---------- 和文の折り返し（泣き別れ対策） ----------
   日本語は単語の区切りが無いので既定では任意の文字位置で改行され、
   「…少し特別な時間 ／ を。」のように最終行へ1〜2文字だけ残る。
   対策なしの状態で PC 3件 / タブレット 9件 / スマホ 11件 発生していた。
     word-break:auto-phrase … 文節単位で折る（<html lang="ja"> が前提）
     text-wrap:pretty       … 最終行の孤立を避ける（本文向け）
     text-wrap:balance      … 各行の長さを揃える（見出し向け・数行まで）
   :where() で書いて詳細度0にしてあるので、個別指定と競合しない。
   未対応ブラウザは従来どおりの折り返しになるだけで実害はない。 */
:where(p,li,dd,dt,figcaption,span,b,em,strong,a,td,th,button,summary){
  word-break:auto-phrase;
  text-wrap:pretty;
}
:where(h1,h2,h3,h4,h5,h6){
  word-break:auto-phrase;
  text-wrap:balance;
}
::selection{background:var(--wine);color:var(--cream)}
/* 金のリングは cream 地 2.22:1 / sand 地 1.99:1 しか出ず、ページの大半で
   フォーカス位置が見えなかった。明暗どちらの地でも 3:1 を確保する二重リングにする */
:focus-visible{outline:2px solid var(--navy);outline-offset:3px;box-shadow:0 0 0 5px var(--cream)}
:is(.section--navy,.section--wine) :focus-visible,
.nav :focus-visible,.dock :focus-visible,.fcta :focus-visible,.footer :focus-visible{
  outline-color:var(--cream);box-shadow:0 0 0 5px rgba(12,27,51,.9);
}

/* 本文へスキップ（400vh のヒーローとナビ7要素を毎回通過させない） */
.skip-link{
  position:fixed;top:-100%;left:1rem;z-index:300;
  background:var(--navy);color:var(--cream);padding:.8em 1.4em;border-radius:4px;
  font-family:var(--f-body);font-weight:700;font-size:.9rem;
}
.skip-link:focus{top:1rem}

/* 固定ナビ／モバイル固定CTAの下にフォーカスが潜り込まないようにする */
html{scroll-padding-top:calc(var(--nav-h) + 1rem)}
@media (max-width:760px){html{scroll-padding-bottom:72px}}

.wrap{width:min(100% - var(--gutter)*2,var(--maxw));margin-inline:auto}
.wrap--nar{width:min(100% - var(--gutter)*2,var(--maxw-nar))}
main{display:block}

/* eyebrow */
.eyebrow{
  font-family:var(--f-display);font-weight:600;font-size:.74rem;
  letter-spacing:.28em;text-transform:uppercase;color:var(--navy);
  display:inline-flex;align-items:center;gap:.7em;
}
.eyebrow i{width:2.4rem;height:1px;background:var(--gold);display:inline-block}
.eyebrow--dark{color:var(--gold-soft)}

/* ============================================================
   LOADER（ロゴ・オープニング — ユーザー高評価の演出）
   ============================================================ */
html:not(.js) .loader{display:none}
.loader{
  position:fixed;inset:0;z-index:200;display:grid;place-items:center;
  background:radial-gradient(120% 90% at 50% 42%,var(--wine-deep) 0%,var(--plum-black) 62%);
  animation:loaderKill 0s linear 3.4s forwards;
}
.loader__glow{
  position:absolute;width:70vmin;height:70vmin;border-radius:50%;
  background:radial-gradient(circle,rgba(194,154,85,.34),transparent 62%);
  filter:blur(14px);opacity:0;
}
.loader__logo{width:min(64vw,420px)}
.loader__logo img{width:100%;opacity:0}
.loader__cap{
  margin-top:1.4rem;font-family:var(--f-display);font-size:.72rem;
  letter-spacing:.42em;text-transform:uppercase;color:var(--gold-soft);
  opacity:0;text-align:center;
}
.loader__line{
  position:absolute;bottom:0;left:0;height:2px;width:0;
  background:linear-gradient(90deg,var(--gold),var(--gold-soft));
}
@keyframes loaderKill{to{opacity:0;visibility:hidden;pointer-events:none}}

/* scroll progress */
.progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:120;
  background:linear-gradient(90deg,var(--gold-soft),var(--wine));
}

/* ============================================================
   NAV（左ロゴ + 横メニュー + RESERVATION ピル / BLUE YARD式）
   ============================================================ */
.nav{
  position:fixed;top:0;left:0;width:100%;z-index:100;height:var(--nav-h);
  display:flex;align-items:center;gap:2rem;
  padding-inline:var(--gutter);
  transition:background .5s var(--e-out),box-shadow .5s var(--e-out),transform .5s var(--e-out);
}
/* position:relative がないと、重ねている .is-dark の height:100% が
   .nav（--nav-h）基準になり、ダークロゴだけ肥大して見切れる。 */
.nav__logo{height:clamp(30px,3.4vw,44px);display:flex;align-items:center;position:relative}
.nav__logo img{height:100%;width:auto;transition:opacity .4s}
.nav__logo .is-dark{position:absolute;opacity:0}
.nav__links{margin-left:auto;display:flex;gap:clamp(1rem,2.4vw,2.6rem)}
/* padding .4rem だと高さ21pxで、WCAG 2.2 の Target Size(Minimum) 24px に届かない。
   ナビは本文中のリンクではないので「インライン例外」も適用されない */
.nav__links a{
  font-family:var(--f-display);font-weight:600;font-size:.8rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--on-dark);
  position:relative;padding:.62rem 0;min-height:24px;display:inline-flex;align-items:center;
  transition:color .3s;
  /* 2026-09-04：NEWS を足して6項目にしたら 861〜930px で全項目が2行に折れた（実測 67px）。
     .nav__links は flex アイテムなので既定で縮み、中の文字が折り返る。
     **nowrap は文字が入る a 自身に置くこと**（親に置くと `:where(a){text-wrap:pretty}` に負ける。
     「折り返し対策の副作用」の節と同じ罠）。nowrap にすれば 861px でも
     ロゴ114+列490+CTA123+余白69＝796px で収まる（実測・画面861pxに対し65pxの余裕）。 */
  white-space:nowrap;
}
.nav__links a::after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform .4s var(--e-out);
}
.nav__links a:hover::after{transform:scaleX(1)}
.nav__cta{
  font-family:var(--f-display);font-weight:700;font-size:.78rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--cream);background:var(--wine);
  padding:.72em 1.5em;border-radius:100px;display:inline-flex;align-items:center;gap:.55em;
  transition:background .3s,transform .3s var(--e-out);white-space:nowrap;
}
.nav__cta svg{width:1em;height:1em}
.nav__cta:hover{background:var(--wine-deep);transform:translateY(-2px)}
/* solid state（スクロール後） */
/* スクロール後のナビ。クリームのベタ塗りだと下の内容と切れて板が乗って見えるので、
   すりガラス（半透明＋blur）にして下の面がうっすら透ける状態にする。
   透過率は 0.72。これ以上下げるとワイン面・写真バンドの上で地が暗く寄り、
   ネイビーのリンクが読めなくなる（実測でここが下限）。
   backdrop-filter 非対応のブラウザは blur が効かず「ただの半透明」＝文字が
   下の内容と重なって読めないので、@supports でベタ塗りに戻す。 */
.nav.is-solid{
  background:rgba(243,236,221,.72);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);
  box-shadow:0 1px 0 var(--line);
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .nav.is-solid{background:var(--cream)}
}
.nav.is-solid .nav__links a{color:var(--navy)}
.nav.is-solid .nav__logo .is-light{opacity:0}
.nav.is-solid .nav__logo .is-dark{opacity:1}
/* 下スクロールでの自動hideは、ナビ内リンクが出ない幅（≤860px）だけに限定する。
   PCではメニューを常時操作できることを優先し、is-hidden が付いても隠さない */
@media (max-width:860px){ .nav__links{display:none} .nav.is-hidden{transform:translateY(-100%)} }
@media (max-width:760px){ .nav__cta{display:none} .nav{justify-content:flex-start} .nav__logo{height:clamp(26px,8vw,36px)} }

/* ============================================================
   HERO（フルスクリーン全面写真 + 特大英字キャッチ）
   ============================================================ */
/* ===== HERO：スクロール連動・ピン留め4枚（下から立ち上がる） ===== */
.hero{position:relative}
/* 400vh はスライド4枚に手で合わせた値だった。枚数は app.js が --hero-slides に
   書き出すので、CSSを直し忘れてスクラブ距離が静かに縮む事故をなくす */
html.js .hero{height:calc(100svh * var(--hero-slides,4))}
/* min-height がビューポートより高くなると、sticky で上端が固定されたまま
   下端（＝コピーとドットの基準）が永久に画面外へ出る。
   スマホ横向き・実ブラウザ200%ズームで実際に起きていた */
.hero__sticky{position:relative;height:100vh;height:100svh;min-height:0;overflow:hidden;isolation:isolate}
@media (min-height:600px){.hero__sticky{min-height:600px}}
html.js .hero__sticky{position:sticky;top:0}
.hero__stage{position:absolute;inset:0;z-index:-2}
.hero__slide{position:absolute;inset:0;overflow:hidden}
.hero__slide img{width:100%;height:100%;object-fit:cover;object-position:center 55%;will-change:transform}
html.js .hero__slide + .hero__slide{clip-path:inset(100% 0 0 0)} /* 2枚目以降は下端から出す */
/* z-index は app.js が振るため、JS無効だと4枚が重なりDOM末尾（生ハムピッツァ）が
   最前面に来て、意図した1枚目が静かに差し替わる */
html:not(.js) .hero__slide + .hero__slide{display:none}
/* スライド番号ドット */
.hero__dots{position:absolute;left:var(--gutter);bottom:clamp(1.4rem,4vh,2.4rem);z-index:2;display:flex;gap:.6rem}
/* 見た目は細いバーのまま、当たり判定だけ 24px 確保する（旧: 高さ3px） */
.hero__dots button{
  width:30px;height:24px;padding:0;background:transparent;border:0;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.hero__dots button::after{
  content:"";display:block;width:100%;height:3px;border-radius:2px;
  background:rgba(243,236,221,.35);transition:background .4s;
}
.hero__dots button.is-on::after{background:var(--gold-soft)}
@media (max-width:640px){.hero__dots{bottom:auto;top:calc(var(--nav-h) + 1rem);left:var(--gutter)}}

/* ============================================================
   BAND（全面フルブリードの大画像パララックス）
   ============================================================ */
.band{position:relative;height:clamp(360px,64vh,720px);overflow:hidden;display:grid;place-items:center;isolation:isolate}
.band__media{position:absolute;inset:-19% 0;height:138%;z-index:-2;will-change:transform}
.band__media img{width:100%;height:100%;object-fit:cover}
/* 見出しが大きいぶん、中央だけ少し落として cream の可読性を確保する */
.band__scrim{
  position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(72% 62% at 50% 50%,rgba(42,14,24,.5),transparent 72%),
    linear-gradient(180deg,rgba(42,14,24,.5),rgba(42,14,24,.28) 45%,rgba(135,43,59,.5));
}
.band__cap{text-align:center;color:var(--cream);padding:0 var(--gutter);max-width:min(92vw,900px)}
.band__en{display:block;font-family:var(--f-display);font-weight:700;font-size:clamp(.8rem,.7rem + .35vw,1rem);letter-spacing:.34em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:clamp(1.1rem,.7rem + 1vw,1.9rem)}
.band__t{font-family:var(--f-jp);font-weight:900;font-size:clamp(2.1rem,1.1rem + 4.6vw,5.4rem);line-height:1.22;letter-spacing:.02em;text-shadow:0 4px 40px rgba(42,14,24,.55)}
.hero__grad{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(180deg,rgba(42,14,24,.55) 0%,rgba(42,14,24,.15) 30%,rgba(42,14,24,.35) 66%,rgba(42,14,24,.82) 100%),
    linear-gradient(90deg,rgba(42,14,24,.5),transparent 55%);
}
.hero__in{
  position:absolute;left:var(--gutter);bottom:clamp(3.5rem,10vh,7.5rem);
  /* H1 は .line{overflow:hidden}+.w{nowrap} なので、40rem だと 64px 時に
     "& TOYAMA SEAFOOD" が右で見切れる。実測の必要幅 717px に余裕を持たせる */
  right:var(--gutter);max-width:min(92%,52rem);color:var(--on-dark);
}
.hero__eyebrow{
  font-family:var(--f-display);font-weight:600;font-size:.76rem;letter-spacing:.34em;
  text-transform:uppercase;color:var(--gold-soft);display:flex;align-items:center;gap:.9em;margin-bottom:1.4rem;
}
.hero__eyebrow i{width:3rem;height:1px;background:var(--gold-soft)}
/* H1 内のブランド行。和文なので .34em の字間は広すぎる＋大文字化も効かない */
.hero__brand{
  font-family:var(--f-body);font-weight:700;letter-spacing:.06em;text-transform:none;
  font-size:clamp(.78rem,.72rem + .2vw,.92rem);
}
.hero__h{
  font-family:var(--f-display);font-weight:800;text-transform:uppercase;
  /* 傾きは 320px でも "& TOYAMA SEAFOOD"（nowrap）が収まる値。上限 4rem は PC の見せ場 */
  font-size:clamp(1.45rem,.55rem + 4.6vw,4rem);line-height:1.08;letter-spacing:0;color:var(--cream);
  text-shadow:0 4px 40px rgba(42,14,24,.45);
}
.hero__h .line{display:block;overflow:hidden;padding-bottom:.06em}
.hero__h .line .w{display:block;white-space:nowrap}
.hero__h em{font-style:normal;color:var(--gold-soft)}
.hero__sub{
  font-family:var(--f-jp);font-weight:500;margin-top:1.6rem;max-width:26rem;
  font-size:var(--t-lead);line-height:1.9;color:var(--on-dark);letter-spacing:.02em;
  text-shadow:0 2px 20px rgba(42,14,24,.5);
}
.hero__scroll{
  position:absolute;right:var(--gutter);bottom:clamp(2rem,6vh,4rem);z-index:1;
  display:flex;flex-direction:column;align-items:center;gap:.8rem;
  font-family:var(--f-display);font-size:.62rem;letter-spacing:.3em;color:var(--on-dark-soft);
}
.hero__scroll i{width:1px;height:52px;background:linear-gradient(var(--gold-soft),transparent);overflow:hidden;position:relative}
.hero__scroll i::after{content:"";position:absolute;inset:0;background:var(--cream);animation:scrollPulse 2.2s var(--e-in-out) infinite}
@keyframes scrollPulse{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}
@media (max-width:640px){ .hero__scroll{display:none} }

/* 縦が短いビューポート（スマホ横向き・実ブラウザ200%ズーム）では、下寄せのままだと
   コピーが画面外へ落ちる。中央寄せに切り替え、収まるまで段階的に詰める。
   ※ .hero__in の基本定義より後に置くこと（前に置くと後勝ちで打ち消される） */
@media (max-height:620px){
  .hero__in{bottom:auto;top:50%;transform:translateY(-50%);max-width:min(96%,52rem)}
  .hero__brand{margin-bottom:.6rem}
  .hero__h{font-size:clamp(1.3rem,.5rem + 3.2vw,2.4rem)}
  .hero__sub{margin-top:.8rem;font-size:.86rem;line-height:1.55}
  .hero__dots{bottom:.4rem}
  .hero__scroll{display:none}
}
@media (max-height:460px){
  .hero__h{font-size:clamp(1.2rem,.5rem + 2.6vw,1.9rem)}
  .hero__sub{font-size:.8rem;line-height:1.5}
  .hero__brand{font-size:.72rem;margin-bottom:.4rem}
}

/* ============================================================
   FACTS 帯（実利情報の細バンド）
   ============================================================ */
.facts{background:var(--wine);color:var(--cream)}
.facts__list{
  list-style:none;width:min(100% - var(--gutter)*2,var(--maxw));margin-inline:auto;
  display:grid;grid-template-columns:repeat(5,1fr);
}
.facts__list li{
  display:flex;gap:.85rem;align-items:flex-start;
  padding:1.35rem clamp(1rem,1.8vw,1.8rem);border-left:1px solid rgba(243,236,221,.2);
}
.facts__list li:first-child{border-left:0}
.facts__list svg{width:22px;height:22px;stroke:var(--gold-soft);flex-shrink:0;margin-top:.15rem}
/* 太字は常に2行分の高さを確保 → キャプション位置が全項目で揃う */
.facts__list b{display:block;font-family:var(--f-jp);font-weight:700;font-size:.94rem;color:var(--cream);letter-spacing:.01em;line-height:1.42;min-height:2.84em;margin-bottom:.2rem}
.facts__list li>span{display:block}
.facts__list li>span{font-size:.76rem;color:rgba(243,236,221,.72);line-height:1.5}
@media (max-width:900px){
  .facts__list{grid-template-columns:repeat(2,1fr)}
  .facts__list li{border-left:0;border-top:1px solid var(--line-cream)}
  .facts__list li:nth-child(-n+2){border-top:0}
  .facts__list li:nth-child(odd){border-left:0}
  .facts__list li:nth-child(even){border-left:1px solid var(--line-cream)}
}
@media (max-width:520px){
  .facts__list{grid-template-columns:1fr}
  .facts__list li{border-left:0!important;border-top:1px solid var(--line-cream)}
  .facts__list li:first-child{border-top:0}
}

/* ============================================================
   THREE CARDS（BLUE YARD 署名の3カード）
   ============================================================ */
.ways{padding:var(--sec) 0 calc(var(--sec) - 1rem)}
.ways__head{width:min(100% - var(--gutter)*2,var(--maxw));margin:0 auto clamp(2.4rem,5vw,4rem)}
.ways__eyebrow{margin-bottom:1rem}
.ways__h{
  font-family:var(--f-jp);font-weight:900;font-size:var(--t-h2);color:var(--wine);
  letter-spacing:.02em;
}
/* 中央（02 Take Out）をひとまわり大きく前面に置く＝主役3セクションの序列と一致させる。
   --ov は左右への食い込み量。傾きで増える幅は最大でも高さ×sin(1.8°)≒25px なので
   --gutter（最小20px）の内側に収まる範囲に抑えてある */
.ways__grid{
  --ov:clamp(0px,1.5vw,24px);
  width:min(100% - var(--gutter)*2,var(--maxw));margin-inline:auto;
  display:grid;grid-template-columns:1fr 1.06fr 1fr;gap:clamp(.4rem,1vw,.9rem);
  align-items:start;
}
.wslot{position:relative;z-index:1}
.wslot:nth-child(2){margin-inline:calc(var(--ov) * -1);z-index:3}
.wslot:nth-child(3){z-index:2}

.wcard{
  --rot:0deg;--dy:0px;
  display:block;position:relative;background:var(--paper);border:1px solid var(--line);
  transform:rotate(var(--rot)) translateY(var(--dy));
  box-shadow:0 10px 30px rgba(12,27,51,.07);
  transition:transform .55s var(--e-out),box-shadow .55s var(--e-out);
}
.wslot:nth-child(1) .wcard{--rot:-1.5deg}
.wslot:nth-child(2) .wcard{--rot:1.2deg;--dy:clamp(1.2rem,2.6vw,2.8rem)}
.wslot:nth-child(3) .wcard{--rot:-.9deg;--dy:clamp(.4rem,1vw,1.1rem)}
/* hover で水平に戻す＝「拾い上げる」感触 */
.wcard:hover{transform:rotate(0deg) translateY(-10px);box-shadow:0 26px 60px rgba(12,27,51,.16)}
.wcard__media{position:relative;aspect-ratio:4/5;overflow:hidden}
/* 写真の内側に細いヘアライン枠（BLUE YARD 署名の内枠） */
.wcard__media::after{
  content:"";position:absolute;inset:10px;z-index:2;pointer-events:none;
  border:1px solid rgba(243,236,221,.55);
}
.wcard__media img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--e-out)}
.wcard:hover .wcard__media img{transform:scale(1.07)}
.wcard__no{
  position:absolute;top:1rem;left:1.1rem;font-family:var(--f-display);font-weight:700;
  font-size:.72rem;letter-spacing:.2em;color:var(--cream);z-index:2;
  mix-blend-mode:difference;
}
.wcard__body{padding:1.7rem clamp(1.2rem,2vw,2rem) 2rem}
.wcard__en{
  display:block;font-family:var(--f-display);font-weight:800;text-transform:uppercase;
  font-size:clamp(1.5rem,1rem + 1.6vw,2.2rem);letter-spacing:.01em;color:var(--navy);line-height:1;
}
.wcard__sub{display:block;font-family:var(--f-jp);font-weight:700;font-size:.9rem;color:var(--wine);margin-top:.5rem}
.wcard__jp{font-size:.9rem;line-height:1.9;color:var(--ink-soft);margin-top:1rem}
.wcard__more{
  margin-top:1.5rem;display:inline-flex;align-items:center;gap:.6em;
  font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--navy);
  padding:.78em 1.4em;border:1px solid var(--line-strong);border-radius:100px;
  transition:background .35s var(--e-out),color .35s var(--e-out),border-color .35s var(--e-out);
}
.wcard__more svg{width:1.15em;height:1.15em;transition:transform .4s var(--e-out)}
.wcard:hover .wcard__more{background:var(--navy);color:var(--cream);border-color:var(--navy)}
.wcard:hover .wcard__more svg{transform:translateX(6px)}
/* 1カラムに落ちる幅では傾き・重なりを解除（縦積みで傾けると読みにくく、
   狭い gutter に対して回転のはみ出しが無視できなくなる） */
@media (max-width:820px){
  .ways__grid{--ov:0px;grid-template-columns:1fr;max-width:460px;gap:clamp(1rem,2.4vw,2rem)}
  .wslot,.wslot:nth-child(2){margin-inline:0}
  .wcard,.wslot:nth-child(1) .wcard,.wslot:nth-child(2) .wcard,.wslot:nth-child(3) .wcard{--rot:0deg;--dy:0px}
}

/* ============================================================
   ABOUT / MANIFESTO
   ============================================================ */
.about{background:var(--wine);color:var(--on-dark);padding:var(--sec) 0;position:relative;overflow:hidden}
.about__eyebrow{margin-bottom:1.4rem}
.about__h{
  font-family:var(--f-serif);font-weight:500;font-size:clamp(2rem,1.2rem + 4vw,4.6rem);
  line-height:1.25;color:var(--cream);letter-spacing:.01em;
}
.about__h em{font-style:normal;color:var(--gold-soft);letter-spacing:.08em}
.about__lead{
  font-family:var(--f-jp);font-weight:500;margin-top:2rem;max-width:40rem;
  font-size:var(--t-lead);line-height:2.1;color:rgba(243,236,221,.85);
}
.about__ghost{
  position:absolute;right:-2%;bottom:1%;font-family:var(--f-script);font-weight:400;
  font-size:clamp(7rem,24vw,24rem);line-height:1;letter-spacing:0;white-space:nowrap;
  color:rgba(216,184,120,.13);-webkit-text-stroke:0;pointer-events:none;z-index:0;
}
.about .wrap{position:relative;z-index:1}

/* kinetic marquee */
/* ⚠️ 泣き別れ対策の :where(span){text-wrap:pretty} は詳細度0でも「継承」より強い。
   text-wrap は white-space の一部（text-wrap-mode）を書き換えるので、
   親の .marquee{white-space:nowrap} が子の span で打ち消されていた。
   実測 16個中10個の span が2〜3行に折れ、帯が 66px → 126px に伸びていた。
   span 側に nowrap を明示して戻す（2026-08-29 修正）。消さないこと。 */
.marquee{background:var(--wine);color:var(--cream);padding:1.1rem 0;overflow:hidden;white-space:nowrap}
.marquee__row{display:inline-flex;gap:2.6rem;will-change:transform;animation:marq 34s linear infinite}
.marquee__row span{font-family:var(--f-display);font-weight:700;font-size:1.02rem;letter-spacing:.12em;text-transform:uppercase;display:inline-flex;align-items:center;gap:2.6rem;white-space:nowrap}
.marquee__row span::after{content:"◆";color:var(--gold-soft);font-size:.6em}
@keyframes marq{to{transform:translateX(calc(-50% - 1.3rem))}}
@media (prefers-reduced-motion:reduce){.marquee__row{animation:none}}

/* ============================================================
   SECTION（大型ブロック — 交互レイアウト）
   ============================================================ */
.section{padding:var(--sec) 0;position:relative}
/* 縦リズムの強弱（--sec / --sec-mid / --sec-sm の使い分けは tokens.css を参照） */
.section--mid{padding:var(--sec-mid) 0}
.section--sm{padding:var(--sec-sm) 0}
.section--sand{background:var(--sand)}
.section--navy{background:var(--navy);color:var(--on-dark)}
.section--wine{background:var(--wine);color:var(--on-dark)}
/* ---- 暗地（navy / wine）共通の文字オーバーライド ---- */
:is(.section--navy,.section--wine) .head__h,
:is(.section--navy,.section--wine) .signature__name{color:var(--cream)}
:is(.section--navy,.section--wine) .head__lead,
:is(.section--navy,.section--wine) .signature__note{color:var(--on-dark-soft)}
:is(.section--navy,.section--wine) .head__ghost{color:rgba(216,184,120,.16);-webkit-text-stroke:0}
:is(.section--navy,.section--wine) .eyebrow{color:var(--gold-soft)}
:is(.section--navy,.section--wine) .signature__tag{color:var(--gold-soft)}
:is(.section--navy,.section--wine) .signature__price{color:var(--gold-soft)}
:is(.section--navy,.section--wine) .signature__price small{color:var(--on-dark-soft)}
:is(.section--navy,.section--wine) .signature__name span{color:var(--on-dark-soft)}
:is(.section--navy,.section--wine) .cat__t span{color:var(--cream)}
:is(.section--navy,.section--wine) .cat__t i{color:var(--gold-soft)}
:is(.section--navy,.section--wine) .row span{color:var(--on-dark)}
:is(.section--navy,.section--wine) .row b{color:var(--cream)}
:is(.section--navy,.section--wine) .row{border-color:var(--line-cream)}
:is(.section--navy,.section--wine) .fine{color:rgba(243,236,221,.5)}
:is(.section--navy,.section--wine) .btn--line{color:var(--cream);border-color:var(--line-cream)}
:is(.section--navy,.section--wine) .btn--line:hover{background:var(--cream);color:var(--navy)}
/* ワイン地では塗りCTAをクリームに（wine on wine 回避） */
.section--wine .btn--fill{background:var(--cream);color:var(--wine-deep)}
.section--wine .btn--fill:hover{background:#fff;color:var(--wine-deep);transform:translateY(-2px)}

/* block head with giant ghost EN heading */
.head{position:relative;margin-bottom:clamp(2.4rem,5vw,4.5rem);max-width:52rem}
.head--center{margin-inline:auto;text-align:center}
/* 01〜07 の番号付きセクションに対する「続き」の見出し。
   同じ組み方のまま一段だけ小さくして、主役セクションと競合させない */
.head--sub .head__h{font-size:var(--t-h3)}
.head--sub .head__ghost{font-size:calc(var(--t-h2) * 1.9)}
/* 筆記体のゴースト（2026-08-29）。3つ守ること。
   ① text-transform:uppercase をかけない … 筆記体は大文字にすると字がつながらず崩れる
   ② 線（-webkit-text-stroke）にしない … 太い筆記線の輪郭をなぞる形になり「ネオン管」に見える。
      薄い塗りにする
   ③ 倍率が要る … 大文字を使わないぶん字面が小さいので、Montserrat 800 と同じ「面の大きさ」に
      するには 1.9 倍。ここを 1.0 に戻すと見出しの背後で存在感が消える
   nowrap は span 自身に置くこと（親に置くと :where(span){text-wrap:pretty} に負ける。
   「折り返し対策の副作用」の節を参照） */
.head__ghost{
  position:absolute;top:-.62em;left:-.04em;z-index:0;pointer-events:none;
  font-family:var(--f-script);font-weight:400;
  font-size:calc(var(--t-block) * 1.9);line-height:1;letter-spacing:0;
  white-space:nowrap;
  color:rgba(135,43,59,.12);-webkit-text-stroke:0;
}
:is(.section--navy,.section--wine) .head__ghost{color:rgba(216,184,120,.16);-webkit-text-stroke:0}
.head--center .head__ghost{left:50%;transform:translateX(-50%)}
.head>.eyebrow{position:relative;z-index:1;margin-bottom:1rem}
.head__h{
  position:relative;z-index:1;font-family:var(--f-jp);font-weight:900;
  font-size:var(--t-h2);color:var(--wine);letter-spacing:.02em;margin-top:.3rem;
}
.head__lead{position:relative;z-index:1;margin-top:1.3rem;font-size:var(--t-lead);line-height:2;color:var(--ink-soft);max-width:44rem}
.head__cta{margin-top:2.4rem}

/* buttons */
.btn{
  display:inline-flex;align-items:center;gap:.6em;font-family:var(--f-display);
  font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
  padding:1em 1.9em;border-radius:100px;transition:all .4s var(--e-out);white-space:nowrap;
}
.btn svg{width:1.15em;height:1.15em;transition:transform .4s var(--e-out)}
.btn--fill{background:var(--wine);color:var(--cream)}
.btn--fill:hover{background:var(--wine-deep);transform:translateY(-2px)}
.btn--fill:hover svg{transform:translateX(5px)}
.btn--line{background:transparent;color:var(--navy);border:1px solid var(--line-strong)}
.btn--line:hover{background:var(--navy);color:var(--cream);border-color:var(--navy)}
:is(.section--navy,.section--wine) .btn--line{color:var(--cream);border-color:var(--line-cream)}
:is(.section--navy,.section--wine) .btn--line:hover{background:var(--cream);color:var(--navy)}

/* signature dish block */
.signature{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(1.5rem,4vw,4.5rem);align-items:center}
.signature--flip{grid-template-columns:.85fr 1.15fr}
.signature--flip .signature__media{order:2}
.signature__media{position:relative;overflow:hidden;aspect-ratio:4/3}
.signature__media img{width:100%;height:100%;object-fit:cover}
.signature__tag{font-family:var(--f-display);font-weight:700;font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--navy)}
:is(.section--navy,.section--wine) .signature__tag{color:var(--gold-soft)}
.signature__name{font-family:var(--f-jp);font-weight:900;font-size:var(--t-h3);color:var(--wine);margin-top:1rem;line-height:1.25}
.signature__name span{font-size:.6em;font-weight:700;color:var(--ink-soft)}
.signature__price{font-family:var(--f-serif);font-weight:600;font-size:2.6rem;color:var(--wine);margin-top:1rem;line-height:1}
.signature__price small{font-size:.4em;font-family:var(--f-body);color:var(--ink-soft);margin-left:.4em;letter-spacing:.05em}
.signature__note{margin-top:1.1rem;font-size:.94rem;line-height:1.95;color:var(--ink-soft)}
:is(.section--navy,.section--wine) .signature__note{color:var(--on-dark-soft)}
@media (max-width:780px){
  .signature,.signature--flip{grid-template-columns:1fr;gap:1.6rem}
  .signature--flip .signature__media{order:0}
}

/* dish grid */
.dishes{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(.8rem,1.6vw,1.4rem);margin-top:clamp(2.4rem,5vw,4rem)}
.dishes li{background:var(--paper);border:1px solid var(--line)}
.dishes figure{overflow:hidden;aspect-ratio:1/1}
.dishes img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--e-out)}
.dishes li:hover img{transform:scale(1.06)}
.dishes>li>div{padding:.9rem 1rem 1.1rem;display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}
.dishes h4{font-family:var(--f-jp);font-weight:700;font-size:.92rem;color:var(--navy)}
.dishes .p{font-family:var(--f-serif);font-weight:600;font-size:1.25rem;color:var(--wine);white-space:nowrap}
.dishes .p small{font-size:.55em;color:var(--ink-faint);margin-left:.2em;font-family:var(--f-body)}
@media (max-width:820px){.dishes{grid-template-columns:repeat(2,1fr)}}

/* full menu toggle */
.more{margin-top:2.6rem}
.more__toggle[aria-expanded="true"] svg{transform:rotate(180deg)}
.allmenu{overflow:hidden;height:0;transition:height .6s var(--e-out)}
/* 開閉は app.js しか行わない。JS無効時に height:0 のままだと
   パスタ・前菜・タパス・スイーツ・ドリンクが永久に閲覧不可能になる。
   隠すのは「押しても何も起きないボタン」だけ。`.more` ごと display:none にすると
   中の .allmenu も道連れになり、height:auto を書いても意味がなくなる（一度これで踏んだ） */
html:not(.js) .allmenu{height:auto;overflow:visible}
html:not(.js) .more__toggle{display:none}
html:not(.js) .allmenu__clip{padding-top:0}
.allmenu__clip{padding-top:2.4rem}
/* ============================================================
   平日限定ランチセット（#dine 内のハイライト）
   ============================================================ */
.lunch{
  margin-top:clamp(2.4rem,5vw,4rem);
  display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(1.6rem,4vw,3.4rem);
  background:var(--wine);color:var(--on-dark);
  padding:clamp(1.8rem,4vw,3rem) clamp(1.5rem,3.5vw,3rem);
  border-radius:4px;position:relative;overflow:hidden;
}
/* 右上に淡い金の光。面が単調にならない程度に */
.lunch::after{
  content:"";position:absolute;right:-14%;top:-40%;width:60%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,rgba(216,184,120,.16),transparent 68%);pointer-events:none;
}
.lunch__badge{
  display:inline-flex;align-items:center;gap:.7em;font-family:var(--f-jp);font-weight:900;
  font-size:.78rem;letter-spacing:.08em;color:var(--navy);background:var(--gold-soft);
  padding:.42em .9em;border-radius:100px;
}
.lunch__badge span{font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.06em}
.lunch__en{
  margin-top:1.1rem;font-family:var(--f-display);font-weight:700;font-size:.72rem;
  letter-spacing:.24em;text-transform:uppercase;color:var(--gold-soft);
}
.lunch__h{
  margin-top:.5rem;font-family:var(--f-jp);font-weight:900;color:var(--cream);
  font-size:clamp(1.25rem,.95rem + 1.2vw,1.9rem);line-height:1.45;letter-spacing:.02em;
}
.lunch__price{
  margin-top:1.1rem;font-family:var(--f-serif);font-weight:600;color:var(--gold-soft);
  font-size:clamp(3rem,2rem + 4vw,5.4rem);line-height:1;
  font-variant-numeric:lining-nums tabular-nums;
}
.lunch__price em{font-style:normal;font-size:.5em;margin-right:.06em}
.lunch__price small{font-family:var(--f-jp);font-weight:700;font-size:.2em;margin-left:.3em;color:var(--on-dark-soft)}
.lunch__note{margin-top:.9rem;font-size:.88rem;line-height:1.9;color:var(--on-dark-soft);max-width:26em}
.lunch__side{position:relative;z-index:1}
.lunch__label{
  font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold-soft);padding-bottom:.7rem;
  border-bottom:1px solid var(--line-cream);display:flex;flex-wrap:wrap;align-items:baseline;gap:.8em;
}
.lunch__label span{font-family:var(--f-jp);font-weight:500;font-size:.74rem;letter-spacing:.02em;text-transform:none;color:var(--on-dark-soft)}
.lunch__drinks{
  list-style:none;margin-top:.9rem;display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1.2rem;
}
.lunch__drinks li{font-family:var(--f-jp);font-weight:500;font-size:.86rem;line-height:1.5;color:var(--cream)}
.lunch__drinks em{display:block;font-style:normal;font-family:var(--f-display);font-weight:600;font-size:.62rem;letter-spacing:.12em;color:var(--gold-soft)}
/* .66 だと 4.08:1 で AA(4.5) に届かなかった。--on-dark-soft は暗地の副文用で 6.6:1 出る */
.lunch__fine{margin-top:1.2rem;font-size:.74rem;line-height:1.8;color:var(--on-dark-soft)}
@media (max-width:820px){
  .lunch{grid-template-columns:1fr;gap:1.8rem}
}
@media (max-width:400px){
  .lunch__drinks{grid-template-columns:1fr}
}

/* カフェ節のメニュー表。スイーツは面を使わず読み幅に絞る */
.menucard{margin-top:clamp(2.4rem,5vw,4rem)}
.cat--wide{max-width:34rem;margin-bottom:0}

.cols{columns:2;column-gap:clamp(2rem,5vw,4rem)}
@media (max-width:680px){.cols{columns:1}}
.cat{break-inside:avoid;margin-bottom:2rem}
.cat__t{display:flex;align-items:baseline;gap:.8rem;padding-bottom:.7rem;border-bottom:1px solid var(--line);margin-bottom:.7rem}
.cat__t span{font-family:var(--f-jp);font-weight:900;font-size:1.05rem;color:var(--navy)}
.cat__t i{font-family:var(--f-display);font-weight:600;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-text);font-style:normal}
.cat__t--mt{margin-top:1.6rem}
.row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;font-size:.9rem;border-bottom:1px dotted var(--line)}
.row span{color:var(--ink)}
/* 品名に添える補足（Hot / Ice、産地・品種など）。行頭を揃えたいので改行して小さく置く */
.row em{
  display:block;margin-top:.15rem;font-style:normal;
  font-size:.72rem;line-height:1.5;letter-spacing:.02em;color:var(--ink-faint);
}
:is(.section--navy,.section--wine) .row em{color:var(--on-dark-soft)}
.row b{font-family:var(--f-serif);font-weight:600;font-size:1.05rem;color:var(--navy-ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.fine{font-size:.76rem;color:var(--ink-faint);margin-top:1.2rem;line-height:1.7}
/* Cormorant は既定がオールドスタイル数字で、1がx-height・9がディセンダに落ちる。
   価格と電話番号が「壊れている」ように見えるので、ライニング＋等幅数字に固定する */
.signature__price,.signature__price small,.dishes .p,.row b,.steps a,.reco__i .p,.course__price{
  font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1,"tnum" 1;
}

/* takeout steps */
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2.4vw,2rem);margin-top:clamp(2.4rem,5vw,4rem);counter-reset:s}
.steps li{position:relative;padding:1.8rem 1.5rem;background:var(--paper);border:1px solid var(--line)}
:is(.section--navy,.section--wine) .steps li{background:rgba(255,255,255,.05);border-color:var(--line-cream)}
.steps__n{font-family:var(--f-display);font-weight:800;font-size:2rem;color:var(--gold-text);display:block;line-height:1}
/* --gold-text は明地用の暗い金。テイクアウトはワイン地なので、ここだけ暗金のままだと
   01/02/03 が 1.45:1 でほぼ見えなかった。h4/p/a には暗地オーバーライドがあったのに
   番号だけ漏れていた */
:is(.section--navy,.section--wine) .steps__n{color:var(--gold-soft)}
.steps h4{font-family:var(--f-jp);font-weight:700;font-size:1.05rem;color:var(--navy);margin:.7rem 0 .4rem}
:is(.section--navy,.section--wine) .steps h4{color:var(--cream)}
.steps p{font-size:.88rem;color:var(--ink-soft)}
:is(.section--navy,.section--wine) .steps p{color:var(--on-dark-soft)}
.steps a{color:var(--wine);font-family:var(--f-serif);font-weight:600;font-size:1.15rem}
:is(.section--navy,.section--wine) .steps a{color:var(--gold-soft)}

/* ---- 受け取ったあとの居場所＝展望デッキ／ご自宅（#after-pickup・明地） ---- */
.deck{margin-top:0}
.deck__where{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.2rem,3vw,2.6rem);align-items:start}
.deck__main{overflow:hidden;aspect-ratio:16/10;border:1px solid var(--line)}
.deck__main img{width:100%;height:100%;object-fit:cover}
.deck__cap{margin-top:1.1rem}
.deck__en{
  display:block;font-family:var(--f-display);font-weight:700;font-size:.66rem;
  letter-spacing:.24em;text-transform:uppercase;color:var(--navy);
}
.deck__cap b{
  display:block;margin-top:.45rem;font-family:var(--f-jp);font-weight:900;
  font-size:1.12rem;letter-spacing:.02em;color:var(--navy);
}
.deck__cap p{margin-top:.6rem;font-size:.88rem;line-height:1.95;color:var(--ink-soft)}
.deck__note{margin-top:.9rem;font-size:.75rem;line-height:1.8;color:var(--ink-faint)}

.deck__strip{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:1.2rem}
.deck__sub picture{display:block;overflow:hidden;aspect-ratio:3/2;border:1px solid var(--line)}
.deck__sub img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--e-out)}
.deck__sub:hover img{transform:scale(1.07)}
.deck__sub figcaption{
  margin-top:.45rem;font-family:var(--f-jp);font-weight:700;
  font-size:.7rem;letter-spacing:.02em;line-height:1.5;color:var(--ink-soft);
}
@media (max-width:900px){
  .deck__where{grid-template-columns:1fr;gap:2.4rem}
  .deck__sub figcaption{font-size:.66rem}
}

/* ---- コースの卓（COURSE 主図版） ---- */
.course-hero{position:relative;overflow:hidden;aspect-ratio:16/9;margin-bottom:clamp(2rem,4vw,3.2rem)}
.course-hero img{width:100%;height:100%;object-fit:cover}
.course-hero figcaption{
  position:absolute;left:0;bottom:0;width:100%;z-index:1;
  padding:3rem clamp(1rem,2vw,1.6rem) 1rem;
  font-family:var(--f-jp);font-weight:700;font-size:.78rem;letter-spacing:.04em;color:var(--cream);
  background:linear-gradient(180deg,transparent,rgba(12,27,51,.7));
}
@media (max-width:680px){.steps{grid-template-columns:1fr;max-width:420px}}

/* reco row（テイクアウト推し3種） */
.reco{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem;margin-top:1.8rem}
.reco__i figure{overflow:hidden;aspect-ratio:4/3}
.reco__i img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--e-out)}
.reco__i:hover img{transform:scale(1.06)}
.reco__i h4{font-family:var(--f-jp);font-weight:700;font-size:.82rem;color:var(--navy);margin-top:.6rem}
:is(.section--navy,.section--wine) .reco__i h4{color:var(--cream)}
.reco__i .p{font-family:var(--f-serif);font-weight:600;color:var(--wine);font-size:1.05rem}
:is(.section--navy,.section--wine) .reco__i .p{color:var(--gold-soft)}

/* takeout list two-col */
.tolist{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(2rem,5vw,4rem);margin-top:clamp(2.4rem,5vw,3.6rem)}
@media (max-width:680px){.tolist{grid-template-columns:1fr;gap:1.6rem}}
.warmnote{display:inline-flex;align-items:center;gap:.7rem;margin-top:1.8rem;font-family:var(--f-jp);font-weight:700;font-size:.9rem;color:var(--wine);background:rgba(135,43,59,.08);border:1px solid rgba(135,43,59,.2);padding:.8rem 1.2rem;border-radius:4px}
:is(.section--navy,.section--wine) .warmnote{color:var(--gold-soft);background:rgba(216,184,120,.1);border-color:rgba(216,184,120,.25)}
.warmnote svg{width:20px;height:20px;stroke:currentColor}

/* scenes（コース利用シーン） */
.scenes{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.6rem);margin-bottom:clamp(2.4rem,5vw,3.6rem)}
.scenes li{position:relative;overflow:hidden;aspect-ratio:3/4}
.scenes img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--e-out)}
.scenes li:hover img{transform:scale(1.06)}
.scenes span{position:absolute;left:0;bottom:0;width:100%;padding:2.4rem 1.2rem 1.1rem;color:var(--cream);
  font-family:var(--f-jp);font-weight:700;font-size:1rem;letter-spacing:.02em;
  background:linear-gradient(transparent,rgba(12,27,51,.85))}
.scenes i{display:block;font-family:var(--f-display);font-weight:600;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft);font-style:normal;margin-bottom:.3rem}
@media (max-width:680px){.scenes{grid-template-columns:1fr;max-width:400px}}

/* course cards */
.courses{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2.4vw,2rem)}
.course{padding:2.2rem 2rem;border:1px solid var(--line);background:var(--paper);position:relative}
.course--reco{background:var(--navy);color:var(--on-dark);border-color:var(--navy)}
.course__label{font-family:var(--f-display);font-weight:700;font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--wine)}
.course--reco .course__label{color:var(--gold-soft)}
.course__price{font-family:var(--f-serif);font-weight:600;font-size:2.8rem;color:var(--wine);margin:.6rem 0 1rem;line-height:1}
.course--reco .course__price{color:var(--cream)}
.course__price small{font-size:.32em;font-family:var(--f-body);color:var(--ink-soft);margin-left:.5em;letter-spacing:.08em}
.course--reco .course__price small{color:var(--on-dark-soft)}
.course p{font-size:.9rem;line-height:1.9;color:var(--ink-soft)}
.course--reco p{color:var(--on-dark-soft)}
.terms{margin-top:1.8rem;font-size:.86rem;color:var(--ink-soft);line-height:1.9}
@media (max-width:680px){.courses{grid-template-columns:1fr}}

/* ============================================================
   ACCESS
   ============================================================ */
.access-key{display:flex;gap:1.2rem;align-items:flex-start;padding:1.6rem 1.8rem;background:var(--navy);color:var(--cream);border-radius:4px;margin-bottom:2.4rem;max-width:52rem}
.access-key svg{width:26px;height:26px;stroke:var(--gold-soft);flex-shrink:0;margin-top:.2rem}
.access-key strong{font-family:var(--f-jp);font-weight:900;font-size:1.1rem;display:block;margin-bottom:.4rem}
.access-key p{font-size:.9rem;color:var(--on-dark-soft);line-height:1.85}
.access{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(1.6rem,4vw,3.5rem);align-items:center}
.access__fig{overflow:hidden;aspect-ratio:4/3}
.access__fig img{width:100%;height:100%;object-fit:cover}
.info{list-style:none;margin-bottom:1.8rem}
.info li{display:flex;gap:1.2rem;padding:1rem 0;border-bottom:1px solid var(--line)}
.info .k{flex-shrink:0;width:5rem;font-family:var(--f-jp);font-weight:700;font-size:.82rem;color:var(--wine)}
.info .v{font-size:.94rem;color:var(--ink);line-height:1.7}
@media (max-width:780px){.access{grid-template-columns:1fr}}

/* ---- 導線（1階 → 2階 → 店頭の3ステップ） ---- */
.route{margin-top:clamp(3rem,6vw,5.5rem)}
.route__head{
  display:flex;align-items:baseline;gap:.6rem 1.6rem;flex-wrap:wrap;
  padding-bottom:1.2rem;border-bottom:1px solid var(--line);
  margin-bottom:clamp(1.8rem,3.5vw,2.8rem);
}
.route__head .eyebrow{flex:0 0 100%}
.route__h{font-family:var(--f-jp);font-weight:900;font-size:var(--t-h3);color:var(--wine);letter-spacing:.02em;line-height:1.35}
.route__note{font-size:.86rem;color:var(--ink-soft);line-height:1.8}
.route__list{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,2.8vw,2.6rem)}
.route__i{position:relative}
.route__rail{display:flex;align-items:center;gap:.9rem;margin-bottom:.9rem}
.route__no{
  font-family:var(--f-display);font-weight:800;font-size:.98rem;line-height:1;
  color:var(--navy);font-variant-numeric:tabular-nums;letter-spacing:.2em;
}
.route__line{flex:1;height:1px;background:var(--gold);display:block}
.route__fig{overflow:hidden;aspect-ratio:3/2;background:var(--navy-deep)}
.route__fig img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--e-out)}
.route__i:hover .route__fig img{transform:scale(1.06)}
.route__t{font-family:var(--f-jp);font-weight:900;font-size:1.02rem;color:var(--navy);margin-top:1.1rem;letter-spacing:.02em}
.route__d{font-size:.87rem;line-height:1.95;color:var(--ink-soft);margin-top:.5rem}
/* ステップ間の金の矢印（ギャップ中央） */
.route__i + .route__i::before{
  content:"";position:absolute;top:.62rem;left:calc(clamp(1.2rem,2.8vw,2.6rem) * -.5);
  width:7px;height:7px;border-top:1px solid var(--gold);border-right:1px solid var(--gold);
  transform:translateX(-50%) rotate(45deg);
}
@media (max-width:820px){
  .route__list{grid-template-columns:1fr;max-width:480px;gap:2.4rem}
  .route__i + .route__i::before{top:-1.5rem;left:1.05rem;transform:rotate(135deg)}
}

/* recruit */
.recruit{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(1.6rem,4vw,3.5rem);align-items:center}
.recruit__fig{overflow:hidden;aspect-ratio:4/3}
.recruit__fig img{width:100%;height:100%;object-fit:cover}
.recruit__p{margin-top:1.3rem;font-size:.96rem;line-height:1.95;color:var(--ink-soft)}
.recruit__jobs{margin-top:1rem;font-family:var(--f-jp);font-weight:700;color:var(--wine);font-size:.94rem}
@media (max-width:780px){.recruit{grid-template-columns:1fr}}

/* ============================================================
   FAQ
   ============================================================ */
.faq{max-width:52rem;margin:0 auto}
/* ---- カテゴリ（18問を4群に畳む） ---- */
.faqg{border-top:1px solid var(--line-strong)}
.faqg:last-child{border-bottom:1px solid var(--line-strong)}
.faqg__btn{width:100%;display:flex;align-items:center;gap:.9rem;padding:1.5rem 0;text-align:left}
.faqg__t{font-family:var(--f-jp);font-weight:900;font-size:1.12rem;color:var(--navy);letter-spacing:.02em}
.faqg__n{
  font-family:var(--f-display);font-weight:700;font-size:.66rem;letter-spacing:.14em;
  color:var(--gold-text);margin-right:auto;
}
.faqg__body{overflow:hidden;height:0;transition:height .5s var(--e-out)}
.faqg__body>div{padding-bottom:.8rem}
/* 群の境目を主役にするため、群の中の設問は点線＋一段小さく */
.faqg .faq__i{border-bottom:1px dotted var(--line)}
.faqg .faq__i:last-child{border-bottom:0}
.faqg .faq__q{padding:1.05rem 0;font-size:.95rem}
/* JS が動かない環境では全群を開いたままにする（永久ロックの回避） */
html:not(.js) .faqg__body{height:auto}

.faq__i{border-bottom:1px solid var(--line)}
.faq__q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.4rem 0;text-align:left;font-family:var(--f-jp);font-weight:700;font-size:1rem;color:var(--navy)}
:is(.faq__q,.faqg__btn) .mk{position:relative;width:16px;height:16px;flex-shrink:0}
:is(.faq__q,.faqg__btn) .mk::before,
:is(.faq__q,.faqg__btn) .mk::after{content:"";position:absolute;background:var(--wine);inset:50% 0;height:2px;margin-top:-1px;transition:transform .4s var(--e-out)}
:is(.faq__q,.faqg__btn) .mk::after{transform:rotate(90deg)}
:is(.faq__q,.faqg__btn)[aria-expanded="true"] .mk::after{transform:rotate(0)}
.faq__a{overflow:hidden;height:0;transition:height .5s var(--e-out)}
.faq__a>div{padding:0 0 1.4rem}
.faq__a p{font-size:.92rem;color:var(--ink-soft);line-height:1.9}
.faq__a a{color:var(--wine);border-bottom:1px solid currentColor}
/* 支払い方法のように種類が多い回答を、区分ごとに読ませるための内訳リスト */
.faq__list{list-style:none;margin-top:.9rem;display:grid;gap:.7rem}
.faq__list li{font-size:.88rem;line-height:1.85;color:var(--ink-soft)}
.faq__list b{
  display:block;font-family:var(--f-jp);font-weight:700;font-size:.8rem;
  letter-spacing:.02em;color:var(--navy);margin-bottom:.1rem;
}

/* ============================================================
   FOOTER（大型センターロゴ）
   ============================================================ */
.footer{position:relative;background:var(--wine-deep);color:var(--on-dark);overflow:hidden;padding:calc(var(--sec) + 1rem) 0 2.5rem}
.footer__media{position:absolute;top:-13%;left:0;width:100%;height:126%;z-index:0;opacity:.1;overflow:hidden;will-change:transform}
.footer__media img{width:100%;height:100%;object-fit:cover}
.footer .wrap{position:relative;z-index:1}
.footer__lead{font-family:var(--f-serif);font-weight:500;font-size:clamp(1.5rem,1rem + 2.6vw,3rem);line-height:1.4;text-align:center;color:var(--cream)}
.footer__lead span{display:block;overflow:hidden}
.footer__lead em{font-style:normal;color:var(--gold-soft);letter-spacing:.08em}
.footer__logo{width:min(70vw,340px);margin:clamp(2.4rem,5vw,3.6rem) auto}
.footer__logo img{width:100%}
.footer__grid{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2rem;padding-top:2.4rem;border-top:1px solid var(--line-cream)}
.footer__brand p{font-size:.86rem;line-height:2;color:var(--on-dark-soft)}
.footer__brand a{color:var(--gold-soft)}
.footer__nav{display:flex;flex-wrap:wrap;gap:.2rem 1.4rem;align-content:flex-start}
/* ナビゲーションリンクなので WCAG 2.2 の Target Size 24px を満たす必要がある
   （本文中のリンクではないため「インライン例外」は使えない） */
.footer__nav a{
  font-family:var(--f-display);font-weight:600;font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--on-dark-soft);transition:color .3s;
  display:inline-flex;align-items:center;min-height:24px;
}
.footer__nav a:hover{color:var(--gold-soft)}
/* Instagram。暗地なので金は極細ラインとホバーだけに使い、文字はクリーム。
   .footer__brand a（金）より後に置いて上書きしている（同一詳細度なので順序で決まる）。
   ハンドルは英字なので --f-display、ラベルとの間は区切りの金ドットで繋ぐ。 */
.footer__sns{margin-top:1.2rem;display:flex;flex-wrap:wrap;gap:.6rem}
.footer__sns a{
  display:inline-flex;align-items:center;gap:.55rem;min-height:24px;
  padding:.52rem 1rem;border:1px solid var(--line-cream);border-radius:999px;
  font-family:var(--f-display);font-weight:600;font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--cream);
  transition:color .3s,border-color .3s,background-color .3s;
}
.footer__sns a:hover{color:var(--gold-soft);border-color:var(--gold-soft);background:rgba(194,154,85,.09)}
.footer__sns svg{width:15px;height:15px;flex:none}
.footer__sns span{
  font-weight:500;letter-spacing:.04em;text-transform:none;color:var(--on-dark-soft);
  padding-left:.55rem;margin-left:.1rem;border-left:1px solid var(--line-cream);
}
@media (max-width:420px){.footer__sns span{display:none}}
.footer__copy{margin-top:2.6rem;text-align:center;font-family:var(--f-display);font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(243,236,221,.66)}
/* コピーライトの隣に置くプライバシーポリシー。和文なので display フォントの
   字間・大文字化を打ち消す。Target Size 24px を満たすため inline-flex + min-height */
.footer__pp{
  display:inline-flex;align-items:center;min-height:24px;margin-left:1.1rem;padding:0 .2rem;
  font-family:var(--f-body);font-size:.72rem;letter-spacing:.04em;text-transform:none;
  color:var(--on-dark-soft);text-decoration:underline;text-underline-offset:.25em;
  text-decoration-color:rgba(216,205,184,.45);transition:color .3s,text-decoration-color .3s;
}
.footer__pp:hover{color:var(--gold-soft);text-decoration-color:var(--gold-soft)}

/* ============================================================
   プライバシーポリシー（native <dialog>）
   ============================================================ */
/* 上のリセット `*{margin:0}` が <dialog> の UA 既定 `margin:auto` を潰す。
   :modal は `position:fixed; inset:0` なので、margin が 0 のままだと中央に来ず
   左上に張り付く。ここで明示的に戻すのが必須。 */
.pp{
  margin:auto;
  width:min(92vw,720px);
  max-height:86vh;max-height:86dvh;   /* dvh 非対応環境のための二段構え */
  display:flex;flex-direction:column;  /* 見出し固定＋本文だけスクロール */
  padding:0;border:0;border-radius:4px;
  background:var(--paper);color:var(--ink);overflow:hidden;
  box-shadow:0 34px 90px rgba(12,27,51,.42);
}
/* ↑の display:flex は UA 既定の `dialog:not([open]){display:none}` も打ち消す。
   閉じている間の <dialog> は :modal ではないので UA の `position:absolute` が効き、
   ページ末尾（static 位置＝footer の直後）に 86dvh の箱として居座って
   文書のスクロール高だけを伸ばす。opacity:0 なので中身は見えず、
   「フッターの下に何も無い余白」だけが残る。一度 showModal() すると
   position が fixed に変わって余白が消えるため、再現条件が分かりにくい。
   閉状態を明示的に display:none へ戻す。fallback（html:not(.js) / html.no-dialog）は
   specificity が上なのでこの規則に勝つ。display の allow-discrete 遷移も本来ここで効く。 */
.pp:not([open]){display:none}
.pp::backdrop{background:rgba(12,27,51,.7)}

/* ヘッダは flex:none で常時見える位置に固定。長い本文でも閉じるボタンを見失わない */
.pp__head{
  flex:none;position:relative;display:flex;align-items:flex-start;gap:1rem;
  padding:clamp(1.5rem,1.1rem + 1.4vw,2.3rem) clamp(1.3rem,1rem + 1.6vw,3.1rem) 1.15rem;
  border-bottom:1px solid var(--line);background:var(--paper);
}
.pp__title{flex:1 1 auto;min-width:0}
.pp__grip{display:none}
.pp__h{
  font-family:var(--f-jp);font-weight:900;color:var(--wine);
  font-size:clamp(1.35rem,1.05rem + 1.1vw,1.85rem);line-height:1.4;margin:.55rem 0 0;
}
.pp__x{
  flex:none;width:40px;height:40px;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:50%;background:var(--paper);
  color:var(--ink-soft);cursor:pointer;transition:color .3s,border-color .3s,background-color .3s;
}
.pp__x:hover{color:var(--wine);border-color:var(--wine);background:rgba(135,43,59,.05)}
.pp__x svg{width:17px;height:17px}

/* 本文。min-height:0 が無いと flex アイテムが縮まずスクロールが死ぬ */
.pp__in{
  flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  padding:1.6rem clamp(1.3rem,1rem + 1.6vw,3.1rem)
          calc(clamp(1.6rem,1.2rem + 1.6vw,2.6rem) + env(safe-area-inset-bottom,0px));
}

/* ---- モバイルは下から出るシート。既にサイト内で使っている挙動に揃える ---- */
@media (max-width:640px){
  .pp{
    width:100%;max-width:none;margin:auto auto 0;   /* 横中央・下端寄せ */
    max-height:88vh;max-height:88dvh;
    border-radius:18px 18px 0 0;
  }
  .pp__head{padding-top:1.7rem}
  .pp__grip{
    display:block;position:absolute;top:.6rem;left:50%;transform:translateX(-50%);
    width:38px;height:4px;border-radius:2px;background:var(--line);
  }
}
.pp__body h3{font-family:var(--f-jp);font-weight:700;color:var(--navy);font-size:.94rem;letter-spacing:.02em;margin:1.9rem 0 .55rem}
/* 先頭の見出しは節間マージンを持たせない。.pp__in の padding だけを効かせて、
   ヘッダ罫線との間隔を他の節と同じリズムに揃える */
.pp__body > h3:first-child{margin-top:0}
.pp__body p,.pp__body li{font-size:.87rem;line-height:1.95;color:var(--ink-soft)}
.pp__body ul{margin:.45rem 0 0;padding-left:1.15rem;list-style:disc}
.pp__body li{margin-bottom:.15rem}
.pp__body a{color:var(--wine);text-decoration:underline;text-underline-offset:.2em}
.pp__body a:hover{color:var(--wine-deep)}
.pp__date{margin-top:2.3rem;padding-top:1.1rem;border-top:1px solid var(--line);font-size:.76rem;color:var(--ink-faint)}
/* 開閉のモーション。@starting-style / allow-discrete 非対応の環境でも
   [open] の状態は同じなので、アニメが付かないだけで表示は壊れない */
@media (prefers-reduced-motion:no-preference){
  .pp{
    opacity:0;transform:translateY(12px) scale(.99);
    transition:opacity .3s var(--e-out),transform .34s var(--e-out),
               overlay .34s allow-discrete,display .34s allow-discrete;
  }
  .pp[open]{opacity:1;transform:none}
  @starting-style{.pp[open]{opacity:0;transform:translateY(12px) scale(.99)}}
  .pp::backdrop{opacity:0;transition:opacity .3s,overlay .3s allow-discrete,display .3s allow-discrete}
  .pp[open]::backdrop{opacity:1}
  @starting-style{.pp[open]::backdrop{opacity:0}}
  @media (max-width:640px){
    .pp{transform:translateY(100%)}                 /* 下からせり上がる */
    @starting-style{.pp[open]{transform:translateY(100%)}}
  }
}

/* JS無効 / <dialog> 非対応。#privacy への通常アンカーとして、ページ末尾に素で表示する。
   モーション用の opacity:0 / transform をここで必ず打ち消すこと（消えたままになる） */
html:not(.js) .pp,html.no-dialog .pp{
  display:block;position:static;width:auto;max-width:none;max-height:none;
  margin:0;opacity:1;transform:none;border-radius:0;
  box-shadow:none;border-top:1px solid var(--line);
}
html:not(.js) .pp__in,html.no-dialog .pp__in{max-height:none;overflow:visible}
html:not(.js) .pp__x,html.no-dialog .pp__x,
html:not(.js) .pp__grip,html.no-dialog .pp__grip{display:none}

/* ============================================================
   固定CTA（モバイル） / ドック（PC）
   ============================================================ */
.dock{position:fixed;right:1.6rem;bottom:1.6rem;z-index:90;display:flex;flex-direction:column;gap:.6rem;opacity:0;transform:translateY(12px);transition:opacity .5s,transform .5s}
.dock.is-on{opacity:1;transform:none}
/* ドックはページ全面に浮くので、ベタ塗りだと**自分と同じ色の面の上で消える**。
   実際にクリーム面では「メニュー」が、ワイン面では「電話・ご予約」が地に同化していた。
   対策は2つ。
   ① 面の色を拾う すりガラス（backdrop-filter）にして、地に対して常に少しズレた色になる
   ② 明暗どちらの地でも輪郭が残る二重リング（内=暗い線／外=明るい線）。
      フォーカスリングで同じ問題を解いたときと同じ考え方（上の :focus-visible 参照）。
   backdrop-filter 非対応ブラウザでは半透明のベタ塗りになるが、
   二重リングと影が効くので消えることはない。 */
.dock__b{
  display:inline-flex;align-items:center;gap:.5em;padding:.85em 1.3em;border-radius:100px;
  font-family:var(--f-display);font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  background:rgba(250,245,234,.58);color:var(--navy);
  -webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6);
  box-shadow:0 0 0 1px rgba(28,35,52,.24), 0 0 0 3px rgba(243,236,221,.5), 0 14px 34px -18px rgba(42,14,24,.6);
  transition:background var(--d-fast) var(--e-out),transform var(--d-fast) var(--e-out);
}
.dock__b:hover{background:rgba(250,245,234,.86);transform:translateY(-2px)}
.dock__b svg{width:1.1em;height:1.1em}
/* 電話は主導線なので、すりガラスにはせず面で塗る。ただしワイン地の上で消えないよう、
   地よりわずかに深い臙脂にして、外側リングを金にする。 */
.dock__b--wine{
  background:rgba(110,31,45,.94);color:var(--cream);
  box-shadow:0 0 0 1px rgba(42,14,24,.55), 0 0 0 3px rgba(216,184,120,.5), 0 14px 34px -18px rgba(42,14,24,.7);
}
.dock__b--wine:hover{background:var(--wine-deep)}
@media (max-width:760px){.dock{display:none}}

.fcta{position:fixed;left:0;bottom:0;width:100%;z-index:95;display:none;grid-template-columns:repeat(4,1fr);background:var(--wine-deep);border-top:1px solid var(--line-cream);padding-bottom:env(safe-area-inset-bottom)}
.fcta a,.fcta button{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.7rem .2rem;font-family:var(--f-jp);font-weight:700;font-size:.66rem;color:var(--on-dark);border-left:1px solid var(--line-cream)}
.fcta a:first-child{border-left:0}
.fcta__call{color:var(--gold-soft)!important}
.fcta svg{width:20px;height:20px;stroke:currentColor}
@media (max-width:760px){.fcta{display:grid}body{padding-bottom:62px}}

/* ボトムシートは撤去（2026-08-29）。
   モバイル固定CTAの「メニュー」を押すとシートが開き、その中身が
   「店内メニュー」と「テイクアウト」の2つだけだった。ところがテイクアウトは
   固定CTAの3番目にも並んでいて**同じ場所へ飛ぶボタンが2つ**あった。
   シートを挟む意味が無いので、固定CTAを 電話／店内メニュー／テイクアウト／アクセス の
   直リンク4つに変更した。app.js の sheet() と GA4 の sheet_open も同時に撤去済み。 */
/* ============================================================
   NEWS BAR（トップの「お知らせ」1本）
   毎月ここを差し替える。複数件を並べる想定はしていない＝
   常に「いま一番伝えたい1件」だけを置く枠として運用する。
   ブロック全体がリンクなので、中に別のリンクを入れないこと。

   2026-09-04 現在、この枠は**ソフトクリーム新発売の告知**で埋まっている
   （2026-09-03 発売／リンク先は #cafe）。
   ・8/31 にパブリックビューイングの告知を取り下げて一度空にしたあと、
     退避先のコメントに保管しておいたマークアップを流用して復帰させた。
   ・**枠は1つしかない。**次の告知を出すときはここを差し替える＝
     ソフトクリームの告知は消えることになるので、どちらを出すか先に決めること。
   ============================================================ */
.newsbar{background:var(--paper);border-block:1px solid var(--line)}
.newsbar__a{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.4rem;align-items:center;
  max-width:var(--maxw);margin-inline:auto;padding:clamp(1.5rem,3.2vw,2.4rem) var(--gutter);
  transition:background var(--d-fast) var(--e-out);
}
.newsbar__a:hover{background:var(--sand)}
.newsbar__meta{display:flex;align-items:center;gap:.9rem;margin-bottom:.7rem}
.newsbar__meta i{width:2.2rem;height:1px;background:var(--gold);flex:none}
.newsbar__tag{
  font-family:var(--f-display);font-weight:700;font-size:.62rem;letter-spacing:.22em;
  text-transform:uppercase;color:var(--wine);white-space:nowrap;
}
.newsbar__date{
  font-family:var(--f-display);font-weight:600;font-size:.66rem;letter-spacing:.14em;
  color:var(--ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums;
}
.newsbar__t{font-family:var(--f-jp);font-weight:900;font-size:var(--t-h3);line-height:1.5;color:var(--wine)}
.newsbar__p{margin-top:.5rem;font-size:var(--t-base);line-height:1.9;color:var(--ink-soft)}
/* 矢印は円で受ける。hover で右へ動かすのはリンク全体に掛ける */
.newsbar__go{
  width:clamp(38px,4vw,46px);height:clamp(38px,4vw,46px);border-radius:50%;flex:none;
  border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;
  color:var(--navy);transition:transform var(--d-fast) var(--e-out),background var(--d-fast),border-color var(--d-fast),color var(--d-fast);
}
.newsbar__go svg{width:18px;height:18px}
.newsbar__a:hover .newsbar__go{transform:translateX(5px);background:var(--wine);border-color:var(--wine);color:var(--cream)}
@media (max-width:560px){
  .newsbar__a{grid-template-columns:1fr;gap:1.1rem}
  .newsbar__go{justify-self:end}
}
