/* =========================================================
   IBC — V25: PASTEL JOY
   V24派生 — パステル4色背景 × 丸ゴシック × 笑顔写真
   ========================================================= */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{line-height:1.55;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%;height:auto}
button{background:none;border:0;cursor:pointer;font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
ul{list-style:none}
h1,h2,h3{font-weight:inherit;line-height:1}
:focus-visible{outline:3px solid var(--accent);outline-offset:4px}

:root{
  /* Pastel palette */
  --p-pink:    #FFD7E2;
  --p-pink-2:  #FFC0CF;
  --p-blue:    #C7E0FF;
  --p-blue-2:  #A8CFFF;
  --p-yellow:  #FFF1A8;
  --p-yellow-2:#FFE066;
  --p-mint:    #C9F2DD;
  --p-mint-2:  #A0E6C4;
  --p-purple:  #E3D5FF;
  --p-peach:   #FFD8B5;

  --accent:    #FF6BB5;        /* main vivid */
  --accent-2:  #FFB627;        /* sunny */
  --accent-3:  #4A90E2;        /* sky */
  --accent-4:  #58D68D;        /* mint */

  --ink:       #2D2A4A;        /* deep purple ink */
  --ink-soft:  #5C5876;
  --ink-mute:  #9B97B0;

  --paper:     #FFFAF5;
  --line:      #F1E8DC;

  --font-jp:    'Zen Maru Gothic', 'Noto Sans JP', system-ui, sans-serif;
  --font-jp-d:  'Zen Maru Gothic', 'Zen Kaku Gothic New', sans-serif;
  --font-en:    'Fredoka', 'Inter', sans-serif;
  --font-en-d:  'Fredoka', 'Bebas Neue', sans-serif;
  --font-num:   'Fredoka', sans-serif;
  --font-mono:  'JetBrains Mono', monospace;
  --font-script:'Caveat', cursive;

  --container:  min(1480px, 96vw);
  --nav-h:      76px;
  --gap:        8px;
  --ease-out:   cubic-bezier(.16,1,.3,1);
  --ease-pop:   cubic-bezier(.34,1.56,.64,1);
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

body{
  font-family:var(--font-jp);
  font-weight:500;
  color:var(--ink);
  background:var(--paper);
  overflow-x:hidden;
}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}

/* ---------- NAV ---------- */
.nav{
  position:fixed; top:0; left:0; right:0; height:var(--nav-h); z-index:50;
  display:flex; align-items:center;
  background:rgba(255,250,245,.88);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  transition:box-shadow .35s;
}
.nav__inner{
  width:var(--container); margin-inline:auto;
  display:flex; align-items:center; justify-content:space-between;
}
.nav__logo{
  display:flex; align-items:center; gap:10px;
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(.95rem, 1.2vw, 1.15rem);
  color:var(--ink);
  letter-spacing:.02em;
  line-height:1.1;
}
.nav__logo span{ white-space:nowrap }
.nav__logo img{
  width:42px; height:42px;
  filter:drop-shadow(0 4px 12px rgba(255,107,181,.4));
}

.nav__links{
  display:none; gap:28px;
  font-family:var(--font-jp-d); font-size:.9rem; font-weight:700;
  color:var(--ink);
}
.nav__links a{ position:relative; padding:6px 2px }
.nav__links a::after{
  content:'♡'; position:absolute; left:50%; bottom:-14px;
  font-size:.7rem; color:var(--accent);
  transform:translateX(-50%) scale(0);
  transition:transform .3s var(--ease-out);
}
.nav__links a:nth-child(2)::after{ content:'★'; color:var(--accent-2) }
.nav__links a:nth-child(3)::after{ content:'✦'; color:var(--accent-3) }
.nav__links a:nth-child(4)::after{ content:'♥'; color:var(--accent-4) }
.nav__links a:nth-child(5)::after{ content:'☆'; color:var(--accent) }
.nav__links a:hover::after{ transform:translateX(-50%) scale(1) }
@media (min-width:880px){ .nav__links{display:flex} }

.nav__cta{
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 26px;
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);
  color:#fff;
  font-family:var(--font-jp-d); font-weight:700; font-size:.92rem;
  border-radius:999px;
  letter-spacing:.04em;
  box-shadow:0 10px 24px -6px rgba(255,107,181,.55);
  transition:transform .25s var(--ease-pop), filter .25s;
}
.nav__cta::after{ content:'♡' }
.nav__cta:hover{ transform:translateY(-3px) scale(1.04); filter:brightness(1.06) }

.nav.is-scrolled{ box-shadow:0 6px 24px -8px rgba(255,107,181,.25) }

/* ---------- HERO: 写真壁 ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  grid-template-rows:repeat(6, minmax(82px, 1fr));
  gap:var(--gap);
  /* 4色パステルブロック背景（gapに見える） */
  background:
    linear-gradient(135deg,
      var(--p-pink) 0%, var(--p-pink) 25%,
      var(--p-yellow) 25%, var(--p-yellow) 50%,
      var(--p-blue) 50%, var(--p-blue) 75%,
      var(--p-mint) 75%, var(--p-mint) 100%);
  padding:calc(var(--nav-h) + var(--gap)) var(--gap) var(--gap);
}

/* === タイル === */
.tile{
  position:relative;
  overflow:hidden;
  background:var(--paper);
  cursor:pointer;
  border-radius:18px;
  isolation:isolate;
}
.tile img{
  width:100%; height:100%; object-fit:cover;
  filter:saturate(1.1);
  transition:filter .6s var(--ease-out), transform .8s var(--ease-out);
}
.tile::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 55%, rgba(45,42,74,.4) 100%);
  pointer-events:none;
  opacity:0;
  transition:opacity .4s;
}
.tile:hover img{
  filter:saturate(1.25) brightness(1.08);
  transform:scale(1.06);
}
.tile:hover::after{ opacity:.7 }

/* バッジ */
.tile-tag{
  position:absolute; top:14px; left:14px;
  z-index:3;
  font-family:var(--font-num); font-weight:700;
  font-size:.9rem;
  color:#fff;
  width:34px; height:34px;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 14px rgba(0,0,0,.16);
}
.tile-1 .tile-tag{ background:var(--accent) }
.tile-2 .tile-tag{ background:var(--accent-3) }
.tile-3 .tile-tag{ background:var(--accent-2); color:var(--ink) }
.tile-4 .tile-tag{ background:var(--accent-4); color:var(--ink) }
.tile-5 .tile-tag{ background:var(--accent) }
.tile-6 .tile-tag{ background:var(--accent-3) }
.tile-7 .tile-tag{ background:var(--accent-2); color:var(--ink) }
.tile-8 .tile-tag{ background:var(--accent-4); color:var(--ink) }
.tile-9 .tile-tag{ background:var(--accent) }
.tile-10 .tile-tag{ background:var(--accent-3) }
.tile-11 .tile-tag{ background:var(--accent-2); color:var(--ink) }

.tile-cap{
  position:absolute; left:14px; right:14px; bottom:14px;
  z-index:3;
  font-family:var(--font-jp-d); font-size:.8rem;
  font-weight:700; color:#fff;
  line-height:1.4;
  background:rgba(45,42,74,.55);
  backdrop-filter:blur(8px);
  padding:6px 12px;
  border-radius:999px;
  width:fit-content;
  transform:translateY(10px);
  opacity:0;
  transition:transform .4s var(--ease-out), opacity .4s;
}
.tile:hover .tile-cap{ transform:translateY(0); opacity:1 }

/* タイル配置（隙間ゼロ／11枚＋中央カード） */
.tile-1  { grid-column:1 / span 3;  grid-row:1 / span 2 }
.tile-2  { grid-column:4 / span 2;  grid-row:1 / span 2 }
.tile-3  { grid-column:10 / span 3; grid-row:1 / span 2 }
.tile-4  { grid-column:1 / span 3;  grid-row:3 / span 2 }
.tile-5  { grid-column:4 / span 2;  grid-row:3 / span 2 }
.tile-6  { grid-column:10 / span 3; grid-row:3 / span 2 }
.tile-7  { grid-column:1 / span 3;  grid-row:5 / span 2 }
.tile-8  { grid-column:4 / span 2;  grid-row:5 / span 2 }
.tile-9  { grid-column:6 / span 2;  grid-row:5 / span 2 }
.tile-10 { grid-column:8 / span 2;  grid-row:5 / span 2 }
.tile-11 { grid-column:10 / span 3; grid-row:5 / span 2 }

/* === 中央メインカード === */
.center-card{
  position:relative;
  grid-column:6 / span 4;
  grid-row:1 / span 4;
  background:#fff;
  border-radius:24px;
  display:flex; flex-direction:column;
  z-index:5;
  box-shadow:
    0 30px 70px -20px rgba(45,42,74,.3),
    0 0 0 1px rgba(255,107,181,.18);
  overflow:hidden;
}
@media (max-width:880px){
  .center-card{ grid-column:1 / -1; grid-row:auto }
}

.center-card__img{
  position:relative;
  width:100%;
  aspect-ratio:5/4;
  overflow:hidden;
  background:var(--ink);
}
.center-card__img img{ width:100%; height:100%; object-fit:cover; transform:scale(1.2); transform-origin:center center; filter:brightness(1.45) }
.center-card__img-label{
  position:absolute; top:14px; left:14px;
  font-family:var(--font-en); font-size:.7rem;
  color:#fff; letter-spacing:.18em; text-transform:uppercase;
  font-weight:700;
  background:rgba(255,107,181,.95);
  padding:5px 12px;
  border-radius:999px;
}
.center-card__img-tag{
  position:absolute; bottom:14px; left:14px;
  display:flex; align-items:center; gap:8px;
  font-family:var(--font-en-d); font-weight:700; font-size:1.5rem;
  color:var(--p-yellow);
  line-height:1;
  text-shadow:0 2px 12px rgba(0,0,0,.5);
}
.center-card__img-tag::before{
  content:'★'; color:var(--p-yellow);
  animation:spin 6s linear infinite;
  display:inline-block;
  font-size:1em;
}
@keyframes spin{ to{ transform:rotate(360deg) } }

/* デコレーション: 写真にカラフルブロブ */
.center-card__img::before{
  content:''; position:absolute;
  top:-30px; right:-20px;
  width:120px; height:120px;
  background:var(--accent-2);
  border-radius:50%;
  filter:blur(28px);
  opacity:.6;
  z-index:1;
}
.center-card__img::after{
  content:''; position:absolute;
  bottom:-30px; left:30%;
  width:80px; height:80px;
  background:var(--accent);
  border-radius:50%;
  filter:blur(22px);
  opacity:.55;
  z-index:1;
}

