/* ==========================================================================
   リストランテ・四季の森 — 共通スタイルシート
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;500;600;800&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=Noto+Sans+JP:wght@300;400;500;700&display=swap');

/* ---------- 1. デザイントークン ---------- */
:root{
  /* カラー（背景が暗すぎるとのフィードバックを受け、深緑のトーンを全体的に明るく調整） */
  --color-forest-950:#1a2e20;
  --color-forest-900:#26402c;
  --color-forest-850:#2e4d35;
  --color-forest-700:#3c6142;
  --color-forest-600:#4a7350;
  --color-forest-500:#5e8b64;
  --color-forest-300:#93b696;

  --color-gold-500:#c9a227;
  --color-gold-300:#e3cf8f;
  --color-gold-deep:#8a6c1d;   /* 明背景上のリンク・強調用（コントラスト確保） */

  --color-cream-100:#f7f2e7;
  --color-cream-200:#efe7d4;

  --color-text-dark:#1c1c1c;
  --color-text-light:#f5f0e6;
  --color-text-muted-dark:#5b5346;
  --color-text-muted-light:#d6cfba;

  --color-danger:#a4432b;

  /* フォント */
  --font-heading-jp:'Shippori Mincho', serif;
  --font-heading-en:'Cormorant Garamond', serif;
  --font-body:'Noto Sans JP', sans-serif;

  /* スペーシング */
  --space-1:8px;  --space-2:16px; --space-3:24px; --space-4:40px;
  --space-5:64px; --space-6:96px; --space-7:140px;

  /* その他 */
  --radius-sm:4px; --radius-md:12px; --radius-full:999px;
  --shadow-float:0 20px 40px rgba(6,12,8,0.35);
  --shadow-soft:0 8px 24px rgba(6,12,8,0.18);
  --ease-standard:cubic-bezier(.16,1,.3,1);
  --transition-base:.4s var(--ease-standard);
  --transition-fast:.2s var(--ease-standard);
  --focus-ring:0 0 0 3px rgba(201,162,39,.55);
  --content-measure:62ch;
  --header-h:84px;
}

/* ---------- 2. リセット / ベース ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--color-forest-950);
  color:var(--color-text-light);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4{
  font-family:var(--font-heading-jp);
  font-weight:600;
  line-height:1.4;
  margin:0 0 var(--space-2);
  letter-spacing:.02em;
}
p{margin:0 0 var(--space-2);}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
ul{list-style:none;margin:0;padding:0;}
:focus{outline:none;}
:focus-visible{box-shadow:var(--focus-ring);outline:none;border-radius:var(--radius-sm);}

.eyebrow{
  display:inline-flex;align-items:center;gap:.6em;
  font-family:var(--font-heading-en);
  font-style:italic;
  font-size:1.05rem;
  letter-spacing:.14em;
  color:var(--color-gold-300);
  text-transform:uppercase;
  margin-bottom:var(--space-2);
}
.eyebrow::before{content:'';width:28px;height:1px;background:var(--color-gold-500);}

.section-title{
  font-size:clamp(1.9rem,4vw,3rem);
  color:var(--color-text-light);
}
.section-title--dark{color:var(--color-text-dark);}
.section-lead{
  max-width:var(--content-measure);
  color:var(--color-text-muted-light);
  font-size:1.05rem;
}
.section-lead--dark{color:var(--color-text-muted-dark);}

.container{
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:0 var(--space-3);
}

.skip-link{
  position:absolute;left:-999px;top:0;z-index:2000;
  background:var(--color-gold-500);color:var(--color-forest-950);
  padding:.8em 1.4em;border-radius:0 0 var(--radius-sm) 0;
  font-weight:700;
}
.skip-link:focus{left:0;}

/* Reduced motion: 全アニメーション・トランジションを実質無効化 */
@media (prefers-reduced-motion: reduce){
  *{transition-duration:.01ms !important; animation-duration:.01ms !important; scroll-behavior:auto !important;}
}

/* ---------- 3. 画像プレースホルダー（.media） ---------- */
.media{
  position:relative;
  background-size:cover;background-position:center;
  overflow:hidden;
  isolation:isolate;
}
/* プレースホルダー時のみ、単調なグラデーションに質感を足す。実写真(.has-photo)には
   写真を濁らせないよう、ごく薄い自然な陰影のみを重ねる。 */
