
  :root {
    --ink: #1a1814;
    --ink-section: #1a2035;
    --cream: #f5f0e8;
    --warm-white: #faf8f4;
    --sage: #4D65C0;
    --sage-light: #7A8FC8;
    --gold: #b8955a;
    --gold-light: #d4b07a;
    --mist: #e8e2d6;
    --charcoal: #3a3530;
  }

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

  html { scroll-behavior: smooth; }

  body {
    background: var(--warm-white);
    color: var(--ink);
    font-family: 'Noto Sans JP', sans-serif;
    font-weight: 300;
    line-height: 1.8;
    overflow-x: hidden;
  }

  /* ===== HERO LOGO ===== */
  .hero-logo {
    position: absolute;
    top: 28px;
    left: 28px;
    z-index: 10;
  }

  /* ===== FIXED CTA BAR ===== */
  .fixed-cta {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 100;
    display: flex;
    background: var(--ink-section);
    box-shadow: 0 -4px 30px rgba(0,0,0,0.2);
    opacity: 0;
    pointer-events: none;
    transform: translateY(100%);
    transition: opacity 0.4s ease, transform 0.4s ease;
  }
  .fixed-cta.visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }
  .fixed-cta a {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2px 8px;
    text-decoration: none;
    color: white;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.05em;
    transition: background 0.2s;
    gap: 2px;
  }
  .fixed-cta a:first-child { border-right: 1px solid rgba(255,255,255,0.15); }
  .fixed-cta a.tel-btn { background: var(--sage); }
  .fixed-cta a.line-btn { background: white; }
  .fixed-cta a:active { opacity: 0.85; }
  .fixed-cta .icon { font-size: 18px; color: white; }
  .fixed-cta .label { font-size: 10px; opacity: 0.85; white-space: nowrap; }
  /* LINE内部縦並び */
  .fixed-cta .line-btn-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
  }
  .fixed-cta .line-btn-inner > span:first-child {
    font-size: 11px;
    white-space: nowrap;
  }

  /* ===== HERO ===== */
  .hero {
    position: relative;
    min-height: 100svh;
    background: var(--ink);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    overflow: hidden;
  }

  /* ドット：グローバル配置（PC・モバイル共通） */
  .hero-slide-dots {
    position: absolute;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 8px;
    z-index: 10;
  }
  .hero-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255,255,255,0.38);
    border: 1px solid rgba(255,255,255,0.7);
    cursor: pointer;
    transition: background 0.4s, transform 0.4s;
  }
  .hero-dot.active {
    background: rgba(255,255,255,0.95);
    transform: scale(1.35);
  }


  .hero-noise {
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
    opacity: 0.5;
    pointer-events: none;
  }

  .hero-line {
    display: none; /* removed: vertical orange line */
  }

  .hero-content {
    position: relative;
    z-index: 5;
    padding: 0 28px 120px;
  }

  .hero-eyebrow {
    font-family: 'Cormorant Garamond', serif;
    font-size: 11px;
    font-weight: 300;
    letter-spacing: 0.35em;
    color: var(--sage-light);
    text-transform: uppercase;
    margin-bottom: 20px;
    opacity: 0;
    animation: fadeUp 0.8s ease forwards 0.3s;
  }

  .hero-title {
    font-family: 'Noto Serif JP', serif;
    font-size: clamp(32px, 9vw, 48px);
    font-weight: 300;
    color: var(--ink);
    line-height: 1.45;
    letter-spacing: 0.05em;
    margin-bottom: 28px;
    opacity: 0;
    animation: fadeUp 0.8s ease forwards 0.5s;
  }



  .hero-sub {
    font-size: 13px;
    color: rgba(26,24,20,0.72);
    line-height: 1.9;
    margin-bottom: 36px;
    opacity: 0;
    animation: fadeUp 0.8s ease forwards 0.7s;
  }

  .hero-cta {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--sage);
    color: white;
    text-decoration: none;
    padding: 16px 28px;
    font-size: 13px;
    letter-spacing: 0.1em;
    font-weight: 400;
    opacity: 0;
    animation: fadeUp 0.8s ease forwards 0.9s;
    transition: background 0.3s;
  }
  .hero-cta:active { background: var(--sage-light); }
  .hero-cta::after { content: '→'; font-size: 14px; }

  .hero-badge {
    position: absolute;
    top: 48px;
    right: 24px;
    z-index: 3;
    text-align: center;
    opacity: 0;
    animation: fadeIn 1s ease forwards 1.2s;
  }
  .hero-badge-inner {
    width: 76px;
    height: 76px;
    border: 1px solid rgba(184,149,90,0.5);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(184,149,90,0.1);
    backdrop-filter: blur(4px);
  }
  .hero-badge-num {
    font-family: 'Cormorant Garamond', serif;
    font-size: 22px;
    font-weight: 600;
    color: var(--sage-light);
    line-height: 1;
  }
  .hero-badge-label {
    font-size: 9px;
    color: rgba(255,255,255,0.6);
    letter-spacing: 0.05em;
    margin-top: 2px;
  }

  .hero-scroll {
    position: absolute;
    bottom: 90px;
    right: 24px;
    z-index: 3;
    writing-mode: vertical-rl;
    font-family: 'Cormorant Garamond', serif;
    font-size: 10px;
    letter-spacing: 0.25em;
    color: rgba(255,255,255,0.35);
    display: flex;
    align-items: center;
    gap: 10px;
    opacity: 0;
    animation: fadeIn 1s ease forwards 1.5s;
  }
  .hero-scroll::after {
    content: '';
    display: block;
    width: 1px;
    height: 40px;
    background: linear-gradient(to bottom, rgba(255,255,255,0.3), transparent);
    animation: scrollLine 2s ease infinite 2s;
  }

  /* ===== SYMPTOMS SECTION ===== */
  .section {
    padding: 72px 0;
  }

  .section-inner {
    padding: 0 24px;
  }

  .section-label {
    font-family: 'Cormorant Garamond', serif;
    font-size: 10px;
    font-weight: 300;
    letter-spacing: 0.4em;
    text-transform: uppercase;
    color: var(--sage);
    margin-bottom: 14px;
  }

  /* ===== インラインロゴ共通（モバイル含む） ===== */
  .logo-inline {
    display: inline-block;
    height: 1.05em;
    width: auto;
    vertical-align: middle;
    flex-shrink: 0;
    margin-right: 4px;
  }
  .logo-inline--promise {
    filter: brightness(0) saturate(100%);
    opacity: 1;
  }
  .logo-inline--features {
    filter: brightness(0) saturate(100%);
    opacity: 1;
  }
  .promise-from-text {
    font-family: 'Noto Serif JP', serif;
    font-weight: 300;
    color: var(--ink);
    line-height: 1.55;
  }
  .promise-title,
  .features-title {
    color: var(--ink);
  }

  .section-title {
    font-family: 'Noto Serif JP', serif;
    font-size: clamp(22px, 6vw, 32px);
    font-weight: 300;
    line-height: 1.55;
    letter-spacing: 0.04em;
    margin-bottom: 32px;
  }

  .gallery-section-title {
    font-family: 'Noto Serif JP', serif;
    font-size: clamp(22px, 6vw, 32px);
    font-weight: 300;
    line-height: 1.55;
    letter-spacing: 0.04em;
    text-align: center;
    color: var(--charcoal);
    margin-bottom: 32px;
  }

  .symptoms-bg {
    background: var(--cream);
    position: relative;
  }
  .symptoms-bg::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--sage), transparent);
  }

  .symptom-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2px;
    margin-bottom: 32px;
  }

  .symptom-item {
    background: white;
    padding: clamp(12px, 3.5vw, 16px) clamp(8px, 3vw, 14px);
    display: flex;
    align-items: center;
    gap: clamp(6px, 2vw, 10px);
    font-size: clamp(10.5px, 3vw, 12px);
    line-height: 1.4;
    color: var(--charcoal);
    transition: background 0.2s;
    min-height: 52px;
  }

  .symptom-item:nth-child(odd):last-child {
    grid-column: 1 / -1;
  }

  .symptom-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--sage);
    flex-shrink: 0;
    margin-top: 5px;
  }

  .symptom-note {
    font-size: 12px;
    color: var(--sage);
    text-align: center;
    padding: 16px 24px;
    background: rgba(77,101,192,0.06);
    border-left: 3px solid var(--sage);
    line-height: 1.7;
  }

  /* ===== PROMISE SECTION ===== */
  .promise-section {
    background: var(--warm-white);
    color: var(--ink);
    padding: 72px 0 48px 0;
    position: relative;
    overflow: hidden;
  }
  .promise-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--sage-light), transparent);
  }

  .promise-section .section-label { color: var(--sage); }
  .promise-section .section-title { color: var(--ink); }

  .promise-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-top: 8px;
  }

  .promise-item {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    padding: 24px 0;
    border-bottom: 1px solid var(--mist);
    opacity: 0;
    transform: translateX(-20px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .promise-item.visible { opacity: 1; transform: none; }

  .promise-num {
    font-family: 'Cormorant Garamond', serif;
    font-size: 28px;
    font-weight: 300;
    color: var(--sage);
    line-height: 1;
    flex-shrink: 0;
    width: 36px;
    opacity: 0.75;
  }

  .promise-text h3 {
    font-family: 'Noto Serif JP', serif;
    font-size: 15px;
    font-weight: 400;
    color: var(--ink);
    margin-bottom: 6px;
    letter-spacing: 0.05em;
  }
  .promise-text p {
    font-size: 12px;
    color: #888;
    line-height: 1.8;
  }

  /* ===== FEATURES ===== */
  .features-section {
    background: var(--warm-white);
    padding-top: 48px;   /* photo-divider下との余白 */
  }

  .feature-card {
    background: white;
    margin-bottom: 16px;
    overflow: hidden;
    box-shadow: 0 2px 20px rgba(0,0,0,0.05);
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .feature-card.visible { opacity: 1; transform: none; }

  .feature-card-header {
    background: rgba(122,143,200,0.18);
    border-left: 3px solid var(--sage);
    padding: 20px 20px 16px;
    display: flex;
    align-items: center;
    gap: 14px;
  }

  .feature-icon {
    width: 40px;
    height: 40px;
    background: var(--sage);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    flex-shrink: 0;
  }

  .feature-card-header h3 {
    font-family: 'Noto Serif JP', serif;
    font-size: 15px;
    font-weight: 400;
    letter-spacing: 0.04em;
    color: var(--ink);
    line-height: 1.4;
  }

  .feature-card-body {
    padding: 18px 20px 22px;
    font-size: 13px;
    color: var(--charcoal);
    line-height: 1.9;
  }

  /* ===== FLOW ===== */
  .flow-section {
    background: var(--cream);
    position: relative;
  }
  .flow-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--sage-light), transparent);
  }

  .flow-steps {
    position: relative;
  }
  .flow-steps::before {
    content: '';
    position: absolute;
    left: 27px;
    top: 0;
    bottom: 0;
    width: 1px;
    background: linear-gradient(to bottom, var(--sage-light), transparent);
  }

  .flow-step {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 32px;
    position: relative;
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.5s ease, transform 0.5s ease;
  }
  .flow-step.visible { opacity: 1; transform: none; }

  .flow-step-num {
    width: 54px;
    height: 54px;
    background: white;
    border: 1px solid var(--sage-light);
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    z-index: 1;
  }
  .flow-step-num span:first-child {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: var(--sage);
    line-height: 1;
  }
  .flow-step-num span:last-child {
    font-size: 8px;
    color: var(--sage);
    letter-spacing: 0.05em;
  }

  .flow-step-content h3 {
    font-family: 'Noto Serif JP', serif;
    font-size: 15px;
    font-weight: 400;
    color: var(--ink);
    margin-bottom: 6px;
    padding-top: 14px;
  }
  .flow-step-content p {
    font-size: 12px;
    color: #666;
    line-height: 1.85;
  }

  /* ===== PRICE ===== */
  .price-section {
    background: var(--cream);
    padding: 72px 0;
    position: relative;
  }
  .price-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--sage-light), transparent);
  }

  .price-section .section-title { color: var(--ink); }
  .price-section .section-label { color: var(--sage); }

  .price-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 8px;
    background: white;
    box-shadow: 0 2px 24px rgba(0,0,0,0.06);
  }

  .price-table tr {
    border-bottom: 1px solid var(--mist);
    opacity: 0;
    transform: translateX(-12px);
    transition: opacity 0.5s ease, transform 0.5s ease;
  }
  .price-table tr.visible { opacity: 1; transform: none; }

  .price-table td {
    padding: 20px 20px;
    font-size: 18px;
    color: var(--charcoal);
    vertical-align: middle;
  }
  .price-table td:first-child {
    padding-left: 60px;
    font-family: 'Noto Serif JP', serif;
    font-weight: 400;
  }
  .price-table td:last-child {
    text-align: right;
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 18px;
    font-weight: 400;
    color: var(--ink);
    letter-spacing: 0.03em;
    padding-right: 60px;
  }

  .price-note {
    margin-top: 20px;
    padding: 16px 20px;
    background: white;
    border-left: 3px solid var(--sage-light);
    font-size: 11px;
    color: #999;
    line-height: 2;
  }

  /* ===== ABOUT ===== */
  .about-section {
    background: var(--warm-white);
    position: relative;
    overflow: hidden;
  }

  .about-section::after {
    content: '';
    position: absolute;
    bottom: -60px;
    right: -60px;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(122,140,110,0.07) 0%, transparent 70%);
    pointer-events: none;
  }

  .about-quote {
    font-family: 'Noto Serif JP', serif;
    font-size: 14px;
    font-weight: 300;
    line-height: 2.1;
    color: var(--charcoal);
    border-left: 2px solid var(--sage);
    padding-left: 20px;
    margin: 24px 0;
    font-style: italic;
  }

  /* ===== ABOUT DIRECTOR LAYOUT ===== */
  .about-director-wrap {
    display: flex;
    flex-direction: column;
    gap: 28px;
    margin-top: 24px;
  }
  .about-photo-wrap {
    position: relative;
    border-radius: 2px;
    overflow: hidden;
    box-shadow: 0 8px 32px rgba(0,0,0,0.10);
  }
  .about-photo-img {
    width: 100%;
    display: block;
    object-fit: cover;
    object-position: center 15%;
  }
  /* 左側を白く飛ばすグラデーション（PC用・共通） */
  .about-photo-fade {
    position: absolute;
    inset: 0;
    background: linear-gradient(
      to right,
      rgba(255,255,255,0.72) 0%,
      rgba(255,255,255,0.28) 35%,
      rgba(255,255,255,0) 60%
    );
    pointer-events: none;
  }

  /* ===== PC用写真：モバイルでは非表示 ===== */
  .about-photo--pc {
    display: none;
  }

  .about-text-wrap {
    display: flex;
    flex-direction: column;
  }

  /* ===== モバイル：名前エリア＋写真の横並びラッパー ===== */
  .about-name-photo-wrap {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 0;
    margin-top: 28px;
    min-height: 120px;
  }
  .about-name-left {
    flex: 1;
    z-index: 1;
  }

  /* モバイル用写真 */
  .about-photo--sp {
    position: absolute;
    right: -16px; /* section-inner のパディング分を打ち消して端まで */
    bottom: 0;
    width: 48vw;   /* 画面の約半分 */
    max-width: 200px;
    height: auto;
    box-shadow: none;
    border-radius: 0;
    overflow: hidden;
  }
  .about-photo--sp .about-photo-img {
    width: 100%;
    height: auto;
    max-height: none;
    object-position: center top; /* 顔と体がうまく入るよう上寄せ */
  }
  /* モバイル写真：左から強めに飛ばす */
  .about-photo-fade--sp {
    background: linear-gradient(
      to right,
      rgba(255,255,255,1)   0%,
      rgba(255,255,255,0.75) 30%,
      rgba(255,255,255,0.2)  60%,
      rgba(255,255,255,0)    80%
    );
  }

  .about-name {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .about-name-text { font-size: 12px; color: #666; }
  .about-name-text strong {
    display: block;
    font-family: 'Noto Serif JP', serif;
    font-size: 15px;
    color: var(--ink);
    font-weight: 400;
    margin-bottom: 2px;
  }

  /* ===== PC: 横並び ===== */
  @media (min-width: 769px) {
    .about-director-wrap {
      flex-direction: row;
      align-items: flex-start;
      gap: 48px;
    }
    /* PC用写真を表示 */
    .about-photo--pc {
      display: block;
      width: 42%;
      flex-shrink: 0;
    }
    .about-photo--pc .about-photo-img {
      max-height: 460px;
    }
    /* モバイル用写真・ラッパーをPC では非表示 */
    .about-photo--sp {
      display: none;
    }
    .about-name-photo-wrap {
      display: block;
      margin-top: 28px;
      min-height: unset;
    }
    .about-text-wrap {
      flex: 1;
      justify-content: center;
    }
    /* PCのEnglish available は about-name-photo-wrap の外に出さずそのまま */
    .about-name {
      margin-top: 28px;
    }
    /* PC：テキストを写真より少し遅れて登場 */
    .about-text-wrap.reveal-left {
      transition-delay: 0.15s;
    }
  }



  /* ===== FAQ ===== */
  .faq-section {
    background: var(--cream);
  }

  .faq-item {
    border-bottom: 1px solid var(--mist);
    overflow: hidden;
  }

  .faq-question {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 20px 0;
    cursor: pointer;
    gap: 12px;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
  }

  .faq-q-text {
    font-family: 'Noto Serif JP', serif;
    font-size: 14px;
    font-weight: 400;
    color: var(--ink);
    line-height: 1.6;
    flex: 1;
  }

  .faq-q-text::before {
    content: 'Q';
    font-family: 'Cormorant Garamond', serif;
    font-size: 16px;
    color: var(--sage);
    margin-right: 10px;
    font-weight: 600;
  }

  .faq-icon {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--sage);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    flex-shrink: 0;
    transition: transform 0.3s ease;
    margin-top: 2px;
  }
  .faq-item.open .faq-icon { transform: rotate(45deg); }

  .faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.35s ease;
  }
  .faq-item.open .faq-answer { max-height: 300px; }
  .faq-answer-inner {
    padding: 0 0 20px 26px;
    font-size: 13px;
    color: #666;
    line-height: 1.9;
    border-left: 2px solid var(--sage-light);
  }
  .faq-answer-inner::before {
    content: 'A　';
    font-family: 'Cormorant Garamond', serif;
    font-size: 16px;
    color: var(--sage);
    font-weight: 600;
  }

  /* ===== ACCESS ===== */
  .access-section {
    background: var(--warm-white);
  }

  .access-card {
    background: white;
    padding: 28px 24px;
    box-shadow: 0 2px 20px rgba(0,0,0,0.05);
    margin-bottom: 16px;
  }

  .access-item {
    display: flex;
    gap: 14px;
    margin-bottom: 18px;
    font-size: 15px;
    color: var(--charcoal);
    line-height: 1.7;

  }
  .access-item:last-child { margin-bottom: 0; }
  .access-label {
    font-size: 12px;
    letter-spacing: 0.1em;
    color: var(--sage);
    font-family: 'Cormorant Garamond', serif;
    font-weight: 600;
    text-transform: uppercase;
    flex-shrink: 0;
    width: 64px;

    padding-top: 2px;

  }

  .map-container {
    width: 100%;
    height: 220px;
    background: transparent;
    position: relative;
    overflow: hidden;
  }
  .map-container iframe {
    width: 100%;
    height: 100%;
    border: none;
  }

  /* ===== FINAL CTA ===== */
  .final-cta {
    background: var(--sage);
    padding: 64px 24px 100px;
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .final-cta::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 100% 80% at 50% 100%, rgba(0,0,0,0.2) 0%, transparent 60%);
  }
  .final-cta-inner { position: relative; z-index: 1; }

  .final-cta-label {
    font-family: 'Cormorant Garamond', serif;
    font-size: 11px;
    letter-spacing: 0.4em;
    color: rgba(255,255,255,0.7);
    text-transform: uppercase;
    margin-bottom: 16px;
  }

  .final-cta-title {
    font-family: 'Noto Serif JP', serif;
    font-size: 22px;
    font-weight: 300;
    color: white;
    line-height: 1.6;
    margin-bottom: 36px;
  }

  .cta-buttons {
    display: flex;
    flex-direction: column;
    gap: 14px;
    max-width: 420px;   /* 約13cm：ボタンをコンパクトにまとめる */
    margin-left: auto;
    margin-right: auto;
  }

  .btn-tel {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 18px 24px;
    background: white;
    color: var(--ink);
    text-decoration: none;
    font-size: 20px;
    font-weight: 500;
    letter-spacing: 0.08em;
    font-family: 'Noto Serif JP', serif;
    box-shadow: 0 4px 20px rgba(0,0,0,0.15);
    transition: transform 0.2s;
  }
  .btn-tel:active { transform: scale(0.98); }
  .btn-tel-small {
    font-size: 11px;
    font-weight: 300;
    color: #999;
    letter-spacing: 0.05em;
    display: block;
    margin-top: 4px;
  }

  .btn-line {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px 24px;
    background: white;
    color: #06C755;
    text-decoration: none;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.08em;
    transition: opacity 0.2s;
  }
  .btn-line:active { opacity: 0.85; }
  .btn-line-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }
  .btn-line-id {
    font-size: 11px;
    font-weight: 400;
    color: #888;
    letter-spacing: 0.04em;
  }

  /* ===== FOOTER ===== */
  footer {
    background: var(--ink-section);
    color: rgba(255,255,255,0.4);
    padding: 32px 24px 90px;
    text-align: center;
    font-size: 11px;
    line-height: 2;
  }
  footer strong {
    display: block;
    color: rgba(255,255,255,0.7);
    font-family: 'Cormorant Garamond', serif;
    font-size: 18px;
    font-weight: 400;
    letter-spacing: 0.2em;
    margin-bottom: 8px;
  }

  /* ===== DIVIDER ===== */
  .section-divider {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 36px;
  }
  .section-divider::before,
  .section-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--mist);
  }
  .section-divider-dot {
    width: 6px;
    height: 6px;
    background: var(--sage);
    border-radius: 50%;
    flex-shrink: 0;
  }

  /* ===== ANIMATIONS ===== */
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: none; }
  }
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  @keyframes scrollLine {
    0% { opacity: 1; transform: scaleY(1) translateY(0); }
    100% { opacity: 0; transform: scaleY(0.3) translateY(20px); }
  }

  /* ===== SCROLL REVEAL DELAYS ===== */
  .flow-step:nth-child(2) { transition-delay: 0.1s; }
  .flow-step:nth-child(3) { transition-delay: 0.2s; }
  .flow-step:nth-child(4) { transition-delay: 0.3s; }
  .flow-step:nth-child(5) { transition-delay: 0.4s; }
  .promise-item:nth-child(2) { transition-delay: 0.1s; }
  .promise-item:nth-child(3) { transition-delay: 0.2s; }
  .promise-item:nth-child(4) { transition-delay: 0.3s; }
  .promise-item:nth-child(5) { transition-delay: 0.4s; }
  .promise-item:nth-child(6) { transition-delay: 0.5s; }
  .feature-card:nth-child(2) { transition-delay: 0.1s; }
  .feature-card:nth-child(3) { transition-delay: 0.2s; }
  .price-table tr:nth-child(2) { transition-delay: 0.1s; }
  .price-table tr:nth-child(3) { transition-delay: 0.2s; }
  .price-table tr:nth-child(4) { transition-delay: 0.3s; }

  /* ===== GALLERY STRIP ===== */
  .gallery-strip {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding: 0 24px 16px;
    scrollbar-width: none;
  }
  .gallery-strip::-webkit-scrollbar { display:none; }
  .gallery-track {
    display: flex;
    gap: 14px;
    width: max-content;
  }
  .gallery-item {
    flex-shrink: 0;
    width: 72vw;
    max-width: 280px;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
    position: relative;
    opacity: 0;
    transform: translateX(40px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .gallery-item.visible {
    opacity: 1;
    transform: translateX(0);
  }
  .gallery-item img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    object-position: center top;
    display: block;
    transition: transform 0.5s ease;
  }
  .gallery-caption {
    position:absolute;
    bottom:0;left:0;right:0;
    padding:8px 12px;
    background:linear-gradient(transparent,rgba(26,24,20,0.65));
    font-size:11px;
    color:rgba(255,255,255,0.9);
    letter-spacing:0.08em;
    font-family:'Noto Sans JP',sans-serif;
  }

  /* ===== REVEAL ANIMATIONS ===== */
  .reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.7s ease, transform 0.7s ease;
  }
  .reveal.visible {
    opacity: 1;
    transform: translateY(0);
  }
  .reveal-left {
    opacity: 0;
    transform: translateX(40px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .reveal-left.visible {
    opacity: 1;
    transform: translateX(0);
  }
  .reveal-right {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .reveal-right.visible {
    opacity: 1;
    transform: translateX(0);
  }

  /* 既存要素にrevealを適用するため、スクロール対応 */
  .promise-item, .why-card, .flow-step, .price-table tr, .faq-item {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 0.55s ease, transform 0.55s ease;
  }
  .promise-item.visible, .why-card.visible, .flow-step.visible,
  .price-table tr.visible, .faq-item.visible {
    opacity: 1;
    transform: translateY(0);
  }

  
/* ===== QUIET SEPARATOR (共通ベース) ===== */
.quiet-separator {
  position: relative;
  overflow: hidden;
  height: 320px;
  background-color: #f5f3ef;
}

/* PC背景：横写真を右端に小さく配置 */
.quiet-bg--pc {
  position: absolute;
  /* 右端から少しはみ出す形で配置 */
  right: -2%;
  top: 50%;
  transform: translateY(-50%) translateX(24px);
  width: 38%;          /* 全幅の38%に縮小 */
  height: 110%;        /* 上下は少しはみ出させてトリミング感を消す */
  background: url('images/plant_02.jpg') center center / cover no-repeat;
  will-change: transform, opacity;
  opacity: 0;
  transition: opacity 1.0s ease, transform 1.0s ease;
}
.quiet-bg--pc.visible {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
}

/* モバイル背景：縦写真を右端に小さく配置 */
.quiet-bg--sp {
  position: absolute;
  right: -2%;
  top: 50%;
  transform: translateY(-50%);
  width: 44%;
  height: 115%;
  background: url('images/sign_01.jpg') center 20% / cover no-repeat;
}

/* PC用オーバーレイ：写真の左端・上下・右端を白くぼかして周囲に溶け込ませる */
.quiet-overlay--pc {
  position: absolute;
  inset: 0;
  background:
    /* 左から白く飛ばす（メインのぼかし） */
    linear-gradient(to right,
      rgba(245,243,239,1.00)  0%,
      rgba(245,243,239,1.00) 42%,
      rgba(245,243,239,0.80) 52%,
      rgba(245,243,239,0.30) 62%,
      rgba(245,243,239,0.00) 72%
    ),
    /* 上から白く */
    linear-gradient(to bottom,
      rgba(245,243,239,0.85) 0%,
      rgba(245,243,239,0.00) 30%,
      rgba(245,243,239,0.00) 70%,
      rgba(245,243,239,0.85) 100%
    ),
    /* 右端を白く */
    linear-gradient(to left,
      rgba(245,243,239,0.80) 0%,
      rgba(245,243,239,0.00) 12%
    );
  z-index: 1;
}

/* モバイル用オーバーレイ：同様に写真を周囲に溶け込ませる */
.quiet-overlay--sp {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to right,
      rgba(245,243,239,1.00)  0%,
      rgba(245,243,239,1.00) 38%,
      rgba(245,243,239,0.85) 50%,
      rgba(245,243,239,0.30) 62%,
      rgba(245,243,239,0.00) 72%
    ),
    linear-gradient(to bottom,
      rgba(245,243,239,0.90) 0%,
      rgba(245,243,239,0.00) 28%,
      rgba(245,243,239,0.00) 72%,
      rgba(245,243,239,0.90) 100%
    ),
    linear-gradient(to left,
      rgba(245,243,239,0.90) 0%,
      rgba(245,243,239,0.00) 10%
    );
  z-index: 1;
}

/* テキストエリア共通 */
.quiet-text {
  position: relative;
  z-index: 2;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding: 0 32px;
}

.quiet-eyebrow {
  font-family: 'Cormorant Garamond', serif;
  font-size: 11px;
  letter-spacing: 0.38em;
  color: #b8955a;
  margin: 0 0 12px;
  text-transform: uppercase;
}

.quiet-title {
  font-family: 'Noto Serif JP', serif;
  font-size: clamp(16px, 4.5vw, 20px);
  font-weight: 400;
  color: #1a1814;
  margin: 0;
  line-height: 1.85;
  letter-spacing: 0.08em;
}

/* ===== STACK: 写真の上にfeaturesが重なるスクロール演出 ===== */
/* ===== PHOTO DIVIDER (promise → features 間) ===== */
/*
  写真は横1379×縦919px（アスペクト比約3:2）の横長画像。
  <img> + width:100% + height:auto で全体を必ず表示。
  スクロールイン時：opacity 0→1 + translateY でふわっと登場。
  parallax：visible後にJSでtranslateYを上書きして軽く動かす。
  上下フェード：position:absoluteのグラデーションオーバーレイ。
*/
.photo-divider {
  position: relative;
  width: 100%;
  overflow: hidden;
  background: var(--warm-white);
  font-size: 0;        /* imgのinline隙間を完全に除去 */
  line-height: 0;      /* 同上 */
  margin: -1px 0;      /* 前後セクションとの1px隙間を確実に消す */
}

/* 写真本体 */
.photo-divider-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;

  /* スクロールイン前：縮んで透明 */
  opacity: 0;
  transform: translateY(22px) scale(0.94);
  transition: opacity 1.0s cubic-bezier(0.22,1,0.36,1),
              transform 1.0s cubic-bezier(0.22,1,0.36,1);
  will-change: opacity, transform;
}

/* スクロールインで表示 */
.photo-divider-img.visible {
  opacity: 1;
  transform: translateY(0px) scale(1);
}

/* 上下フェード：前後セクションの背景色に溶け込む */
.photo-divider-veil {
  position: absolute;
  left: 0;
  right: 0;
  height: 32%;
  pointer-events: none;
  z-index: 1;
}
.photo-divider-veil--top {
  top: 0;
  background: linear-gradient(to bottom,
    rgba(250,248,244,1)   0%,
    rgba(250,248,244,0.55) 55%,
    rgba(250,248,244,0)  100%
  );
}
.photo-divider-veil--bottom {
  bottom: 0;
  background: linear-gradient(to top,
    rgba(250,248,244,1)   0%,
    rgba(250,248,244,0.55) 55%,
    rgba(250,248,244,0)  100%
  );
}

/* features は通常フロー */
.features-section {
  position: relative;
  z-index: 1;
}

/* ===== HERO SLIDESHOW (PC ONLY) ===== */
@media (min-width: 769px) {

  /* モバイル用の元背景はPC非表示 */
  .hero-bg { display: none; }

  /* モバイル専用改行タグはPC非表示 */
  .sp-br { display: none; }

  /* ===== PC: 全セクション共通 max-width ===== */
  .section-inner {
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 48px;
  }

  /* ===== PC: セクションタイトルサイズ調整 ===== */
  .section-title {
    font-size: clamp(20px, 4vw, 26px);
  }
  .gallery-section-title {
    font-size: clamp(20px, 4vw, 26px) !important;
  }

  /* ===== PC: セクションタイトルのbrを非表示（1行化） ===== */
  .symptoms-bg .section-title br,
  .promise-title br,
  .features-title br,
  .about-section .section-title br {
    display: none;
  }

  /* PC: features-title を1行にまとめる */
  .features-title {
    display: flex;
    align-items: center;
    gap: 0;
    flex-wrap: nowrap;
  }

  /* ===== PC: 悩みセクション ===== */
  .symptoms-bg .section-inner {
    max-width: 680px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 40px;
  }
  .symptom-grid {
    grid-template-columns: 1fr 1fr;
  }
  .symptom-item {
    font-size: clamp(13px, 3.2vw, 15px);
  }
  .symptom-note {
    font-size: 15px;
    white-space: nowrap;
  }

  /* ===== PC: Promiseセクション ===== */
  .promise-section {
    padding-bottom: 64px;  /* 6番項目〜photo-divider上の余白 */
  }
  .features-section {
    padding-top: 64px;     /* photo-divider下〜WHY LEGITの余白 */
  }
  .promise-section .section-inner {
    max-width: 760px;
  }
  /* PC: Promise 列揃え */
  .promise-num {
    width: 48px;
    min-width: 48px;
  }
  .promise-text {
    flex: 1;
    min-width: 0;
  }
  /* PC: Promise 文字サイズ調整 */
  .promise-text h3 { font-size: 17px; }
  .promise-text p  { font-size: 14px; }

  /* PC: Features 文字サイズ調整 */
  .feature-card-header h3 { font-size: 17px; }
  .feature-card-body      { font-size: 15px; }

  /* PC: Flow 文字サイズ調整 */
  .flow-step-content h3 { font-size: 17px; }
  .flow-step-content p  { font-size: 14px; }

  /* PC: About 文字サイズ調整 */
  .about-quote            { font-size: 16px; }
  .about-name-text        { font-size: 14px; }
  .about-name-text strong { font-size: 17px; }

  /* PC: FAQ 文字サイズ調整 */
  .faq-q-text      { font-size: 16px; }
  .faq-answer-inner { font-size: 15px; }

  /* PC: FAQアイコン色をブルーグレーに変更 */
  .faq-icon { background: var(--sage); }

  /* PC: 施術費 注釈 文字サイズ調整 */
  .price-note { font-size: 13px; }

  /* ===== PC: 施術費 ===== */
  .price-section .section-inner {
    max-width: 680px;
  }

  /* ===== PC: features ===== */
  .features-section .section-inner {
    max-width: 760px;
  }

  /* ===== PC: photo-divider ===== */
  /* 現状の約3分の2サイズ（80%→53%、max-width 820→546px）で中央配置 */
  .photo-divider-img {
    width: 53%;
    max-width: 546px;
    margin: 0 auto;
  }
  .photo-divider-veil--top,
  .photo-divider-veil--bottom {
    height: 28%;
  }

  /* ===== PC: インラインロゴ ===== */
  .logo-inline {
    display: inline-block;
    height: 1.15em;
    width: auto;
    vertical-align: middle;
    flex-shrink: 0;
    margin-right: 6px;
  }
  .logo-inline--promise {
    filter: brightness(0) saturate(100%);
    opacity: 1;
  }
  .logo-inline--features {
    filter: brightness(0) saturate(100%);
    opacity: 1;
  }
  .promise-from-text {
    font-family: 'Noto Serif JP', serif;
    font-weight: 300;
    color: var(--ink);
    font-size: clamp(20px, 4vw, 26px);
    line-height: 1.55;
  }

  /* ===== PC: ギャラリー ===== */
  .gallery-item {
    width: 280px;
    max-width: none;
  }
  .gallery-item img {
    height: 220px;
    object-fit: cover;
    object-position: center top;
  }

  /* スライドショーコンテナ */
  .hero-slideshow {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    background: var(--cream); /* mask-image端部の外線を防ぐためcreamで統一 */
  }

  /* 各スライドのラッパー（mask-image専用） */
  .hero-slide-wrap {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 1.6s ease;
    -webkit-mask-image: linear-gradient(
      to right,
      transparent 0%,
      black 10%,
      black 90%,
      transparent 100%
    );
    mask-image: linear-gradient(
      to right,
      transparent 0%,
      black 10%,
      black 90%,
      transparent 100%
    );
  }
  .hero-slide-wrap.active { opacity: 1; }

  /* 各スライド */
  .hero-slide {
    position: absolute;
    inset: 0;
    background-size: 68%;
    background-position: center center;
    background-repeat: no-repeat;
    background-color: var(--cream);
    transform: scale(1.04);
    transition: transform 7s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }
  .hero-slide-wrap.active .hero-slide {
    transform: scale(1.0);
  }

  /* 左側：白グラデーション（左右1cmを明るい光で飛ばす） */
  .hero-slide-fade-left {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    width: 13%;
    background: linear-gradient(
      to right,
      rgba(255,255,255,1.00)  0%,
      rgba(255,255,255,0.92) 30%,
      rgba(255,255,255,0.55) 65%,
      rgba(255,255,255,0.00) 100%
    );
    pointer-events: none;
    z-index: 2;
  }

  /* 右側：白グラデーション（左右1cmを明るい光で飛ばす） */
  .hero-slide-fade-right {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: 13%;
    background: linear-gradient(
      to left,
      rgba(255,255,255,1.00)  0%,
      rgba(255,255,255,0.92) 30%,
      rgba(255,255,255,0.55) 65%,
      rgba(255,255,255,0.00) 100%
    );
    pointer-events: none;
    z-index: 2;
  }

  /* ===== QUIET SEPARATOR: PC ===== */
  .quiet-bg--sp { display: none !important; }
  .quiet-overlay--sp { display: none !important; }
  .quiet-bg--pc { display: block !important; }
  .quiet-overlay--pc { display: block !important; }

  /* PC版：写真を右端からやや内側に寄せ */
  .quiet-bg--pc {
    width: 34%;
    right: 12%;   /* 旧 6% → 12%：約2cm中央寄り */
  }

  /* PC版：テキストも右に寄せて写真との距離を縮める */
  .quiet-text {
    padding: 0 0 0 min(18vw, 276px);  /* 旧 200px → さらに約2cm右寄り（+76px） */
    max-width: 55%;
  }

  .quiet-eyebrow {
    font-size: 10px;
    letter-spacing: 0.42em;
    opacity: 0.85;
  }

  .quiet-title {
    font-size: clamp(20px, 2.2vw, 28px);
    letter-spacing: 0.1em;
    line-height: 2.0;
  }

  /* PC用：ヒーロードットがカラーで見えるように */
  .hero-dot {
    background: rgba(100,100,100,0.38);
    position: absolute;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 8px;
    z-index: 10;
  }

  .hero-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255,255,255,0.38);
    border: 1px solid rgba(255,255,255,0.7);
    cursor: pointer;
    transition: background 0.4s, transform 0.4s;
  }

  .hero-dot.active {
    background: rgba(255,255,255,0.95);
    transform: scale(1.35);
  }

  /* PC: Accessセクション 位置調整 */
  .access-item {
    padding-left: 75px; /* ラベルを右に約2cm */
    gap: 75px;          /* ラベル末尾から本文まで約2cm */
  }
  .access-label {
    width: 64px;
    min-width: 64px;
  }
}