.center-card__body{
  padding:clamp(22px, 2.8vw, 38px);
  display:flex; flex-direction:column; gap:16px;
  flex:1;
  position:relative;
}

/* 虹色装飾ライン */
.center-card__body::before{
  content:''; position:absolute;
  top:0; left:clamp(22px, 2.8vw, 38px); right:clamp(22px, 2.8vw, 38px);
  height:4px;
  background:linear-gradient(90deg, var(--accent), var(--accent-2), var(--accent-4), var(--accent-3), var(--accent));
  background-size:200% 100%;
  border-radius:4px;
  animation:gradFlow 5s linear infinite;
}
@keyframes gradFlow{
  0%,100%{ background-position:0% 50% }
  50%{ background-position:100% 50% }
}

.center-card__chip{
  display:inline-flex; align-items:center; gap:10px;
  width:fit-content;
  margin-top:6px;
  font-family:var(--font-en); font-size:.72rem;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ink-soft); font-weight:700;
}
.center-card__chip::before{
  content:'✦'; color:var(--accent);
  font-size:1.2em;
  animation:spin 8s linear infinite;
  display:inline-block;
}

/* タイトル — 大胆＆元気 */
.hero__title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(2.4rem, 4.4vw, 3.6rem);   /* V24より大 */
  line-height:1.0;
  letter-spacing:-.025em;
  color:var(--ink);
}
.hero__title-line{ display:block; overflow:hidden; padding-block:.04em; padding-inline:.5em; margin-inline:-.5em }
.hero__title-line + .hero__title-line{ margin-top:.04em }
.hero__title-inner{ display:inline-block }
.hero__title-em{
  display:inline-block;
  position:relative;
  color:transparent;
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 50%, var(--accent-4) 100%);
  -webkit-background-clip:text; background-clip:text;
  font-style:italic;
  filter:drop-shadow(2px 2px 0 rgba(255,107,181,.15));
  padding-right:.45em;   /* ★を入れるスペース確保 */
  margin-right:-.05em;
}
.hero__title-em::after{
  content:'★';
  position:absolute; top:-.05em; right:0;
  font-size:.35em;
  color:var(--accent-2);
  -webkit-text-fill-color:var(--accent-2);
  filter:drop-shadow(0 0 10px var(--accent-2));
  animation:twinkle 2s ease-in-out infinite;
}
@keyframes twinkle{
  0%,100%{ transform:scale(1) rotate(0); opacity:1 }
  50%{ transform:scale(1.4) rotate(40deg); opacity:.7 }
}
.hero__title-dot{
  display:inline-block;
  width:.2em; height:.2em;
  background:var(--accent);
  border-radius:50%;
  margin-left:.04em;
  vertical-align:.16em;
  box-shadow:0 0 14px rgba(255,107,181,.6);
}

.hero__lead{
  font-size:clamp(.95rem, 1.05vw, 1.05rem);   /* 少し大きく */
  line-height:1.9;
  color:var(--ink);
  font-weight:600;
}
.hero__lead-hi{
  background:linear-gradient(transparent 60%, var(--p-yellow) 60%);
  font-weight:700;
  padding:0 4px;
}
.hero__lead-pop{
  display:inline-block;
  background:var(--accent);
  color:#fff;
  padding:1px 8px;
  border-radius:999px;
  font-size:.86em;
  font-weight:700;
  margin:0 2px;
}

.hero__stats{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:8px;
  margin-top:4px;
}
.hero__stat{
  background:var(--paper);
  border-radius:14px;
  padding:14px 12px;
  text-align:center;
  position:relative;
  border:2.5px solid var(--ink);
  box-shadow:4px 4px 0 var(--ink);
  transition:transform .25s var(--ease-pop);
}
.hero__stat:hover{ transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--ink) }
.hero__stat:nth-child(1){ background:var(--p-pink) }
.hero__stat:nth-child(2){ background:var(--p-blue) }
.hero__stat:nth-child(3){ background:var(--p-yellow) }
.hero__stat-emoji{
  position:absolute; top:-12px; right:-10px;
  background:#fff;
  border:2.5px solid var(--ink);
  width:30px; height:30px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1rem;
}
.hero__stat-num{
  font-family:var(--font-num); font-weight:700;
  font-size:2rem;
  line-height:1;
  color:var(--ink);
}
.hero__stat-num small{ font-size:.45em; margin-left:2px; color:var(--ink-soft); font-weight:500 }
.hero__stat-label{
  font-family:var(--font-en); font-size:.6rem;
  color:var(--ink-soft);
  margin-top:6px; line-height:1.4;
  letter-spacing:.08em; text-transform:uppercase;
  font-weight:700;
}
.hero__stat-jp{
  font-family:var(--font-jp-d); font-size:.7rem;
  color:var(--ink); margin-top:2px;
  font-weight:700;
}

.hero__ctas{ display:flex; flex-wrap:wrap; gap:10px; margin-top:auto }
.btn{
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 24px;
  font-family:var(--font-jp-d); font-weight:700; font-size:.92rem;
  border-radius:999px;
  position:relative;
  border:2.5px solid var(--ink);
  transition:transform .2s var(--ease-pop), box-shadow .2s;
}
.btn::after{ content:'→'; transition:transform .3s }
.btn:hover::after{ transform:translateX(6px) }
.btn--main{
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 100%);
  color:#fff;
  box-shadow:5px 5px 0 var(--ink);
}
.btn--main:hover{ transform:translate(-3px,-3px); box-shadow:8px 8px 0 var(--ink) }
.btn--soft{
  background:#06C755; color:#fff;
  border-color:#06C755;
  box-shadow:5px 5px 0 #039140;
}
.btn--soft:hover{ transform:translate(-3px,-3px); box-shadow:8px 8px 0 #039140 }
.btn-badge{
  position:absolute; top:-10px; right:6px;
  background:var(--accent-2); color:var(--ink);
  font-family:var(--font-en); font-size:.6rem; font-weight:700;
  padding:3px 8px; border-radius:999px;
  border:2px solid var(--ink);
}

@media (max-width:880px){
  .hero{
    grid-template-columns:repeat(4, 1fr);
    grid-template-rows:auto;
  }
  /* スマホでは中央カード(メインコピー)を先頭に */
  .center-card{
    grid-column:1 / -1; grid-row:auto;
    order:-10;
  }
  .tile-1{ grid-column:1 / span 4; grid-row:auto; aspect-ratio:16/10; order:1 }
  .tile-2, .tile-3, .tile-4, .tile-5, .tile-6{ grid-column:span 2; grid-row:auto; aspect-ratio:1/1; order:2 }
  .tile-7, .tile-8, .tile-9, .tile-10, .tile-11{ grid-column:span 2; grid-row:auto; aspect-ratio:1/1; order:3 }
}

/* スマホでヒーローパディング調整 */
@media (max-width:680px){
  .hero{ padding:calc(var(--nav-h) + 12px) 12px 90px }
  .center-card{ border-radius:18px }
  .center-card__img{ aspect-ratio:4/3 }

  /* 追従CTAバーが下にあるのでpadding確保 */
  body{ padding-bottom:env(safe-area-inset-bottom) }

  /* セクションパディング縮小 */
  .section{ padding:clamp(56px, 12vw, 88px) 0 }

  /* タイトルがモバイルで詰まらないように */
  .section__title{ font-size:clamp(1.7rem, 7vw, 2.4rem); line-height:1.15 }
  .hero__title{ font-size:clamp(2rem, 8vw, 3rem) }

  /* contact ボタンを縦並びに */
  .contact-buttons{ flex-direction:column; align-items:stretch }
  .contact-btn{ justify-content:center }

  /* schedule table の余白 */
  .schedule-card{ padding:20px 16px }
  .schedule-table th, .schedule-table td{ padding:10px 12px; font-size:.86rem }

  /* gallery 2列 */
  .gallery-grid{ gap:10px }

  /* feature/voice の影調整 */
  .feature, .voice, .stat-card, .philosophy-card, .step{ box-shadow:4px 4px 0 var(--ink) }
}

/* ==============================================================
   COMMON SECTIONS
   ============================================================== */
.section{
  position:relative;
  padding:clamp(72px, 9vw, 128px) 0;
  overflow:hidden;
  isolation:isolate;
}
.section__inner{
  width:var(--container);
  margin-inline:auto;
  position:relative; z-index:2;
}
.section__head{
  text-align:center;
  margin-bottom:clamp(40px, 5vw, 64px);
  position:relative; z-index:2;
}
.section__eyebrow{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--font-en); font-weight:700;
  font-size:.78rem; letter-spacing:.32em; text-transform:uppercase;
  color:var(--accent);
  margin-bottom:14px;
}
.section__eyebrow::before, .section__eyebrow::after{
  content:''; width:32px; height:2px;
  background:linear-gradient(90deg, transparent, var(--accent), transparent);
}
.section__title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(2.2rem, 4.6vw, 3.6rem);
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--ink);
}
.section__title-em{
  color:var(--accent); font-style:italic;
}
.section__lead{
  margin-top:14px;
  font-size:clamp(.92rem, 1.1vw, 1.05rem);
  color:var(--ink-soft);
  line-height:1.9;
  max-width:640px; margin-inline:auto;
  font-weight:500;
}

/* deco floating shapes - reusable */
.section-blob{
  position:absolute;
  border-radius:50%;
  filter:blur(60px);
  opacity:.5;
  z-index:1;
  pointer-events:none;
}

/* ==============================================================
   #stats - 数字で見るIBC
   ============================================================== */
.s-stats{ background:var(--paper) }
.s-stats::before{
  content:''; position:absolute;
  top:-10%; right:-5%; width:30vw; height:30vw;
  background:var(--p-yellow); border-radius:50%;
  filter:blur(80px); opacity:.55; z-index:0;
}
.s-stats::after{
  content:''; position:absolute;
  bottom:-10%; left:-5%; width:24vw; height:24vw;
  background:var(--p-mint); border-radius:50%;
  filter:blur(70px); opacity:.5; z-index:0;
}
.stats-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
}
@media (min-width:680px){ .stats-grid{ grid-template-columns:repeat(2, 1fr) } }
@media (min-width:980px){ .stats-grid{ grid-template-columns:repeat(3, 1fr); max-width:900px; margin-inline:auto } }