.media::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:
    radial-gradient(circle at 20% 20%, rgba(255,255,255,.10), transparent 45%),
    repeating-linear-gradient(135deg, rgba(255,255,255,.05) 0 2px, transparent 2px 26px);
  mix-blend-mode:overlay;
}
.media.has-photo::after{
  background-image:linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,.18) 100%);
  mix-blend-mode:normal;
}
/* background-image を使う（background 一括指定だと .media の background-size/position を
   リセットしてしまい、実写真が原寸表示＝ズーム状態になるバグの原因だったため） */
.media--1{background-image:linear-gradient(155deg,var(--color-forest-950),var(--color-forest-700) 55%,var(--color-gold-500) 145%);}
.media--2{background-image:linear-gradient(200deg,var(--color-forest-900),var(--color-forest-500) 60%,var(--color-gold-300) 150%);}
.media--3{background-image:linear-gradient(115deg,var(--color-forest-700),var(--color-forest-950) 50%,var(--color-gold-500) 130%);}
.media--4{background-image:linear-gradient(250deg,var(--color-gold-500) -20%,var(--color-forest-700) 45%,var(--color-forest-950) 110%);}
.media--hero{background-image:linear-gradient(160deg,var(--color-forest-950) 0%,var(--color-forest-700) 55%,var(--color-forest-500) 100%);}

.avatar{
  width:56px;height:56px;flex:0 0 auto;border-radius:50%;
  display:grid;place-items:center;
  background-image:conic-gradient(from 200deg, var(--color-gold-500), var(--color-forest-500), var(--color-gold-300), var(--color-gold-500));
  background-size:cover;background-position:center;background-repeat:no-repeat;
  color:var(--color-forest-950);
  font-family:var(--font-heading-en);font-weight:600;font-size:1.3rem;
}
.avatar.has-photo{color:transparent;}