/* =========================================
   モバイルヒーロー：完全リデザイン v3
   サイト全体のカラートーン（白・青・グレージュ）と統一
   ========================================= */
@media (max-width: 768px) {
  .hero-logo { display: none !important; }
  .hero-bg { display: none !important; }
  .hero-slideshow { display: block !important; }

  /* ヒーロー全体：サイトのクリーム色 */
  .hero {
    background: var(--cream);
    justify-content: flex-end;
    min-height: 100svh;
  }

  /* スライドショーコンテナ */
  .hero-slideshow {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    background: transparent;
  }

  /* スライドラッパー */
  .hero-slide-wrap {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 1.8s ease;
    -webkit-mask-image: none;
    mask-image: none;
  }
  .hero-slide-wrap.active { opacity: 1; }

  /* 写真：全体をcontain、上に詰めて配置 */
  .hero-slide {
    position: absolute;
    left: 0; right: 0;
    top: 4%;
    bottom: 30%;
    background-size: contain;
    background-position: center center;
    background-repeat: no-repeat;
    background-color: transparent;
    transform: scale(1.03);
    transition: transform 8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }
  .hero-slide-wrap.active .hero-slide {
    transform: scale(1.0);
  }

  /* 写真上部：クリーム→透明のグラデーション */
  .hero-slideshow::before {
    content: '';
    position: absolute;
    left: 0; right: 0; top: 0;
    height: 10%;
    background: linear-gradient(to bottom, var(--cream) 0%, rgba(245,240,232,0) 100%);
    z-index: 2;
    pointer-events: none;
  }
  /* 写真下部：透明→クリームのグラデーション */
  .hero-slideshow::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 42%;
    background: linear-gradient(to top, var(--cream) 0%, var(--cream) 25%, rgba(245,240,232,0.7) 60%, rgba(245,240,232,0) 100%);
    z-index: 2;
    pointer-events: none;
  }

  /* フェードオーバーレイ不要（PC用） */
  .hero-slide-fade-left,
  .hero-slide-fade-right { display: none; }

  /* モバイル：写真左右エッジを光で飛ばす */
  .hero-slide-fade-sp-left,
  .hero-slide-fade-sp-right {
    position: absolute;
    top: 4%;
    bottom: 30%;
    width: 14%;
    z-index: 3;
    pointer-events: none;
  }
  .hero-slide-fade-sp-left {
    left: 0;
    background: linear-gradient(to right, rgba(245,240,232,0.92) 0%, rgba(245,240,232,0.5) 50%, rgba(245,240,232,0) 100%);
  }
  .hero-slide-fade-sp-right {
    right: 0;
    background: linear-gradient(to left, rgba(245,240,232,0.92) 0%, rgba(245,240,232,0.5) 50%, rgba(245,240,232,0) 100%);
  }

  /* ドット：完全非表示 */
  .hero-slide-dots { display: none !important; }

  /* ロゴ：小さく・multiply は継続（クリーム背景で正常表示） */
  .hero-logo {
    top: 33px;
    left: 20px;
    z-index: 20;
  }
  .hero-logo img {
    width: 72px !important;
    mix-blend-mode: multiply !important;
    filter: none !important;
    opacity: 1 !important;
    animation: fadeIn 0.8s ease forwards 0.1s !important;
  }

  /* PC用テキスト・scrollは非表示 */
  .hero-content { display: none !important; }
  .hero-scroll  { display: none !important; }
  .hero-noise   { display: none; }

  /* =========================================
     テキストアニメーション舞台
     写真の下のクリーム色エリア
     ========================================= */
  .hero-sp-stage {
    position: absolute;
    bottom: 0;
    left: 0; right: 0;
    height: 36%;
    z-index: 15;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0 24px 28px;
  }

  /* ── 「その痛み、」── */
  .hero-sp-line1 {
    font-family: 'Noto Serif JP', serif;
    font-size: 26px;
    font-weight: 400;
    letter-spacing: 0.06em;
    color: var(--ink-section);
    opacity: 0;
    transform: translateY(6px);
    animation: spLine1 1.0s ease forwards 0.5s;
    margin-bottom: 6px;
    text-transform: none;
  }

  /* ── 「諦めないでください」── */
  .hero-sp-line2 {
    font-family: 'Noto Serif JP', serif;
    font-size: 26px;
    font-weight: 400;
    letter-spacing: 0.06em;
    color: var(--ink-section);
    opacity: 0;
    transform: translateY(12px);
    animation: spLine2 1.0s ease forwards 0.9s;
    white-space: nowrap;
    margin-bottom: 20px;
  }

  /* ── サブコピー（スクロールで出現） ── */
  .hero-sp-sub {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    /* opacity と transform は .reveal が管理 */
    animation: none !important;
  }
  .hero-sp-sub span {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 10px;
    font-weight: 300;
    letter-spacing: 0.1em;
    color: var(--charcoal);
    opacity: 0.7;
    display: block;
    text-align: center;
  }

  /* ── 区切り線（削除） ── */
  .hero-sp-rule {
    display: none;
  }

  /* hero-sp-clinic は削除済み */

  /* =========================================
     キーフレーム（spSub・spRule・spClinic は reveal に移行済み）
     ========================================= */

  @keyframes spLine1 {
    0%   { opacity: 0; transform: translateY(8px); }
    100% { opacity: 1; transform: translateY(0); }
  }

  @keyframes spLine2 {
    0%   { opacity: 0; transform: translateY(14px); }
    100% { opacity: 1; transform: translateY(0); }
  }

  /* 悩みセクション：モバイルはPC版のmax-widthを無効化 */
  .symptoms-bg .section-inner {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    padding: 0 24px;
  }

  /* ===== QUIET SEPARATOR: モバイル ===== */
  .quiet-bg--pc { display: none !important; }
  .quiet-overlay--pc { display: none !important; }
  .quiet-bg--sp { display: block !important; }
  .quiet-overlay--sp { display: block !important; }

  /* モバイル版：写真を右半分に全高で配置（参考写真のイメージ） */
  .quiet-bg--sp {
    width: 52%;      /* 右側をほぼ半分 */
    right: 0;        /* 端ぴったり */
    top: 0;
    bottom: 0;
    height: 100%;    /* セクション全高 */
    transform: none; /* translateY を解除 */
    background-position: center top;
  }

  /* モバイル版：左端を強めに白く溶かして境界を消す */
  .quiet-overlay--sp {
    background:
      linear-gradient(to right,
        rgba(245,243,239,1.00)  0%,
        rgba(245,243,239,1.00) 34%,
        rgba(245,243,239,0.90) 44%,
        rgba(245,243,239,0.50) 54%,
        rgba(245,243,239,0.00) 65%
      ),
      linear-gradient(to bottom,
        rgba(245,243,239,0.60) 0%,
        rgba(245,243,239,0.00) 18%,
        rgba(245,243,239,0.00) 82%,
        rgba(245,243,239,0.60) 100%
      ),
      linear-gradient(to left,
        rgba(245,243,239,0.40) 0%,
        rgba(245,243,239,0.00) 8%
      );
  }

  /* モバイル版：テキストを左寄り、幅制限で写真と重ならない */
  .quiet-text {
    padding: 0 24px;
    max-width: 58%;
  }

  /* モバイル文字サイズ：画面幅に応じてclampで自動調整し常に2行に収める */
  .quiet-title {
    font-size: clamp(14.5px, 4.2vw, 18px);
    line-height: 1.9;
    letter-spacing: 0.06em;
  }

  /* モバイル：電話番号を確実に1行で表示 */
  .btn-tel {
    font-size: clamp(17px, 5vw, 22px);
    white-space: nowrap;
    padding: 18px 16px;
  }
  .btn-line {
    padding: 8px 24px;
  }

  /* ===== モバイル：featureカード・施術の流れ 文字サイズ調整 ===== */
  /* PC用の上書きが効かないよう、モバイルで明示的に指定 */
  .feature-card-header h3 { font-size: 15px; }
  .feature-card-body {
    font-size: 12.5px;
    line-height: 1.9;
  }
  .flow-step-content h3 { font-size: 15px; }
  .flow-step-content p {
    font-size: clamp(12px, 3.4vw, 14px);
    line-height: 1.85;
    overflow-wrap: break-word;
  }

  /* sp-br：モバイルで改行表示（PC側では display:none で無効化） */
  .sp-br { display: inline; }

  /* =====================================================
     モバイル専用：新ヒーロースライドショー（上下2枚構成）
     ===================================================== */

  /* PCでは非表示 */
  .hero-sp-slideshow { display: block; }

  /* スライド全体コンテナ：ヒーローsectionと同じ高さを占有 */
  .hero-sp-slideshow {
    position: absolute;
    inset: 0;
    z-index: 1;
    overflow: hidden;
    background: var(--cream);
  }

  /* 各スライド：不透明度でフェード切替 */
  .hero-sp-slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 1.6s ease;
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
  .hero-sp-slide.active { opacity: 1; }

  /* ── 上エリア ── */
  .hero-sp-top {
    position: relative;
    flex: 0 0 46%;
    overflow: hidden;
    background: var(--cream);
  }

  /* 上写真：エリア全体にカバー */
  .hero-sp-top .hero-sp-photo {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 30%;
    display: block;
  }

  /* ── 下エリア ── */
  .hero-sp-bottom {
    position: relative;
    flex: 0 0 42%;
    overflow: hidden;
    background: var(--cream);
  }

  /* 下写真：エリア全体にカバー */
  .hero-sp-bottom .hero-sp-photo {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 40%;
    display: block;
  }

  /* ── 中央ロゴエリア ── */
  .hero-sp-logo-area {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    background: #ffffff;
    padding: 6px 0;
    z-index: 5;
    position: relative;
  }

  /* ── キャッチコピー（縦書き、上写真左にオーバーレイ） ── */
  .hero-sp-catch {
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 22%;
    z-index: 3;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: center;
    padding-top: 12px;
    gap: 4px;
  }

  .hero-sp-catch-line1,
  .hero-sp-catch-line2 {
    font-family: 'Noto Serif JP', serif;
    font-weight: 700;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    color: var(--ink-section);
    line-height: 1.2;
    letter-spacing: 0.04em;
    font-size: clamp(14px, 3.8vw, 20px);
  }

  /* 「諦めないでください」を半文字分下にずらす */
  .hero-sp-catch-line2 {
    margin-top: 0.5em;
  }

  /* ── サブコピー（縦書き、下写真右にオーバーレイ） ── */
  .hero-sp-sub-copy {
    position: absolute;
    top: 0; bottom: 0; right: 0;
    width: 22%;
    z-index: 3;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: center;
    padding-top: 12px;
    gap: 4px;
  }
  .hero-sp-sub-copy span {
    font-family: 'Noto Serif JP', serif;
    font-weight: 700;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    color: var(--ink-section);
    font-size: clamp(14px, 3.8vw, 20px);
    line-height: 1.2;
    letter-spacing: 0.04em;
  }

  /* 「看板なしには訳がある」を半文字分下にずらす */
  .hero-sp-sub-line2 {
    margin-top: 0.5em;
  }

  /* ── ロゴ ── */
  .hero-sp-logo-img {
    width: 130px;
    mix-blend-mode: multiply;
    display: block;
  }
  .hero-sp-logo-sub {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.15em;
    color: #7a6e62;
    opacity: 1;
    text-align: center;
  }
  .hero-sp-logo-since {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.2em;
    color: var(--sage);
    text-align: center;
    margin-top: -3px;
  }

  /* PCではこの新スライドを非表示にするため、PC側に上書きが必要 */
}