.stat-card{
  position:relative;
  padding:32px 24px 28px;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  text-align:center;
  transition:transform .3s var(--ease-pop);
}
.stat-card:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.stat-card:nth-child(1){ background:linear-gradient(180deg, var(--p-pink) 0%, #fff 100%) }
.stat-card:nth-child(2){ background:linear-gradient(180deg, var(--p-blue) 0%, #fff 100%) }
.stat-card:nth-child(3){ background:linear-gradient(180deg, var(--p-yellow) 0%, #fff 100%) }
.stat-card:nth-child(4){ background:linear-gradient(180deg, var(--p-mint) 0%, #fff 100%) }
.stat-card-emoji{
  position:absolute; top:-18px; left:50%;
  transform:translateX(-50%);
  background:#fff;
  border:3px solid var(--ink);
  width:48px; height:48px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:1.4rem;
}
.stat-card-num{
  font-family:var(--font-num); font-weight:700;
  font-size:clamp(2.8rem, 5vw, 4rem);
  color:var(--ink); line-height:1;
  margin-top:10px;
}
.stat-card-num small{
  font-size:.4em; margin-left:4px;
  font-weight:600; color:var(--ink-soft);
}
.stat-card-label{
  font-family:var(--font-jp-d); font-weight:700;
  font-size:1rem;
  color:var(--ink); margin-top:12px;
  line-height:1.4;
}
.stat-card-sub{
  font-family:var(--font-en); font-size:.66rem;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-mute); margin-top:6px;
  font-weight:700;
}

/* ==============================================================
   #features - IBCが選ばれる3つの理由
   ============================================================== */
.s-features{ background:var(--p-mint) }
.s-features::before{
  content:''; position:absolute;
  top:10%; right:5%; width:20vw; height:20vw;
  background:var(--p-pink); border-radius:50%;
  filter:blur(60px); opacity:.6; z-index:0;
}
.features-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
}
@media (min-width:880px){ .features-grid{ grid-template-columns:repeat(3, 1fr) } }

.feature{
  position:relative;
  padding:36px 28px 32px;
  background:#fff;
  border-radius:28px;
  border:3px solid var(--ink);
  box-shadow:8px 8px 0 var(--ink);
  transition:transform .3s var(--ease-pop), box-shadow .3s;
}
.feature:hover{ transform:translate(-4px,-4px) rotate(-1deg); box-shadow:12px 12px 0 var(--ink) }
.feature-num{
  position:absolute; top:-22px; left:24px;
  background:var(--accent);
  color:#fff;
  width:48px; height:48px; border-radius:50%;
  border:3px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-num); font-weight:700; font-size:1.4rem;
  box-shadow:4px 4px 0 var(--ink);
}
.feature:nth-child(2) .feature-num{ background:var(--accent-3) }
.feature:nth-child(3) .feature-num{ background:var(--accent-4); color:var(--ink) }
.feature-icon{
  font-size:3rem; line-height:1;
  margin-top:8px; margin-bottom:14px;
}
.feature-title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.4rem;
  line-height:1.3;
  color:var(--ink);
  margin-bottom:12px;
}
.feature-title-em{
  background:linear-gradient(transparent 60%, var(--p-yellow) 60%);
  padding:0 4px;
}
.feature-text{
  font-size:.95rem;
  line-height:1.85;
  color:var(--ink-soft);
  font-weight:500;
}
.feature-text strong{ color:var(--accent); font-weight:700 }

/* ==============================================================
   #philosophy - 努力無くして笑利なし
   ============================================================== */
.s-philosophy{ background:var(--paper); padding-top:clamp(80px, 11vw, 160px); padding-bottom:clamp(80px, 11vw, 160px) }
.s-philosophy::before{
  content:''; position:absolute;
  top:-5%; left:-5%; width:30vw; height:30vw;
  background:var(--p-purple); border-radius:50%;
  filter:blur(80px); opacity:.5; z-index:0;
}

.slogan{
  text-align:center;
  position:relative;
  margin-bottom:72px;
}
.slogan-bg{
  font-family:var(--font-en-d); font-weight:700;
  font-size:clamp(8rem, 20vw, 22rem);
  line-height:.85;
  color:transparent;
  -webkit-text-stroke:1.5px rgba(255,107,181,.18);
  letter-spacing:-.02em;
  position:absolute;
  top:50%; left:50%; transform:translate(-50%,-50%);
  z-index:0;
  pointer-events:none;
  user-select:none;
}
.slogan-main{
  position:relative; z-index:2;
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(2.8rem, 6.5vw, 5.4rem);
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--ink);
}
.slogan-main-em{
  display:inline-block;
  background:linear-gradient(135deg, var(--accent) 0%, var(--accent-2) 50%, var(--accent-4) 100%);
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
  font-style:italic;
  position:relative;
  padding-right:.45em;   /* ★を入れるスペース確保 */
  margin-right:-.05em;
}
.slogan-main-em::after{
  content:'★';
  position:absolute; top:-.05em; right:0;
  font-size:.35em;
  color:var(--accent-2);
  -webkit-text-fill-color:var(--accent-2);
  filter:drop-shadow(0 0 12px var(--accent-2));
  animation:twinkle 2s ease-in-out infinite;
}
.slogan-sub{
  font-family:var(--font-script);
  font-weight:700;
  font-size:clamp(1rem, 1.8vw, 1.4rem);
  color:var(--accent);
  margin-top:10px;
  position:relative; z-index:2;
}

.coach-block{
  display:grid;
  grid-template-columns:1fr;
  gap:36px;
  align-items:center;
  background:#fff;
  border-radius:32px;
  border:3px solid var(--ink);
  box-shadow:10px 10px 0 var(--p-pink-2);
  padding:clamp(32px, 4vw, 48px);
  margin-bottom:64px;
  position:relative;
}
@media (min-width:880px){
  .coach-block{ grid-template-columns:1fr 1.5fr; gap:48px }
}

.coach-photo{
  width:100%;
  max-width:280px;
  aspect-ratio:1/1;
  border-radius:50%;
  overflow:hidden;
  background:var(--p-pink);
  border:5px solid var(--ink);
  margin-inline:auto;
  box-shadow:6px 6px 0 var(--ink);
}
.coach-photo img{ width:100%; height:100%; object-fit:cover }

.coach-text-eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-en); font-size:.74rem;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent);
  font-weight:700;
  margin-bottom:14px;
}
.coach-text-eyebrow::before{
  content:''; width:24px; height:2px; background:var(--accent);
}
.coach-text{
  font-family:var(--font-jp);
  font-size:1rem;
  line-height:2.05;
  color:var(--ink);
  font-weight:600;
}
.coach-text-line{ display:block }
.coach-text-em{ background:linear-gradient(transparent 60%, var(--p-yellow) 60%); font-weight:700; padding:0 4px }
.coach-sign{
  margin-top:18px;
  font-family:var(--font-script); font-weight:700;
  font-size:1.3rem;
  color:var(--accent);
  display:flex; align-items:baseline; gap:8px;
}
.coach-sign::before{ content:'—' }

.philosophy-list{
  display:grid;
  grid-template-columns:1fr;
  gap:18px;
}
@media (min-width:680px){ .philosophy-list{ grid-template-columns:repeat(2, 1fr) } }
@media (min-width:1100px){ .philosophy-list{ grid-template-columns:repeat(3, 1fr) } }

.philosophy-card{
  position:relative;
  padding:28px 24px 24px;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  transition:transform .3s var(--ease-pop);
}
.philosophy-card:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.philosophy-card:nth-child(1){ background:var(--p-pink) }
.philosophy-card:nth-child(2){ background:var(--p-blue) }
.philosophy-card:nth-child(3){ background:var(--p-yellow) }
.philosophy-card:nth-child(4){ background:var(--p-mint) }
.philosophy-card:nth-child(5){ background:var(--p-purple) }
.philosophy-num{
  font-family:var(--font-num); font-weight:700;
  font-size:1.6rem;
  color:var(--accent);
  line-height:1;
  margin-bottom:10px;
}
.philosophy-card:nth-child(2) .philosophy-num{ color:var(--accent-3) }
.philosophy-card:nth-child(3) .philosophy-num{ color:#C29A38 }
.philosophy-card:nth-child(4) .philosophy-num{ color:var(--accent-4) }
.philosophy-card:nth-child(5) .philosophy-num{ color:#8B5BB5 }
.philosophy-title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.15rem;
  color:var(--ink);
  margin-bottom:10px;
  line-height:1.35;
}
.philosophy-lead{
  font-family:var(--font-jp-d); font-weight:700;
  font-size:.86rem;
  color:var(--ink);
  margin-bottom:8px;
  line-height:1.55;
}
.philosophy-body{
  font-size:.82rem;
  color:var(--ink-soft);
  line-height:1.75;
  font-weight:500;
}

/* ==============================================================
   #schedule - 練習日・場所
   ============================================================== */
.s-schedule{ background:var(--p-blue) }
.schedule-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
}
@media (min-width:980px){ .schedule-grid{ grid-template-columns:1fr 1.2fr } }

.schedule-card{
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  padding:clamp(24px, 3vw, 36px);
}
.schedule-card h3{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.4rem;
  color:var(--ink);
  margin-bottom:18px;
  display:flex; align-items:center; gap:10px;
}
.schedule-card h3::before{
  content:''; width:6px; height:24px;
  background:var(--accent);
  border-radius:6px;
}
.schedule-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0 12px;
}
.schedule-table th, .schedule-table td{
  padding:14px 16px;
  text-align:left;
  font-family:var(--font-jp-d); font-weight:700;
  font-size:.95rem;
}
.schedule-table th{
  background:var(--p-pink);
  color:var(--ink);
  border:2.5px solid var(--ink);
  border-radius:14px;
  width:36%;
  letter-spacing:.02em;
}
.schedule-table td{
  background:var(--p-yellow);
  color:var(--ink);
  border:2.5px solid var(--ink);
  border-radius:14px;
  font-weight:600;
}

.location-card{
  display:flex; flex-direction:column;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  overflow:hidden;
}
.location-info{ padding:clamp(20px, 2.5vw, 28px) }
.location-info h3{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.4rem;
  margin-bottom:8px;
  display:flex; align-items:center; gap:10px;
}
.location-info h3::before{
  content:''; width:6px; height:24px;
  background:var(--accent-4); border-radius:6px;
}
.location-info p{
  font-size:.95rem; color:var(--ink-soft);
  line-height:1.7;
  font-weight:600;
}
.location-info p strong{ color:var(--ink) }
.location-map{
  width:100%; height:280px;
  background:var(--p-mint);
  border-top:3px solid var(--ink);
}
.location-map iframe{ width:100%; height:100%; display:block; border:0 }

/* ==============================================================
   #events - バドだけが全てじゃない
   ============================================================== */