/* ---------- 4. ボタン ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.6em;
  padding:.95em 1.9em;
  border-radius:var(--radius-full);
  font-family:var(--font-body);
  font-weight:500;font-size:.95rem;letter-spacing:.03em;
  transition:transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast), color var(--transition-fast);
  white-space:nowrap;
}
.btn:hover{transform:translateY(-3px);}
.btn:active{transform:translateY(-1px);}
.btn--gold{background:var(--color-gold-500);color:var(--color-forest-950);}
.btn--gold:hover{background:var(--color-gold-300);box-shadow:var(--shadow-soft);}
.btn--outline{border:1px solid rgba(245,240,230,.45);color:var(--color-text-light);}
.btn--outline:hover{border-color:var(--color-gold-300);color:var(--color-gold-300);}
.btn--outline-dark{border:1px solid rgba(28,28,28,.3);color:var(--color-text-dark);}
.btn--outline-dark:hover{border-color:var(--color-gold-deep);color:var(--color-gold-deep);}

.link-arrow{
  display:inline-flex;align-items:center;gap:.5em;
  color:var(--color-gold-300);
  font-weight:500;
  border-bottom:1px solid transparent;
  transition:gap var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
.link-arrow svg{width:1em;height:1em;transition:transform var(--transition-fast);}
.link-arrow:hover{gap:.8em;border-color:var(--color-gold-300);}
.link-arrow:hover svg{transform:translateX(3px);}
.link-arrow--dark{color:var(--color-gold-deep);}
.link-arrow--dark:hover{border-color:var(--color-gold-deep);}

/* ---------- 5. ヘッダー / ナビ ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:900;
  height:var(--header-h);
  display:flex;align-items:center;
  background:transparent;
  transition:background var(--transition-base), box-shadow var(--transition-base), height var(--transition-base);
}
.site-header::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(15,26,19,.75), rgba(15,26,19,0));
  opacity:1;transition:opacity var(--transition-base);
  pointer-events:none;
}
.site-header.header--scrolled{
  height:calc(var(--header-h) - 16px);
  background:rgba(15,26,19,.92);
  backdrop-filter:blur(10px);
  box-shadow:0 10px 30px rgba(0,0,0,.28);
}
.site-header.header--scrolled::before{opacity:0;}

.header-inner{
  position:relative;z-index:1;
  width:100%;
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-2);
}
.brand{
  display:flex;flex-direction:column;line-height:1.1;
  font-family:var(--font-heading-en);
  color:var(--color-text-light);
}
.brand-en{font-size:1.35rem;letter-spacing:.08em;font-style:italic;}
.brand-jp{font-family:var(--font-heading-jp);font-size:.72rem;letter-spacing:.24em;color:var(--color-gold-300);margin-top:2px;}

.header-actions{display:flex;align-items:center;gap:var(--space-2);}

.btn-reserve{
  padding:.75em 1.6em;
  border-radius:var(--radius-full);
  background:var(--color-gold-500);
  color:var(--color-forest-950);
  font-weight:700;font-size:.88rem;letter-spacing:.04em;
  transition:transform var(--transition-fast), box-shadow var(--transition-fast);
}
.btn-reserve:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft);}
.btn-reserve:active{transform:translateY(0);}

.hamburger{
  width:52px;height:52px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  border-radius:50%;
  border:1px solid rgba(245,240,230,.3);
}
.hamburger span{width:20px;height:1.5px;background:var(--color-text-light);transition:transform var(--transition-fast), opacity var(--transition-fast);}
.hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg);}
.hamburger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg);}

/* ハンバーガー全画面オーバーレイ */
.nav-overlay{
  position:fixed;inset:0;z-index:950;
  background:var(--color-forest-950);
  clip-path:circle(2% at calc(100% - 40px) 44px);
  transition:clip-path .6s var(--ease-standard);
  visibility:hidden;
  display:flex;flex-direction:column;
}
.nav-overlay.is-open{clip-path:circle(150% at calc(100% - 40px) 44px);visibility:visible;}
.nav-overlay-top{display:flex;justify-content:flex-end;align-items:center;height:var(--header-h);padding:0 var(--space-3);}
.nav-overlay-body{
  flex:1;display:flex;flex-direction:column;justify-content:center;
  padding:0 max(var(--space-3), 6vw);
  overflow-y:auto;
}
.nav-list{display:flex;flex-direction:column;}
.nav-list li{border-bottom:1px solid rgba(245,240,230,.12);}
.nav-list li:first-child{border-top:1px solid rgba(245,240,230,.12);}
.nav-link{
  display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);
  padding:var(--space-2) .25em;
}
.nav-link-main{
  font-family:var(--font-heading-jp);font-weight:600;
  font-size:clamp(1.5rem,4.4vw,2.4rem);
  color:var(--color-text-light);
  transition:color var(--transition-fast), letter-spacing var(--transition-fast);
}
.nav-link-sub{
  font-size:.82rem;color:var(--color-text-muted-light);
  font-family:var(--font-body);white-space:nowrap;
}
.nav-link:hover .nav-link-main, .nav-link:focus-visible .nav-link-main{color:var(--color-gold-300);letter-spacing:.03em;}
.nav-overlay-foot{
  padding:var(--space-3) max(var(--space-3), 6vw) var(--space-4);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);
  color:var(--color-text-muted-light);font-size:.85rem;
}

body.nav-lock{overflow:hidden;}

/* ---------- 6. Home専用ドットナビゲーション ---------- */
.dot-nav{
  position:fixed;right:var(--space-2);top:50%;transform:translateY(-50%);
  z-index:400;
  display:flex;flex-direction:column;align-items:center;gap:14px;
}
.dot-nav::before{
  content:'';position:absolute;left:50%;top:-18px;bottom:-18px;width:1px;
  background:linear-gradient(rgba(245,240,230,0), rgba(245,240,230,.25), rgba(245,240,230,0));
  transform:translateX(-50%);z-index:-1;
}
.dot-nav a{
  width:9px;height:9px;border-radius:50%;
  background:rgba(245,240,230,.3);
  border:1px solid transparent;
  transition:background var(--transition-fast), transform var(--transition-fast), border-color var(--transition-fast);
}
.dot-nav a:hover{transform:scale(1.3);}
.dot-nav a.is-active{background:var(--color-gold-500);border-color:var(--color-gold-300);transform:scale(1.4);}
@media (max-width:1024px){.dot-nav{display:none;}}

