@charset "UTF-8";
/* =====================================================================
   La Aichi Farm ｜ 純国産ジュエリーライチ  ランディングページ v2.0
   ※株式会社ヒダカラ 制作イメージ（サンプル）
   テイスト：ルビー（ライチ）× ローズ × 新緑 × シャンパンゴールド
   上品・みずみずしい・宝石のような果実
   ===================================================================== */

/* ---------- セルフホストフォント（外部CDN不使用） ---------- */
@font-face{
  font-family:"Shippori Mincho B1"; font-style:normal; font-weight:600; font-display:swap;
  src:url("../fonts/ShipporiMinchoB1-SemiBold.woff2") format("woff2");
}
@font-face{
  font-family:"Shippori Mincho B1"; font-style:normal; font-weight:700; font-display:swap;
  src:url("../fonts/ShipporiMinchoB1-Bold.woff2") format("woff2");
}
@font-face{
  font-family:"Shippori Mincho B1"; font-style:normal; font-weight:800; font-display:swap;
  src:url("../fonts/ShipporiMinchoB1-ExtraBold.woff2") format("woff2");
}
@font-face{
  font-family:"Noto Serif JP"; font-style:normal; font-weight:300 900; font-display:swap;
  src:url("../fonts/NotoSerifJP.woff2") format("woff2");
}
@font-face{
  font-family:"Cormorant Garamond"; font-style:normal; font-weight:300 700; font-display:swap;
  src:url("../fonts/CormorantGaramond.woff2") format("woff2");
}
@font-face{
  font-family:"Cormorant Garamond"; font-style:italic; font-weight:300 700; font-display:swap;
  src:url("../fonts/CormorantGaramond-Italic.woff2") format("woff2");
}

:root{
  --ruby:       #b80d3a;
  --ruby-deep:  #8a0a2b;
  --ruby-2:     #cf2350;
  --rose:       #e2566f;
  --rose-soft:  #f3a6b4;
  --blush:      #f8c0d2;
  --blush-2:    #f1a2bb;
  --paper:      #fffaf8;
  --cream:      #fdf3ee;
  --leaf:       #4f7a5b;
  --leaf-deep:  #2f5740;
  --gold:       #c2983c;
  --gold-soft:  #e3c878;
  --gold-3:     #f0dca6;
  --ink:        #3b2128;
  --text:       #6c5057;
  --text-soft:  #9c8388;
  --line:       #efd9de;
  --white:      #ffffff;

  --maxw: 1180px;
  --pad: clamp(20px, 5vw, 64px);

  --serif-jp: "Shippori Mincho B1", "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --body-jp:  "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --latin:    "Cormorant Garamond", "Shippori Mincho B1", serif;

  --ease: cubic-bezier(.22,.61,.36,1);
  --header-h: 76px;
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 14px); -webkit-text-size-adjust:100%; }
body{
  font-family:var(--body-jp);
  color:var(--text);
  background:var(--paper);
  line-height:1.95;
  font-weight:400;
  letter-spacing:.04em;
  font-feature-settings:"palt";
  overflow-x:hidden;
}
img{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
em{ font-style:normal; }

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }

/* ---------- セクション共通 ---------- */
section{ position:relative; }
.section-light{ background:var(--paper); padding:clamp(68px,10vw,132px) 0; }
.section-blush{
  background:linear-gradient(180deg, var(--blush-2) 0%, var(--blush) 46%, #fdeef3 100%);
  padding:clamp(68px,10vw,132px) 0;
}
/* 実写のフラットレイ写真を、全体に薄く敷いた背景 */
.lychee-bg{ position:relative; isolation:isolate; }
.lychee-bg::before{
  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:url('../images/concept-bg.jpg') center/cover no-repeat;
  opacity:.3;
}
.lychee-bg > *{ position:relative; z-index:1; }
.section-dark{
  background:
    radial-gradient(125% 95% at 78% 0%, var(--ruby-2) 0%, var(--ruby) 42%, var(--ruby-deep) 100%);
  color:#ffeef2;
  padding:clamp(68px,10vw,132px) 0;
}
.section-dark::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background:
    radial-gradient(40% 60% at 12% 18%, rgba(255,255,255,.16), transparent 70%),
    radial-gradient(30% 50% at 88% 86%, rgba(243,166,180,.22), transparent 70%);
}