.s-events{ background:var(--p-yellow) }
.events-scroll{
  display:flex;
  gap:18px;
  overflow-x:auto;
  padding:24px 4vw 32px;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  scrollbar-color:var(--accent) transparent;
}
.events-scroll::-webkit-scrollbar{ height:10px }
.events-scroll::-webkit-scrollbar-track{ background:transparent }
.events-scroll::-webkit-scrollbar-thumb{ background:var(--accent); border-radius:10px }
.event-card{
  flex:0 0 clamp(220px, 28vw, 320px);
  scroll-snap-align:start;
  background:#fff;
  border-radius:20px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  overflow:hidden;
  transition:transform .3s var(--ease-pop);
}
.event-card:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.event-card img{
  width:100%; aspect-ratio:4/3; object-fit:cover;
  border-bottom:3px solid var(--ink);
}
.event-card-body{ padding:14px 18px 18px }
.event-card-title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.05rem;
  color:var(--ink);
  margin-bottom:4px;
}
.event-card-desc{
  font-size:.78rem; color:var(--ink-soft);
  line-height:1.55; font-weight:500;
}

/* ==============================================================
   #gallery - 大会・実績
   ============================================================== */
.s-gallery{ background:var(--paper) }
.s-gallery::before{
  content:''; position:absolute;
  top:30%; right:-5%; width:20vw; height:20vw;
  background:var(--p-pink); border-radius:50%;
  filter:blur(70px); opacity:.5; z-index:0;
}
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:14px;
}
@media (min-width:680px){ .gallery-grid{ grid-template-columns:repeat(3, 1fr) } }
@media (min-width:980px){ .gallery-grid{ grid-template-columns:repeat(4, 1fr) } }

.gallery-item{
  position:relative;
  aspect-ratio:1/1;
  overflow:hidden;
  border-radius:18px;
  background:#fff;
  border:3px solid var(--ink);
  cursor:zoom-in;
  transition:transform .3s var(--ease-out);
}
.gallery-item:hover{ transform:translateY(-4px) }
.gallery-item img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .6s var(--ease-out), filter .4s;
}
.gallery-item:hover img{ transform:scale(1.08); filter:saturate(1.15) }
.gallery-item-tag{
  position:absolute; top:10px; left:10px;
  font-family:var(--font-num); font-weight:700;
  font-size:.78rem;
  background:var(--accent); color:#fff;
  width:28px; height:28px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  border:2px solid var(--ink);
  z-index:2;
}

/* Gallery modal */
.gallery-modal{
  position:fixed; inset:0;
  background:rgba(45,42,74,.85);
  backdrop-filter:blur(12px);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  z-index:100;
  opacity:0;
  pointer-events:none;
  transition:opacity .3s;
}
.gallery-modal.is-open{ opacity:1; pointer-events:auto }
.gallery-modal img{
  max-width:90vw; max-height:80vh;
  border-radius:18px;
  border:5px solid #fff;
  box-shadow:0 30px 80px rgba(0,0,0,.5);
}
.gallery-modal-close{
  position:absolute; top:24px; right:24px;
  width:48px; height:48px;
  border-radius:50%;
  background:#fff;
  border:3px solid var(--ink);
  font-family:var(--font-num); font-size:1.4rem;
  color:var(--ink);
  cursor:pointer;
  box-shadow:4px 4px 0 var(--ink);
  z-index:2;
}
.gallery-modal-prev,
.gallery-modal-next{
  position:absolute; top:50%; transform:translateY(-50%);
  width:52px; height:52px;
  border-radius:50%;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  border:3px solid #fff;
  font-size:1.8rem; line-height:1;
  color:#fff; cursor:pointer;
  box-shadow:4px 4px 0 rgba(0,0,0,.3);
  display:flex; align-items:center; justify-content:center;
  transition:transform .2s, box-shadow .2s;
  z-index:2;
}
.gallery-modal-prev{ left:16px }
.gallery-modal-next{ right:16px }
.gallery-modal-prev:hover{ transform:translateY(-50%) translate(-2px,-2px); box-shadow:6px 6px 0 rgba(0,0,0,.3) }
.gallery-modal-next:hover{ transform:translateY(-50%) translate(-2px,-2px); box-shadow:6px 6px 0 rgba(0,0,0,.3) }
.gallery-modal-counter{
  position:absolute; bottom:20px; left:50%; transform:translateX(-50%);
  background:rgba(255,255,255,.2);
  color:#fff; font-family:var(--font-num); font-size:1rem; font-weight:700;
  padding:4px 14px; border-radius:999px;
  letter-spacing:.05em;
}

/* ============================================================
   写真装飾 — .pd スタイル（大きくポップに）
   ============================================================ */
.feature-img,
.step-img{ position:relative; overflow:visible }

/* 汎用デコスパン */
.pd{
  position:absolute; z-index:10; pointer-events:none;
  font-size:2.8rem; line-height:1;
  filter:drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff);
  animation:floatBob 3s ease-in-out infinite;
}
.pd--tl{ top:10px; left:10px; animation-duration:3.2s; transform:rotate(-15deg) }
.pd--tr{ top:10px; right:10px; animation-duration:2.8s; animation-delay:-.5s; transform:rotate(15deg) }
.pd--bl{ bottom:10px; left:10px; animation-duration:3.5s; animation-delay:-1s; transform:rotate(10deg) }
.pd--br{ bottom:10px; right:10px; animation-duration:2.6s; animation-delay:-.3s; transform:rotate(-10deg) }
.pd--tm{ top:10px; left:50%; transform:translateX(-50%) rotate(5deg); animation-duration:4s; animation-delay:-.8s }
.pd--bm{ bottom:10px; left:50%; transform:translateX(-50%) rotate(-5deg); animation-duration:3.8s; animation-delay:-1.5s }

/* イベントカード */
.event-card{ position:relative }
.event-card::after{
  content:'✦'; position:absolute; top:10px; right:12px;
  font-size:1.6rem; color:#fff; z-index:5;
  pointer-events:none;
  filter:drop-shadow(0 0 4px var(--accent));
  animation:sparkleTwinkle 2.5s ease-in-out infinite;
}

/* フィロソフィーカード */
.philosophy-card-img{ position:relative; overflow:visible }
/* ギャラリー */
.gallery-item{ position:relative; overflow:hidden }

/* ==============================================================
   #steps - 体験までの3ステップ
   ============================================================== */
.s-steps{ background:var(--p-purple) }
.steps-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
  position:relative;
}
@media (min-width:880px){ .steps-grid{ grid-template-columns:repeat(3, 1fr); gap:36px } }

.step{
  position:relative;
  padding:36px 24px 28px;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  text-align:center;
  transition:transform .3s var(--ease-pop);
}
.step:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.step:nth-child(1){ background:var(--p-pink) }
.step:nth-child(2){ background:var(--p-blue) }
.step:nth-child(3){ background:var(--p-mint) }
.step-num{
  position:absolute; top:-22px; left:50%;
  transform:translateX(-50%);
  background:var(--ink);
  color:#fff;
  font-family:var(--font-en-d); font-weight:700;
  font-size:1rem; letter-spacing:.1em;
  padding:6px 18px;
  border-radius:999px;
}
.step-emoji{ font-size:3rem; line-height:1; margin:8px 0 14px }
.step-title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.2rem;
  color:var(--ink);
  margin-bottom:10px;
}
.step-text{
  font-size:.88rem;
  color:var(--ink); line-height:1.7;
  font-weight:600;
}

/* ==============================================================
   #voices - 保護者の声
   ============================================================== */
.s-voices{ background:var(--p-pink) }
.voices-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
}
@media (min-width:880px){ .voices-grid{ grid-template-columns:repeat(3, 1fr) } }

.voice{
  position:relative;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  padding:32px 28px 24px;
  box-shadow:6px 6px 0 var(--ink);
  transition:transform .3s var(--ease-pop);
}
.voice:hover{ transform:rotate(-1deg) translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.voice::before{
  content:'"'; position:absolute;
  top:-32px; left:18px;
  font-family:var(--font-en-d); font-weight:700;
  font-size:6rem; line-height:1;
  color:var(--accent);
}
.voice-text{
  font-family:var(--font-jp);
  font-size:.95rem;
  color:var(--ink);
  line-height:1.85;
  font-weight:500;
}
.voice-author{
  margin-top:18px;
  padding-top:14px;
  border-top:2px dashed var(--ink);
  display:flex; align-items:center; gap:12px;
}
.voice-avatar{
  width:36px; height:36px; border-radius:50%;
  background:var(--p-yellow);
  border:2px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-size:1.1rem;
}
.voice:nth-child(2) .voice-avatar{ background:var(--p-mint) }
.voice:nth-child(3) .voice-avatar{ background:var(--p-blue) }
.voice-author-name{
  font-family:var(--font-jp-d); font-weight:700;
  font-size:.86rem; color:var(--ink);
}
.voice-author-sub{
  font-family:var(--font-en); font-size:.66rem;
  color:var(--ink-soft);
  letter-spacing:.08em; text-transform:uppercase;
  font-weight:700;
}

/* ==============================================================
   #price - 月謝・費用
   ============================================================== */
.s-price{ background:var(--paper) }
.s-price::before{
  content:''; position:absolute;
  top:-10%; left:-10%; width:35vw; height:35vw;
  background:var(--p-yellow); border-radius:50%;
  filter:blur(80px); opacity:.5; z-index:0;
}
.price-card{
  max-width:560px;
  margin-inline:auto;
  background:#fff;
  border-radius:32px;
  border:3px solid var(--ink);
  box-shadow:10px 10px 0 var(--accent);
  padding:clamp(24px, 3vw, 36px);
}
.price-table{
  width:100%; border-collapse:separate; border-spacing:0;
}
.price-table tr{
  border-bottom:1px dashed var(--ink);
}
.price-table tr:last-child{ border-bottom:0 }
.price-table th, .price-table td{
  padding:14px 6px;
  text-align:left;
}
.price-table th{
  font-family:var(--font-jp-d); font-weight:700;
  font-size:.95rem;
  color:var(--ink);
}
.price-table td{
  text-align:right;
  font-family:var(--font-num); font-weight:700;
  font-size:1.1rem;
  color:var(--accent);
}
.price-table td.is-pending{ color:var(--ink-mute); font-family:var(--font-jp-d); font-size:.85rem }
.price-table td .yen{ font-family:var(--font-jp-d); font-size:.65em; margin-left:2px; color:var(--ink) }
.price-highlight{
  display:flex; align-items:baseline; gap:10px;
  padding:14px 20px;
  background:linear-gradient(135deg, var(--p-pink), var(--p-yellow));
  border-radius:18px;
  border:2.5px solid var(--ink);
  margin-bottom:18px;
  justify-content:space-between;
}
.price-highlight-label{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:1.05rem;
  color:var(--ink);
}
.price-highlight-value{
  font-family:var(--font-num); font-weight:700;
  font-size:2rem;
  color:var(--accent);
}
.price-highlight-value small{ font-size:.4em; color:var(--ink); margin-left:4px }
.price-note{
  margin-top:18px;
  padding:14px 18px;
  background:var(--p-mint);
  border-radius:14px;
  border:2px dashed var(--ink);
  font-size:.82rem; color:var(--ink);
  line-height:1.6; font-weight:600;
}

/* ==============================================================
   #faq - よくある質問
   ============================================================== */
.s-faq{ background:var(--p-mint) }
.faq-list{
  max-width:780px;
  margin-inline:auto;
  display:flex; flex-direction:column;
  gap:14px;
}
.faq-item{
  background:#fff;
  border-radius:20px;
  border:3px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);
  overflow:hidden;
  transition:box-shadow .3s;
}
.faq-item.is-open{ box-shadow:7px 7px 0 var(--ink) }
.faq-q{
  width:100%;
  padding:18px 22px;
  display:flex; align-items:center; gap:14px;
  text-align:left;
  font-family:var(--font-jp-d); font-weight:700;
  font-size:1rem;
  color:var(--ink);
  background:transparent;
  cursor:pointer;
}
.faq-q-icon{
  background:var(--accent); color:#fff;
  width:32px; height:32px; flex-shrink:0;
  border-radius:50%;
  border:2.5px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-num); font-weight:700;
  font-size:1rem;
  line-height:1;
}
.faq-q-text{ flex:1; line-height:1.5 }
.faq-q-toggle{
  width:32px; height:32px; flex-shrink:0;
  background:var(--ink); color:#fff;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-num); font-weight:700;
  font-size:1.2rem;
  line-height:1;
  transition:transform .3s var(--ease-out);
}
.faq-item.is-open .faq-q-toggle{ transform:rotate(45deg); background:var(--accent) }
.faq-a{
  max-height:0;
  overflow:hidden;
  transition:max-height .4s var(--ease-out);
}
.faq-item.is-open .faq-a{ max-height:400px }
.faq-a-inner{
  padding:0 22px 22px 68px;
  font-size:.92rem;
  color:var(--ink-soft);
  line-height:1.85;
  font-weight:500;
}

