:root{
    --paper:#FDFAF9;
    --blush:#F2DEDA;
    --blush-deep:#E2C4BE;
    --ink:#2B1B21;
    --ink-soft:#6B565C;
    --magenta:#B01B5A;
    --magenta-dark:#8E1449;
    --measure:33rem;
    --gap:clamp(3.5rem,7vw,6rem);
  }
  *{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:"Noto Sans JP",system-ui,sans-serif;
    font-size:1rem;
    line-height:1.95;
    letter-spacing:.02em;
    /* 日本語の折り返しを文節単位に寄せる */
    line-break:strict;
    word-break:auto-phrase;
    overflow-wrap:break-word;
  }
  a{color:inherit}
  img{max-width:100%;display:block}
  .wrap{width:min(100% - 2.5rem,64rem);margin-inline:auto}
  .narrow{max-width:var(--measure)}
  /* 途中で切りたくない語句を包む */
  .nb{display:inline-block}

  h1,h2,h3{font-family:"Noto Serif JP",serif;font-weight:700;line-height:1.5;letter-spacing:.01em;margin:0;text-wrap:balance}
  h2{font-size:clamp(1.35rem,3.4vw,1.8rem)}
  h3{font-size:1.05rem;line-height:1.7}
  p{margin:0 0 1.15em;text-wrap:pretty}
  p:last-child{margin-bottom:0}
  strong{font-weight:700;color:var(--magenta)}

  /* header */
  .bar{position:sticky;top:0;z-index:20;background:rgba(253,250,249,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--blush-deep)}
  .bar-in{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0}
  .mark{font-family:"Noto Serif JP",serif;font-weight:700;font-size:1rem;text-decoration:none;line-height:1.4}
  .mark span{display:block;font-family:"Noto Sans JP",sans-serif;font-weight:400;font-size:.7rem;color:var(--ink-soft);letter-spacing:.08em}
  .nav{display:flex;flex-wrap:wrap;gap:.35rem 1.15rem;font-size:.85rem}
  .nav a{text-decoration:none;padding:.2rem 0;border-bottom:1px solid transparent}
  .nav a:hover,.nav a:focus-visible{border-bottom-color:var(--magenta);color:var(--magenta)}

  /* hero */
  .hero{background:var(--blush);padding:clamp(3rem,8vw,5rem) 0 clamp(3rem,7vw,4.5rem)}
  .hero-grid{display:grid;gap:2.5rem;align-items:center}
  @media (min-width:48rem){.hero-grid{grid-template-columns:1.15fr .85fr;gap:3.5rem}}
  .kicker{font-size:.85rem;color:var(--ink-soft);margin:0 0 .9rem}
  .hero h1{font-size:clamp(1.8rem,5.6vw,2.85rem);line-height:1.4}
  .hero-lead{margin-top:1.5rem;font-size:1.03rem;max-width:29rem}
  .hero-photo img{width:100%;height:clamp(15rem,42vw,25rem);object-fit:cover;border-radius:2px}

  /* 授業設計バー */
  .lesson{margin-top:clamp(2.5rem,6vw,3.5rem)}
  .lesson-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .8rem;margin-bottom:1rem}
  .lesson-head b{font-family:"Noto Serif JP",serif;font-size:1.6rem;color:var(--magenta);line-height:1.3}
  .lesson-head small{font-size:.88rem;color:var(--ink-soft)}
  .track{display:grid;grid-template-columns:60fr 11fr 60fr;gap:5px}
  .seg{background:var(--paper);border-top:3px solid var(--magenta);padding:1rem .95rem 1.1rem}
  .seg.rest{background:transparent;border-top:3px solid var(--blush-deep);padding-inline:.4rem}
  .seg b{display:block;font-size:.98rem;line-height:1.6}
  .seg time{display:block;font-size:.92rem;font-weight:700;color:var(--magenta);margin-top:.2rem;font-variant-numeric:tabular-nums;letter-spacing:.03em}
  .seg p{margin:.6rem 0 0;font-size:.85rem;line-height:1.8;color:var(--ink-soft)}
  .seg.rest b{font-size:.82rem;color:var(--ink-soft);font-weight:500}
  .seg.rest time{color:var(--ink-soft);font-weight:500}
  @media (max-width:47.99rem){
    .track{grid-template-columns:1fr}
    .seg.rest{border-top:none;border-left:3px solid var(--blush-deep);padding:.4rem .95rem}
  }

  /* buttons */
  .cta{display:inline-block;margin-top:1.9rem;background:var(--magenta);color:#fff;text-decoration:none;font-weight:700;font-size:1rem;padding:.95rem 2.1rem;border-radius:2rem}
  .cta:hover,.cta:focus-visible{background:var(--magenta-dark)}
  .cta-note{font-size:.85rem;color:var(--ink-soft);margin:.75rem 0 0}
  .more{display:inline-block;margin-top:1.3rem;font-size:.92rem;font-weight:700;color:var(--magenta);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}
  .more:hover{color:var(--magenta-dark)}

  section{padding:var(--gap) 0;scroll-margin-top:5rem}
  .tinted{background:var(--blush)}
  .lede{margin-top:1.4rem}

  .worries{margin:1.7rem 0 0;padding:0;list-style:none;border-top:1px solid var(--blush-deep)}
  .worries li{border-bottom:1px solid var(--blush-deep);padding:.9rem 0;font-size:1rem}

  /* steps */
  .steps{counter-reset:s;list-style:none;margin:1.9rem 0 0;padding:0;display:grid;gap:1.6rem}
  .steps li{counter-increment:s;display:grid;grid-template-columns:2.2rem 1fr;gap:1rem;align-items:start}
  .steps li::before{content:counter(s);font-family:"Noto Serif JP",serif;font-size:1.2rem;color:var(--magenta);border-top:2px solid var(--magenta);padding-top:.4rem;line-height:1.2}
  .steps p{margin:.35rem 0 0;font-size:.92rem;color:var(--ink-soft)}

  /* 要点表 */
  .facts{margin:2.1rem 0 0;border-top:2px solid var(--ink)}
  .facts div{display:grid;grid-template-columns:7.5rem 1fr;gap:.4rem 1.2rem;padding:1rem 0;border-bottom:1px solid var(--blush-deep);align-items:baseline}
  .facts dt{margin:0;font-size:.85rem;font-weight:700;color:var(--ink-soft);letter-spacing:.05em}
  .facts dd{margin:0;font-size:1rem;line-height:1.8}
  .facts .big{font-family:"Noto Serif JP",serif;font-size:1.35rem;font-weight:700;color:var(--magenta);font-variant-numeric:tabular-nums;letter-spacing:.01em;margin-right:.4rem}
  .facts .sub{font-size:.88rem;color:var(--ink-soft);display:block;margin-top:.15rem}
  @media (max-width:47.99rem){.facts div{grid-template-columns:1fr;padding:.9rem 0}}

  /* 料金カード */
  .plans{display:grid;gap:1rem;margin-top:2rem}
  @media (min-width:48rem){.plans{grid-template-columns:repeat(3,1fr);gap:1.2rem}}
  .plan{background:var(--paper);border-top:4px solid var(--magenta);padding:1.4rem 1.3rem 1.5rem}
  .plan .lv{font-family:"Noto Serif JP",serif;font-size:1.2rem;font-weight:700;margin:0}
  .plan .day{display:inline-block;margin-top:.5rem;background:var(--magenta);color:#fff;font-size:.85rem;font-weight:700;padding:.15rem .8rem;border-radius:1rem;letter-spacing:.06em}
  .plan .fee{font-family:"Noto Serif JP",serif;font-size:1.75rem;font-weight:700;color:var(--magenta);margin:.9rem 0 0;line-height:1.3;font-variant-numeric:tabular-nums}
  .plan .fee small{font-family:"Noto Sans JP",sans-serif;font-size:.85rem;font-weight:400;color:var(--ink-soft);letter-spacing:0}
  .plan .aim{margin:.7rem 0 0;font-size:.9rem;line-height:1.75;color:var(--ink-soft)}

  /* 講師紹介 */
  .teachers{display:grid;gap:3.5rem;margin-top:2.4rem}
  .teacher{display:grid;gap:1.5rem 2.5rem;align-items:start}
  @media (min-width:48rem){.teacher{grid-template-columns:15rem minmax(0,var(--measure))}}
  .teacher figure{margin:0}
  .teacher img{width:100%;max-width:15rem;aspect-ratio:4/5;object-fit:cover;object-position:center 20%;border-radius:2px}
  .teacher .role{display:block;font-size:.8rem;font-weight:700;color:var(--magenta);letter-spacing:.08em;margin:0 0 .1rem}
  .teacher .name{font-family:"Noto Serif JP",serif;font-size:1.5rem;font-weight:700;margin:0 0 1rem;line-height:1.4}
  .teacher p{font-size:.95rem}

  .photo-band{display:grid;gap:5px;margin-top:2.6rem}
  @media (min-width:48rem){.photo-band{grid-template-columns:1fr 1fr}}
  .photo-band img{width:100%;height:clamp(11rem,26vw,17rem);object-fit:cover;border-radius:2px}

  /* contact */
  .contact a{font-weight:700;color:var(--magenta);text-decoration:none;border-bottom:1px solid currentColor}
  .contact .tel{font-size:1.75rem;font-family:"Noto Serif JP",serif;letter-spacing:.03em;margin-bottom:.5em}
  .contact .addr{font-size:.95rem;line-height:2}

  footer{background:var(--ink);color:#F0E3E1;padding:3rem 0;font-size:.85rem;line-height:2}
  footer a{color:#F0E3E1}
  footer .fnav{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;margin-bottom:1.7rem}
  footer .fnav a{text-decoration:none;border-bottom:1px solid rgba(240,227,225,.35);padding-bottom:2px}
  .copy{margin-top:1.7rem;color:#B49CA0;font-size:.78rem}

  :focus-visible{outline:2px solid var(--magenta);outline-offset:3px}
  @media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* FAQ */
.qa{margin:2.2rem 0 0;border-top:2px solid var(--ink)}
.qa-item{border-bottom:1px solid var(--blush-deep);padding:1.5rem 0}
.qa-item h3{display:grid;grid-template-columns:1.6rem 1fr;gap:.7rem;align-items:start;margin:0 0 .7rem;font-size:1.05rem}
.qa-item h3::before{content:"Q";font-family:"Noto Serif JP",serif;color:var(--magenta);font-size:1.15rem;line-height:1.55}
.qa-item .a{display:grid;grid-template-columns:1.6rem 1fr;gap:.7rem;align-items:start}
.qa-item .a::before{content:"A";font-family:"Noto Serif JP",serif;color:var(--ink-soft);font-size:1.15rem;line-height:1.9}
.qa-item .a p{font-size:.96rem}
@media (max-width:47.99rem){
  .qa-item h3,.qa-item .a{grid-template-columns:1.2rem 1fr;gap:.5rem}
}

/* 本コースの主役ブロック */
.feature{background:var(--paper);border-top:6px solid var(--magenta);padding:clamp(1.8rem,4vw,2.8rem)}
.feature .tag{display:inline-block;background:var(--magenta);color:#fff;font-size:.8rem;font-weight:700;letter-spacing:.1em;padding:.2rem 1rem;border-radius:1rem;margin:0 0 1rem}
.feature h2{font-size:clamp(1.7rem,4.5vw,2.4rem);margin-bottom:.2rem}
.feature .lede{max-width:var(--measure)}
.feature .cta{margin-top:2rem}
.stats{display:grid;gap:1.2rem;margin-top:2.2rem;border-top:1px solid var(--blush-deep);padding-top:1.6rem}
@media (min-width:48rem){.stats{grid-template-columns:repeat(4,1fr);gap:1.5rem}}
.stats div{display:flex;flex-direction:column;gap:.15rem}
.stats b{font-family:"Noto Serif JP",serif;font-size:1.5rem;font-weight:700;color:var(--magenta);line-height:1.3;font-variant-numeric:tabular-nums}
.stats span{font-size:.82rem;color:var(--ink-soft);line-height:1.6}

/* 補助的な個別指導 */
.subopts{list-style:none;margin:1.8rem 0 0;padding:0;border-top:1px solid var(--blush-deep)}
.subopts li{display:grid;gap:.2rem;padding:1.2rem 0;border-bottom:1px solid var(--blush-deep)}
@media (min-width:48rem){.subopts li{grid-template-columns:1fr 8rem;column-gap:1.5rem;align-items:baseline}}
.subopts b{font-size:1.02rem;font-weight:700}
.subopts .d{font-size:.9rem;color:var(--ink-soft);line-height:1.8}
@media (min-width:48rem){.subopts .d{grid-column:1}}
.subopts .p{font-size:.98rem;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
@media (min-width:48rem){.subopts .p{grid-column:2;grid-row:1/3;text-align:right}}

/* 原文ブロック */
.block{margin-top:2rem}
.block h3{font-size:1.1rem;margin:0 0 .8rem}
.bullets{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.7rem}
.bullets li{display:grid;grid-template-columns:.6rem 1fr;gap:.8rem;align-items:baseline;font-size:.97rem;line-height:1.85}
.bullets li::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--magenta);display:block;transform:translateY(.55rem)}
.note{font-size:.85rem;color:var(--ink-soft);line-height:1.8;margin-top:1rem}
.callout{background:var(--paper);border-left:4px solid var(--magenta);padding:1.2rem 1.4rem;margin-top:1.6rem}
.tinted .callout{background:var(--paper)}
.callout p{font-size:.97rem}
.closing{text-align:center;padding:clamp(2.5rem,6vw,4rem) 0}
.closing .brand{font-family:"Noto Serif JP",serif;font-weight:700;font-size:1.15rem;color:var(--magenta);margin-bottom:1.4rem}
.closing h2{font-size:clamp(1.4rem,4vw,2rem);line-height:1.6}
.closing p{margin-top:1rem;font-size:1.02rem}

/* ── 長文ページ用の表現 ───────────────── */

/* 目次 */
.toc{background:var(--paper);border:1px solid var(--blush-deep);padding:1.4rem 1.5rem;margin-top:2.5rem}
.toc p{font-size:.8rem;font-weight:700;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 .8rem}
.toc ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem 1.6rem}
@media (min-width:48rem){.toc ul{grid-template-columns:1fr 1fr}}
.toc a{font-size:.92rem;text-decoration:none;border-bottom:1px solid var(--blush-deep);padding-bottom:2px}
.toc a:hover,.toc a:focus-visible{color:var(--magenta);border-bottom-color:var(--magenta)}

/* 悩みカード */
.cards{display:grid;gap:1rem;margin-top:2rem}
@media (min-width:48rem){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--paper);padding:1.5rem 1.4rem;border-top:3px solid var(--blush-deep);font-size:.97rem;line-height:1.85}
.tinted .card{background:var(--paper)}

/* 番号つきフロー */
.flow{counter-reset:fl;list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:1.2rem}
@media (min-width:48rem){.flow{grid-template-columns:repeat(3,1fr);gap:1.2rem}}
.flow li{counter-increment:fl;background:var(--paper);padding:1.5rem 1.4rem 1.6rem;position:relative;font-size:.95rem;line-height:1.85}
.flow li::before{content:counter(fl);display:block;font-family:"Noto Serif JP",serif;font-size:1.6rem;font-weight:700;color:var(--magenta);line-height:1;margin-bottom:.8rem}
.flow li::after{content:"";position:absolute;left:1.4rem;bottom:0;width:2.2rem;height:3px;background:var(--magenta)}

/* チェック印つき */
.checks{list-style:none;margin:1.8rem 0 0;padding:0;display:grid;gap:.9rem}
.checks li{display:grid;grid-template-columns:1.6rem 1fr;gap:.8rem;align-items:start;font-size:.99rem;line-height:1.85}
.checks li::before{content:"✓";color:var(--magenta);font-weight:700;font-size:1.05rem;line-height:1.75}

/* 時間割 */
.schedule{margin-top:2rem;border-top:2px solid var(--ink)}
.schedule div{display:grid;gap:.2rem .8rem;padding:1.1rem 0;border-bottom:1px solid var(--blush-deep);align-items:center}
@media (min-width:48rem){.schedule div{grid-template-columns:1fr auto}}
.schedule dt{margin:0;font-size:1rem;font-weight:700}
.schedule dd{margin:0;font-family:"Noto Serif JP",serif;font-size:1.4rem;font-weight:700;color:var(--magenta);font-variant-numeric:tabular-nums;letter-spacing:.02em}

/* 強調パネル */
.hilite{background:var(--magenta);color:#fff;padding:clamp(1.8rem,4vw,2.6rem)}
.hilite h2{color:#fff}
.hilite .bullets li::before{background:#fff}
.hilite .note{color:rgba(255,255,255,.82)}
.hilite p{color:#fff}

/* 見出しの上の小さなラベル */
.eyebrow{font-size:.8rem;font-weight:700;color:var(--magenta);letter-spacing:.06em;margin:0 0 .6rem}
.hilite .eyebrow{color:rgba(255,255,255,.85)}

/* 全幅の写真帯 */
.band{margin:0;padding:0}
.band img{width:100%;height:clamp(9rem,22vw,15rem);object-fit:cover;object-position:center 60%}

/* 締めのパネル */
.closing{background:var(--ink);color:#F6E9E7;text-align:center;padding:clamp(3rem,7vw,5rem) 0}
.closing .brand{font-family:"Noto Serif JP",serif;font-weight:700;font-size:1.05rem;color:#E9A9BF;letter-spacing:.04em;margin-bottom:1.6rem}
.closing h2{color:#fff;font-size:clamp(1.4rem,4vw,2.1rem);line-height:1.6}
.closing p{margin-top:1.2rem;font-size:1.05rem;color:#F6E9E7}

/* 引用風のひとこと */
.callout{background:var(--paper);border-left:4px solid var(--magenta);padding:1.4rem 1.5rem;margin-top:1.8rem}
.callout p{font-size:1rem;line-height:1.9;margin:0}

/* ── 仕上げのデザイン・モーション ───────────────── */
:root{
  --surface:#FFFFFF;
  --surface-soft:rgba(255,255,255,.74);
  --line:rgba(92,43,57,.14);
  --shadow-sm:0 8px 24px rgba(72,31,45,.07);
  --shadow-md:0 18px 46px rgba(72,31,45,.11);
  --shadow-lg:0 28px 70px rgba(72,31,45,.16);
  --radius-sm:.65rem;
  --radius-md:1rem;
  --radius-lg:1.35rem;
  --ease:cubic-bezier(.22,1,.36,1);
}

html{
  scroll-behavior:smooth;
  scroll-padding-top:5.5rem;
  color-scheme:light;
}

body{
  min-height:100vh;
  background:
    linear-gradient(rgba(255,255,255,.18),rgba(255,255,255,.18)),
    var(--paper);
}

main,footer{
  transition:opacity .18s ease,transform .18s ease;
}

body.is-leaving main,
body.is-leaving footer{
  opacity:.08;
  transform:translateY(4px);
}

main{overflow:clip}
::selection{background:var(--blush-deep);color:var(--ink)}
a,button{-webkit-tap-highlight-color:transparent}

@keyframes hero-rise{
  from{opacity:0;transform:translateY(16px)}
  to{opacity:1;transform:translateY(0)}
}

/* header */
.bar{
  z-index:100;
  background:
    linear-gradient(90deg,rgba(176,27,90,.055),transparent 34%,rgba(176,27,90,.035)),
    rgba(253,250,249,.91);
  border-top:3px solid var(--magenta);
  border-bottom:1px solid rgba(226,196,190,.82);
  box-shadow:0 0 0 rgba(72,31,45,0);
  transition:background-color .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.bar.is-scrolled{
  background:
    linear-gradient(90deg,rgba(176,27,90,.06),transparent 34%,rgba(176,27,90,.04)),
    rgba(253,250,249,.98);
  border-bottom-color:transparent;
  box-shadow:0 8px 28px rgba(72,31,45,.10);
}
.bar-in{min-height:5.2rem;padding:.62rem 0;gap:clamp(.8rem,2vw,1.4rem)}
.mark{
  position:relative;
  flex:0 1 auto;
  overflow:hidden;
  padding:.62rem 1.15rem .62rem 1.35rem;
  border:1px solid rgba(176,27,90,.18);
  border-radius:.85rem;
  background:
    linear-gradient(135deg,rgba(242,222,218,.72),rgba(255,255,255,.84) 58%),
    var(--surface);
  box-shadow:0 6px 18px rgba(72,31,45,.08),inset 0 1px 0 rgba(255,255,255,.9);
  transition:color .2s ease,border-color .2s ease,box-shadow .25s ease,transform .25s var(--ease);
}
.mark::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:.42rem;
  background:linear-gradient(180deg,var(--magenta),#D65B8D 52%,var(--magenta-dark));
}
.mark::after{
  content:"";
  position:absolute;
  top:.55rem;
  right:.58rem;
  width:.42rem;
  aspect-ratio:1;
  border-radius:50%;
  background:var(--magenta);
  box-shadow:0 0 0 4px rgba(176,27,90,.10);
}
.mark:hover,.mark:focus-visible{
  color:var(--magenta-dark);
  border-color:rgba(176,27,90,.34);
  box-shadow:0 9px 24px rgba(72,31,45,.12),inset 0 1px 0 rgba(255,255,255,.95);
  transform:translateY(-2px);
}
.mark span{margin-top:.1rem;letter-spacing:.11em}
.nav{justify-content:flex-end;gap:.45rem;font-size:.875rem}
.nav a{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  min-height:2.7rem;
  padding:.58rem .82rem;
  border:1px solid rgba(176,27,90,.17);
  border-radius:999px;
  background:rgba(255,255,255,.78);
  font-weight:700;
  line-height:1.35;
  box-shadow:0 4px 12px rgba(72,31,45,.055),inset 0 1px 0 rgba(255,255,255,.92);
  transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .25s ease,transform .25s var(--ease);
}
.nav a::after{
  content:"";
  width:.38rem;
  height:.38rem;
  border-top:1.5px solid currentColor;
  border-right:1.5px solid currentColor;
  transform:rotate(45deg);
  transition:transform .25s var(--ease);
}
.nav a:hover,.nav a:focus-visible{
  color:var(--magenta-dark);
  border-color:rgba(176,27,90,.38);
  background:#fff;
  box-shadow:0 8px 19px rgba(72,31,45,.11),inset 0 1px 0 #fff;
  transform:translateY(-2px);
}
.nav a:hover::after,.nav a:focus-visible::after{transform:translateX(2px) rotate(45deg)}
.nav a[aria-current="page"]{
  color:#fff;
  border-color:var(--magenta);
  background:linear-gradient(135deg,var(--magenta),var(--magenta-dark));
  box-shadow:0 7px 18px rgba(176,27,90,.23),inset 0 1px 0 rgba(255,255,255,.2);
}

/* breadcrumb */
.crumbs{
  background:rgba(255,255,255,.56);
  border-bottom:1px solid var(--line);
  color:var(--ink-soft);
  font-size:.78rem;
  line-height:1.5;
}
.crumbs .wrap{display:flex;align-items:center;gap:.65rem;padding:.7rem 0}
.crumbs a{
  color:var(--magenta);
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:border-color .2s ease,color .2s ease;
}
.crumbs a:hover,.crumbs a:focus-visible{color:var(--magenta-dark);border-bottom-color:currentColor}

/* hero */
.hero{
  position:relative;
  overflow:hidden;
  background:
    linear-gradient(118deg,rgba(255,255,255,.42),rgba(255,255,255,0) 48%),
    linear-gradient(145deg,#F6E7E3 0%,#F0D8D5 58%,#EACFCB 100%);
  border-bottom:1px solid rgba(176,27,90,.08);
}
.hero::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:3px;
  background:linear-gradient(90deg,transparent 5%,var(--magenta) 35%,var(--blush-deep) 68%,transparent 95%);
  opacity:.42;
}
.hero .wrap{position:relative;z-index:1}
.hero h1{
  max-width:47rem;
  letter-spacing:.015em;
  text-shadow:0 1px 0 rgba(255,255,255,.55);
}
.kicker{
  display:flex;
  align-items:center;
  gap:.6rem;
  font-weight:500;
  letter-spacing:.06em;
  line-height:1.65;
}
.kicker::before{
  content:"";
  flex:0 0 1.65rem;
  height:2px;
  border-radius:1rem;
  background:var(--magenta);
}
.hero-lead{line-height:2}
.hero-photo{
  position:relative;
  border-radius:var(--radius-lg);
  isolation:isolate;
}
.hero-photo::before{
  content:"";
  position:absolute;
  inset:-.55rem .55rem .55rem -.55rem;
  z-index:-1;
  border:1px solid rgba(176,27,90,.25);
  border-radius:var(--radius-lg);
}
.hero-photo img{
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);
  transition:transform .75s var(--ease),filter .4s ease;
}
.hero .kicker,.hero h1,.hero .hero-lead,.hero .cta,.hero .cta-note,.hero .hero-photo,.hero .toc{
  animation:hero-rise .7s var(--ease) both;
}
.hero h1{animation-delay:.06s}
.hero .hero-lead{animation-delay:.12s}
.hero .cta{animation-delay:.18s}
.hero .cta-note{animation-delay:.22s}
.hero .hero-photo,.hero .toc{animation-delay:.16s}

/* headings and section rhythm */
section{position:relative}
section h2::after{
  content:"";
  display:block;
  width:2.6rem;
  height:3px;
  margin-top:.7rem;
  border-radius:1rem;
  background:linear-gradient(90deg,var(--magenta),var(--blush-deep));
}
.feature h2::after{margin-top:.75rem}
.hilite h2::after,.closing h2::after{background:linear-gradient(90deg,#fff,rgba(255,255,255,.22))}
.closing h2::after{margin-inline:auto}
.tinted{
  background:
    linear-gradient(135deg,rgba(255,255,255,.13),rgba(255,255,255,0) 55%),
    var(--blush);
}
.lede{line-height:2}

/* buttons and links */
.cta{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.65rem;
  position:relative;
  min-height:3.35rem;
  padding:.9rem 1.8rem;
  border:1px solid rgba(255,255,255,.2);
  background:linear-gradient(135deg,#B91F62,var(--magenta-dark));
  box-shadow:0 10px 22px rgba(176,27,90,.22),inset 0 1px 0 rgba(255,255,255,.18);
  transition:transform .28s var(--ease),box-shadow .28s ease,filter .2s ease;
}
.cta::after{
  content:"→";
  font-size:1.08em;
  line-height:1;
  transition:transform .28s var(--ease);
}
.cta:hover,.cta:focus-visible{
  background:linear-gradient(135deg,#C32669,var(--magenta-dark));
  transform:translateY(-3px);
  box-shadow:0 15px 30px rgba(176,27,90,.29),inset 0 1px 0 rgba(255,255,255,.2);
}
.cta:hover::after,.cta:focus-visible::after{transform:translateX(.25rem)}
.cta:active{transform:translateY(-1px) scale(.985);box-shadow:0 8px 18px rgba(176,27,90,.2)}

.more{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  border-bottom-color:rgba(176,27,90,.42);
  transition:color .2s ease,border-color .2s ease,gap .28s var(--ease);
}
.more::after{content:"→";transition:transform .28s var(--ease)}
.more:hover,.more:focus-visible{gap:.7rem;border-bottom-color:currentColor}
.more:hover::after,.more:focus-visible::after{transform:translateX(.12rem)}

/* elevated surfaces */
.feature,
.plan,
.card,
.flow li,
.teacher,
.toc,
.callout,
.hilite,
.facts,
.schedule{
  border-radius:var(--radius-md);
}
.feature{
  border:1px solid var(--line);
  border-top:6px solid var(--magenta);
  box-shadow:var(--shadow-md);
}
.feature .tag{box-shadow:0 5px 14px rgba(176,27,90,.18)}
.stats{gap:0}
.stats div{padding:.35rem 1rem}
.stats div:first-child{padding-left:0}

.plan{
  border:1px solid var(--line);
  border-top:4px solid var(--magenta);
  box-shadow:var(--shadow-sm);
  transition:transform .34s var(--ease),box-shadow .34s ease,border-color .25s ease;
}
.plan .day{box-shadow:0 4px 12px rgba(176,27,90,.14)}

.card,
.flow li{
  border:1px solid var(--line);
  border-top:3px solid var(--blush-deep);
  box-shadow:var(--shadow-sm);
  transition:transform .34s var(--ease),box-shadow .34s ease,border-color .25s ease;
}
.flow li{border-top-color:var(--magenta)}
.flow li::before{font-size:1.8rem}

.teacher{
  padding:clamp(1.35rem,3vw,2.25rem);
  background:linear-gradient(145deg,rgba(242,222,218,.78),rgba(255,255,255,.9));
  border:1px solid var(--line);
  border-top:4px solid var(--magenta);
  box-shadow:var(--shadow-md);
  border-radius:var(--radius-lg);
  transition:transform .4s var(--ease),box-shadow .4s ease;
}
@media (min-width:48rem){
  .teacher{grid-template-columns:15rem minmax(0,1fr)}
}
.teacher-body{max-width:38rem}
.teacher figure{
  overflow:hidden;
  border-radius:var(--radius-md);
  box-shadow:0 14px 32px rgba(72,31,45,.14);
}
.teacher img{
  max-width:none;
  border-radius:0;
  transition:transform .7s var(--ease),filter .35s ease;
}

.toc{
  border-color:var(--line);
  background:rgba(255,255,255,.82);
  box-shadow:var(--shadow-sm);
  backdrop-filter:blur(8px);
}
.toc a{transition:color .2s ease,border-color .2s ease,padding-left .25s var(--ease)}
.toc a:hover,.toc a:focus-visible{padding-left:.25rem}

.callout{
  border:1px solid var(--line);
  border-left:4px solid var(--magenta);
  box-shadow:var(--shadow-sm);
}
.hilite{
  background:linear-gradient(145deg,#B01B5A,#7E113F);
  box-shadow:var(--shadow-md);
}

/* lists, tables and schedules */
.facts,.schedule{
  overflow:hidden;
  border:1px solid var(--line);
  border-top:3px solid var(--ink);
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.facts div,.schedule div{
  padding:1.08rem 1.3rem;
  transition:background-color .22s ease,padding-left .28s var(--ease);
}
.facts div:last-child,.schedule div:last-child{border-bottom:0}
.facts a,.schedule a{transition:color .2s ease}
.facts a:hover,.schedule a:hover{color:var(--magenta)}

.subopts{
  display:grid;
  gap:.8rem;
  border-top:0;
}
.subopts li{
  padding:1.2rem 1.3rem;
  border:1px solid var(--line);
  border-left:3px solid var(--blush-deep);
  border-radius:var(--radius-sm);
  background:var(--surface);
  box-shadow:0 5px 18px rgba(72,31,45,.045);
  transition:transform .28s var(--ease),box-shadow .28s ease,border-left-color .2s ease;
}

.worries{
  display:grid;
  gap:.7rem;
  border-top:0;
}
.worries li{
  padding:1rem 1.15rem;
  border:1px solid var(--line);
  border-left:3px solid var(--magenta);
  border-radius:var(--radius-sm);
  background:var(--surface);
  box-shadow:0 5px 18px rgba(72,31,45,.045);
}

.track{gap:.7rem}
.seg{
  border:1px solid var(--line);
  border-top:3px solid var(--magenta);
  border-radius:var(--radius-sm);
  box-shadow:var(--shadow-sm);
}
.seg.rest{border:1px dashed var(--blush-deep);box-shadow:none}

/* FAQ */
.qa{
  display:grid;
  gap:.75rem;
  border-top:0;
}
.qa-item{
  padding:1.3rem 1.4rem;
  border:1px solid var(--line);
  border-left:3px solid transparent;
  border-radius:var(--radius-sm);
  background:var(--surface);
  box-shadow:0 5px 18px rgba(72,31,45,.045);
  transition:transform .28s var(--ease),box-shadow .28s ease,border-left-color .2s ease;
}
.qa-item h3{margin-bottom:.75rem}
.qa-item h3::before{
  display:grid;
  place-items:center;
  width:1.55rem;
  height:1.55rem;
  border-radius:50%;
  background:var(--blush);
  line-height:1;
}

/* contact and footer */
.contact{
  padding:clamp(1.5rem,4vw,2.5rem);
  border:1px solid var(--line);
  border-top:4px solid var(--magenta);
  border-radius:var(--radius-lg);
  background:rgba(255,255,255,.88);
  box-shadow:var(--shadow-md);
}
.contact .tel{margin-top:1.5rem}
.contact .tel a{
  border-bottom:0;
  text-shadow:0 1px 0 #fff;
  transition:color .2s ease,letter-spacing .25s var(--ease);
}
.contact .tel a:hover,.contact .tel a:focus-visible{letter-spacing:.055em}
.contact a{transition:color .2s ease,border-color .2s ease}
.contact a:hover,.contact a:focus-visible{color:var(--magenta-dark)}

footer{
  position:relative;
  background:linear-gradient(145deg,#321D24,#211319);
  border-top:4px solid var(--magenta);
}
footer a{transition:color .2s ease,border-color .2s ease}
footer a:hover,footer a:focus-visible{color:#fff;border-bottom-color:#fff}

/* reveal motion */
.motion-ready .reveal{
  opacity:0;
  transform:translateY(18px);
  transition:
    opacity .65s var(--ease) var(--reveal-delay,0ms),
    transform .65s var(--ease) var(--reveal-delay,0ms),
    box-shadow .34s ease,
    border-color .25s ease;
}
.motion-ready .reveal.is-visible{opacity:1;transform:translateY(0)}

@media (hover:hover){
  .hero-photo:hover img{transform:scale(1.025);filter:saturate(1.04)}
  .plan:hover,.card:hover,.flow li:hover{
    transform:translateY(-6px);
    border-color:rgba(176,27,90,.24);
    box-shadow:var(--shadow-md);
  }
  .teacher:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}
  .teacher:hover img{transform:scale(1.025)}
  .subopts li:hover,.qa-item:hover{
    transform:translateX(4px);
    border-left-color:var(--magenta);
    box-shadow:var(--shadow-sm);
  }
  .facts div:hover,.schedule div:hover{
    padding-left:1.55rem;
    background:rgba(242,222,218,.32);
  }
  .motion-ready .plan.reveal.is-visible:hover,
  .motion-ready .card.reveal.is-visible:hover,
  .motion-ready .flow li.reveal.is-visible:hover{
    transform:translateY(-6px);
  }
  .motion-ready .teacher.reveal.is-visible:hover{transform:translateY(-5px)}
  .motion-ready .subopts li.reveal.is-visible:hover,
  .motion-ready .qa-item.reveal.is-visible:hover{transform:translateX(4px)}
}

@media (min-width:48rem){
  .stats div+div{border-left:1px solid var(--blush-deep)}
}

@media (max-width:47.99rem){
  .bar-in{
    display:grid;
    grid-template-columns:1fr;
    justify-items:center;
    gap:.55rem;
    min-height:auto;
    padding:.58rem 0 .64rem;
  }
  .mark{
    justify-self:center;
    padding:.5rem 1.1rem .5rem 1.25rem;
    font-size:.9rem;
    line-height:1.35;
  }
  .mark span{font-size:.7rem}
  .nav{
    width:100%;
    justify-content:center;
    gap:.4rem;
    font-size:.875rem;
    line-height:1.45;
  }
  .nav a{
    min-height:2.45rem;
    padding:.45rem .68rem;
    white-space:nowrap;
  }
  section{scroll-margin-top:9rem}
}

@media (max-width:47.99rem){
  .wrap{width:min(100% - 1.5rem,64rem)}
  .hero{padding:clamp(2.7rem,10vw,3.7rem) 0}
  .hero-grid{gap:2.2rem}
  .hero-photo::before{inset:-.38rem .38rem .38rem -.38rem}
  section{scroll-margin-top:9rem}
  section h2::after{margin-top:.55rem}
  .cta{padding:.88rem 1.45rem}
  .hero .cta,.feature .cta{width:100%}
  .stats div{padding:.8rem 0}
  .stats div+div{border-top:1px solid var(--blush-deep)}
  .teacher{gap:1.35rem}
  .teacher figure{width:min(100%,17rem);margin-inline:auto}
  .teacher-body{max-width:none}
  .contact{padding:1.45rem 1.2rem}
  .contact .tel{font-size:clamp(1.35rem,7vw,1.7rem)}
  .contact a{overflow-wrap:anywhere}
  .facts div,.schedule div{padding:1rem 1.05rem}
  .qa-item{padding:1.15rem 1rem}
  .subopts li{padding:1.05rem}
}

@media (max-width:47.99rem){
  .mark{padding:.48rem .9rem .48rem 1.05rem;font-size:.8rem}
  .mark::after{display:none}
  .mark span{display:none}
  .nav{gap:.34rem;font-size:.875rem}
  .nav a{padding:.42rem .58rem}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  main,footer{transition:none}
  body.is-leaving main,body.is-leaving footer{opacity:1;transform:none}
  .hero .kicker,.hero h1,.hero .hero-lead,.hero .cta,.hero .cta-note,.hero .hero-photo,.hero .toc{
    animation:none;
  }
  .motion-ready .reveal{opacity:1;transform:none}
}

/* ── 情報設計を整えるレイアウト ─────────────────── */
.wine-section{
  color:#FAEEF2;
  background:linear-gradient(145deg,#461826 0%,#2B1720 58%,#201218 100%);
}
.wine-section h2,
.wine-section h3,
.wine-section p,
.wine-section li,
.wine-section dt,
.wine-section dd{color:inherit}
.wine-section strong,
.wine-section .eyebrow{color:#F5B8CC}
.wine-section h2::after{background:linear-gradient(90deg,#F5B8CC,rgba(255,255,255,.22))}
.wine-section .more{color:#F8D2DF;border-bottom-color:rgba(248,210,223,.48)}
.wine-section .note{color:rgba(250,238,242,.74)}
.wine-section .callout,
.wine-section .facts,
.wine-section .schedule,
.wine-section .teacher,
.wine-section .worries li{
  color:var(--ink);
}
.wine-section .callout p,
.wine-section .facts dt,
.wine-section .facts dd,
.wine-section .teacher p{color:inherit}
.wine-section .facts strong{color:var(--magenta)}

/* トップ：2つの受講方法を最初に比較できる構成 */
.home-offers{
  width:min(100% - 2.5rem,72rem);
  margin-inline:auto;
  padding:var(--gap) 0;
  display:grid;
  gap:1.25rem;
  align-items:stretch;
}
.home-offers > section{padding:0;background:transparent}
.home-offers > section > .wrap{width:100%;height:100%}
.home-offers .feature{height:100%}
.home-offers > section:nth-child(2) .narrow{
  max-width:none;
  height:100%;
  padding:clamp(1.8rem,4vw,2.8rem);
  border:1px solid var(--line);
  border-top:6px solid var(--blush-deep);
  border-radius:var(--radius-md);
  background:var(--surface);
  box-shadow:var(--shadow-md);
}
.home-offers > section:nth-child(2) .subopts{margin-top:1.55rem}
.page-home #teachers{border-block:1px solid rgba(255,255,255,.08)}
.page-home #teachers > .wrap > .narrow h2,
.page-home #teachers > .wrap > .narrow p{color:#FAEEF2}
.page-home #teachers > .wrap > .narrow h2::after{background:linear-gradient(90deg,#F5B8CC,rgba(255,255,255,.22))}

@media (min-width:48rem){
  .home-offers{grid-template-columns:minmax(0,1.35fr) minmax(19rem,.65fr)}
  .home-offers .stats{grid-template-columns:repeat(2,1fr)}
  .home-offers .stats div:nth-child(3){border-left:0}
  .home-offers .stats div:nth-child(n+3){border-top:1px solid var(--blush-deep);padding-top:1rem;margin-top:.65rem}
}

/* 講師紹介：本文は初期非表示。「自己紹介文を読む」で開く */
.teachers-enhanced .teachers{gap:1.4rem}
.teachers-enhanced .teacher-body{min-width:0;align-self:stretch}
.teacher-details{height:100%}
.teacher-details summary{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-rows:auto auto;
  align-items:center;
  gap:.1rem 1rem;
  list-style:none;
  min-height:4.4rem;
  padding:.2rem 0 .9rem;
  border-bottom:1px solid transparent;
  cursor:pointer;
  transition:border-color .25s ease,color .2s ease;
}
.teacher-details summary::-webkit-details-marker{display:none}
.teacher-details[open] summary{border-bottom-color:var(--blush-deep)}
.teacher-details summary .role{grid-column:1;grid-row:1;margin:0 0 .18rem}
.teacher-details summary .name{grid-column:1;grid-row:2;margin:0}
.teacher-disclosure{grid-column:2;grid-row:1 / 3}
.teacher-story{padding-top:1.15rem;animation:details-in .4s var(--ease) both}

.disclosure-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  min-width:7.25rem;
  min-height:2.55rem;
  padding:.45rem .8rem;
  border:2px solid var(--magenta);
  border-radius:999px;
  background:var(--magenta);
  color:#fff;
  font:700 .78rem/1.35 "Noto Sans JP",sans-serif;
  letter-spacing:.03em;
  white-space:nowrap;
  box-shadow:0 5px 14px rgba(176,27,90,.18);
  transition:background-color .2s ease,color .2s ease,transform .2s ease;
}
.disclosure-label::after{
  content:"";
  width:.42rem;
  height:.42rem;
  border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform:translateY(-.12rem) rotate(45deg);
  transition:transform .25s var(--ease);
}
details[open] > summary .disclosure-label{
  background:#fff;
  color:var(--magenta);
}
details[open] > summary .disclosure-label::after{
  transform:translateY(.12rem) rotate(225deg);
}
summary:hover .disclosure-label,
summary:focus-visible .disclosure-label{transform:translateY(-2px)}

@keyframes details-in{
  from{opacity:0;transform:translateY(-7px)}
  to{opacity:1;transform:translateY(0)}
}

/* AEP：16セクションを5つの章として見せる */
.aep-chapter{position:relative}
.aep-chapter > section{
  min-width:0;
  padding:clamp(2.7rem,5.8vw,4.8rem) 0;
  background:transparent;
}
.aep-chapter > section + section{border-top:1px solid var(--line)}

.aep-overview{
  background:linear-gradient(180deg,var(--paper),rgba(242,222,218,.45));
}
.aep-overview #system{background:rgba(242,222,218,.55)}

.aep-parent{
  border-block:1px solid rgba(255,255,255,.08);
}
.aep-parent > section + section{border-top-color:rgba(255,255,255,.12)}
.aep-parent .callout{background:#FFF9F8}

.aep-program{background:var(--paper)}
.aep-program #design{background:linear-gradient(145deg,rgba(242,222,218,.72),rgba(253,250,249,.9))}
.aep-program #design .block{
  padding:1.25rem 1.35rem;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  background:rgba(255,255,255,.72);
}

.aep-fit,
.aep-assurance{
  width:min(100% - 2.5rem,72rem);
  margin-inline:auto;
  padding:var(--gap) 0;
  display:grid;
  gap:1.2rem;
  isolation:isolate;
}
.aep-fit::before,
.aep-assurance::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset-block:0;
  left:50%;
  width:100vw;
  transform:translateX(-50%);
}
.aep-fit::before{background:var(--blush)}
.aep-assurance::before{background:linear-gradient(180deg,var(--paper),rgba(242,222,218,.32))}
.aep-fit > section,
.aep-assurance > section{
  height:100%;
  padding:2rem 0;
  border:1px solid var(--line);
  border-top:4px solid var(--magenta);
  border-radius:var(--radius-md);
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.aep-fit > section + section,
.aep-assurance > section + section{border-top-color:var(--magenta)}
.aep-fit > section > .wrap,
.aep-assurance > section > .wrap{width:min(100% - 2.4rem,64rem)}
.aep-fit .hilite{height:100%;box-shadow:none}
.aep-fit #eiken{padding:0;border:0;background:transparent}
.aep-assurance .cta{margin-top:1.5rem}

@media (min-width:48rem){
  .aep-parent{display:grid;grid-template-columns:1fr 1fr}
  .aep-parent > section{padding-block:clamp(3.3rem,6vw,5.5rem)}
  .aep-parent > section + section{border-top:0;border-left:1px solid rgba(255,255,255,.12)}
  .aep-fit{grid-template-columns:1fr 1fr}
  .aep-assurance{grid-template-columns:1.25fr .75fr}
}

/* 個別指導：料金を先に、長文をカード状に */
.page-study .study-price{background:linear-gradient(145deg,rgba(242,222,218,.72),var(--paper))}
.page-study .study-intro{background:var(--paper)}
.page-study .study-method{background:rgba(242,222,218,.4)}
.page-study .study-intro .narrow,
.page-study .study-method .narrow{max-width:64rem}
.page-study .study-intro p,
.page-study .study-method p{
  padding:1.2rem 1.3rem;
  margin:0;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  background:var(--surface);
  box-shadow:0 5px 18px rgba(72,31,45,.045);
}
.page-study .study-worries h2,
.page-study .study-worries > .wrap > .lede{color:#FAEEF2}
.page-study .study-worries h2::after{background:linear-gradient(90deg,#F5B8CC,rgba(255,255,255,.22))}

@media (min-width:48rem){
  .page-study .study-intro .narrow{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1rem;
  }
  .page-study .study-intro p:first-child{grid-column:1/-1}
  .page-study .study-method .narrow{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1rem;
  }
}

/* FAQ：回答を開けることを文字付きボタンで明示 */
.faq-enhanced .qa-item{padding:0;overflow:hidden}
.faq-enhanced .qa-item summary{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:1rem;
  list-style:none;
  padding:1.15rem 1.2rem;
  cursor:pointer;
  transition:background-color .22s ease,color .22s ease;
}
.faq-enhanced .qa-item summary::-webkit-details-marker{display:none}
.faq-enhanced .qa-item[open] summary{background:rgba(242,222,218,.42)}
.faq-enhanced .qa-item h3{margin:0}
.faq-disclosure{min-width:6.8rem}
.faq-enhanced .qa-item .a{
  padding:1.15rem 1.3rem 1.3rem;
  border-top:1px solid var(--line);
  animation:details-in .36s var(--ease) both;
}
.page-faq .wine-section .facts{box-shadow:0 18px 46px rgba(0,0,0,.16)}

/* スマホ：元からある面談ボタンを常時固定 */
@keyframes dock-in{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:translateY(0)}
}

.mobile-fixed-cta{display:none}

@media (max-width:47.99rem){
  .home-offers{width:min(100% - 1.5rem,72rem);padding:2.8rem 0}
  .home-offers > section:nth-child(2) .narrow{padding:1.55rem 1.2rem}

  .aep-chapter > section{padding:2.8rem 0}
  .aep-fit,.aep-assurance{width:min(100% - 1.5rem,72rem);padding:2.8rem 0}
  .aep-fit > section,.aep-assurance > section{padding:1.55rem 0}
  .aep-fit > section > .wrap,.aep-assurance > section > .wrap{width:min(100% - 2rem,64rem)}

  .teacher-details summary{
    grid-template-columns:1fr;
    grid-template-rows:auto auto auto;
    min-height:3.8rem;
  }
  .teacher-disclosure{
    grid-column:1;
    grid-row:3;
    justify-self:start;
    margin-top:.65rem;
  }
  .faq-enhanced .qa-item summary{padding:1rem}
  .faq-enhanced .qa-item .a{padding:1rem}

  body.has-mobile-fixed-cta{padding-bottom:calc(5.2rem + env(safe-area-inset-bottom))}
  .mobile-fixed-cta{
    display:flex;
    align-items:center;
    justify-content:center;
    position:fixed;
    z-index:120;
    left:.75rem;
    right:.75rem;
    bottom:calc(.7rem + env(safe-area-inset-bottom));
    width:auto;
    max-width:32rem;
    margin:0 auto;
    text-align:center;
    animation:dock-in .32s var(--ease) both;
    box-shadow:0 15px 34px rgba(84,16,45,.38),0 0 0 4px rgba(253,250,249,.82);
  }
}

@media (max-width:47.99rem){
  .faq-enhanced .qa-item summary{grid-template-columns:1fr;gap:.75rem}
  .faq-disclosure{justify-self:start}
}

@media (prefers-reduced-motion:reduce){
  .teacher-story,
  .faq-enhanced .qa-item .a,
  .mobile-fixed-cta{animation:none}
}


/* ===== ヘッダー：申し込みCTA・枠の強化 ===== */
.bar-in{
  padding-block:.7rem;
}
.nav{align-items:center}
.nav a[href$="#contact"].nav-cta,
.nav .nav-cta{
  color:#fff;
  border:1px solid var(--magenta-dark);
  background:linear-gradient(135deg,#C42468,var(--magenta-dark));
  box-shadow:0 8px 20px rgba(176,27,90,.30),inset 0 1px 0 rgba(255,255,255,.28);
  letter-spacing:.02em;
  padding-inline:1.05rem;
  margin-left:.4rem;
}
.nav .nav-cta::after{
  border-color:#fff;
}
.nav .nav-cta::before{
  content:"";
  position:absolute;
  left:-.72rem;
  top:50%;
  width:1px;
  height:1.6rem;
  transform:translateY(-50%);
  background:rgba(176,27,90,.22);
}
.nav .nav-cta:hover,
.nav .nav-cta:focus-visible{
  color:#fff;
  border-color:var(--magenta-dark);
  background:linear-gradient(135deg,#D93A7C,#A0104E);
  box-shadow:0 11px 26px rgba(176,27,90,.38),inset 0 1px 0 rgba(255,255,255,.34);
  transform:translateY(-2px);
}
.nav .nav-cta[aria-current="page"]{
  background:linear-gradient(135deg,#C42468,var(--magenta-dark));
}

@media (max-width:47.99rem){
  .nav{flex-wrap:wrap}
  .nav .nav-cta{
    margin-left:0;
    flex-basis:100%;
    margin-top:.15rem;
  }
  .nav .nav-cta::before{display:none}
  section{scroll-margin-top:11rem}
}

@media (max-width:47.99rem){
  .nav .nav-cta{padding-inline:.85rem}
}




/* ===== トップのヒーロー写真 ===== */
.hero-copy{min-width:0}
.hero-photo{width:100%;margin:0}
.hero-photo img{
  display:block;
  width:100%;
  height:clamp(14rem,26vw,21rem);
  object-fit:cover;
  object-position:center 42%;
}
@media (max-width:47.99rem){
  .hero-grid{gap:1.9rem}
  .hero-photo{width:min(100%,22rem);margin-inline:auto}
  .hero-photo img{height:clamp(9.5rem,32vw,12rem)}
}

/* ===== ヘッダー：幅に応じて段階なしで縮む（タブレットで折返しを防ぐ） ===== */
@media (min-width:48rem){
  .bar-in{flex-wrap:wrap;row-gap:.5rem}
  .mark{font-size:clamp(.86rem,1.1vw,1rem);padding-inline:clamp(.85rem,1.1vw,1.15rem) clamp(.7rem,1vw,1.35rem)}
  .mark span{font-size:clamp(.62rem,.72vw,.7rem)}
  .nav{font-size:clamp(.76rem,.95vw,.875rem);gap:clamp(.3rem,.5vw,.45rem)}
  .nav a{padding:.55rem clamp(.5rem,.85vw,.82rem);min-height:2.6rem}
  .nav .nav-cta{padding-inline:clamp(.7rem,1.1vw,1.05rem);margin-left:clamp(.25rem,.5vw,.4rem)}
  .nav .nav-cta::before{left:clamp(-.55rem,-.6vw,-.4rem)}
}

/* ================= ブログ一覧 ================= */
.blog-hero h1{max-width:34rem}
.blog-hero .cta-note{color:var(--ink-soft);font-size:.85rem}

.blog-list{padding:clamp(2.8rem,6vw,4.5rem) 0 clamp(3rem,7vw,5rem)}

.blog-filter{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  padding-bottom:1.4rem;
  border-bottom:1px solid var(--blush-deep);
}
.blog-filter .chip{
  font:inherit;
  font-size:.85rem;
  font-weight:500;
  color:var(--ink-soft);
  background:transparent;
  border:1px solid var(--blush-deep);
  border-radius:2rem;
  padding:.45rem 1.05rem;
  cursor:pointer;
  transition:background-color .22s ease,color .22s ease,border-color .22s ease,transform .22s ease;
}
.blog-filter .chip:hover{color:var(--magenta);border-color:var(--magenta)}
.blog-filter .chip.is-on{
  color:#fff;
  border-color:var(--magenta-dark);
  background:linear-gradient(135deg,#C42468,var(--magenta-dark));
  box-shadow:0 6px 16px rgba(176,27,90,.24);
}

.blog-count{
  margin:1.1rem 0 0;
  font-size:.8rem;
  letter-spacing:.06em;
  color:var(--ink-soft);
}

.posts{display:grid;gap:1.1rem;margin-top:1.4rem}
@media (min-width:48rem){
  .posts{grid-template-columns:1fr 1fr;gap:1.3rem}
  .post.is-lead{grid-column:1/-1}
}

.post{margin:0}
.post-link{
  display:grid;
  gap:.55rem;
  height:100%;
  align-content:start;
  text-decoration:none;
  color:inherit;
  background:var(--paper);
  border:1px solid var(--blush-deep);
  border-left:4px solid var(--blush-deep);
  border-radius:var(--radius-md,6px);
  padding:1.35rem 1.4rem 1.5rem;
  transition:border-color .25s ease,box-shadow .3s ease,transform .3s var(--ease,ease);
}
.post-link:hover,
.post-link:focus-visible{
  border-color:var(--blush-deep);
  border-left-color:var(--magenta);
  box-shadow:0 16px 38px rgba(72,31,45,.13);
  transform:translateY(-3px);
}

.post-meta{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:.55rem .8rem;
  margin:0;
  font-size:.76rem;
  letter-spacing:.06em;
  color:var(--ink-soft);
  font-variant-numeric:tabular-nums;
}
.post-cat{
  font-weight:700;
  color:var(--magenta);
  background:rgba(176,27,90,.08);
  border-radius:1rem;
  padding:.16rem .7rem;
  letter-spacing:.04em;
}

.post h2{
  font-size:1.12rem;
  line-height:1.65;
  margin:0;
  letter-spacing:.01em;
}
.post.is-lead h2{font-size:clamp(1.25rem,2.6vw,1.65rem)}

.post-sum{
  margin:0;
  font-size:.9rem;
  line-height:1.95;
  color:var(--ink-soft);
}

.post-go{
  justify-self:start;
  margin-top:.35rem;
  font-size:.82rem;
  font-weight:700;
  color:var(--magenta);
  letter-spacing:.04em;
  border-bottom:1px solid currentColor;
  padding-bottom:1px;
}
.post-go::after{
  content:"↗";
  margin-left:.35em;
  font-weight:400;
}

.blog-empty{
  margin:2.4rem 0 0;
  padding:2rem;
  text-align:center;
  color:var(--ink-soft);
  font-size:.92rem;
  border:1px dashed var(--blush-deep);
  border-radius:var(--radius-md,6px);
}

.blog-more{margin-top:2.6rem;text-align:center}
.cta-ghost{
  background:transparent;
  color:var(--magenta);
  border:1px solid var(--magenta);
  box-shadow:none;
}
.cta-ghost:hover,.cta-ghost:focus-visible{
  background:var(--magenta);
  color:#fff;
}

@media (max-width:47.99rem){
  .post-link{padding:1.2rem 1.15rem 1.3rem}
  .post h2{font-size:1.05rem}
  .blog-more .cta{width:100%}
}

/* ===== 料金つきカード（スタディサポート等）のはみ出し対策 ===== */
/* 価格列を固定8remにしていたため、幅の狭い列の中で内容がはみ出していた */
@media (min-width:48rem){
  .subopts li{grid-template-columns:minmax(0,1fr) auto;column-gap:1.2rem}
}
.subopts li > *{min-width:0}
.subopts b{overflow-wrap:anywhere}

/* トップの「個別指導もあります」は細い列に入るので、常に縦積みにする */
.home-offers .subopts li{
  grid-template-columns:1fr;
  row-gap:.45rem;
}
.home-offers .subopts b{order:0}
.home-offers .subopts .p{
  order:1;
  grid-column:1;
  grid-row:auto;
  justify-self:start;
  text-align:left;
  font-size:.88rem;
  color:var(--magenta);
  background:rgba(176,27,90,.08);
  border-radius:1rem;
  padding:.14rem .7rem;
}
.home-offers .subopts .d{order:2;grid-column:1}

/* ===== 施設写真（外観・教室） ===== */
.place-photo{
  margin:1.9rem 0 0;
  width:min(100%,26rem);
}
.place-photo img{
  display:block;
  width:100%;
  height:clamp(13rem,26vw,19rem);
  object-fit:cover;
  object-position:center 55%;
  border:1px solid var(--line);
  border-radius:var(--radius-md,6px);
  box-shadow:0 12px 30px rgba(72,31,45,.10);
}
.place-photo figcaption{
  margin-top:.7rem;
  font-size:.82rem;
  line-height:1.85;
  color:var(--ink-soft);
}
@media (max-width:47.99rem){
  .place-photo{width:100%}
  .place-photo img{height:clamp(11rem,42vw,14rem)}
}

/* ===== LINE問い合わせ ===== */
.line-cta{margin:0 0 .6rem}
.cta-line{
  background:#06C755;
  border:1px solid #06C755;
  color:#fff;
  box-shadow:0 8px 20px rgba(6,199,85,.26);
}
.cta-line::after{border-color:#fff}
.cta-line:hover,.cta-line:focus-visible{
  background:#05A948;
  border-color:#05A948;
  color:#fff;
  box-shadow:0 11px 26px rgba(6,199,85,.34);
}
@media (max-width:47.99rem){
  .line-cta .cta{width:100%}
}

/* ===== 修正：濃色セクション内の白カードの文字色 ===== */
.wine-section .worries li,
.wine-section .subopts li,
.wine-section .qa-item{color:var(--ink)}
.wine-section .worries li strong,
.wine-section .subopts li strong{color:var(--magenta)}

/* ===== 修正：問い合わせ欄のボタンがリンク色に上書きされていた ===== */
.contact a.cta{
  color:#fff;
  border-bottom:0;
}
.contact a.cta-line,
.contact a.cta-line:hover,
.contact a.cta-line:focus-visible{
  color:#fff;
  border-bottom:0;
}
.cta-line,.cta-line::after{color:#fff}

/* ===== スマホ下部に固定するLINE導線 ===== */
@media (max-width:47.99rem){
  .mobile-fixed-cta{
    flex-direction:column;
    gap:.12rem;
    min-height:3.6rem;
    padding:.62rem 1.4rem;
    background:#06C755;
    border:1px solid #05A948;
    box-shadow:0 14px 30px rgba(6,199,85,.34),0 0 0 4px rgba(253,250,249,.85);
  }
  .mobile-fixed-cta,
  .mobile-fixed-cta:hover,
  .mobile-fixed-cta:focus-visible{color:#fff}
  .mobile-fixed-cta:hover,
  .mobile-fixed-cta:focus-visible{
    background:#05A948;
    border-color:#05A948;
  }
  .mobile-fixed-cta::after{
    content:"→";
    position:absolute;
    right:1.15rem;
    top:50%;
    transform:translateY(-50%);
    font-size:1.05rem;
  }
  .mobile-fixed-cta:hover::after,
  .mobile-fixed-cta:focus-visible::after{transform:translateY(-50%) translateX(.25rem)}
  .mfc-main{font-size:.98rem;font-weight:700;line-height:1.3}
  .mfc-sub{
    font-size:.68rem;
    font-weight:400;
    line-height:1.3;
    letter-spacing:.03em;
    color:rgba(255,255,255,.88);
  }
  body.has-mobile-fixed-cta{padding-bottom:calc(5.6rem + env(safe-area-inset-bottom))}
}