/* hero-sp-slideshow はモバイル専用 → PCでは非表示 */
@media (min-width: 769px) {
  .hero-sp-slideshow { display: none !important; }
}


/* ===== モバイルSサイズ（390px以下）：quiet-titleを確実に2行に収める ===== */
@media (max-width: 390px) {
  .quiet-title {
    font-size: clamp(13px, 3.8vw, 15px);
    letter-spacing: 0.04em;
    line-height: 1.85;
  }
  .quiet-text {
    max-width: 56%;
  }

  /* ===== モバイル：promise-title・about section-title の余白・サイズ調整 ===== */
  /* promise-title：flex+画像で高さが出るためmargin-bottomを詰める */
  .promise-title {
    margin-bottom: 16px;
  }
  /* about-section「代表ご挨拶」：font-sizeを他セクションと揃え、余白も詰める */
  .about-section .section-title {
    font-size: clamp(20px, 5.5vw, 26px);
    margin-bottom: 16px;
  }

  /* ===== Mobile S：featureカードタイトルを1行に収める ===== */
  .feature-card-header {
    padding: 16px 14px 14px;   /* 左右paddingを少し削って幅確保 */
  }
  .feature-card-header h3 {
    font-size: 13.5px;          /* 15px → 13.5px に絞って1行に */
    letter-spacing: 0.01em;    /* letter-spacingを詰める */
    line-height: 1.35;
  }
  .feature-card-body {
    padding: 14px 14px 18px;
    font-size: 12px;
  }
}

