    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --teal:      #4CBCBC;
      --teal-dark: #3A9E9E;
      --plum:      #B196D6;
      --plum-dark: #8E6FB4;
      --pink-bg:   #f7eef7;
      --lavender:  #ede4f5;
      --cream:     #FFF6E5;
      --text:      #1f1f26;
      --muted:     #54546a;
      --white:     #ffffff;
      --font-jp:   'M PLUS Rounded 1c', sans-serif;
      --font-en:   'Outfit', sans-serif;
    }

    html { scroll-behavior: smooth; }
    body {
      font-family: var(--font-jp);
      font-weight: 400;
      color: var(--text);
      background: var(--pink-bg);
      line-height: 1.8;
      -webkit-font-smoothing: antialiased;
    }
    img { max-width: 100%; display: block; }
    a   { text-decoration: none; color: inherit; }

    /* ── HEADER ── */
    header {
      position: sticky; top: 0; z-index: 100;
      background: rgba(255,255,255,0.95);
      backdrop-filter: blur(8px);
      border-bottom: 1px solid rgba(160,124,192,.12);
      display: flex; align-items: center;
      justify-content: space-between;
      padding: 0 40px; height: 64px;
    }
    .header-tagline {
      font-size: 13px; color: var(--teal-dark);
      letter-spacing: .04em; white-space: nowrap;
      font-weight: 500;
    }
    .site-nav { list-style: none; display: flex; align-items: center; }
    .site-nav li { position: relative; }
    .site-nav li + li::before {
      content: ''; position: absolute;
      left: 0; top: 50%; transform: translateY(-50%);
      width: 1px; height: 14px; background: rgba(160,124,192,.3);
    }
    .site-nav a {
      display: block; padding: 0 18px;
      font-size: 13px; color: var(--muted);
      letter-spacing: .05em; white-space: nowrap;
      transition: color .2s;
    }
    .site-nav a:hover { color: var(--teal); }
    .site-nav .nav-cta {
      background: var(--teal); color: var(--white);
      border-radius: 4px; padding: 8px 20px;
      font-size: 13px; margin-left: 12px;
      transition: background .2s;
    }
    .site-nav .nav-cta:hover { background: var(--teal-dark); }
    .site-nav .nav-link-btn {
      border: 1px solid var(--teal); color: var(--teal-dark);
      border-radius: 4px; padding: 6px 16px;
      font-size: 13px; transition: all .2s;
    }
    .site-nav .nav-link-btn:hover { background: var(--teal); color: var(--white); }
    .nav-toggle { display: none; }
    .nav-burger { display: none; }

    /* ── HERO ── */
    .hero {
      min-height: calc(100vh - 64px);
      background:
        linear-gradient(95deg,
          rgba(245,230,245,0.97) 0%,
          rgba(245,230,245,0.92) 22%,
          rgba(232,216,244,0.55) 42%,
          rgba(216,237,245,0.18) 60%,
          rgba(216,237,245,0) 75%),
        url('3464353_m.jpg') calc(55% + 76px) 28% / cover no-repeat;
      position: relative; overflow: hidden;
      padding: 56px 80px 120px;
      display: flex; align-items: center;
    }
    .hero-inner {
      max-width: 1200px;
      width: 100%;
      margin: 0 auto;
      position: relative;
    }
    .hero-logo {
      display: block;
      margin: 0 0 8px 0;  /* align left with hero text */
    }
    .hero-logo img, .hero-logo-svg {
      width: 480px;        /* left-aligned with hero text, sized to avoid face overlap */
      height: auto;        /* keep natural aspect ratio */
      max-width: 100%;
      display: block;
      image-rendering: -webkit-optimize-contrast;
    }
    .hero-copy {
      max-width: 620px;
      position: relative;
      z-index: 2;
    }
    .hero::before {
      content: ''; position: absolute;
      right: -100px; top: -100px; width: 600px; height: 600px;
      background: radial-gradient(circle, rgba(76,188,188,.12) 0%, transparent 65%);
      pointer-events: none;
    }
    .hero-eyebrow {
      font-family: var(--font-en); font-size: 11px;
      letter-spacing: .2em; color: var(--teal-dark);
      text-transform: uppercase;
      display: flex; align-items: center; gap: 12px; margin-bottom: 24px;
    }
    .hero-eyebrow::before {
      content: ''; width: 36px; height: 1.5px; background: var(--teal); display: block;
    }
    .hero-h1 {
      font-family: var(--font-jp);
      font-size: clamp(26px, 4vw, 46px);
      font-weight: 300; line-height: 1.4;
      letter-spacing: 0; margin-bottom: 32px;
      word-break: keep-all; overflow-wrap: break-word;
    }
    .hero-h1 em { font-style: normal; color: var(--teal-dark); font-weight: 400; }
    .hero-lead { font-size: 17px; color: var(--muted); line-height: 2; margin-bottom: 44px; }
    .hero-cta {
      display: inline-block; background: var(--teal);
      color: var(--white); padding: 16px 40px;
      border-radius: 50px; font-size: 15px; letter-spacing: .1em;
      box-shadow: 0 4px 20px rgba(76,188,188,.35);
      transition: all .25s;
    }
    .hero-cta:hover { background: var(--teal-dark); transform: translateY(-2px); }

    /* ── SECTION COMMON ── */
    .section-label {
      font-family: var(--font-en); font-size: 10px;
      letter-spacing: .25em; color: var(--teal);
      text-transform: uppercase;
      display: flex; align-items: center; gap: 10px; margin-bottom: 16px;
    }
    .section-label::after {
      content: ''; flex: 1; max-width: 40px; height: 1px; background: var(--teal);
    }
    .section-title {
      font-size: clamp(24px, 2.8vw, 36px);
      font-weight: 300; line-height: 1.5; margin-bottom: 12px;
      word-break: keep-all; overflow-wrap: break-word;
    }

    /* ── CONCERNS ── */
    .concerns { padding: 100px 80px; background: var(--pink-bg); }
    .concerns-inner { max-width: 960px; margin: 0 auto; }
    .concerns-grid {
      display: flex; flex-direction: column;
      max-width: 760px; margin: 48px auto 0;
    }
    .concern-item {
      background: transparent; border-radius: 0; box-shadow: none;
      padding: 20px 4px; display: flex; align-items: flex-start; gap: 16px;
      border-bottom: 1px solid rgba(160,124,192,.2);
    }
    .concern-icon { color: var(--teal); font-size: 21px; flex-shrink: 0; margin-top: 1px; }
    .concern-text { font-size: 17px; line-height: 1.7; }
    .concerns-solution {
      max-width: 760px; margin: 44px auto 0; text-align: center;
      font-size: 16px; line-height: 2; color: var(--text);
    }
    .concerns-solution .em { color: var(--teal-dark); font-weight: 500; }

    /* ── FEATURES ── */
    .features { padding: 100px 80px; background: var(--lavender); }
    .features-inner { max-width: 960px; margin: 0 auto; }
    .features-header {
      display: grid; grid-template-columns: 1fr 1fr;
      gap: 60px; align-items: start; margin-bottom: 72px;
    }
    .features-header-desc { font-size: 16px; color: var(--muted); line-height: 2; padding-top: 16px; }
    .lesson-overview {
      background: rgba(255,255,255,.6); border-radius: 16px;
      border: 1px solid rgba(160,124,192,.12);
      padding: 12px 36px; margin-bottom: 64px;
    }
    .lesson-overview-item { padding: 20px 0; }
    .lesson-overview-item + .lesson-overview-item { border-top: 1px solid rgba(160,124,192,.15); }
    .lesson-overview-name {
      font-size: 16px; font-weight: 500; margin-bottom: 8px;
      display: flex; align-items: center; gap: 8px;
    }
    .lesson-overview-name::before { content: '◇'; color: var(--teal); font-size: 13px; }
    .lesson-overview-desc { font-size: 14.5px; color: var(--muted); line-height: 1.85; word-break: keep-all; overflow-wrap: break-word; }
    .features-subtitle { font-size: 16px; font-weight: 500; text-align: center; margin-bottom: 28px; }
    .features-subtitle.sp2 { margin-top: 48px; }
    #group-lessons { scroll-margin-top: 90px; }
    #hughug { scroll-margin-top: 90px; }
    .features-cards { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
    .feature-card {
      background: var(--white); border-radius: 20px;
      padding: 36px 28px; box-shadow: 0 4px 20px rgba(160,124,192,.1);
    }
    .feature-photo {
      width: calc(100% + 56px); margin: -36px -28px 22px;
      aspect-ratio: 4 / 3;
      border-radius: 20px 20px 0 0;
      background:
        repeating-linear-gradient(45deg, rgba(160,124,192,.06) 0 12px, rgba(160,124,192,.1) 12px 24px),
        linear-gradient(135deg, var(--lavender), var(--pink-bg));
      display: flex; align-items: center; justify-content: center;
      color: var(--muted); font-size: 12px; letter-spacing: .12em;
    }
    .feature-num {
      font-family: var(--font-en); font-size: 48px; font-weight: 300;
      color: rgba(76,188,188,.18); line-height: 1; margin-bottom: 4px;
    }
    .feature-en {
      font-family: var(--font-en); font-size: 10px;
      letter-spacing: .15em; color: var(--teal);
      text-transform: uppercase; margin-bottom: 12px;
    }
    .feature-title { font-size: 18px; font-weight: 500; margin-bottom: 12px; }
    .feature-desc { font-size: 15px; color: var(--muted); line-height: 1.9; }
    .extra-photo {
      width: calc(100% + 56px); margin: -24px -28px 18px;
      aspect-ratio: 16 / 9;
      border-radius: 14px 14px 0 0;
      background:
        repeating-linear-gradient(45deg, rgba(160,124,192,.06) 0 12px, rgba(160,124,192,.1) 12px 24px),
        linear-gradient(135deg, var(--lavender), var(--pink-bg));
      display: flex; align-items: center; justify-content: center;
      color: var(--muted); font-size: 12px; letter-spacing: .12em;
    }
    .feature-photo img, .extra-photo img {
      width: 100%; height: 100%;
      object-fit: cover; display: block;
      border-radius: inherit;
    }
    .extra-photo.awake-photos {
      width: 100%; max-width: 660px;
      margin: 0 auto 20px;
      aspect-ratio: 1.7 / 1; /* 2枚の写真の縦横比に合わせ、全体が見えるように */
      display: grid; grid-template-columns: 991fr 708fr; gap: 6px;
      border-radius: 16px; overflow: hidden;
    }
    .awake-photos img {
      width: 100%; height: 100%;
      object-fit: cover; display: block; border-radius: 0;
    }
    .menu-title {
      text-align: center; margin: 96px 0 12px;
      padding-top: 56px; border-top: 1px solid rgba(160,124,192,.18);
    }
    .menu-cta-wrap { text-align: center; margin-top: 52px; }
    .menu-cta {
      display: inline-block; background: var(--teal); color: var(--white);
      padding: 15px 44px; border-radius: 50px; font-size: 15px; letter-spacing: .08em;
      box-shadow: 0 4px 20px rgba(76,188,188,.35); transition: all .25s;
    }
    .menu-cta:hover { background: var(--teal-dark); transform: translateY(-2px); }

    /* ── AWAKE OFFER (はじめやすさ訴求) ── */
    .awake-offer {
      margin-top: 26px;
      background: linear-gradient(135deg, #fff6e5 0%, #fdeef4 100%);
      border: 1.5px solid rgba(76,188,188,.35);
      border-radius: 18px;
      padding: 28px 30px 26px;
      text-align: center;
    }
    .awake-offer-badge {
      display: inline-block;
      background: var(--teal); color: #fff;
      font-size: 13px; font-weight: 700; letter-spacing: .08em;
      padding: 6px 18px; border-radius: 50px;
      margin-bottom: 14px;
    }
    .awake-offer-main {
      font-size: clamp(22px, 4vw, 30px); font-weight: 500;
      line-height: 1.4; color: var(--text); margin-bottom: 12px;
    }
    .awake-offer-main strong { color: var(--teal-dark); font-weight: 700; }
    .awake-offer-main em {
      font-style: normal; font-weight: 700;
      font-size: 1.4em; color: var(--teal); margin: 0 3px;
      white-space: nowrap;
    }
    .awake-offer-sub {
      font-size: 15px; color: var(--muted); line-height: 1.95;
      max-width: 560px; margin: 0 auto 22px;
    }
    .awake-flow-mini {
      display: flex; align-items: center; justify-content: center;
      flex-wrap: wrap; gap: 10px;
    }
    .afm-step {
      background: #fff; border: 1px solid rgba(76,188,188,.3);
      color: var(--teal-dark); font-size: 14.5px; font-weight: 500;
      padding: 11px 18px; border-radius: 12px;
    }
    .afm-step-hl { background: var(--teal); color: #fff; border-color: var(--teal); font-weight: 700; }
    .afm-arrow {
      width: 10px; height: 10px; flex-shrink: 0;
      border-right: 2px solid var(--plum); border-bottom: 2px solid var(--plum);
      transform: rotate(-45deg);
    }
    .awake-note { font-size: 13.5px; color: var(--muted); line-height: 1.9; margin-top: 18px; text-align: center; }
    .awake-note a { color: var(--teal-dark); text-decoration: underline; }
    .awake-cta-row {
      display: flex; gap: 14px; justify-content: center; flex-wrap: wrap;
      margin-top: 24px;
    }
    .awake-cta {
      display: inline-flex; align-items: center; gap: 10px;
      background: var(--teal); color: #fff;
      padding: 16px 32px; border-radius: 50px;
      font-size: 15.5px; font-weight: 500; letter-spacing: .04em;
      box-shadow: 0 4px 18px rgba(76,188,188,.3); transition: all .25s;
    }
    .awake-cta:hover { background: var(--teal-dark); transform: translateY(-2px); }
    .awake-cta-line { background: #06C755; box-shadow: 0 4px 18px rgba(6,199,85,.3); }
    .awake-cta-line:hover { background: #05b34c; }
    @media (max-width: 560px) {
      .awake-flow-mini { flex-direction: column; gap: 8px; }
      .afm-step { width: 100%; }
      .afm-arrow { transform: rotate(45deg); }
      .awake-cta { width: 100%; justify-content: center; }
    }

    /* ── PLANS ── */
    .plans { padding: 100px 80px; background: var(--pink-bg); }
    .plans-inner { max-width: 960px; margin: 0 auto; }
    .plans-intro {
      font-size: 16px; color: var(--muted); line-height: 2;
      text-align: center; max-width: 560px; margin: 0 auto 56px;
    }
    .plans-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; margin-bottom: 40px; }
    .plan-card {
      background: var(--white); border-radius: 20px;
      padding: 36px 28px; box-shadow: 0 4px 20px rgba(160,124,192,.1);
      display: flex; flex-direction: column;
    }
    .plan-card.featured { background: var(--teal); color: var(--white); }
    .plan-card.featured .plan-freq,
    .plan-card.featured .plan-desc { color: rgba(255,255,255,.85); }
    .plan-card.featured .plan-tax  { color: rgba(255,255,255,.7); }
    .plan-name {
      font-family: var(--font-en); font-size: 18px;
      font-weight: 400; letter-spacing: .05em; margin-bottom: 6px;
    }
    .plan-freq { font-size: 12px; color: var(--muted); margin-bottom: 20px; }
    .plan-price {
      font-family: var(--font-en); font-size: 32px;
      font-weight: 400; letter-spacing: -.01em; margin-bottom: 4px;
    }
    .plan-tax { font-size: 11px; color: var(--muted); margin-bottom: 20px; }
    .plan-desc { font-size: 15px; color: var(--muted); line-height: 1.9; flex: 1; }

    .plans-extra { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 24px; }
    .plan-extra-card {
      background: var(--white); border-radius: 14px;
      padding: 24px 28px; box-shadow: 0 2px 12px rgba(160,124,192,.07);
    }
    .plan-extra-card h4 { font-size: 15px; font-weight: 500; margin-bottom: 8px; }
    .plan-extra-card p { font-size: 15px; color: var(--muted); line-height: 1.9; }
    .plan-extra-card .price { font-weight: 500; color: var(--text); }
    .plan-extra-link {
      display: block; transition: transform .25s, box-shadow .25s;
    }
    .plan-extra-link:hover {
      transform: translateY(-3px);
      box-shadow: 0 8px 24px rgba(160,124,192,.16);
    }
    .plan-extra-more {
      display: inline-block; margin-top: 12px;
      font-size: 14px; font-weight: 700; color: var(--teal-dark);
      letter-spacing: .03em;
    }
    .price-cat-title {
      font-size: 19px; font-weight: 500; text-align: center;
      margin: 64px 0 8px; color: var(--text);
      display: flex; align-items: center; justify-content: center; gap: 14px;
    }
    .price-cat-title::before, .price-cat-title::after {
      content: ''; width: 28px; height: 1px; background: var(--plum);
    }
    .price-cat-title.first { margin-top: 8px; }
    .price-cat-lead {
      font-size: 15px; color: var(--muted); text-align: center;
      line-height: 1.9; max-width: 620px; margin: 0 auto 28px;
    }
    .plan-note {
      text-align: center; font-size: 15px; color: var(--muted);
      background: var(--white); border-radius: 10px;
      padding: 16px 24px; box-shadow: 0 2px 10px rgba(160,124,192,.07);
    }

    /* ── TRIAL ── */
    .trial {
      padding: 100px 80px;
      background: linear-gradient(135deg, #e8d8f4 0%, #d8edf5 100%);
    }
    .trial-inner {
      max-width: 960px; margin: 0 auto;
      display: grid; grid-template-columns: 1fr 1fr;
      gap: 80px; align-items: center;
    }
    .trial-label {
      font-family: var(--font-en); font-size: 10px;
      letter-spacing: .25em; color: var(--teal-dark);
      text-transform: uppercase; margin-bottom: 16px;
    }
    .trial-title { font-size: clamp(26px,3vw,38px); font-weight: 300; line-height: 1.45; margin-bottom: 20px; }
    .trial-desc { font-size: 16px; color: var(--muted); line-height: 2; margin-bottom: 28px; }
    .trial-items { list-style: none; margin-bottom: 36px; }
    .trial-items li {
      display: flex; align-items: center; gap: 10px;
      font-size: 15px; color: var(--muted);
      padding: 8px 0; border-bottom: 1px solid rgba(160,124,192,.1);
    }
    .trial-items li::before { content: '◇'; color: var(--teal); font-size: 12px; }
    .trial-cta {
      display: inline-block; background: var(--teal);
      color: var(--white); padding: 16px 40px;
      border-radius: 50px; font-size: 15px; letter-spacing: .08em;
      box-shadow: 0 4px 20px rgba(76,188,188,.35); transition: all .25s;
    }
    .trial-cta:hover { background: var(--teal-dark); transform: translateY(-2px); }
    .trial-cta-row { display: flex; flex-wrap: wrap; gap: 14px; }
    .trial-cta-sub {
      background: transparent; color: var(--teal-dark);
      border: 1.5px solid var(--teal); box-shadow: none;
    }
    .trial-cta-sub:hover { background: var(--teal); color: var(--white); }
    .trial-card {
      background: rgba(255,255,255,.88); backdrop-filter: blur(6px);
      border-radius: 24px; padding: 48px 40px; text-align: center;
      box-shadow: 0 8px 40px rgba(160,124,192,.15);
    }
    .trial-card-en {
      font-family: var(--font-en); font-size: 10px;
      letter-spacing: .3em; color: var(--teal);
      text-transform: uppercase; margin-bottom: 12px;
    }
    .trial-card-name {
      font-family: var(--font-en); font-size: 28px;
      font-weight: 400; margin-bottom: 24px;
    }
    .trial-card-price {
      font-family: var(--font-en); font-size: 48px;
      font-weight: 300; color: var(--teal-dark);
      letter-spacing: -.02em; margin-bottom: 4px;
    }
    .trial-card-tax { font-size: 12px; color: var(--muted); margin-bottom: 24px; }
    .trial-card-details {
      font-size: 15px; color: var(--muted); line-height: 2;
      border-top: 1px solid rgba(160,124,192,.15); padding-top: 20px;
    }
    .trial-note { font-size: 12px; color: var(--muted); margin-top: 16px; }

    /* ── INTRO (初めての方へ) ── */
    .intro-page {
      padding: 110px 80px 70px;
      background: linear-gradient(135deg, #e8d8f4 0%, #d8edf5 100%);
      text-align: center;
    }
    .intro-inner { max-width: 760px; margin: 0 auto; }
    .intro-title {
      font-size: clamp(30px,4vw,46px); font-weight: 300;
      line-height: 1.4; margin: 8px 0 28px;
    }
    .intro-lead {
      font-size: 17px; color: var(--muted); line-height: 2.1;
      margin-bottom: 28px; text-wrap: balance; max-width: 600px;
      margin-left: auto; margin-right: auto;
    }
    .milestones {
      margin: 36px 0; font-size: 16px; color: var(--text);
      line-height: 2.4; font-weight: 500;
    }
    .milestones .m-num {
      font-family: var(--font-en); font-size: 30px; font-weight: 300;
      color: var(--teal-dark); margin-right: 4px;
    }
    .milestones .m-num small { font-size: 15px; margin-left: 2px; }

    /* ── FLOW ── */
    .flow-section { padding: 90px 80px; background: var(--white); }
    .flow-inner { max-width: 820px; margin: 0 auto; text-align: center; }
    .flowchart {
      max-width: 600px; margin: 48px auto;
      display: flex; flex-direction: column; align-items: center;
    }
    .flow-step {
      width: 300px;
      background: linear-gradient(135deg, #e8d8f4 0%, #d8edf5 100%);
      border: 1.5px solid rgba(76,188,188,.4);
      border-radius: 16px; padding: 18px 22px; text-align: center;
      box-shadow: 0 4px 16px rgba(160,124,192,.12);
    }
    .flow-step .fs-title { font-size: 16px; font-weight: 500; color: var(--teal-dark); }
    .flow-step .fs-sub { font-size: 12px; color: var(--muted); margin-top: 6px; line-height: 1.6; }
    .flow-arrow { display: flex; justify-content: center; padding: 12px 0; }
    .flow-arrow::after {
      content: ''; width: 13px; height: 13px;
      border-right: 2.5px solid var(--teal);
      border-bottom: 2.5px solid var(--teal);
      transform: rotate(45deg);
    }
    /* pair: 単発体験 → Awake、両方 → パーソナル */
    .flow-pair { display: flex; align-items: stretch; justify-content: center; }
    .pair-step { width: 150px; display: flex; flex-direction: column; justify-content: center; }
    .pair-step .fs-title { font-size: 14px; line-height: 1.5; }
    .pair-arrow { flex: 0 0 36px; display: flex; align-items: center; justify-content: center; }
    .pair-arrow::after {
      content: ''; width: 12px; height: 12px;
      border-top: 2.5px solid var(--teal); border-right: 2.5px solid var(--teal);
      transform: rotate(45deg);
    }
    .flow-merge { display: flex; justify-content: center; gap: 36px; }
    .flow-merge .merge-arrow { width: 150px; display: flex; justify-content: center; padding: 12px 0; }
    .flow-merge .merge-arrow::after {
      content: ''; width: 13px; height: 13px;
      border-right: 2.5px solid var(--teal); border-bottom: 2.5px solid var(--teal);
      transform: rotate(45deg);
    }
    @media (max-width: 680px) {
      .intro-page { padding: 84px 20px 60px; }
      .flow-section { padding: 70px 18px; }
      .flowchart { max-width: 340px; }
      .flow-step { width: 100%; padding: 14px 12px; }
      .flow-step .fs-title { font-size: 15px; }
      .flow-pair { width: 100%; }
      .pair-step { flex: 1 1 0; width: auto; min-width: 0; padding: 14px 10px; }
      .pair-step .fs-title { font-size: 13px; }
      .pair-arrow { flex: 0 0 24px; }
      .flow-merge { width: 100%; gap: 24px; }
      .flow-merge .merge-arrow { flex: 1 1 0; width: auto; }
    }
    .flow-note {
      font-size: 16px; color: var(--muted); line-height: 2;
      margin-bottom: 20px; text-wrap: pretty;
    }
    .flow-attention {
      font-size: 16px; color: var(--teal-dark); line-height: 2;
      background: #f4ecfa; border-radius: 14px;
      padding: 22px 28px; margin-top: 28px; text-wrap: pretty;
    }
    .line-cta-wrap { text-align: center; margin-top: 28px; }
    .line-cta {
      display: inline-flex; align-items: center; gap: 10px;
      background: #06C755; color: #fff;
      padding: 16px 38px; border-radius: 50px;
      font-size: 16px; font-weight: 700; letter-spacing: .04em;
      box-shadow: 0 6px 20px rgba(6,199,85,.35); transition: all .25s;
    }
    .line-cta:hover { background: #05b34c; transform: translateY(-2px); }
    .line-badge {
      background: #fff; color: #06C755;
      font-family: var(--font-en); font-weight: 700; font-size: 12px;
      padding: 3px 7px; border-radius: 6px; letter-spacing: .02em;
    }

    /* ── VOICES ── */
    .voices { padding: 100px 80px; background: var(--pink-bg); }
    .voices-inner { max-width: 960px; margin: 0 auto; }
    .voices-list { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 48px; }
    .voice-card {
      background: var(--white); border-radius: 20px;
      padding: 36px 32px; box-shadow: 0 4px 20px rgba(160,124,192,.08);
      position: relative;
    }
    .voice-card::before {
      content: '\201C'; position: absolute; top: 20px; left: 28px;
      font-size: 60px; line-height: 1; color: var(--teal);
      opacity: .18; font-family: Georgia, serif;
    }
    .voice-highlight { font-size: 16.5px; font-weight: 500; color: var(--teal-dark); margin-bottom: 16px; line-height: 1.6; padding-top: 16px; }
    .voice-text { font-size: 16px; line-height: 1.95; color: var(--text); margin-bottom: 20px; }
    .voice-attr { font-size: 13px; color: var(--muted); text-align: right; }

    /* ── TIMETABLE ── */
    .schedule { padding: 100px 80px; background: var(--lavender); }
    .schedule-inner { max-width: 1040px; margin: 0 auto; }
    .schedule-head { text-align: center; margin-bottom: 12px; }
    .schedule-head .section-label { justify-content: center; }
    .schedule-sub {
      font-size: 15px; color: var(--muted);
      text-align: center; margin-bottom: 48px;
    }
    .timetable {
      background: var(--white); border-radius: 20px;
      overflow: hidden;
      box-shadow: 0 4px 20px rgba(160,124,192,.1);
    }
    .tt-hint { display: none; }
    .tt-grid {
      display: grid;
      grid-template-columns: 80px repeat(6, 1fr);
      font-size: 12px;
    }
    .tt-grid > div {
      padding: 10px 6px;
      border-bottom: 1px solid rgba(160,124,192,.08);
      border-right:  1px solid rgba(160,124,192,.08);
      min-height: 56px;
      position: relative;
      display: flex; flex-direction: column;
      align-items: center; justify-content: center;
      text-align: center;
    }
    .tt-cell .tt-when {
      font-family: var(--font-en);
      font-size: 9px;
      letter-spacing: .02em;
      color: var(--muted);
      font-weight: 500;
      margin-bottom: 3px;
    }
    .tt-grid > div:nth-child(7n) { border-right: none; }
    .tt-grid > div.tt-time {
      background: rgba(237,228,245,.5);
      color: var(--muted);
      font-family: var(--font-en); font-size: 11px;
      letter-spacing: .03em;
      font-weight: 500;
    }
    .tt-head {
      background: var(--teal);
      color: var(--white);
      font-weight: 500; font-size: 11px;
      letter-spacing: .12em;
      font-family: var(--font-en);
      text-transform: uppercase;
      min-height: 44px;
    }
    .tt-head.tt-corner {
      background: var(--teal-dark);
    }
    .tt-cell-empty { background: rgba(160,124,192,.04); }
    .tt-cell {
      font-size: 11px; line-height: 1.4;
      font-weight: 500;
    }
    .tt-cell .tt-tag {
      display: inline-block;
      font-size: 10px;
      padding: 2px 6px;
      border-radius: 6px;
      margin-bottom: 3px;
      letter-spacing: .03em;
    }
    .tt-cell.tt-double {
      gap: 5px;
    }
    .tt-cell.tt-double .tt-row {
      display: flex; align-items: center; gap: 6px;
      justify-content: center;
    }
    .tt-cell.tt-double .tt-row .tt-tag {
      margin-bottom: 0;
    }
    .tt-cell .tt-mini {
      font-size: 9px;
      color: var(--muted);
      font-weight: 400;
      letter-spacing: 0;
    }
    .tt-cell.tt-kids .tt-mini { color: #A06A28; }
    .tt-personal { color: var(--teal-dark); }
    .tt-personal .tt-tag { background: rgba(76,188,188,.18); color: var(--teal-dark); }
    .tt-group { color: var(--plum-dark); }
    .tt-group .tt-tag { background: rgba(177,150,214,.25); color: var(--plum-dark); }
    .tt-kids { color: #C08442; }
    .tt-kids .tt-tag { background: #FFE9C8; color: #A06A28; }
    .tt-cell .tt-tag.tt-tag-group { background: rgba(177,150,214,.25); color: var(--plum-dark); }
    .tt-note {
      font-size: 9px;
      color: var(--muted);
      display: block;
      margin-top: 3px;
      font-weight: 400;
    }
    .tt-legend {
      display: flex; gap: 24px; flex-wrap: wrap;
      justify-content: center;
      margin-top: 32px;
      font-size: 12px;
    }
    .tt-legend-item { display: flex; align-items: center; gap: 8px; color: var(--muted); }
    .tt-dot {
      width: 12px; height: 12px; border-radius: 50%;
    }
    .tt-dot.tt-d-personal { background: rgba(76,188,188,.6); }
    .tt-dot.tt-d-group { background: rgba(177,150,214,.7); }
    .tt-dot.tt-d-kids { background: #F5C97A; }
    .tt-foot {
      text-align: center; margin-top: 20px;
      font-size: 12px; color: var(--muted); line-height: 1.8;
    }

    /* ── CONTACT ── */
    .contact { padding: 100px 80px; background: var(--pink-bg); }
    .contact-inner {
      max-width: 960px; margin: 0 auto;
      display: grid; grid-template-columns: 1fr 1fr;
      gap: 80px; align-items: start;
    }
    .contact-info h2 { font-size: clamp(26px,3vw,36px); font-weight: 300; line-height: 1.5; margin-bottom: 16px; }
    .contact-info > p { font-size: 16px; color: var(--muted); line-height: 2; margin-bottom: 36px; }
    .contact-details { display: flex; flex-direction: column; gap: 16px; margin-bottom: 36px; }
    .contact-detail { display: flex; gap: 14px; align-items: flex-start; }
    .contact-detail-label {
      font-family: var(--font-en); font-size: 10px;
      letter-spacing: .15em; color: var(--teal);
      text-transform: uppercase; min-width: 60px; padding-top: 2px;
    }
    .contact-detail-val { font-size: 15.5px; line-height: 1.7; }
    .contact-btns { display: flex; gap: 12px; flex-wrap: wrap; }
    .btn-line {
      background: #06C755; color: var(--white);
      padding: 15px 28px; border-radius: 50px;
      font-size: 15px; letter-spacing: .05em; transition: opacity .2s;
    }
    .btn-line:hover { opacity: .85; }
    .btn-form {
      background: var(--white); color: var(--teal-dark);
      border: 1.5px solid var(--teal);
      padding: 14px 28px; border-radius: 50px;
      font-size: 15px; letter-spacing: .05em; transition: all .2s;
    }
    .btn-form:hover { background: var(--teal); color: var(--white); }

    .contact-footnote { font-size: 12px; color: var(--muted); margin-top: 20px; line-height: 1.8; }
    .contact-map {
      background: rgba(160,124,192,.12); border-radius: 20px; min-height: 360px;
      overflow: hidden;
      box-shadow: 0 4px 16px rgba(160,124,192,.1);
    }
    .contact-map iframe {
      width: 100%; height: 360px; display: block; border: 0;
      filter: saturate(.85);
    }
    .contact-map-link {
      display: inline-block; margin-top: 12px;
      font-size: 14px; font-weight: 600; color: var(--plum-dark);
      text-decoration: none;
    }
    .contact-map-link:hover { text-decoration: underline; }
    .contact-building {
      margin: 16px auto 0; max-width: 540px; border-radius: 20px;
      background:
        repeating-linear-gradient(45deg, rgba(160,124,192,.06) 0 12px, rgba(160,124,192,.1) 12px 24px),
        linear-gradient(135deg, var(--lavender), var(--pink-bg));
      display: flex; align-items: center; justify-content: center;
      color: var(--muted); font-size: 12px; letter-spacing: .12em;
      box-shadow: 0 4px 16px rgba(160,124,192,.1);
      overflow: hidden;
    }
    .contact-building img {
      width: 100%; height: auto;
      display: block;
    }

    /* ── STUDIO GALLERY ── */
    .studio { padding: 100px 80px; background: var(--white); }
    .studio-inner { max-width: 880px; margin: 0 auto; }
    .studio-header { text-align: center; margin-bottom: 48px; }
    .studio-lead { font-size: 16px; color: var(--muted); line-height: 2; margin-top: 12px; }
    .studio-grid { display: flex; flex-direction: column; gap: 16px; }
    /* 上段：全景（左・少し小さめ）＋ 人物なしのスタジオ写真 縦2枚（右） */
    .studio-top { display: grid; grid-template-columns: 1.7fr 1fr; gap: 16px; }
    .studio-side { display: flex; flex-direction: column; gap: 16px; }
    /* 下段：レッスン風景 4枚 */
    .studio-thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
    .studio-photo {
      background: repeating-linear-gradient(45deg, rgba(160,124,192,.06) 0 12px, rgba(160,124,192,.1) 12px 24px), linear-gradient(135deg, var(--lavender), var(--pink-bg));
      border-radius: 16px;
      display: flex; align-items: center; justify-content: center;
      color: var(--muted); font-size: 12px; letter-spacing: .12em;
      aspect-ratio: 1 / 1;
      overflow: hidden;
    }
    /* 全景（トリミングせず全体表示） */
    .studio-photo.banner { aspect-ratio: 3 / 2; }
    .studio-side .studio-photo { aspect-ratio: 1.85; }
    .studio-photo img {
      width: 100%; height: 100%; object-fit: cover;
      border-radius: 16px; display: block;
    }

    /* ── MOBILE STICKY CTA ── */
    .mobile-cta-bar { display: none; }

    /* ── FOOTER ── */
    footer {
      background: #222228; color: rgba(255,255,255,.55);
      padding: 32px 80px;
      display: flex; justify-content: space-between; align-items: center;
      font-size: 12px; letter-spacing: .05em;
    }
    .footer-brand {
      font-family: var(--font-en); color: rgba(255,255,255,.8);
      font-size: 14px; font-weight: 400; letter-spacing: .08em;
    }
    .footer-sns { display: flex; gap: 16px; align-items: center; }
    .sns-icon {
      color: rgba(255,255,255,.6); display: inline-flex;
      transition: color .2s, transform .2s;
    }
    .sns-icon:hover { color: var(--teal); transform: translateY(-2px); }

    /* ── FEATURES BENEFITS ── */
    .features-benefits {
      margin-top: 40px; background: var(--white);
      border-radius: 20px; padding: 36px 44px;
      box-shadow: 0 4px 20px rgba(160,124,192,.1);
    }
    .features-benefits-title { font-size: 16px; font-weight: 500; margin-bottom: 22px; text-align: center; }
    .features-benefits-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px 40px; }
    .features-benefits-grid li {
      list-style: none; display: flex; gap: 10px; align-items: flex-start;
      font-size: 15px; color: var(--muted); line-height: 1.75;
    }
    .features-benefits-grid li::before { content: '◇'; color: var(--teal); flex-shrink: 0; margin-top: 2px; }

    /* ── MESSAGE (代表のことば) ── */
    .message {
      padding: 100px 80px;
      background: linear-gradient(135deg, #f3e9f6 0%, #e6f1f4 100%);
    }
    .message-inner {
      max-width: 960px; margin: 0 auto;
      display: grid; grid-template-columns: 320px 1fr;
      gap: 56px; align-items: center;
    }
    .message-photo-wrap { text-align: center; }
    .message-photo {
      width: 100%; max-width: 300px; margin: 0 auto;
      border-radius: 20px; box-shadow: 0 8px 30px rgba(160,124,192,.18);
    }
    .message-role { font-size: 12px; color: var(--muted); margin-top: 18px; letter-spacing: .12em; }
    .message-name { font-size: 21px; font-weight: 500; margin-top: 4px; }
    .message-body .section-title { margin-bottom: 24px; }
    .message-body p { font-size: 16px; color: var(--text); line-height: 2.1; margin-bottom: 18px; }

    /* ── Q&A ── */
    .faq { padding: 100px 80px; background: var(--pink-bg); }
    .faq-inner { max-width: 760px; margin: 0 auto; }
    .faq-head { text-align: center; margin-bottom: 48px; }
    .faq-head .section-title { margin-bottom: 0; }
    .faq-list { display: flex; flex-direction: column; gap: 16px; }
    .faq-item {
      background: var(--white); border-radius: 16px;
      padding: 26px 32px; box-shadow: 0 2px 12px rgba(160,124,192,.08);
    }
    .faq-q {
      display: flex; gap: 14px; align-items: flex-start;
      font-size: 16.5px; font-weight: 500; color: var(--text); line-height: 1.6;
    }
    .faq-q::before {
      content: 'Q'; font-family: var(--font-en); color: var(--white);
      background: var(--teal); width: 26px; height: 26px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 13px; flex-shrink: 0;
    }
    .faq-a {
      display: flex; gap: 14px; align-items: flex-start;
      margin-top: 14px; font-size: 15.5px; color: var(--muted); line-height: 1.95;
    }
    .faq-a::before {
      content: 'A'; font-family: var(--font-en); color: var(--teal);
      border: 1px solid var(--teal); width: 26px; height: 26px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 13px; flex-shrink: 0;
    }

    /* ── RESPONSIVE ── */
    @media (max-width: 900px) {
      header { padding: 0 20px; }
      .hero {
        padding: 32px 24px 100px;
        min-height: auto;
        background:
          linear-gradient(180deg,
            rgba(245,230,245,0.94) 0%,
            rgba(245,230,245,0.86) 40%,
            rgba(232,216,244,0.65) 70%,
            rgba(216,237,245,0.4) 100%),
          url('3464353_m.jpg') 55% 28% / cover no-repeat;
      }
      .hero-logo { margin: 0 0 8px 0; }
      .hero-logo img, .hero-logo-svg { width: 100%; height: auto; }
      .hero-copy { max-width: 100%; }
      .hero-h1 { font-size: clamp(26px, 7vw, 42px); }
      .concerns, .features, .plans, .pricing, .trial,
      .voices, .schedule, .contact, .message, .faq, .studio { padding: 72px 28px; }
      .studio-top { display: block; }
      .studio-side { display: none; } /* 人物なし2枚はPCのみ表示 */
      .studio-photo.banner { aspect-ratio: 3 / 2; }
      .studio-thumbs { grid-template-columns: 1fr 1fr; }
      .features-header { grid-template-columns: 1fr; gap: 24px; }
      .lesson-overview { padding: 8px 24px; margin-bottom: 44px; }
      .lesson-overview-item { padding: 18px 0; }
      .features-cards { grid-template-columns: 1fr; }
      .features-benefits { padding: 28px 26px; }
      .features-benefits-grid { grid-template-columns: 1fr; }
      .message-inner { grid-template-columns: 1fr; gap: 36px; }
      .plans-grid { grid-template-columns: 1fr; }
      .plans-extra { grid-template-columns: 1fr; }
      .trial-inner { grid-template-columns: 1fr; gap: 40px; }
      .voices-list { grid-template-columns: 1fr; }
      .contact-inner { grid-template-columns: 1fr; gap: 40px; }
      footer { flex-direction: column; gap: 10px; text-align: center; padding: 24px 20px; }

      /* mobile sticky CTA bar */
      body { padding-bottom: 76px; }
      .mobile-cta-bar {
        display: flex; gap: 10px;
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 200;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
        background: rgba(255,255,255,.96); backdrop-filter: blur(8px);
        box-shadow: 0 -4px 20px rgba(160,124,192,.18);
      }
      .mobile-cta-bar a {
        flex: 1; display: inline-flex; align-items: center; justify-content: center;
        gap: 8px; padding: 14px 0; border-radius: 50px;
        font-size: 15px; font-weight: 700; letter-spacing: .04em; color: #fff;
      }
      .mcb-line { background: #06C755; }
      .mcb-trial { background: var(--teal); }
      .mobile-cta-bar .line-badge { background: #fff; color: #06C755; }

      /* mobile timetable: horizontal scroll */
      .tt-hint {
        display: block; text-align: right; font-size: 12px;
        color: var(--teal-dark); padding: 10px 12px 0; font-weight: 500;
      }
      .tt-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
      .tt-grid {
        min-width: 640px;
        grid-template-columns: 64px repeat(6, 1fr);
        font-size: 11px;
      }
      .tt-grid > div { padding: 8px 4px; min-height: 44px; }
      .tt-cell { font-size: 10px; }
      .tt-cell .tt-tag { font-size: 9px; padding: 1px 5px; }
      .tt-note { font-size: 8px; }
    }
    @media (max-width: 600px) {
      .nav-burger {
        display: flex; flex-direction: column; justify-content: center;
        gap: 5px; width: 40px; height: 40px; padding: 9px; cursor: pointer;
      }
      .nav-burger span {
        display: block; width: 100%; height: 2px; border-radius: 2px;
        background: var(--teal-dark);
        transition: transform .3s ease, opacity .3s ease;
      }
      .nav-toggle:checked ~ .nav-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
      .nav-toggle:checked ~ .nav-burger span:nth-child(2) { opacity: 0; }
      .nav-toggle:checked ~ .nav-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

      .site-nav {
        display: flex; flex-direction: column; align-items: stretch;
        position: absolute; top: 64px; left: 0; right: 0;
        background: rgba(255,255,255,0.98); backdrop-filter: blur(8px);
        border-bottom: 1px solid rgba(160,124,192,.12);
        box-shadow: 0 8px 24px rgba(160,124,192,.15);
        padding: 6px 0;
        max-height: 0; overflow: hidden; opacity: 0;
        pointer-events: none;
        transition: max-height .35s ease, opacity .25s ease;
      }
      .nav-toggle:checked ~ .site-nav {
        max-height: 85vh; opacity: 1; pointer-events: auto;
      }
      .site-nav li { width: 100%; }
      .site-nav li + li::before { display: none; }
      .site-nav a { padding: 14px 24px; font-size: 15px; text-align: center; }
      .site-nav .nav-cta,
      .site-nav .nav-link-btn {
        margin: 8px 24px; text-align: center;
      }
    }

    /* ── GROUP LESSON PAGE ── */
    .print-only { display: none; }
    .group-page {
      background: var(--pink-bg);
      padding: 56px 24px 70px;
    }
    .group-inner {
      max-width: 920px; margin: 0 auto;
      background: var(--white);
      border-radius: 26px;
      padding: 56px 56px 60px;
      box-shadow: 0 20px 60px rgba(160,124,192,.12);
    }
    /* 表紙 */
    .group-cover { text-align: center; }
    .group-logo { width: 360px; max-width: 85%; margin: 0 auto 22px; }
    .group-eyebrow {
      font-family: var(--font-en); font-size: 13px; font-weight: 500;
      letter-spacing: .35em; color: var(--plum); margin-bottom: 8px;
    }
    .group-member-badge {
      display: inline-block;
      background: var(--plum); color: var(--white);
      font-size: 13px; font-weight: 700; letter-spacing: .08em;
      padding: 6px 18px; border-radius: 50px; margin-bottom: 14px;
    }
    .group-title {
      font-size: clamp(26px, 5vw, 36px); font-weight: 700;
      color: var(--text); letter-spacing: .04em; line-height: 1.4;
    }
    .gt-nowrap { white-space: nowrap; }

    /* 日本語の改行調整：1文字だけが次の行に残らないように整える
       （balanceを基本に、対応ブラウザはprettyで上書き） */
    .group-lead, .hh-voice, .hh-voices-ask, .hh-about p, .hh-notes li,
    .group-cat-desc, .group-foot-note, .gp-note, .group-tm-note,
    .studio-lead, .feature-desc, .lesson-overview-desc,
    .plan-extra-card p, .awake-offer-sub, .awake-note,
    .contact-detail-val, .contact-footnote,
    .group-title, .section-title, .feature-title,
    .concern-lead, .message-text p, .faq-answer, .hero-copy {
      text-wrap: balance;
      text-wrap: pretty;
    }
    /* 全体の段落・箇条書きにも適用（1文字だけの行を防ぐ） */
    p, li, dd, figcaption, h1, h2, h3, h4, h5 {
      text-wrap: pretty;
    }
    .group-title::after {
      content: ''; display: block;
      width: 56px; height: 3px; border-radius: 3px;
      background: var(--teal); margin: 18px auto 0;
    }
    .group-lead {
      font-size: 16px; color: var(--muted); line-height: 1.95;
      margin: 22px auto 0; max-width: 600px;
    }
    .group-cover-photo {
      margin-top: 34px; border-radius: 20px; overflow: hidden;
      box-shadow: 0 10px 30px rgba(160,124,192,.18);
    }
    .group-cover-photo img { width: 100%; height: auto; }
    /* カテゴリー */
    .group-cat { margin-top: 56px; }
    .group-cat-head { text-align: center; margin-bottom: 30px; }
    .group-cat-en {
      font-family: var(--font-en); font-size: 12px; font-weight: 500;
      letter-spacing: .3em; color: var(--teal); text-transform: uppercase;
    }
    .group-cat-name {
      font-size: 24px; font-weight: 700; color: var(--text);
      letter-spacing: .05em; margin: 6px 0 10px;
    }
    .group-cat-desc {
      font-size: 15px; color: var(--muted); line-height: 1.9;
      max-width: 560px; margin: 0 auto;
    }
    .group-grid {
      display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
    }
    .course-card {
      position: relative;
      background: linear-gradient(135deg, #fdf7fb 0%, #f1faf9 100%);
      border: 1px solid rgba(76,188,188,.18);
      border-radius: 18px;
      padding: 26px 26px 24px 30px;
    }
    .course-num {
      font-family: var(--font-en); font-size: 30px; font-weight: 500;
      color: var(--plum); line-height: 1; display: block; margin-bottom: 10px;
      opacity: .85;
    }
    .course-name {
      font-size: 18px; font-weight: 700; color: var(--teal-dark);
      letter-spacing: .04em; margin-bottom: 10px;
    }
    .course-name small {
      display: inline-block; font-size: 13px; font-weight: 500;
      color: var(--white); background: var(--teal);
      padding: 2px 12px; border-radius: 50px; margin-left: 4px;
      vertical-align: middle; letter-spacing: .06em;
    }
    .course-text {
      font-size: 14.5px; color: var(--text); line-height: 1.85;
    }
    .group-mid-photo {
      margin-top: 48px; border-radius: 20px; overflow: hidden;
      box-shadow: 0 10px 30px rgba(160,124,192,.18);
    }
    .group-mid-photo img { width: 100%; height: auto; }
    /* 料金 */
    .group-price { margin-top: 56px; }
    .group-price-title {
      font-size: 22px; font-weight: 700; color: var(--text);
      letter-spacing: .05em; text-align: center; margin-bottom: 24px;
    }
    .group-price-card {
      max-width: 520px; margin: 0 auto;
      background: linear-gradient(135deg, #fdf7fb 0%, #f1faf9 100%);
      border: 1.5px solid rgba(76,188,188,.25);
      border-radius: 18px; padding: 30px 34px 26px;
    }
    .gp-row {
      display: flex; align-items: baseline; justify-content: space-between;
      padding: 14px 0; border-bottom: 1px dashed rgba(160,124,192,.3);
    }
    .gp-row:first-child { padding-top: 4px; }
    .gp-label { font-size: 16px; font-weight: 700; color: var(--teal-dark); }
    .gp-val { font-size: 26px; font-weight: 700; color: var(--text); font-family: var(--font-en); letter-spacing: .02em; }
    .gp-val small { font-size: 14px; font-weight: 500; color: var(--muted); font-family: var(--font-jp); }
    .gp-note { font-size: 13.5px; color: var(--muted); line-height: 1.9; margin-top: 16px; }
    .group-foot-note {
      text-align: center; font-size: 16px; font-weight: 500;
      color: var(--text); line-height: 2; margin-top: 36px;
    }
    .group-tm-note {
      text-align: center; font-size: 12px; color: var(--muted);
      line-height: 1.7; margin-top: 14px;
    }
    /* ── HUGHUG（親子ピラティス）ページ ── */
    .hh-voices {
      max-width: 620px; margin: 0 auto 44px;
      display: flex; flex-direction: column; gap: 12px;
    }
    .hh-voice {
      background: var(--pink-bg);
      border-radius: 18px; padding: 14px 22px;
      font-size: 15px; font-weight: 500; color: var(--text);
      line-height: 1.7; position: relative;
    }
    .hh-voice::before {
      content: ""; position: absolute; left: 26px; bottom: -8px;
      border-left: 9px solid transparent; border-right: 9px solid transparent;
      border-top: 9px solid var(--pink-bg);
    }
    .hh-voice-etc {
      font-size: 14px; color: var(--muted); padding-left: 26px; margin-top: 2px;
    }
    .hh-voices-ask {
      text-align: center; font-size: 18px; font-weight: 700;
      color: var(--plum-dark); letter-spacing: .04em;
      margin: 22px auto 44px;
    }
    .hh-about {
      max-width: 620px; margin: 0 auto; text-align: center;
    }
    .hh-about p {
      font-size: 15.5px; line-height: 2; color: var(--text); margin-bottom: 10px;
    }
    .hh-notes {
      max-width: 620px; margin: 0 auto; list-style: none; padding: 0;
    }
    .hh-notes li {
      background: linear-gradient(135deg, #f4fbfb, #fdf8fd);
      border: 1px solid var(--lavender);
      border-radius: 14px; padding: 14px 20px; margin-bottom: 10px;
      font-size: 14.5px; line-height: 1.8; color: var(--text);
      padding-left: 44px; position: relative;
      overflow-wrap: anywhere;
    }
    .hh-notes li::before {
      content: "✓"; position: absolute; left: 18px; top: 13px;
      color: var(--teal); font-weight: 700;
    }

    /* グループレッスン予定表（埋め込み） */
    .group-calendar { margin-top: 44px; text-align: center; }
    .group-cal-title {
      font-size: 22px; font-weight: 700; color: var(--teal-dark);
      letter-spacing: .04em; margin-bottom: 18px;
    }
    .group-cal-frame {
      background: #fff; border: 1px solid var(--lavender);
      border-radius: 18px; padding: 10px; overflow: hidden;
      box-shadow: 0 8px 24px rgba(140,110,180,.10);
    }
    .group-cal-frame iframe {
      width: 100%; height: 600px; border: 0; border-radius: 12px;
      display: block;
    }
    .group-cal-open {
      display: inline-block; margin-top: 16px;
      color: var(--teal-dark); font-weight: 700; font-size: 15px;
      text-decoration: underline; text-underline-offset: 3px;
      text-decoration-color: var(--teal);
    }
    .group-cal-open:hover { color: var(--teal); }
    .group-print-footer { text-align: center; margin-top: 40px; }
    /* アクション */
    .group-actions {
      display: flex; flex-direction: column; align-items: center; gap: 14px;
      padding: 50px 24px 80px; background: var(--pink-bg);
    }
    .group-cta {
      display: inline-flex; align-items: center; justify-content: center; gap: 10px;
      min-width: 280px; padding: 16px 36px; border-radius: 50px;
      font-size: 16px; font-weight: 700; letter-spacing: .04em;
      font-family: var(--font-jp); cursor: pointer; border: none;
      transition: all .25s;
    }
    .group-cta-line {
      background: #06C755; color: #fff;
      box-shadow: 0 4px 18px rgba(6,199,85,.3);
    }
    .group-cta-line:hover { background: #05b34c; transform: translateY(-2px); }
    .group-cta-line .line-badge { background: #fff; color: #06C755; }
    .group-cta-print {
      background: var(--teal); color: #fff;
      box-shadow: 0 4px 18px rgba(76,188,188,.3);
    }
    .group-cta-print:hover { background: var(--teal-dark); transform: translateY(-2px); }
    .group-cta-sub {
      background: var(--white); color: var(--teal-dark);
      border: 1.5px solid rgba(76,188,188,.4);
    }
    .group-cta-sub:hover { background: #f1faf9; }

    @media (max-width: 700px) {
      .group-page { padding: 32px 14px 50px; }
      .group-inner { padding: 36px 22px 40px; border-radius: 20px; }
      .group-grid { grid-template-columns: 1fr; gap: 16px; }
      .group-cat { margin-top: 44px; }
      .group-cal-title { font-size: 19px; }
      .group-cal-frame iframe { height: 520px; }
    }

    /* ── 印刷（パンフレット） ── */
    @media print {
      @page { size: A4; margin: 12mm; }
      body { background: #fff; padding: 0; line-height: 1.7; }
      .no-print, .mobile-cta-bar { display: none !important; }
      .print-only { display: block; }
      .group-page { padding: 0; background: #fff; }
      .group-inner {
        max-width: none; margin: 0; padding: 0;
        box-shadow: none; border-radius: 0;
      }
      .group-logo { width: 260px; margin-bottom: 10px; }
      .group-member-badge { font-size: 11px; padding: 3px 12px; margin-bottom: 8px; }
      .group-title { font-size: 24px; }
      .group-lead { font-size: 12px; margin-top: 14px; }
      .group-cover-photo, .group-mid-photo {
        box-shadow: none; border: 1px solid #e4dcec;
        margin-top: 18px; max-height: 70mm;
      }
      .group-cover-photo img, .group-mid-photo img {
        height: 100%; object-fit: cover;
      }
      .group-cat { margin-top: 22px; break-inside: avoid; }
      .group-cat-head { margin-bottom: 14px; }
      .group-cat-name { font-size: 18px; }
      .group-cat-desc { font-size: 11px; }
      .group-grid { gap: 10px; }
      .course-card {
        padding: 12px 14px; break-inside: avoid;
        background: #fafcfc; border: 1px solid #d9eeee;
      }
      .course-num { font-size: 20px; margin-bottom: 4px; }
      .course-name { font-size: 14px; margin-bottom: 5px; }
      .course-name small { font-size: 10px; padding: 1px 8px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
      .course-text { font-size: 11px; line-height: 1.6; }
      .group-price { margin-top: 22px; break-inside: avoid; }
      .group-price-title { font-size: 16px; margin-bottom: 12px; }
      .group-price-card { padding: 14px 20px 12px; background: #fafcfc; border: 1px solid #d9eeee; }
      .gp-row { padding: 8px 0; }
      .gp-label { font-size: 13px; }
      .gp-val { font-size: 18px; }
      .gp-val small { font-size: 11px; }
      .gp-note { font-size: 10px; margin-top: 8px; }
      .group-foot-note { font-size: 12px; margin-top: 18px; line-height: 1.7; break-inside: avoid; }
      .group-print-footer { margin-top: 22px; font-size: 11px; color: var(--muted); }
      .group-print-footer .footer-brand { display: block; font-size: 14px; margin-bottom: 2px; }
      * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    }