/* 見出し */
.sec-head{ margin-bottom:clamp(34px,5vw,58px); }
.sec-head-center{ text-align:center; }
.sec-eyebrow{
  font-family:var(--latin);
  letter-spacing:.4em; text-transform:uppercase;
  font-size:.82rem; color:var(--rose); font-weight:600;
  margin-bottom:14px; padding-left:.4em;
}
.section-dark .sec-eyebrow{ color:var(--gold-3); }
.sec-title{
  font-family:var(--serif-jp);
  font-weight:700;
  font-size:clamp(1.72rem,4.4vw,2.85rem);
  line-height:1.4; letter-spacing:.07em;
  color:var(--ink);
}
.section-dark .sec-title{ color:#fff; }
.sec-head-center .sec-eyebrow{ padding:0; }
.sec-title .accent{ color:var(--ruby); }
.section-dark .sec-title .accent{ color:var(--gold-3); }
.sec-desc{
  margin-top:20px; max-width:42em;
  font-size:1.02rem; line-height:2.15; color:var(--text);
}
.section-dark .sec-desc{ color:#ffe3ea; }
.sec-head-center .sec-desc{ margin-inline:auto; }

.lead-text{ font-size:1.04rem; line-height:2.2; color:var(--text); }
.section-dark .lead-text{ color:#ffe3ea; }

/* ---------- ボタン ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55em;
  font-family:var(--serif-jp); font-weight:600; letter-spacing:.1em;
  padding:.95em 2.3em; font-size:.96rem; border:1.5px solid transparent;
  border-radius:999px; cursor:pointer; transition:.4s var(--ease); position:relative;
}
.btn-sm{ padding:.74em 1.8em; font-size:.9rem; }
.btn .ico{ font-size:1.05em; line-height:1; display:inline-flex; }
.btn .ico svg{ width:1.15em; height:1.15em; display:block; }
.btn-ruby{
  background:linear-gradient(135deg,var(--rose),var(--ruby));
  color:#fff; box-shadow:0 12px 26px -12px rgba(184,13,58,.75);
}
.btn-ruby:hover{ filter:brightness(1.06); transform:translateY(-2px); box-shadow:0 18px 32px -12px rgba(184,13,58,.8); }
.btn-gold{
  background:linear-gradient(135deg,var(--gold-soft),var(--gold));
  color:#3a2b07; box-shadow:0 12px 26px -13px rgba(194,152,60,.8);
}
.btn-gold:hover{ filter:brightness(1.06); transform:translateY(-2px); }
.btn-ghost{ border-color:var(--rose-soft); color:var(--ruby); background:rgba(255,255,255,.5); }
.btn-ghost:hover{ background:#fff; border-color:var(--ruby); transform:translateY(-2px); }
.btn-ghost-light{ border-color:rgba(255,255,255,.6); color:#fff; }
.btn-ghost-light:hover{ background:rgba(255,255,255,.14); border-color:#fff; }
.btn-cream{ background:#fff; color:var(--ruby); box-shadow:0 12px 26px -13px rgba(0,0,0,.45); }
.btn-cream:hover{ filter:brightness(1.02); transform:translateY(-2px); }

/* =====================================================================
   DEMO RIBBON
   ===================================================================== */
.demo-ribbon{
  background:repeating-linear-gradient(135deg,#2f1d22,#2f1d22 18px,#3a242a 18px,#3a242a 36px);
  color:#ffd9e0; text-align:center;
  font-size:.74rem; letter-spacing:.06em; line-height:1.5;
  padding:7px var(--pad); position:relative; z-index:120;
}
.demo-ribbon strong{ color:#fff; font-weight:700; }

/* =====================================================================
   HEADER
   ===================================================================== */
.site-header{
  position:sticky; top:0; width:100%; z-index:100;
  background:rgba(255,250,248,.78); backdrop-filter:blur(12px);
  border-bottom:1px solid transparent; transition:.4s var(--ease);
}
.site-header.scrolled{
  background:rgba(255,250,248,.95);
  border-bottom-color:var(--line);
  box-shadow:0 8px 26px -18px rgba(138,10,43,.5);
}
.header-inner{
  max-width:var(--maxw); margin-inline:auto; padding:0 var(--pad);
  height:var(--header-h); display:flex; align-items:center; gap:24px;
}
.brand{ display:flex; align-items:center; gap:12px; margin-right:auto; }
.brand-mark{
  width:38px; height:38px; flex:none; border-radius:9px;
  background:linear-gradient(135deg,var(--rose),var(--ruby));
  display:grid; place-items:center; color:#fff; font-family:var(--latin);
  font-weight:700; font-size:1.2rem; box-shadow:0 6px 16px -8px rgba(184,13,58,.7);
}
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-ruby{ font-size:.6rem; letter-spacing:.26em; color:var(--rose); font-weight:600; margin-bottom:1px; }
.brand-name{ font-family:var(--latin); font-weight:600; font-size:1.32rem; color:var(--ink); letter-spacing:.04em; white-space:nowrap; }
.brand-sub{ font-size:.66rem; letter-spacing:.24em; color:var(--rose); font-weight:500; }

.nav{ display:flex; align-items:center; gap:clamp(10px,1.25vw,20px); }
.nav a{
  font-size:.94rem; font-weight:500; color:var(--ink); position:relative;
  padding:6px 0; transition:.3s; white-space:nowrap;
}
.nav a:not(.nav-cta)::after{
  content:""; position:absolute; left:0; bottom:0; width:0; height:1.5px;
  background:var(--ruby); transition:width .3s var(--ease);
}
.nav a:not(.nav-cta):hover{ color:var(--ruby); }
.nav a:not(.nav-cta):hover::after{ width:100%; }
.nav-cta{
  background:linear-gradient(135deg,var(--rose),var(--ruby)); color:#fff !important;
  padding:.55em 1.15em !important; border-radius:999px; font-weight:600; white-space:nowrap;
  box-shadow:0 8px 20px -10px rgba(184,13,58,.7); transition:.35s var(--ease);
}
.nav-cta:hover{ transform:translateY(-2px); filter:brightness(1.05); }
.nav-cta-furusato{ background:linear-gradient(135deg,var(--gold-soft),var(--gold)); color:#3a2b07 !important; box-shadow:0 8px 20px -10px rgba(194,152,60,.7); }

.hamburger{
  display:none; width:42px; height:42px; border:none; background:transparent;
  cursor:pointer; flex-direction:column; justify-content:center; gap:6px; align-items:center;
}
.hamburger span{ width:24px; height:2px; background:var(--ink); border-radius:2px; transition:.35s var(--ease); }
.hamburger[aria-expanded="true"] span:nth-child(1){ transform:translateY(8px) rotate(45deg); }
.hamburger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.hamburger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-8px) rotate(-45deg); }

/* =====================================================================
   HERO
   ===================================================================== */
.hero{
  position:relative; overflow:hidden;
  background:
    radial-gradient(58% 66% at 86% 16%, rgba(213,47,88,.68), transparent 62%),
    radial-gradient(56% 64% at 2% 94%, rgba(233,98,134,.68), transparent 64%),
    linear-gradient(166deg, var(--blush-2) 0%, var(--blush) 48%, #fbe4ec 100%);
}
.hero-inner{
  max-width:var(--maxw); margin-inline:auto; padding:clamp(48px,7vw,92px) var(--pad) clamp(56px,8vw,100px);
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(32px,5vw,68px); align-items:center;
}
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:.7em;
  font-family:var(--serif-jp); font-weight:600; color:var(--ruby);
  font-size:.92rem; letter-spacing:.14em; margin-bottom:22px;
}
.hero-eyebrow::before{ content:""; width:30px; height:1.5px; background:var(--rose); }
.hero-title{
  font-family:var(--serif-jp); font-weight:800; color:var(--ink);
  font-size:clamp(2rem,5vw,3.5rem); line-height:1.34; letter-spacing:.02em;
  margin-bottom:10px;
}
.hero-title .ruby{ color:var(--ruby); }
.hero-title .small{ display:block; font-size:.42em; font-weight:600; letter-spacing:.18em; color:var(--rose); margin-bottom:.5em; }
.hero-latin{
  font-family:var(--latin); font-style:italic; font-size:clamp(1rem,2.2vw,1.4rem);
  color:var(--gold); letter-spacing:.08em; margin-bottom:24px;
}
.hero-lead{ font-size:1.05rem; line-height:2.2; color:var(--text); max-width:30em; margin-bottom:32px; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:14px; }
.hero-textlink{ display:inline-block; margin-bottom:28px; color:var(--ruby); font-weight:600; font-size:.94rem; border-bottom:1px solid var(--rose-soft); padding-bottom:2px; transition:.3s; }
.hero-textlink:hover{ color:var(--ruby-deep); border-color:var(--ruby); }
.hero-trust{ display:flex; flex-wrap:wrap; gap:10px 22px; }
.hero-trust li{
  display:flex; align-items:center; gap:.5em; font-size:.86rem; color:var(--text-soft); font-weight:500;
}
.hero-trust .tk{ color:var(--ruby); font-weight:700; }

/* hero figure */
.hero-figure{ position:relative; justify-self:center; }
.hero-figure .glow{
  position:absolute; inset:-10% -8% -12% -8%; z-index:0; border-radius:50%;
  background:radial-gradient(circle, rgba(219,64,102,.45), transparent 68%);
  filter:blur(6px);
}
.hero-photo{
  position:relative; z-index:1; border-radius:18px; overflow:hidden;
  box-shadow:0 40px 70px -34px rgba(138,10,43,.55), 0 6px 18px -10px rgba(0,0,0,.18);
  border:6px solid #fff; transform:rotate(-1.4deg);
}
.hero-photo img{ width:min(460px,82vw); aspect-ratio:1/1; object-fit:cover; }
.hero-badge{
  position:absolute; z-index:2; right:-14px; bottom:-14px;
  width:118px; height:118px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, var(--rose), var(--ruby));
  color:#fff; display:grid; place-content:center; text-align:center; line-height:1.3;
  box-shadow:0 16px 30px -12px rgba(184,13,58,.7); transform:rotate(8deg);
  border:2px solid rgba(255,255,255,.6);
}
.hero-badge b{ font-family:var(--serif-jp); font-size:1.46rem; display:block; }
.hero-badge span{ font-size:.66rem; letter-spacing:.12em; opacity:.92; }
.hero-badge small{ font-size:.6rem; letter-spacing:.2em; opacity:.85; display:block; }

/* sparkle accents */
.spark{ position:absolute; color:#fff; z-index:2; pointer-events:none; filter:drop-shadow(0 0 4px rgba(255,255,255,.9)); opacity:.9; }

/* =====================================================================
   STRIP（信頼バッジ帯）
   ===================================================================== */
.strip{ background:var(--ink); color:#ffe6ec; }
.strip-inner{
  display:flex; flex-wrap:wrap; justify-content:center; gap:clamp(14px,4vw,56px);
  padding:20px var(--pad); text-align:center;
}
.strip-item{ display:flex; align-items:center; gap:.6em; font-size:.92rem; letter-spacing:.06em; }
.strip-item .n{ font-family:var(--latin); font-size:1.3rem; color:var(--gold-3); font-weight:600; }

/* =====================================================================
   INTRO
   ===================================================================== */
.intro-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(34px,5vw,72px); align-items:center; }
.vlabel{
  font-family:var(--latin); letter-spacing:.32em; text-transform:uppercase;
  font-size:.78rem; color:var(--rose); font-weight:600; margin-bottom:16px;
}
.intro-head{
  font-family:var(--serif-jp); font-weight:700; color:var(--ink);
  font-size:clamp(1.55rem,3.6vw,2.3rem); line-height:1.55; letter-spacing:.05em; margin-bottom:24px;
}
.intro-head em{ color:var(--ruby); }
.intro-points{ margin:26px 0 32px; display:grid; gap:14px; }
.intro-points li{ display:flex; gap:13px; font-size:.98rem; line-height:1.85; color:var(--text); }
.intro-points .dot{ flex:none; width:9px; height:9px; margin-top:.6em; border-radius:50%; background:linear-gradient(135deg,var(--rose),var(--ruby)); box-shadow:0 0 0 4px var(--blush); }
.intro-points strong{ color:var(--ink); font-weight:700; }
.intro-photo{ position:relative; border-radius:16px; overflow:hidden; box-shadow:0 30px 56px -30px rgba(138,10,43,.4); }
.intro-photo img{ width:100%; }
.photo-caption{
  position:absolute; left:0; bottom:0; right:0; padding:26px 18px 12px;
  font-size:.82rem; color:#fff; letter-spacing:.06em;
  background:linear-gradient(0deg, rgba(58,33,40,.78), transparent);
}

/* =====================================================================
   特徴カード
   ===================================================================== */
.feature-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.4vw,30px); }
.fcard{
  background:var(--white); border:1px solid var(--line); border-radius:16px;
  position:relative; overflow:hidden; display:flex; flex-direction:column;
  transition:.4s var(--ease);
}
.fcard::before{
  content:""; position:absolute; top:0; left:0; right:0; height:4px; z-index:2;
  background:linear-gradient(90deg,var(--rose),var(--ruby));
  transform:scaleX(0); transform-origin:left; transition:transform .45s var(--ease);
}
.fcard:hover{ transform:translateY(-6px); box-shadow:0 28px 50px -30px rgba(138,10,43,.4); }
.fcard:hover::before{ transform:scaleX(1); }
.fcard-photo{ aspect-ratio:16/10; overflow:hidden; }
.fcard-photo img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.fcard:hover .fcard-photo img{ transform:scale(1.05); }
.fcard-body{ padding:clamp(22px,2.6vw,30px) clamp(22px,2.6vw,32px) clamp(26px,3vw,36px); }
.fcard-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.fcard-no{ font-family:var(--latin); font-size:1rem; color:var(--rose); letter-spacing:.2em; }
.fcard-icon{
  width:46px; height:46px; border-radius:50%;
  background:linear-gradient(135deg,var(--blush-2),var(--blush));
  display:grid; place-items:center; color:var(--ruby);
}
.fcard-icon svg{ width:22px; height:22px; display:block; }
.fcard h3{ font-family:var(--serif-jp); font-weight:700; color:var(--ink); font-size:1.18rem; line-height:1.6; margin-bottom:12px; }
.fcard p{ font-size:.96rem; line-height:2.05; color:var(--text); }

/* =====================================================================
   ギャラリー（実写モザイク）
   ===================================================================== */
.gallery{
  display:grid; grid-template-columns:repeat(4,1fr);
  grid-auto-rows:clamp(150px,17vw,230px); grid-auto-flow:dense;
  gap:clamp(12px,1.8vw,22px);
}
.gitem{
  border-radius:14px; overflow:hidden; background:#fff; border:1px solid var(--line);
  box-shadow:0 18px 40px -30px rgba(138,10,43,.4); transition:.4s var(--ease);
}
.gitem:hover{ transform:translateY(-5px); box-shadow:0 30px 54px -30px rgba(138,10,43,.5); }
.gitem img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.gitem:hover img{ transform:scale(1.04); }
.g-big{ grid-column:span 2; grid-row:span 2; }
.g-wide{ grid-column:span 2; }

/* =====================================================================
   SHOP / 通販
   ===================================================================== */
.shop-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,4.5vw,64px); align-items:center; }
.shop-photos{ display:grid; gap:clamp(12px,1.6vw,18px); align-self:center; }
.shop-photo{ border-radius:16px; overflow:hidden; box-shadow:0 30px 56px -28px rgba(0,0,0,.4); border:5px solid rgba(255,255,255,.4); }
.shop-photo img{ width:100%; display:block; }
.shop-thumbs{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(12px,1.6vw,18px); }
.shop-thumbs figure{
  border-radius:12px; overflow:hidden; border:4px solid rgba(255,255,255,.35);
  box-shadow:0 20px 40px -24px rgba(0,0,0,.45); aspect-ratio:4/3;
}
.shop-thumbs img{ width:100%; height:100%; object-fit:cover; }
.shop-copy .product-name{ font-family:var(--serif-jp); font-weight:700; color:#fff; font-size:clamp(1.5rem,3.4vw,2.1rem); line-height:1.5; margin-bottom:8px; }
.shop-spec{ margin:24px 0 30px; border-top:1px solid rgba(255,255,255,.25); }
.shop-spec div{ display:flex; gap:16px; padding:13px 2px; border-bottom:1px solid rgba(255,255,255,.18); font-size:.96rem; }
.shop-spec dt{ flex:none; width:6.5em; color:var(--gold-3); font-weight:600; letter-spacing:.08em; }
.shop-spec dd{ color:#fff; }
.shop-actions{ display:flex; flex-wrap:wrap; gap:12px; margin-bottom:8px; }
.shop-note{ font-size:.82rem; color:#ffd9e0; margin-top:14px; line-height:1.9; }
.tabechoku-card{
  display:flex; align-items:center; gap:16px; background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.28); border-radius:14px; padding:16px 18px; margin-bottom:22px;
}
.tabechoku-card .tlogo{
  flex:none; width:52px; height:52px; border-radius:12px; background:#fff; color:var(--leaf-deep);
  display:grid; place-items:center; font-weight:800; font-size:.78rem; text-align:center; line-height:1.1; font-family:var(--serif-jp);
}
.tabechoku-card p{ font-size:.9rem; color:#fff; line-height:1.7; }
.tabechoku-card strong{ color:var(--gold-3); }

/* =====================================================================
   ACCESS
   ===================================================================== */
.access-grid{ display:grid; grid-template-columns:1fr 1.15fr; gap:clamp(28px,4vw,56px); align-items:stretch; }
.access-info{ align-self:center; }
.access-table{ margin:6px 0 26px; }
.access-table div{ display:flex; gap:16px; padding:14px 2px; border-bottom:1px solid var(--line); font-size:.96rem; }
.access-table dt{ flex:none; width:5.5em; color:var(--ruby); font-weight:700; letter-spacing:.08em; }
.access-table dd{ color:var(--text); line-height:1.85; }
.map-wrap{
  border-radius:16px; overflow:hidden; min-height:340px; border:1px solid var(--line);
  box-shadow:0 24px 50px -30px rgba(138,10,43,.4);
}
.map-wrap iframe{ width:100%; height:100%; min-height:340px; border:0; display:block; }
.map-placeholder{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px;
  text-align:center; text-decoration:none; padding:34px 26px; transition:.4s var(--ease);
  background:
    radial-gradient(circle at 28% 22%, rgba(226,86,111,.12), transparent 58%),
    repeating-linear-gradient(0deg, rgba(79,122,91,.07) 0 1px, transparent 1px 40px),
    repeating-linear-gradient(90deg, rgba(79,122,91,.07) 0 1px, transparent 1px 40px),
    linear-gradient(160deg,#fbf3ef,#f4e7e9);
}
.map-placeholder:hover{ transform:translateY(-3px); box-shadow:0 32px 58px -28px rgba(138,10,43,.5); }
.map-pin{ color:var(--ruby); filter:drop-shadow(0 7px 10px rgba(184,13,58,.45)); }
.map-pin svg{ width:44px; height:44px; display:block; }
.map-place{ font-family:var(--serif-jp); font-weight:700; color:var(--ink); font-size:1.22rem; letter-spacing:.04em; }
.map-area{ color:var(--ruby); font-weight:600; letter-spacing:.1em; }
.map-hint{ font-size:.84rem; color:var(--text-soft); margin-top:6px; letter-spacing:.04em; }
.map-foot{ font-size:.72rem; color:var(--text-soft); opacity:.7; margin-top:2px; }

/* =====================================================================
   CTA BAND
   ===================================================================== */
.cta-band{
  text-align:center;
  background:
    linear-gradient(115deg, rgba(138,10,43,.94) 0%, rgba(184,13,58,.86) 55%, rgba(138,10,43,.92) 100%),
    url('../images/cta-bg.jpg') center 42%/cover no-repeat;
}
.cta-inner{ max-width:720px; margin-inline:auto; }
.cta-eyebrow{ font-family:var(--latin); letter-spacing:.36em; text-transform:uppercase; color:var(--gold-3); font-size:.82rem; font-weight:600; margin-bottom:16px; }
.cta-title{ font-family:var(--serif-jp); font-weight:700; color:#fff; font-size:clamp(1.6rem,4vw,2.5rem); line-height:1.55; margin-bottom:18px; }
.cta-text{ color:#ffe3ea; font-size:1.02rem; line-height:2.05; margin-bottom:32px; }
.cta-actions{ display:flex; flex-wrap:wrap; gap:14px; justify-content:center; }

/* =====================================================================
   FOOTER
   ===================================================================== */
.site-footer{ background:var(--ink); color:#e9d3d8; padding:clamp(48px,7vw,80px) 0 0; }
.footer-inner{ display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:36px; padding-bottom:42px; }
.footer-brand{ display:flex; gap:14px; align-items:flex-start; }
.footer-name{ font-family:var(--latin); font-size:1.4rem; color:#fff; font-weight:600; }
.footer-sub{ font-size:.8rem; color:var(--rose-soft); letter-spacing:.12em; margin-top:2px; }
.footer-desc{ font-size:.88rem; line-height:1.95; color:#cbb0b6; margin-top:16px; max-width:24em; }
.footer-col h4{ font-family:var(--serif-jp); font-size:.96rem; color:#fff; margin-bottom:16px; letter-spacing:.1em; }
.footer-col a, .footer-col p{ display:block; font-size:.9rem; color:#d9c2c7; padding:5px 0; transition:.3s; }
.footer-col a:hover{ color:var(--gold-3); }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding:18px var(--pad); text-align:center; }
.copyright{ font-size:.78rem; color:#b69aa0; letter-spacing:.08em; }
.footer-disclaimer{ font-size:.74rem; color:#9b7f85; margin-top:8px; line-height:1.7; max-width:60em; margin-inline:auto; }

/* =====================================================================
   to top
   ===================================================================== */
.to-top{
  position:fixed; right:20px; bottom:20px; z-index:90; width:46px; height:46px;
  border-radius:50%; background:linear-gradient(135deg,var(--rose),var(--ruby)); color:#fff;
  display:grid; place-items:center; font-size:.9rem; opacity:0; pointer-events:none;
  transform:translateY(12px); transition:.4s var(--ease); box-shadow:0 12px 26px -12px rgba(184,13,58,.8);
}
.to-top.show{ opacity:1; pointer-events:auto; transform:translateY(0); }
.to-top:hover{ transform:translateY(-3px); }

/* =====================================================================
   REVEAL
   ===================================================================== */
.reveal{ opacity:0; transform:translateY(26px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1 !important; transform:none !important; }
  html{ scroll-behavior:auto; }
}
@media print{
  .reveal{ opacity:1 !important; transform:none !important; }
  html{ scroll-behavior:auto; }
  .site-header{ position:static; }
  .to-top{ display:none; }
}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:980px){
  .feature-cards{ grid-template-columns:1fr; }
  .fcard-photo{ aspect-ratio:16/8; }
  .intro-grid, .shop-grid, .access-grid{ grid-template-columns:1fr; }
  .intro-photo, .access .map-wrap{ order:-1; }
  .intro-photo{ max-width:560px; margin-inline:auto; width:100%; }
  .footer-inner{ grid-template-columns:1fr 1fr; }
}
@media (max-width:1080px){
  .nav{
    position:fixed; top:0; right:0; left:auto; height:100vh; width:min(82vw,340px);
    flex-direction:column; align-items:flex-start; justify-content:center; gap:8px;
    background:var(--paper); padding:40px 36px; transform:translateX(102%);
    transition:transform .45s var(--ease); box-shadow:-20px 0 50px -24px rgba(138,10,43,.45); z-index:110;
    overflow-y:auto;
  }
  .nav.open{ transform:none; }
  .nav a{ font-size:1.06rem; padding:10px 0; width:100%; }
  .nav-cta{ margin-top:10px; }
  .hamburger{ display:flex; z-index:115; }
  .hero-inner{ grid-template-columns:1fr; text-align:center; }
  .hero-eyebrow{ justify-content:center; }
  .hero-lead{ margin-inline:auto; }
  .hero-actions, .hero-trust{ justify-content:center; }
  .hero-figure{ order:-1; margin-bottom:8px; }
}
@media (max-width:560px){
  .gallery{ grid-template-columns:1fr 1fr; grid-auto-rows:clamp(130px,38vw,180px); }
  .g-big{ grid-column:span 2; grid-row:span 2; }
  .g-wide{ grid-column:span 2; grid-row:span 1; }
  .footer-inner{ grid-template-columns:1fr; }
  .hero-photo img{ width:min(360px,86vw); }
  .hero-badge{ right:2px; bottom:-10px; width:102px; height:102px; }
  .hero-badge b{ font-size:1.26rem; }
  .strip-inner{ gap:10px 22px; }
}

/* nav scrim */
.nav-scrim{
  position:fixed; inset:0; background:rgba(59,33,40,.45); backdrop-filter:blur(2px);
  opacity:0; pointer-events:none; transition:.4s; z-index:105;
}
.nav-scrim.show{ opacity:1; pointer-events:auto; }