/* ===== Mobile S（430px以下）：施術費テーブル文字サイズ調整 ===== */
@media (max-width: 430px) {
  .price-table td {
    font-size: clamp(15px, 4.2vw, 17px);
    padding: 16px 12px;
  }
  .price-table td:first-child {
    padding-left: 20px;
  }
  .price-table td:last-child {
    font-size: clamp(15px, 4.2vw, 17px);
    padding-right: 20px;
    white-space: nowrap;
  }
}

/* ===== Mobile S（430px以下）：アクセスセクション フォントサイズ調整 ===== */
@media (max-width: 430px) {
  .access-item  { font-size: 13px; }
  .access-label { font-size: 10px; }
  .btn-tel      { font-size: clamp(17px, 5vw, 22px); }
}

/* ===== Mobile S（430px以下）：スライド1枚目のキャッチ・サブコピーを非表示 ===== */
@media (max-width: 430px) {
  .hero-sp-slide:first-child .hero-sp-catch,
  .hero-sp-slide:first-child .hero-sp-sub-copy {
    display: none;
  }
}

/* ===== Mobile S（430px以下）：住所の改行位置を変更 ===== */
.addr-sp-s    { display: none; }
.addr-default { display: inline; }

@media (max-width: 430px) {
  .addr-default { display: none; }
  .addr-sp-s    { display: inline; }
}