/* ==============================================================
   #contact - 一緒にバドミントン、しませんか?
   ============================================================== */
.s-contact{
  background:linear-gradient(135deg, var(--p-yellow) 0%, var(--p-pink) 50%, var(--p-purple) 100%);
  text-align:center;
}
.contact-script{
  font-family:var(--font-script); font-weight:700;
  font-size:clamp(2rem, 4vw, 3rem);
  color:var(--accent);
  margin-bottom:14px;
  line-height:1;
}
.contact-title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(2.4rem, 5vw, 4rem);
  line-height:1.15;
  color:var(--ink);
  margin-bottom:18px;
}
.contact-title-em{
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
}
.contact-lead{
  font-size:1.05rem;
  color:var(--ink);
  line-height:1.85; font-weight:600;
  max-width:560px;
  margin:0 auto 36px;
}
.contact-buttons{
  display:flex; flex-wrap:wrap;
  gap:18px;
  justify-content:center;
  margin-bottom:24px;
}
.contact-btn{
  display:inline-flex; align-items:center; gap:12px;
  padding:20px 36px;
  font-family:var(--font-jp-d); font-weight:900; font-size:1.05rem;
  border:3px solid var(--ink);
  border-radius:999px;
  box-shadow:6px 6px 0 var(--ink);
  transition:transform .25s var(--ease-pop), box-shadow .25s;
  position:relative;
}
.contact-btn::after{ content:'→'; transition:transform .3s }
.contact-btn:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.contact-btn:hover::after{ transform:translateX(6px) }
.contact-btn--ig{
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  color:#fff;
}
.contact-btn--line{
  background:#06C755;
  color:#fff;
  border-color:#06C755;
  box-shadow:6px 6px 0 #039140;
}
.contact-btn--line:hover{ box-shadow:9px 9px 0 #039140 }
.contact-btn-badge{
  position:absolute; top:-10px; right:8px;
  background:var(--accent-2); color:var(--ink);
  font-family:var(--font-en); font-size:.66rem; font-weight:700;
  padding:3px 9px; border-radius:999px;
  border:2px solid var(--ink);
}
.contact-info{
  display:inline-flex; flex-wrap:wrap; gap:14px;
  font-family:var(--font-jp-d); font-weight:700;
  font-size:.86rem;
  color:var(--ink);
  background:rgba(255,255,255,.7);
  border-radius:999px;
  padding:10px 22px;
  border:2px solid var(--ink);
}
.contact-info-item{ display:inline-flex; align-items:center; gap:6px }
.contact-info-item strong{ color:var(--accent) }

/* data-pending: LINE未開設中はクリック不可 */
[data-pending="true"]{
  cursor:not-allowed;
  pointer-events:none;
}

/* ==============================================================
   FOOTER
   ============================================================== */
.foot{
  background:var(--ink); color:rgba(255,255,255,.78);
  padding:60px 0 40px;
  font-family:var(--font-jp);
}
.foot-inner{
  width:var(--container);
  margin-inline:auto;
  display:grid;
  grid-template-columns:1fr;
  gap:32px;
  align-items:start;
}
@media (min-width:680px){ .foot-inner{ grid-template-columns:1.5fr 1fr 1fr } }
.foot-brand{
  display:flex; flex-direction:column; gap:12px;
}
.foot-logo{
  display:flex; align-items:center; gap:12px;
  font-family:var(--font-en-d); font-weight:700; font-size:1.7rem;
  color:#fff; letter-spacing:.04em;
}
.foot-logo img{ width:42px; height:42px }
.foot-desc{
  font-size:.85rem; color:rgba(255,255,255,.65);
  line-height:1.7;
}
.foot-h{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:.86rem;
  color:#fff;
  margin-bottom:14px;
  letter-spacing:.04em;
}
.foot-links{ display:flex; flex-direction:column; gap:10px }
.foot-links a{
  font-size:.84rem;
  color:rgba(255,255,255,.72);
  transition:color .25s;
}
.foot-links a:hover{ color:var(--accent-2) }
.foot-sns{ display:flex; gap:10px; margin-top:6px }
.foot-sns a{
  width:38px; height:38px;
  border-radius:50%;
  background:rgba(255,255,255,.1);
  display:flex; align-items:center; justify-content:center;
  font-size:1.1rem;
  transition:background .25s, transform .25s;
}
.foot-sns a:hover{ background:var(--accent); transform:translateY(-2px) }
.foot-copy{
  width:var(--container);
  margin:32px auto 0;
  padding-top:24px;
  border-top:1px solid rgba(255,255,255,.1);
  font-family:var(--font-en); font-size:.75rem;
  color:rgba(255,255,255,.5);
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px;
  letter-spacing:.04em;
}

/* ==============================================================
   Floating CTA (右下追従)
   ============================================================== */
.float-cta{
  position:fixed; bottom:20px; right:20px;
  z-index:60;
  display:flex; flex-direction:column; gap:10px;
  opacity:0;
  transform:translateY(20px);
  pointer-events:none;
  transition:opacity .35s var(--ease-out), transform .35s var(--ease-out);
}
.float-cta.is-visible{
  opacity:1; transform:translateY(0); pointer-events:auto;
}
.float-cta a{
  display:flex; align-items:center; gap:10px;
  padding:12px 18px;
  background:#fff;
  border:2.5px solid var(--ink);
  border-radius:999px;
  font-family:var(--font-jp-d); font-weight:800; font-size:.82rem;
  color:var(--ink);
  box-shadow:4px 4px 0 var(--ink);
  transition:transform .2s, box-shadow .2s;
}
.float-cta a:hover{ transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--ink) }
.float-cta a strong{ font-size:.95rem }
.float-cta a.is-pink{
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  color:#fff;
}
.float-cta a.is-line{
  background:#06C755;
  color:#fff;
  border-color:#06C755;
  box-shadow:4px 4px 0 #039140;
}
.float-cta a.is-line:hover{ box-shadow:6px 6px 0 #039140 }
@media (max-width:680px){
  .float-cta{ left:14px; right:14px; bottom:14px; flex-direction:row }
  .float-cta a{ flex:1; justify-content:center }
}

/* ==============================================================
   GORGEOUS DECORATIONS — 全セクション共通の装飾要素
   ============================================================== */

/* 飛び交うキラキラ */
.sparkle{
  position:absolute;
  pointer-events:none; user-select:none;
  z-index:3;
  filter:drop-shadow(0 4px 12px rgba(255,107,181,.45));
  animation:sparkleTwinkle 2.4s ease-in-out infinite;
}
@keyframes sparkleTwinkle{
  0%,100%{ transform:scale(1) rotate(0); opacity:.9 }
  50%{ transform:scale(1.4) rotate(60deg); opacity:1 }
}

/* ハート、星、リボン、花など */
.deco-icon{
  position:absolute;
  pointer-events:none; user-select:none;
  z-index:3;
}
.deco-spin{ animation:spin 12s linear infinite }
.deco-float{ animation:floatBob 5s ease-in-out infinite }
.deco-heart{ animation:heartBeat 1.4s ease-in-out infinite }
@keyframes floatBob{
  0%,100%{ transform:translateY(0) }
  50%{ transform:translateY(-14px) }
}
@keyframes heartBeat{
  0%,100%{ transform:scale(1) }
  50%{ transform:scale(1.15) }
}

/* 波線 SVG */
.wave-divider{
  position:absolute;
  left:0; right:0;
  height:24px;
  z-index:2;
  pointer-events:none;
}
.wave-divider--top{ top:-1px }
.wave-divider--bottom{ bottom:-1px; transform:scaleY(-1) }
.wave-divider svg{ width:100%; height:100% }

/* リボンバナー */
.ribbon-banner{
  display:inline-flex; align-items:center;
  background:var(--accent);
  color:#fff;
  font-family:var(--font-jp-d); font-weight:900;
  font-size:.85rem;
  padding:8px 20px;
  position:relative;
  letter-spacing:.04em;
  border:2.5px solid var(--ink);
  box-shadow:4px 4px 0 var(--ink);
}
.ribbon-banner::before{
  content:''; position:absolute;
  top:50%; left:-12px;
  width:14px; height:14px;
  background:var(--accent);
  clip-path:polygon(100% 0, 100% 100%, 0 50%);
  border-left:2.5px solid var(--ink);
  border-top:2.5px solid var(--ink);
  border-bottom:2.5px solid var(--ink);
  transform:translateY(-50%);
}
.ribbon-banner::after{
  content:''; position:absolute;
  top:50%; right:-12px;
  width:14px; height:14px;
  background:var(--accent);
  clip-path:polygon(0 0, 0 100%, 100% 50%);
  border-right:2.5px solid var(--ink);
  border-top:2.5px solid var(--ink);
  border-bottom:2.5px solid var(--ink);
  transform:translateY(-50%);
}

/* シャトル装飾 (動的) */
.shuttle-fly{
  position:absolute;
  z-index:2;
  pointer-events:none;
  width:50px; height:50px;
  filter:drop-shadow(0 4px 12px rgba(0,0,0,.15));
}
.shuttle-fly svg{ width:100%; height:100% }
@keyframes shuttleArc{
  0%   { transform:translate(0,0) rotate(0) }
  50%  { transform:translate(60px,-40px) rotate(180deg) }
  100% { transform:translate(120px,-10px) rotate(360deg) }
}

/* スクロール初期状態 (リビール用) */
.js-fade-in{ opacity:0; transform:translateY(40px) }
.js-zoom-in{ opacity:0; transform:scale(.92) }
.js-slide-left{ opacity:0; transform:translateX(-50px) }
.js-slide-right{ opacity:0; transform:translateX(50px) }
.js-rotate-in{ opacity:0; transform:rotate(-12deg) scale(.92) }

/* テキスト分解 */
.split-char{ display:inline-block }

/* グロー */
.glow-pulse{
  animation:glowPulse 2.5s ease-in-out infinite;
}
@keyframes glowPulse{
  0%,100%{ filter:drop-shadow(0 0 12px rgba(255,107,181,.5)) }
  50%   { filter:drop-shadow(0 0 24px rgba(255,107,181,.9)) }
}

/* テキストカラフルライン下線 */
.rainbow-line{
  display:inline-block;
  position:relative;
}
.rainbow-line::after{
  content:''; position:absolute;
  left:0; right:0; bottom:-6px;
  height:4px; border-radius:4px;
  background:linear-gradient(90deg, var(--accent), var(--accent-2), var(--accent-4), var(--accent-3));
  background-size:200% 100%;
  animation:gradFlow 4s linear infinite;
}

/* セクション間のジグザグ装飾 */
.zigzag-divider{
  height:24px;
  background-image:
    linear-gradient(135deg, var(--paper) 25%, transparent 25%),
    linear-gradient(225deg, var(--paper) 25%, transparent 25%);
  background-size:24px 24px;
  background-position:0 0, 0 0;
  background-repeat:repeat-x;
}

/* ==============================================================
   V26 から移植 (V25 パステルトーンに調整)
   PHOTO-STRIP / アコーディオン / 追加機能
   ============================================================== */

/* photo-strip */
.photo-strip{
  position:relative;
  height:clamp(160px, 22vw, 280px);
  background:var(--ink);
  overflow:hidden;
  display:grid;
  grid-template-columns:repeat(6, 1fr);
  gap:6px;
  padding:14px;
}
.photo-strip__cell{
  position:relative;
  overflow:hidden;
  background:#fff;
  border-radius:8px;
  padding:6px 6px 12px;
  border:2.5px solid var(--ink);
  box-shadow:4px 4px 0 var(--accent);
  transform:rotate(-1deg);
  transition:transform .35s var(--ease-out);
}
.photo-strip__cell:nth-child(even){ transform:rotate(1.5deg) }
.photo-strip__cell:hover{ transform:rotate(0) scale(1.03); z-index:5 }
.photo-strip__cell img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .8s var(--ease-out);
  border-radius:4px;
  background:#000;
}
.photo-strip__cell:hover img{ transform:scale(1.06) }
.photo-strip__cell-tag{
  position:absolute; bottom:8px; left:8px; right:8px;
  text-align:center;
  font-family:var(--font-script); font-weight:700;
  font-size:.78rem;
  color:var(--ink);
  letter-spacing:.06em;
}