/* ---------- 7. ヒーロー ---------- */
.hero{
  position:relative;min-height:100svh;display:flex;flex-direction:column;
  color:var(--color-text-light);overflow:hidden;
}
.hero-media{position:absolute;inset:-8% -4%;z-index:-2;}
.hero::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg, rgba(15,26,19,.35) 0%, rgba(15,26,19,.55) 60%, rgba(15,26,19,.92) 100%);
}
.hero-content{
  flex:1;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;
  max-width:820px;margin:0 auto;width:100%;
  padding:calc(var(--header-h) + var(--space-4)) var(--space-3) var(--space-4);
  text-align:left;
}
.hero-eyebrow{
  font-family:var(--font-heading-en);font-style:italic;color:var(--color-gold-300);
  letter-spacing:.2em;text-transform:uppercase;font-size:1rem;margin-bottom:var(--space-2);
}
.hero-title{
  font-size:clamp(2.5rem,6vw,4.6rem);
  color:#fff;margin-bottom:var(--space-2);
}
.hero-title .split-line{display:block;overflow:hidden;}
.hero-sub{color:var(--color-text-muted-light);max-width:52ch;font-size:1.08rem;margin-bottom:var(--space-3);}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.hero-scrolldown{
  align-self:center;margin-bottom:var(--space-3);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  color:var(--color-text-muted-light);font-size:.75rem;letter-spacing:.18em;
}
.hero-scrolldown .line{width:1px;height:34px;background:linear-gradient(var(--color-gold-500), transparent);animation:bob 2.2s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0);opacity:1;}50%{transform:translateY(10px);opacity:.3;}}

/* ---------- 8. セクション区切り(森モチーフ) ---------- */
.divider{
  display:flex;justify-content:center;padding:var(--space-3) 0;
  color:var(--color-gold-500);opacity:.75;
}
.divider svg{width:120px;height:28px;}

/* ---------- 9. セクション共通 ---------- */
.section{padding:var(--space-7) 0;}
.section--dark{background:var(--color-forest-950);}
.section--panel{background:var(--color-forest-900);}
.section--light{background:var(--color-cream-100);color:var(--color-text-dark);}
.section--light .section-title{color:var(--color-text-dark);}
.section-head{max-width:640px;margin-bottom:var(--space-5);}
.section-head--center{margin-left:auto;margin-right:auto;text-align:center;}

/* コンセプト特徴カード */
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);margin-top:var(--space-4);}
.feature-card{
  padding:var(--space-3);border:1px solid rgba(245,240,230,.12);border-radius:var(--radius-md);
  background:rgba(245,240,230,.07);
  transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);
}
.feature-card:hover,.feature-card:active{transform:translateY(-8px);box-shadow:var(--shadow-float);border-color:rgba(201,162,39,.4);}
.feature-card-icon{width:42px;height:42px;margin-bottom:var(--space-2);color:var(--color-gold-500);}
.feature-card h3{font-size:1.25rem;color:var(--color-text-light);}
.feature-card p{color:var(--color-text-muted-light);font-size:.95rem;margin:0;}

/* 数字カウントアップ */
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);margin-top:var(--space-5);border-top:1px solid rgba(245,240,230,.14);padding-top:var(--space-4);}
.stat{text-align:left;}
.stat-num{font-family:var(--font-heading-en);font-size:clamp(2.2rem,4vw,3.2rem);color:var(--color-gold-300);line-height:1;}
.stat-num .suffix{font-size:.5em;margin-left:.1em;}
.stat-label{color:var(--color-text-muted-light);font-size:.88rem;letter-spacing:.06em;margin-top:6px;}