/* ===================================================
   LEGIT WORD SECTION（本物・本格的・質が高い）
   =================================================== */

@import url('https://fonts.googleapis.com/css2?family=Zen+Old+Mincho:wght@700;900&display=swap');

/* ── ベース（モバイル・PC共通） ── */
.legit-word-section {
  background: var(--warm-white);
  overflow: hidden;
  position: relative;
  padding: 32px 0 56px;
  min-height: 600px;
}
.legit-word-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--sage), transparent);
}

.legit-word-inner {
  display: flex;
  align-items: stretch;
  position: relative;
  padding: 0 24px;
  gap: 0;
  min-height: 480px;
}

.legit-word-text-col {
  flex: 0 0 55%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  z-index: 2;
  position: relative;
}

/* photo-col は幅ゼロ：写真はsection直下absoluteで配置 */
.legit-word-photo-col {
  flex: 0 0 0%;
  position: static;
}

/* eyebrow：ロゴ＋テキストを1行で */
.legit-word-eyebrow {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 13px;
  font-weight: 300;
  color: var(--charcoal);
  letter-spacing: 0.05em;
  margin-top: 19px;
  margin-bottom: 16px;
}

.legit-word-logo {
  height: 3em;
  width: auto;
  flex-shrink: 0;
  display: block;
  filter: brightness(0) saturate(100%);
}