/* gallery アコーディオン */
.gallery-grid.is-collapsed .gallery-item:nth-child(n+9){ display:none }
.gallery-item.is-revealed{ animation:galleryReveal .55s var(--ease-out) both }
@keyframes galleryReveal{
  from{ opacity:0; transform:translateY(20px) scale(.96) }
  to  { opacity:1; transform:translateY(0)  scale(1) }
}
.gallery-more-wrap{
  display:flex; justify-content:center;
  margin-top:36px;
}
.gallery-more-btn{
  display:inline-flex; align-items:center; gap:12px;
  padding:18px 36px;
  font-family:var(--font-jp-d); font-weight:900; font-size:1rem;
  background:var(--accent); color:#fff;
  border:3.5px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  border-radius:999px;
  letter-spacing:.04em;
  cursor:pointer;
  transition:transform .2s var(--ease-out), box-shadow .2s, background .2s, color .2s;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
.gallery-more-btn > *{ pointer-events:none }
.gallery-more-btn::after{
  content:'+';
  font-family:var(--font-num); font-size:1.4rem;
  background:#fff; color:var(--accent);
  width:30px; height:30px;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  line-height:1;
  transition:transform .3s var(--ease-out), background .25s, color .25s;
}
.gallery-more-btn:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.gallery-more-btn .count{
  font-family:var(--font-num); color:var(--ink);
  background:var(--p-yellow); padding:2px 8px;
  border-radius:999px;
  font-size:.85rem;
}
.gallery-more-btn.is-open{
  background:var(--ink); color:var(--p-yellow);
}
.gallery-more-btn.is-open::after{
  transform:rotate(45deg);
  background:var(--p-yellow); color:var(--ink);
}
.gallery-more-btn.is-open .count{ display:none }

/* タイル ポラロイド */
.tile{
  background:#fff;
  padding:8px 8px 12px;
  border:3px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);
  transition:transform .25s var(--ease-out), box-shadow .25s;
}
.tile:hover{ transform:translate(-2px,-2px); box-shadow:7px 7px 0 var(--ink); z-index:5 }
.tile img{ background:#000 }
.tile::after{ display:none }

/* gallery-item ポラロイド */
.gallery-grid{
  background:transparent;
  border:0;
  gap:14px;
  padding:0;
}
.gallery-item{
  background:#fff;
  padding:8px 8px 16px;
  border:3px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);
  border-radius:8px;
  aspect-ratio:auto;
  transition:transform .25s var(--ease-out), box-shadow .25s;
}
.gallery-item img{ aspect-ratio:1/1; background:#000; border-radius:4px }
.gallery-item:hover{ transform:translate(-3px,-3px) rotate(-1deg); box-shadow:8px 8px 0 var(--ink) }
.gallery-item-tag{
  top:14px; left:14px;
  background:#fff; color:var(--ink);
  border:2px solid var(--ink);
  z-index:3;
}

/* event-card ポラロイド調 */
.event-card{
  padding:8px 8px 0;
  background:#fff;
}
.event-card img{ background:#000; border-bottom:none; border-radius:4px }
.event-card-body{ padding:12px 14px 14px }

/* ==============================================================
   追加機能: スクロール進捗バー / ナビ現在地 / トップに戻る
   ============================================================== */

/* スクロール進捗バー */
.scroll-progress{
  position:fixed; top:0; left:0;
  height:4px; width:0;
  background:linear-gradient(90deg, var(--accent), var(--accent-2), var(--accent-4), var(--accent-3));
  background-size:200% 100%;
  z-index:60;
  transition:width .1s linear;
  pointer-events:none;
}

/* ナビ現在地 */
.nav__links a.is-current{
  color:var(--accent);
}
.nav__links a.is-current::after{
  transform:translateX(-50%) scale(1);
}

/* トップに戻るボタン */
.to-top{
  position:fixed; bottom:145px; right:20px;
  z-index:55;
  width:48px; height:48px;
  border-radius:50%;
  background:#fff;
  border:2.5px solid var(--ink);
  box-shadow:4px 4px 0 var(--ink);
  font-family:var(--font-num); font-size:1.4rem;
  color:var(--ink);
  display:flex; align-items:center; justify-content:center;
  line-height:1;
  cursor:pointer;
  opacity:0;
  transform:translateY(20px);
  pointer-events:none;
  transition:opacity .3s var(--ease-out), transform .3s var(--ease-out), box-shadow .2s;
}
.to-top.is-visible{ opacity:1; transform:translateY(0); pointer-events:auto }
.to-top:hover{ transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--ink) }
@media (max-width:680px){
  .to-top{ bottom:80px; right:10px; width:42px; height:42px; font-size:1.2rem }
}

/* ==============================================================
   スマホ最適化 (V25 用)
   ============================================================== */

@media (max-width:880px){
  /* steps 2列 */
  .steps-grid{ grid-template-columns:repeat(2, 1fr); gap:14px }
  .steps-grid > .step:nth-child(3){ grid-column:1 / -1 }
  /* footer 2列 + brand全幅 */
  .foot-inner{ grid-template-columns:1fr 1fr; gap:24px 32px }
  .foot-brand{ grid-column:1 / -1 }
  /* photo-strip 横スクロール式 */
  .photo-strip{
    display:flex;
    grid-template-columns:none;
    gap:8px;
    height:auto;
    padding:12px;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .photo-strip::-webkit-scrollbar{ display:none }
  .photo-strip__cell{
    flex:0 0 42vw;
    aspect-ratio:1/1;
    scroll-snap-align:start;
    transform:rotate(0);
  }
  .photo-strip__cell:nth-child(n+4){ display:flex }
  .photo-strip__cell:nth-child(even){ transform:rotate(0) }
}

@media (max-width:680px){
  /* section padding 縮小 */
  .section{ padding:clamp(44px, 9vw, 72px) 0 }
  .section__title{ font-size:clamp(1.7rem, 7.4vw, 2.3rem); line-height:1.18 }
  .section__lead{ font-size:.92rem; line-height:1.75 }
  .section__head{ margin-bottom:clamp(28px, 5vw, 40px) }

  /* ヒーロー圧縮 */
  .hero{ gap:6px; padding-bottom:80px }
  .center-card{ border-radius:14px }
  .center-card__img{ aspect-ratio:16/10 }
  .center-card__body{ padding:18px 18px 30px; gap:10px }
  .hero__title{ font-size:clamp(2rem, 8.5vw, 2.8rem); line-height:1.0 }
  .hero__lead{ font-size:.88rem; line-height:1.7 }
  /* 統計を横3列固定 */
  .hero__stats{
    grid-template-columns:repeat(3, 1fr);
    gap:4px;
    margin-top:6px;
  }
  .hero__stat{ padding:10px 4px }
  .hero__stat-emoji{ width:24px; height:24px; font-size:.85rem; top:-10px; right:-6px }
  .hero__stat-num{ font-size:1.5rem }
  .hero__stat-label{ font-size:.55rem; letter-spacing:.04em; margin-top:2px }
  .hero__stat-jp{ font-size:.6rem; margin-top:1px }
  /* CTA 横並びコンパクト */
  .hero__ctas{ flex-direction:row; gap:8px; flex-wrap:wrap; margin-top:4px }
  .hero__ctas .btn{ flex:1; min-width:0; padding:14px 14px; font-size:.86rem }
  .hero__ctas .btn::after{ display:none }

  /* gallery「もっと見る」ボタン縮小 */
  .gallery-more-wrap{ margin-top:24px; padding:0 8px }
  .gallery-more-btn{
    width:100%;
    padding:14px 20px;
    font-size:.9rem;
    box-shadow:4px 4px 0 var(--ink);
    gap:10px;
    justify-content:center;
  }
  .gallery-more-btn:hover{ box-shadow:6px 6px 0 var(--ink) }
  .gallery-more-btn::after{ width:26px; height:26px; font-size:1.2rem }

  /* steps 横並びレイアウト */
  .steps-grid{ grid-template-columns:1fr; gap:14px }
  .steps-grid > .step:nth-child(3){ grid-column:auto }
  .step{ display:grid; grid-template-columns:1fr; padding:30px 22px 24px }
  .step-emoji{ font-size:2.2rem; margin:4px 0 8px }
  .step-title{ font-size:1.05rem; margin-bottom:6px }
  .step-text{ font-size:.84rem; line-height:1.65 }

  /* events カード幅縮小 */
  .events-scroll{ padding:18px 4vw 24px; gap:10px }
  .event-card{ flex:0 0 180px }
  .event-card-body{ padding:10px 12px 14px }
  .event-card-title{ font-size:.9rem }
  .event-card-desc{ font-size:.7rem }

  /* タイルキャプション 常時表示 */
  .tile-cap{ transform:translateY(0); opacity:1; font-size:.7rem; padding:4px 9px }

  /* footer 2列 */
  .foot{ padding:48px 0 32px }
  .foot-inner{ grid-template-columns:1fr 1fr; gap:24px }
  .foot-brand{ grid-column:1 / -1 }
  .foot-h{ font-size:.78rem }
  .foot-links a{ font-size:.78rem }
  .foot-copy{ flex-direction:column; gap:6px; text-align:center; font-size:.7rem }

  /* contact 軽量化 */
  .contact-buttons{ flex-direction:column; align-items:stretch; gap:12px }
  .contact-btn{
    padding:16px 22px; font-size:.95rem;
    box-shadow:4px 4px 0 var(--ink);
    justify-content:center;
  }
  .contact-title{ font-size:clamp(2rem, 8vw, 2.8rem); line-height:1.2 }
  .contact-lead{ font-size:.92rem; line-height:1.7 }
  .contact-info{
    flex-direction:column; gap:4px;
    padding:10px 18px; font-size:.78rem;
  }

  /* nav ロゴ 1.5倍 (大きめ) */
  .nav__cta{ padding:9px 13px; font-size:.74rem }
  .nav__logo{ gap:8px; min-width:0 }
  .nav__logo img{ width:46px; height:46px }
  .nav__logo span{
    display:inline;
    font-size:clamp(1rem, 3.4vw, 1.25rem);
    line-height:1.1;
    font-weight:900;
  }
  .foot-logo{ font-size:1rem }
  .foot-logo img{ width:38px; height:38px }

  /* slogan-bg 縮小 */
  .slogan-bg{ font-size:clamp(6rem, 22vw, 10rem) }
  .slogan{ padding:24px 8px; margin-bottom:48px }
  .slogan-sub{ font-size:.78rem; letter-spacing:.1em }

  /* schedule 地図高さ縮小 */
  .location-map{ height:200px }
  .schedule-card{ padding:18px 16px }
  .schedule-table th, .schedule-table td{ padding:12px 6px; font-size:.86rem }
  .schedule-table th{ font-size:.86rem; width:32% }

  /* gallery-modal 閉じるボタン 下中央 */
  .gallery-modal-close{
    top:auto; bottom:24px;
    left:50%; right:auto;
    transform:translateX(-50%);
    width:64px; height:64px;
    font-size:1.8rem;
  }
  .gallery-modal img{ max-height:75vh }

  /* faq タップ領域 */
  .faq-q{ padding:16px 16px; gap:10px; font-size:.92rem }
  .faq-q-icon{ width:32px; height:32px; font-size:.95rem }
  .faq-q-toggle{ width:32px; height:32px; font-size:1.25rem }
  .faq-a-inner{ padding:0 16px 18px 58px; font-size:.86rem }

  /* 影サイズ縮小 */
  .feature, .step, .philosophy-card, .stat-card{ box-shadow:5px 5px 0 var(--ink) }
}

/* ===== 420px以下 ===== */
@media (max-width:420px){
  .hero__stats{ gap:3px }
  .hero__stat-num{ font-size:1.3rem }
  .hero__stat-label{ font-size:.5rem }
  .hero__ctas .btn{ font-size:.8rem; padding:12px 10px }
  .event-card{ flex:0 0 160px }
  .photo-strip__cell{ flex:0 0 48vw }
  /* 極小スマホで微調整 */
  .nav__logo img{ width:40px; height:40px }
  .nav__logo span{ font-size:.92rem }
  .nav__cta{ padding:8px 11px; font-size:.7rem }
}

/* ==============================================================
   スマホ全体精査の最終調整 (max-width:680px 用)
   ============================================================== */
@media (max-width:680px){

  /* === HERO 中央カード === */
  .center-card__chip{
    font-size:.62rem; letter-spacing:.12em;
    margin-top:2px;
  }
  .center-card__chip::before{ font-size:1em }
  .center-card__img-tag{
    font-size:.78rem;
    padding:4px 10px;
  }
  .center-card__img-label{
    font-size:.55rem;
    padding:3px 8px;
  }

  /* hero lead を一行化 */
  .hero__lead{ font-size:.86rem; line-height:1.7 }
  .hero__lead-pop{
    padding:1px 6px;
    font-size:.86em;
  }
  .hero__lead-hi{ padding:0 2px }

  /* hero stat の絵文字を小さく＋位置調整 */
  .hero__stat-emoji{
    width:22px; height:22px; font-size:.8rem;
    top:-10px; right:-6px;
    border-width:2px;
  }

  /* === stat-card 番号バッジ === */
  .stat-card{ padding:24px 12px 18px }
  .stat-card-emoji{
    width:38px; height:38px; font-size:1.1rem;
    top:-14px;
    border-width:2px;
  }
  .stat-card-num{ font-size:clamp(2rem, 8vw, 2.6rem) }
  .stat-card-label{ font-size:.86rem; margin-top:8px }
  .stat-card-sub{ font-size:.6rem }

  /* === features 番号バッジを内側に === */
  .feature-num{
    top:-18px; left:18px;
    width:44px; height:44px;
    font-size:1.2rem;
    border-width:3px;
    box-shadow:3px 3px 0 var(--ink);
  }
  .feature-body{ padding:32px 22px 24px }
  .feature-icon{ font-size:2.4rem; margin-bottom:10px }
  .feature-title{ font-size:1.15rem }
  .feature-text{ font-size:.88rem; line-height:1.75 }

  /* === philosophy slogan === */
  .slogan{ padding:20px 6px; margin-bottom:40px }
  .slogan-main{ font-size:clamp(2rem, 8vw, 2.6rem) }
  .slogan-bg{ font-size:clamp(5rem, 26vw, 9rem); opacity:.6 }

  /* === philosophy coach-block === */
  .coach-block{ padding:24px 20px; margin-bottom:48px; gap:24px; box-shadow:6px 6px 0 var(--p-pink-2) }
  .coach-photo{ max-width:210px; border-width:4px; box-shadow:4px 4px 0 var(--ink) }
  .coach-text{ font-size:.92rem; line-height:1.85 }
  .coach-text-line{ margin-bottom:.3em }
  .coach-sign{ font-size:1.1rem }

  /* === philosophy 5cards 番号位置 === */
  .philosophy-num{
    font-size:1.4rem;
    margin-bottom:8px;
  }
  .philosophy-card{ padding:22px 20px 20px }
  .philosophy-title{ font-size:1.05rem }
  .philosophy-lead{ font-size:.82rem }
  .philosophy-body{ font-size:.8rem; line-height:1.7 }

  /* === schedule === */
  .schedule-card h3{ font-size:1.2rem }
  .schedule-table th{ font-size:.85rem; padding:10px 6px }
  .schedule-table td{ font-size:.85rem; padding:10px 8px }

  /* === events カードのテキスト余白 === */
  .event-card-body{ padding:10px 12px 14px }
  .event-card-title{ font-size:.9rem; margin-bottom:2px }
  .event-card-desc{ font-size:.7rem; line-height:1.5 }

  /* === gallery タイル番号バッジ === */
  .gallery-item{ padding:6px 6px 12px; box-shadow:4px 4px 0 var(--ink) }
  .gallery-item:hover{ box-shadow:6px 6px 0 var(--ink) }
  .gallery-item-tag{
    width:26px; height:26px; font-size:.74rem;
    top:10px; left:10px;
    border-width:1.5px;
  }

  /* === steps の番号 + 写真 === */
  .step-img{ aspect-ratio:16/9 }
  .step-num{
    top:-14px;
    padding:5px 16px; font-size:.78rem;
    border-width:2.5px;
    box-shadow:2px 2px 0 var(--ink);
  }
  .step-body{ padding:28px 18px 22px }
  .step-emoji{ font-size:2.2rem; margin:2px 0 8px }
  .step-title{ font-size:1.05rem }
  .step-text{ font-size:.82rem; line-height:1.65 }

  /* === price-side-photo タグ === */
  .price-side-photo-tag{ font-size:.85rem; padding:3px 10px }
  .price-card{ padding:20px 18px; box-shadow:6px 6px 0 var(--accent-3) }
  .price-highlight{ padding:14px 18px }
  .price-highlight-label{ font-size:1rem }
  .price-highlight-value{ font-size:1.8rem }
  .price-table th{ font-size:.9rem; padding:10px 4px }
  .price-table td{ font-size:1rem; padding:10px 4px }

  /* === FAQ === */
  .faq-q{ padding:14px 14px; gap:10px; font-size:.9rem }
  .faq-q-icon{ width:30px; height:30px; font-size:.9rem }
  .faq-q-toggle{ width:30px; height:30px; font-size:1.2rem }
  .faq-a{ padding:0 16px 18px 56px; font-size:.85rem; line-height:1.7 }

  /* === contact === */
  .s-contact{ padding-block:60px }
  .contact-script{ font-size:clamp(1.5rem, 7vw, 2.2rem); margin-bottom:8px }
  .contact-title{ font-size:clamp(1.8rem, 8vw, 2.4rem); line-height:1.25; margin-bottom:14px }
  .contact-lead{ font-size:.92rem; line-height:1.7; margin-bottom:26px }
  .contact-info{
    flex-direction:column; gap:4px;
    padding:10px 16px; font-size:.78rem;
    text-align:center;
  }

  /* === footer === */
  .foot-desc{ font-size:.8rem }
  .foot-h{ font-size:.78rem }
  .foot-links a{ font-size:.78rem }
  .foot-copy{ font-size:.68rem; line-height:1.6 }

  /* === 追従 CTA 下バー: contact 入った時の重なり対策 === */
  .float-cta{ bottom:8px; left:8px; right:8px }
  .float-cta a{ padding:11px 14px; font-size:.78rem }
  .to-top{ bottom:74px }  /* 追従CTAの上 */

  /* === スクロール進捗バー 太さ === */
  .scroll-progress{ height:3px }

  /* === 切り抜き装飾の位置微調整 (はみ出し回避) === */
  .cutout-deco--hero-philo{ top:-20px; right:-12px; width:110px }
  .cutout-deco--action-events{ bottom:-12px; left:-12px; width:100px }
  .cutout-deco--peace-faq{ top:-10px; right:-10px; width:100px }

  /* === photo-strip テキスト === */
  .photo-strip__cell-tag{ font-size:.74rem }

  /* === philosophy feature__img-tag === */
  .philosophy-feature__img-tag{ font-size:.74rem; padding:4px 10px }

  /* === gallery-more-btn 文字 === */
  .gallery-more-btn{ font-size:.88rem }
  .gallery-more-btn .count{ font-size:.78rem }
}

/* ==============================================================
   各セクションへの写真あしらい (V26 から移植・V25 パステル調整)
   ============================================================== */

/* features カードに写真 */
.feature{
  position:relative;
  background:#fff;
  border-radius:28px;
  border:3px solid var(--ink);
  box-shadow:8px 8px 0 var(--ink);
  transition:transform .3s var(--ease-pop), box-shadow .3s;
  padding:0;
  overflow:hidden;
}
.feature:hover{ transform:translate(-4px,-4px) rotate(-1deg); box-shadow:12px 12px 0 var(--ink) }
.feature-img{
  position:relative;
  aspect-ratio:16/10;
  overflow:hidden;
  background:#000;
  border-bottom:3px solid var(--ink);
}
.feature-img img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .7s var(--ease-out), filter .5s;
  filter:saturate(1.05);
}
.feature:hover .feature-img img{ transform:scale(1.07); filter:saturate(1.2) brightness(1.05) }
.feature-img::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 55%, rgba(45,42,74,.4) 100%);
  pointer-events:none;
}
.feature-body{
  position:relative;
  padding:48px 28px 32px;
}
.feature:nth-child(1) .feature-body{ background:#fff }
.feature:nth-child(2) .feature-body{ background:#fff }
.feature:nth-child(3) .feature-body{ background:linear-gradient(180deg, var(--p-yellow), #fff 30%) }
.feature-num{
  position:absolute; top:-28px; left:24px;
  background:var(--accent); color:#fff;
  width:56px; height:56px; border-radius:50%;
  border:4px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--font-num); font-size:1.5rem; line-height:1;
  box-shadow:4px 4px 0 var(--ink);
  z-index:3;
}
.feature:nth-child(2) .feature-num{ background:var(--accent-3) }
.feature:nth-child(3) .feature-num{ background:var(--accent-4); color:var(--ink) }

/* philosophy フィーチャー写真ブロック */
.philosophy-feature{
  margin:0 0 64px;
  position:relative;
  display:grid;
  grid-template-columns:1fr;
  border:4px solid var(--ink);
  border-radius:24px;
  box-shadow:12px 12px 0 var(--p-yellow);
  overflow:hidden;
  background:var(--ink);
}
@media (min-width:880px){
  .philosophy-feature{ grid-template-columns:1.4fr 1fr }
}
.philosophy-feature__img{
  position:relative;
  aspect-ratio:4/3;
  overflow:hidden;
  background:#000;
}
@media (min-width:880px){
  .philosophy-feature__img{ aspect-ratio:auto; height:100% }
}
.philosophy-feature__img img{
  width:100%; height:100%; object-fit:cover;
  filter:saturate(1.05);
  transition:transform 8s linear;
}
.philosophy-feature:hover .philosophy-feature__img img{ transform:scale(1.06) }
.philosophy-feature__img-tag{
  position:absolute; top:14px; left:14px;
  background:var(--accent); color:#fff;
  font-family:var(--font-jp-d); font-weight:900; font-size:.82rem;
  padding:5px 14px;
  border-radius:999px;
  border:2.5px solid var(--ink);
  box-shadow:3px 3px 0 var(--ink);
  z-index:2;
}
.philosophy-feature__text{
  padding:clamp(24px, 3vw, 36px);
  background:var(--ink); color:#fff;
  display:flex; flex-direction:column; justify-content:center;
  gap:14px;
}
.philosophy-feature__eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-en); font-size:.74rem;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--p-yellow);
  font-weight:700;
}
.philosophy-feature__eyebrow::before{ content:''; width:24px; height:2px; background:var(--p-yellow) }
.philosophy-feature__title{
  font-family:var(--font-jp-d); font-weight:900;
  font-size:clamp(1.4rem, 2.6vw, 2rem);
  line-height:1.25;
  color:#fff;
}
.philosophy-feature__title-em{
  background:var(--p-yellow); color:var(--ink);
  padding:0 8px;
  border-radius:6px;
}
.philosophy-feature__text p{
  font-family:var(--font-jp);
  font-size:.95rem;
  line-height:1.85;
  color:rgba(255,255,255,.85);
  font-weight:500;
}
.philosophy-feature__text p strong{
  color:var(--p-yellow); font-weight:700;
}