/* シェフ抜粋 */
.chef-block{display:grid;grid-template-columns:280px 1fr;gap:var(--space-5);align-items:center;}
.chef-portrait{aspect-ratio:4/5;border-radius:var(--radius-md);}
.chef-name{font-family:var(--font-heading-en);font-style:italic;color:var(--color-gold-300);font-size:1.1rem;margin-bottom:2px;}
.chef-role{color:var(--color-text-muted-light);font-size:.85rem;letter-spacing:.1em;margin-bottom:var(--space-2);}
.chef-points{margin:var(--space-2) 0 var(--space-3);}
.chef-points li{display:flex;gap:.7em;padding:.4em 0;color:var(--color-text-muted-light);}
.chef-points li::before{content:'四';font-family:var(--font-heading-jp);color:var(--color-gold-500);font-size:.8em;}

/* メニュー抜粋カード / 詳細ページのメニュー品目カード共通 */
.menu-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-top:var(--space-4);}
.menu-card{border-radius:var(--radius-md);overflow:hidden;background:rgba(245,240,230,.07);border:1px solid rgba(245,240,230,.16);
  transition:transform var(--transition-base), box-shadow var(--transition-base);}
.menu-card:hover,.menu-card:active{transform:translateY(-8px);box-shadow:var(--shadow-float);}
.menu-card .media{aspect-ratio:4/3;}
.menu-card-body{padding:var(--space-2);}
.menu-card-body h3{font-size:1.05rem;margin-bottom:4px;}
.menu-card-body p{font-size:.85rem;color:var(--color-text-muted-light);margin-bottom:8px;}
.menu-card-price{font-family:var(--font-heading-en);color:var(--color-gold-300);font-size:1.1rem;}

/* 店舗紹介抜粋 */
.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:var(--space-3);}
.about-media-a{aspect-ratio:4/5;border-radius:var(--radius-md);}
.about-media-b{aspect-ratio:1/1;border-radius:var(--radius-md);align-self:end;}
.about-copy{grid-column:1/-1;margin-top:var(--space-3);display:flex;gap:var(--space-5);flex-wrap:wrap;}
.about-fact dt{font-size:.78rem;letter-spacing:.1em;color:var(--color-gold-300);margin-bottom:4px;}
.about-fact dd{margin:0;color:var(--color-text-muted-light);}

/* ギャラリー抜粋グリッド */
.gallery-grid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:110px;gap:var(--space-1);margin-top:var(--space-4);}
.gallery-grid li{position:relative;}
.gallery-grid .media{
  display:block;width:100%;height:100%;
  border-radius:var(--radius-sm);cursor:pointer;transition:transform var(--transition-base), box-shadow var(--transition-base);
}
.gallery-grid .media:hover,.gallery-grid .media:active{transform:scale(1.03);box-shadow:var(--shadow-float);z-index:2;}
.gallery-grid li:nth-child(1),.gallery-grid li:nth-child(4){grid-column:span 2;grid-row:span 2;}

/* お客様の声 */
.review-track{display:flex;gap:var(--space-3);overflow-x:auto;padding:var(--space-1) var(--space-1) var(--space-3);scroll-snap-type:x mandatory;margin-top:var(--space-4);}
.review-track::-webkit-scrollbar{height:6px;}
.review-track::-webkit-scrollbar-thumb{background:rgba(245,240,230,.2);border-radius:var(--radius-full);}
.review-card{
  scroll-snap-align:start;flex:0 0 min(340px,80vw);
  padding:var(--space-3);border-radius:var(--radius-md);
  background:rgba(245,240,230,.08);border:1px solid rgba(245,240,230,.16);
}
.review-top{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);}
.review-name{font-weight:700;font-size:.95rem;}
.review-stars{color:var(--color-gold-500);font-size:.85rem;letter-spacing:2px;}
.review-body{color:var(--color-text-muted-light);font-size:.92rem;margin:0;}

/* アクセスCTA */
.access-cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);align-items:center;}
.access-map-mini{aspect-ratio:4/3;border-radius:var(--radius-md);}
.access-fact-list{margin:var(--space-2) 0 var(--space-3);}
.access-fact-list li{display:flex;gap:var(--space-2);padding:.5em 0;border-bottom:1px solid rgba(245,240,230,.16);}
.access-fact-list dt{width:90px;flex:none;color:var(--color-gold-300);font-size:.85rem;letter-spacing:.06em;}
.access-fact-list dd{margin:0;color:var(--color-text-muted-light);}