/* 3ワードリスト */
.legit-word-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 38px;
  margin-bottom: 28px;
  padding-left: 26px;
}

.legit-word-item {
  font-family: 'Zen Old Mincho', 'Noto Serif JP', serif;
  font-weight: 700;
  font-size: clamp(24px, 6.8vw, 34px);
  color: var(--ink-section);
  line-height: 1.35;
  letter-spacing: 0.04em;
  opacity: 0;
  transform: translateX(-24px);
  transition: opacity 0.65s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.65s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.legit-word-item.visible {
  opacity: 1;
  transform: translateX(0);
}
.legit-word-item--i0 { padding-left: 0;      transition-delay: 0.00s; }
.legit-word-item--i1 { padding-left: 0.5em;  transition-delay: 0.22s; }
.legit-word-item--i2 { padding-left: 1.0em;  transition-delay: 0.44s; }

/* 説明テキスト */
.legit-word-desc {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 38px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.6s ease 0.4s, transform 0.6s ease 0.4s;
}
.legit-word-desc.visible {
  opacity: 1;
  transform: translateY(0);
}
.legit-word-desc p {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: clamp(11px, 2.9vw, 13px);
  font-weight: 300;
  color: var(--charcoal);
  line-height: 2.0;
  letter-spacing: 0.02em;
  margin: 0;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 修正1：Mobile S（360px以下）でeyebrowの「は」が切れる対策 */
@media (max-width: 360px) {
  .legit-word-eyebrow {
    font-size: 11px;
    letter-spacing: 0.02em;
    gap: 4px;
  }
  .legit-word-logo {
    height: 2.5em;
  }
}

/* 写真：section全体の右90%をフル使用 */
.legit-word-photo-wrap {
  position: absolute;
  top: 10mm;
  bottom: 0;
  right: 0;
  left: 10%;
  overflow: hidden;
  z-index: 1;
}
.legit-word-photo {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: right bottom;
  display: block;
}
.legit-word-photo-fade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to right,
      rgba(250,248,244,1.00)  0%,
      rgba(250,248,244,1.00) 22%,
      rgba(250,248,244,0.70) 38%,
      rgba(250,248,244,0.20) 52%,
      rgba(250,248,244,0.00) 65%
    ),
    linear-gradient(to bottom,
      rgba(250,248,244,1.00)  0%,
      rgba(250,248,244,0.60) 7%,
      rgba(250,248,244,0.00) 18%
    );
  pointer-events: none;
}