/* philosophy 5カードに小写真 */
.philosophy-card-img{
  position:relative;
  aspect-ratio:16/9;
  overflow:hidden;
  background:#000;
  border:2.5px solid var(--ink);
  border-radius:14px;
  margin-bottom:14px;
}
.philosophy-card-img img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .6s var(--ease-out);
}
.philosophy-card:hover .philosophy-card-img img{ transform:scale(1.08) }

/* steps カードに写真 */
.step{
  position:relative;
  background:#fff;
  border-radius:24px;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  text-align:center;
  transition:transform .3s var(--ease-pop);
  overflow:hidden;
  padding:0;
}
.step:hover{ transform:translate(-3px,-3px); box-shadow:9px 9px 0 var(--ink) }
.step-img{
  position:relative;
  aspect-ratio:16/10;
  overflow:hidden;
  background:#000;
  border-bottom:3px solid var(--ink);
}
.step-img img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .7s var(--ease-out), filter .5s;
}
.step:hover .step-img img{ transform:scale(1.07); filter:saturate(1.15) brightness(1.05) }
.step-body{
  position:relative;
  padding:36px 24px 28px;
}
.step:nth-child(1) .step-body{ background:var(--p-pink) }
.step:nth-child(2) .step-body{ background:var(--p-blue) }
.step:nth-child(3) .step-body{ background:var(--p-mint) }