/* お知らせ */
.news-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);margin-top:var(--space-4);}
.news-card{
  padding:var(--space-3);border-radius:var(--radius-md);background:rgba(245,240,230,.07);border:1px solid rgba(245,240,230,.16);
  transition:transform var(--transition-base), box-shadow var(--transition-base);
  display:flex;flex-direction:column;gap:var(--space-1);
}
.news-card:hover,.news-card:active{transform:translateY(-8px);box-shadow:var(--shadow-float);}
.news-meta{display:flex;gap:.6em;align-items:center;font-size:.78rem;color:var(--color-text-muted-light);}
.tag{
  display:inline-block;padding:.25em .8em;border-radius:var(--radius-full);
  background:rgba(201,162,39,.14);color:var(--color-gold-300);font-size:.72rem;letter-spacing:.05em;
}
.news-card h3{font-size:1.1rem;margin:4px 0;}
.news-card p{color:var(--color-text-muted-light);font-size:.9rem;margin:0;}

/* ---------- 10. フッター ---------- */
.site-footer{background:var(--color-forest-950);border-top:1px solid rgba(245,240,230,.16);padding:var(--space-5) 0 var(--space-3);}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:var(--space-4);}
.footer-brand .brand-en{font-size:1.6rem;}
.footer-brand p{color:var(--color-text-muted-light);font-size:.88rem;margin-top:var(--space-2);max-width:34ch;}
.footer-social{display:flex;gap:var(--space-2);margin-top:var(--space-3);}
.footer-social a{width:38px;height:38px;border-radius:50%;border:1px solid rgba(245,240,230,.25);display:grid;place-items:center;transition:border-color var(--transition-fast), color var(--transition-fast);}
.footer-social a:hover{border-color:var(--color-gold-300);color:var(--color-gold-300);}
.footer-col h4{font-size:.85rem;letter-spacing:.1em;color:var(--color-gold-300);margin-bottom:var(--space-2);}
.footer-col li{margin-bottom:.6em;}
.footer-col a{color:var(--color-text-muted-light);transition:color var(--transition-fast);}
.footer-col a:hover{color:var(--color-text-light);}
.footer-bottom{margin-top:var(--space-5);padding-top:var(--space-2);border-top:1px solid rgba(245,240,230,.08);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-1);color:var(--color-text-muted-light);font-size:.78rem;}

/* ---------- 11. パンくず / ページヒーロー(詳細ページ) ---------- */
.breadcrumb{padding:calc(var(--header-h) + var(--space-2)) 0 0;font-size:.82rem;color:var(--color-text-muted-light);}
.breadcrumb a{color:var(--color-text-muted-light);border-bottom:1px solid transparent;}
.breadcrumb a:hover{color:var(--color-gold-300);border-color:var(--color-gold-300);}
.page-hero{position:relative;padding:var(--space-3) 0 var(--space-6);overflow:hidden;}
.page-hero-media{position:absolute;inset:0;z-index:-2;}
.page-hero::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg, rgba(15,26,19,.35), rgba(15,26,19,.92));}
.page-hero-inner{padding-top:var(--space-5);max-width:760px;}
.page-hero .eyebrow{color:var(--color-gold-300);}
.page-hero h1{color:#fff;font-size:clamp(2.1rem,5vw,3.4rem);}
.page-hero p{color:var(--color-text-muted-light);max-width:56ch;}

/* ---------- 12. タブ(メニューページ) ---------- */
.tabs{display:flex;gap:var(--space-1);flex-wrap:wrap;border-bottom:1px solid rgba(245,240,230,.12);margin-bottom:var(--space-4);}
.tab{padding:.9em 1.4em;font-size:.92rem;color:var(--color-text-muted-light);border-bottom:2px solid transparent;transition:color var(--transition-fast), border-color var(--transition-fast);}
.tab:hover{color:var(--color-text-light);}
.tab[aria-selected="true"]{color:var(--color-gold-300);border-color:var(--color-gold-500);}
.tab-panel{display:none;}
.tab-panel.is-active{display:block;}
.menu-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2) var(--space-4);}
.menu-item{display:flex;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px dashed rgba(245,240,230,.14);}
.menu-item h3{font-size:1.05rem;margin-bottom:2px;}
.menu-item p{font-size:.85rem;color:var(--color-text-muted-light);margin:0;}
.menu-item-price{font-family:var(--font-heading-en);color:var(--color-gold-300);white-space:nowrap;}