/* 読点：PCのみ表示、モバイルでは非表示 */
.legit-desc-ten { display: none; }

/* ===== PC版（769px以上） ===== */
@media (min-width: 769px) {
  .legit-word-section   { padding: 80px 0 72px; }
  .legit-word-inner     { max-width: 960px; margin: 0 auto; padding: 0 48px; min-height: 460px; }
  /* テキスト列は左50%。写真列はグローバルと同様に幅ゼロのまま（写真はsection基準のabsolute） */
  .legit-word-text-col  { flex: 0 0 50%; padding-right: 24px; padding-left: 48px; }
  .legit-word-photo-col { flex: 0 0 0%; }

  /* photo-wrapはlegit-word-section（position:relative）基準でabsolute配置。
     右半分を使い、overflow:hiddenの範囲内（top:0,bottom:0）で全体を表示。
     object-fit:containで鉢底〜葉先まで必ず収まる。right:0は右端ぴったり。 */
  .legit-word-photo-wrap {
    position: absolute;
    top: 0; bottom: 0;
    right: 0; left: 50%;
    transform: scale(1.13);
    transform-origin: right center;
    overflow: visible;
  }
  .legit-word-photo {
    object-fit: contain;
    object-position: left center;
  }

  /* 文字：モバイルと同様に半角ずつ右にずらす */
  .legit-word-item      { font-size: clamp(24px, 3.0vw, 38px); line-height: 1.25; }
  .legit-word-item--i0  { padding-left: 0; }
  .legit-word-item--i1  { padding-left: 0.5em; }
  .legit-word-item--i2  { padding-left: 1.0em; }
  .legit-word-list      { gap: 14px; padding-left: 64px; }

  .legit-word-eyebrow   { font-size: 14px; margin-bottom: 28px; }

  /* 説明文：PC幅では <br> を非表示・gap縮小で自然な1〜2行に */
  .legit-word-desc      { gap: 8px; }
  .legit-word-desc br   { display: none; }
  .legit-word-desc p    { font-size: 15px; line-height: 2.1; }
  .legit-desc-ten       { display: inline; }

  /* 写真フェード：左端（写真左端）を白く飛ばす＋上部も明るくフェード */
  .legit-word-photo-fade {
    background:
      linear-gradient(to right,
        rgba(250,248,244,1.00)  0%,
        rgba(250,248,244,0.90) 15%,
        rgba(250,248,244,0.40) 35%,
        rgba(250,248,244,0.00) 55%
      ),
      linear-gradient(to bottom,
        rgba(250,248,244,1.00)  0%,
        rgba(250,248,244,0.85) 6%,
        rgba(250,248,244,0.00) 18%
      );
  }
}

/* ===== Mobile S（390px以下）微調整 ===== */
@media (max-width: 390px) {
  .legit-word-item      { font-size: clamp(22px, 6.2vw, 28px); }
  .legit-word-logo      { height: 2.6em; }
  .legit-word-eyebrow   { font-size: 12px; }
  .legit-word-inner     { min-height: 480px; }
}

/* ===== モバイル（768px以下）：legit-wordセクション下余白を縮小 ===== */
@media (max-width: 768px) {
  .legit-word-section { min-height: 574px; }
}