/* price-side-photo */
.price-with-photo{
  display:grid;
  grid-template-columns:1fr;
  gap:32px;
  align-items:center;
  max-width:780px;
  margin-inline:auto;
}
@media (min-width:880px){
  .price-with-photo{ grid-template-columns:1.2fr 1fr; gap:48px }
}
.price-side-photo{
  position:relative;
  aspect-ratio:4/5;
  max-width:380px;
  margin:0 auto;
  border:5px solid #fff;
  background:#fff;
  padding:10px 10px 28px;
  box-shadow:10px 10px 0 var(--accent-3);
  overflow:hidden;
  transform:rotate(-2deg);
  border-radius:4px;
  transition:transform .35s var(--ease-pop);
}
.price-side-photo:hover{ transform:rotate(0); box-shadow:14px 14px 0 var(--accent-3) }
.price-side-photo img{
  width:100%; height:100%; object-fit:cover;
  background:#000;
}
.price-side-photo-tag{
  position:absolute; top:14px; left:14px;
  font-family:var(--font-script); font-weight:700;
  font-size:1rem;
  background:var(--p-yellow); color:var(--ink);
  padding:4px 12px;
  border:2px solid var(--ink);
  z-index:2;
}

/* contact フル背景写真 */
.s-contact{
  position:relative;
  overflow:hidden;
  isolation:isolate;
}
.s-contact__bg{
  position:absolute; inset:0;
  z-index:0;
  overflow:hidden;
}
.s-contact__bg img{
  width:100%; height:100%; object-fit:cover;
  mix-blend-mode:multiply;
  opacity:.25;
  filter:saturate(.9);
}
.s-contact__bg::after{
  content:''; position:absolute; inset:0;
  background:
    radial-gradient(ellipse at center, transparent 30%, rgba(255,255,255,.4) 100%);
  pointer-events:none;
}
.s-contact > *:not(.s-contact__bg){ position:relative; z-index:2 }

/* 切り抜き装飾 */
.cutout-deco{
  position:absolute;
  pointer-events:none;
  z-index:3;
  filter:drop-shadow(6px 6px 0 rgba(45,42,74,.2));
}
.cutout-deco img{ width:100%; height:auto }

.cutout-deco--hero-philo{
  bottom:-4%; right:-2%;
  width:clamp(180px, 22vw, 320px);
  transform:rotate(8deg);
  z-index:4;
}

.cutout-deco--peace-faq{
  top:6%; right:-2%;
  width:clamp(140px, 16vw, 220px);
  transform:rotate(-6deg);
  opacity:.95;
}

.cutout-deco--action-events{
  bottom:-2%; left:-3%;
  width:clamp(160px, 18vw, 240px);
  transform:rotate(-6deg);
}

/* スマホ:cutout-decoサイズ調整 */
@media (max-width:680px){
  .cutout-deco--hero-philo{ width:130px; bottom:auto; top:-30px; right:-8px; z-index:5 }
  .cutout-deco--peace-faq{ width:110px; top:-20px; right:-6px }
  .cutout-deco--action-events{ width:110px; bottom:-8px; left:-8px }
  .philosophy-feature__img{ aspect-ratio:16/10 }
  .philosophy-feature__text{ padding:22px 20px }
  .philosophy-feature__title{ font-size:clamp(1.2rem, 5.5vw, 1.6rem) }
  .philosophy-feature__text p{ font-size:.88rem; line-height:1.7 }
  .price-side-photo{ transform:rotate(0); max-width:300px; box-shadow:7px 7px 0 var(--accent-3) }
  .step-body{ padding:30px 22px 24px }
}