.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);margin-top:var(--space-3);}
.course-card{padding:var(--space-3);border:1px solid rgba(245,240,230,.14);border-radius:var(--radius-md);background:rgba(245,240,230,.07);}
.course-card h3{color:var(--color-gold-300);font-size:1.15rem;}
.course-card .course-price{font-family:var(--font-heading-en);font-size:1.6rem;margin:var(--space-1) 0;}
.course-card ul{color:var(--color-text-muted-light);font-size:.88rem;}
.course-card li{padding:.25em 0;}

/* ---------- 13. こだわり(concept.html)専用 ---------- */
.chef-profile{display:grid;grid-template-columns:320px 1fr;gap:var(--space-5);align-items:start;}
.chef-profile-media{aspect-ratio:4/5;border-radius:var(--radius-md);}
.ingredient-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin-top:var(--space-4);}
.ingredient-card{border-radius:var(--radius-md);overflow:hidden;background:rgba(245,240,230,.07);border:1px solid rgba(245,240,230,.16);}
.ingredient-card .media{aspect-ratio:16/10;}
.ingredient-card-body{padding:var(--space-2);}
.philosophy-copy{max-width:var(--content-measure);color:var(--color-text-muted-light);}
.philosophy-copy p{margin-bottom:var(--space-2);}

/* ---------- 14. 店舗紹介(about.html)専用 ---------- */
.about-media-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:180px;gap:var(--space-1);}
.about-media-grid li:nth-child(1){grid-column:span 2;grid-row:span 2;}
.fact-table{width:100%;border-collapse:collapse;margin-top:var(--space-3);}
.fact-table th,.fact-table td{text-align:left;padding:var(--space-1) var(--space-2);border-bottom:1px solid rgba(245,240,230,.12);font-size:.92rem;}
.fact-table th{width:200px;color:var(--color-gold-300);font-weight:500;letter-spacing:.05em;}
.info-list{margin-top:var(--space-3);display:grid;grid-template-columns:repeat(2,1fr);gap:.5em var(--space-3);}
.info-list li{color:var(--color-text-muted-light);font-size:.92rem;padding-left:1.4em;position:relative;}
.info-list li::before{content:'';position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--color-gold-500);}

/* ---------- 15. ギャラリー(gallery.html)専用 ---------- */
.filter-bar{display:flex;gap:var(--space-1);flex-wrap:wrap;margin-bottom:var(--space-4);}
.filter-btn{padding:.6em 1.3em;border-radius:var(--radius-full);border:1px solid rgba(245,240,230,.2);font-size:.85rem;color:var(--color-text-muted-light);transition:all var(--transition-fast);}
.filter-btn:hover{border-color:var(--color-gold-300);color:var(--color-text-light);}
.filter-btn[aria-pressed="true"]{background:var(--color-gold-500);border-color:var(--color-gold-500);color:var(--color-forest-950);}
.masonry{columns:4 220px;column-gap:var(--space-2);}
.masonry-item{break-inside:avoid;margin-bottom:var(--space-2);border-radius:var(--radius-sm);overflow:hidden;cursor:pointer;}
.masonry-item .media{display:block;width:100%;border:0;padding:0;font:inherit;transition:transform var(--transition-base);}
.masonry-item:hover .media,.masonry-item:active .media{transform:scale(1.05);}
.masonry-item[hidden]{display:none;}

.lightbox{position:fixed;inset:0;z-index:1200;background:rgba(8,14,10,.94);display:none;align-items:center;justify-content:center;padding:var(--space-3);}
.lightbox.is-open{display:flex;}
.lightbox-figure{max-width:min(920px,90vw);width:100%;}
.lightbox-figure .media{width:100%;aspect-ratio:4/3;border-radius:var(--radius-md);}
.lightbox-caption{display:flex;justify-content:space-between;color:var(--color-text-muted-light);font-size:.85rem;margin-top:var(--space-1);}
.lightbox-close{position:absolute;top:var(--space-3);right:var(--space-3);width:46px;height:46px;border-radius:50%;border:1px solid rgba(245,240,230,.3);}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:1px solid rgba(245,240,230,.3);display:grid;place-items:center;}
.lightbox-prev{left:var(--space-3);}
.lightbox-next{right:var(--space-3);}

/* ---------- 16. アクセス・予約(access.html)専用 ---------- */
.access-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5);}
.map-frame{width:100%;aspect-ratio:4/3;border-radius:var(--radius-md);border:0;filter:grayscale(.2) sepia(.15);}
.reservation-panel{background:var(--color-cream-100);color:var(--color-text-dark);border-radius:var(--radius-md);padding:var(--space-4);}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-top:var(--space-2);}
.form-field{display:flex;flex-direction:column;gap:.4em;}
.form-field.full{grid-column:1/-1;}
.form-field label{font-size:.85rem;font-weight:700;color:var(--color-text-dark);}
.form-field input,.form-field select,.form-field textarea{
  padding:.85em 1em;border:1px solid rgba(28,28,28,.2);border-radius:var(--radius-sm);
  background:#fff;color:var(--color-text-dark);font:inherit;
}
.form-field input:focus-visible,.form-field select:focus-visible,.form-field textarea:focus-visible{box-shadow:var(--focus-ring);}
.form-note{font-size:.78rem;color:var(--color-text-muted-dark);margin-top:var(--space-1);}
.form-submit{margin-top:var(--space-3);}

.toast{
  position:fixed;right:var(--space-3);bottom:var(--space-3);z-index:1500;
  background:var(--color-forest-900);border:1px solid rgba(201,162,39,.5);
  color:var(--color-text-light);padding:1em 1.4em;border-radius:var(--radius-md);
  box-shadow:var(--shadow-float);
  display:flex;align-items:center;gap:.7em;max-width:min(360px,80vw);
  transform:translateY(20px);opacity:0;pointer-events:none;
  transition:transform var(--transition-base), opacity var(--transition-base);
}
.toast.is-visible{transform:translateY(0);opacity:1;}
.toast svg{color:var(--color-gold-500);flex:none;width:22px;height:22px;}

/* ---------- 17. お知らせ(news.html)専用 ---------- */
.news-list-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);}

/* ---------- 18. 404 ---------- */
.error-page{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-4);}
.error-num{font-family:var(--font-heading-en);font-style:italic;color:var(--color-gold-300);font-size:clamp(5rem,16vw,9rem);line-height:1;}

/* ---------- 19. .reveal (初期状態は表示。非表示化はGSAPのgsap.from()がインラインstyleで担うため
   CDN読み込み失敗時もコンテンツが見えなくならない) ---------- */
.reveal{opacity:1;}

/* ---------- 20. レスポンシブ ---------- */
@media (max-width:1024px){
  .feature-grid,.menu-card-grid{grid-template-columns:repeat(2,1fr);}
  .chef-block,.chef-profile,.access-cta-grid,.access-detail-grid,.about-grid{grid-template-columns:1fr;}
  .chef-portrait,.chef-profile-media{max-width:320px;}
  .stat-row{grid-template-columns:repeat(3,1fr);}
  .news-card-grid,.news-list-grid,.ingredient-list{grid-template-columns:repeat(2,1fr);}
  .masonry{columns:3 180px;}
  .form-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:767px){
  :root{--header-h:72px;}
  .container{padding:0 var(--space-2);}
  .feature-grid,.menu-card-grid,.stat-row,.news-card-grid,.news-list-grid,.ingredient-list,.course-grid,.menu-list,.info-list{grid-template-columns:1fr;}
  .about-media-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:130px;}
  .gallery-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:90px;}
  .masonry{columns:2 140px;}
  .footer-grid{grid-template-columns:1fr;gap:var(--space-3);}
  .btn-reserve{padding:.6em 1.1em;font-size:.78rem;}
  .header-actions{gap:var(--space-1);}
  section{padding:var(--space-5) 0;}
  .section{padding:var(--space-5) 0;}
}
