/* =========================================================
   rege — Responsive overrides + Hamburger menu
   Breakpoints:
     - desktop: 1025px+
     - tablet : 768–1024
     - mobile : –767
========================================================= */

/* ---------- Hamburger button (hidden on desktop) ---------- */
.hamburger {
  display: none;
  position: relative;
  width: 44px; height: 44px;
  padding: 0; margin-left: 4px;
  background: transparent;
  border: 1px solid var(--c-line);
  border-radius: 999px;
  cursor: pointer;
  z-index: 110;
  flex-shrink: 0;
  transition: background 0.25s, border-color 0.25s;
}
.hamburger span {
  position: absolute;
  left: 50%; transform: translateX(-50%);
  width: 18px; height: 1.4px;
  background: var(--c-primary-deep);
  transition: transform 0.32s cubic-bezier(.6,.05,.28,1.05), opacity 0.2s, top 0.32s, background 0.25s;
}
.hamburger span:nth-child(1) { top: 14px; }
.hamburger span:nth-child(2) { top: 21px; }
.hamburger span:nth-child(3) { top: 28px; }
.hamburger.is-active { border-color: var(--c-gold); background: rgba(197, 165, 114, 0.08); }
.hamburger.is-active span { background: var(--c-gold-deep); }
.hamburger.is-active span:nth-child(1) { top: 21px; transform: translateX(-50%) rotate(45deg); }
.hamburger.is-active span:nth-child(2) { opacity: 0; }
.hamburger.is-active span:nth-child(3) { top: 21px; transform: translateX(-50%) rotate(-45deg); }

/* ---------- Mobile drawer (default hidden) ---------- */
.mnav {
  position: fixed; inset: 0;
  height: 100vh;
  height: 100dvh;
  pointer-events: none;
  z-index: 99;
}
.mnav__overlay {
  position: absolute; inset: 0;
  background: rgba(5, 30, 24, 0);
  transition: background 0.4s;
}
.mnav__panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  background: var(--c-bg);
  box-shadow: -20px 0 60px -20px rgba(5, 30, 24, 0.25);
  transform: translateX(100%);
  transition: transform 0.46s cubic-bezier(.6,.05,.28,1.05);
  display: flex; flex-direction: column;
  overflow-y: auto;
  padding: calc(var(--header-h, 88px) + 12px) 0 24px;
}
.mnav__list { max-width: 720px; width: 100%; margin: 0 auto; }
.mnav__cta { max-width: 720px; width: 100%; margin: auto auto 0; }
.mnav__foot { max-width: 720px; width: 100%; margin: 0 auto; }
.mnav__header { max-width: 720px; width: 100%; margin: 0 auto; }
.mnav.is-open { pointer-events: auto; }
.mnav.is-open .mnav__overlay { background: rgba(5, 30, 24, 0.4); }
.mnav.is-open .mnav__panel { transform: translateX(0); }

.mnav__header {
  padding: 0 28px 20px;
  border-bottom: 1px solid var(--c-line);
  display: none; /* shown on mobile only via media query */
}
.mnav__brand-mark {
  font-family: var(--font-en); font-style: italic; font-size: 28px;
  color: var(--c-primary-deep); display: block;
}
.mnav__brand-sub {
  font-family: var(--font-en); font-size: 14px; letter-spacing: 0.32em;
  color: var(--c-mute); display: block; margin-top: 2px;
}

.mnav__list {
  display: flex; flex-direction: column;
  padding: 8px 0;
}
.mnav__list a {
  display: flex; align-items: center; gap: 16px;
  padding: 18px 28px;
  color: var(--c-ink);
  border-bottom: 1px solid var(--c-line);
  transition: background 0.25s, color 0.25s;
  position: relative;
}
.mnav__list a:hover { background: var(--c-bg-soft); color: var(--c-primary); }
.mnav__num {
  font-family: var(--font-en); font-style: italic; font-size: 14px;
  color: var(--c-gold);
  letter-spacing: 0.18em;
  flex-shrink: 0; width: 28px;
}
.mnav__lbl {
  flex: 1; display: flex; flex-direction: column; gap: 3px;
  font-size: 16px; font-weight: 500; letter-spacing: 0.04em;
}
.mnav__lbl small {
  font-family: var(--font-en); font-style: italic; font-size: 14px;
  letter-spacing: 0.24em; color: var(--c-mute); text-transform: lowercase;
}
.mnav__arrow {
  font-family: var(--font-en); font-size: 14px; color: var(--c-gold);
  transition: transform 0.25s;
}
.mnav__list a:hover .mnav__arrow { transform: translateX(4px); }

.mnav__cta {
  padding: 24px 28px 16px;
  display: flex; flex-direction: column; gap: 12px;
  border-top: 1px solid var(--c-line);
  margin-top: auto;
}
.mnav__tel-old-disabled {
  display: flex; flex-direction: column; align-items: center;
  padding: 14px;
  border: 1px solid var(--c-gold);
  border-radius: 6px;
  text-align: center;
  background: rgba(197, 165, 114, 0.06);
}
.mnav__tel small {
  font-family: var(--font-en); font-size: 14px; letter-spacing: 0.32em;
  color: var(--c-gold-deep); margin-bottom: 4px;
}
.mnav__tel span {
  font-family: var(--font-en); font-size: 22px; font-weight: 600;
  color: var(--c-primary-deep); letter-spacing: 0.04em;
}
.mnav__reserve {
  width: 100%; justify-content: center;
  padding: 16px !important;
  font-size: 14px !important;
}
.mnav__line {
  width: 100%; justify-content: center;
  padding: 14px !important;
  font-size: 14px !important;
  background: #06C755 !important;
  border-color: #06C755 !important;
  color: #fff !important;
  display: inline-flex !important; align-items: center; gap: 10px;
}
.mnav__line:hover { background: #05a847 !important; border-color: #05a847 !important; color: #fff !important; }
.mnav__line-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px;
}
.mnav__line-icon img { width: 100%; height: 100%; object-fit: contain; }
.mnav__tel {
  display: block; text-align: center;
  margin-top: 4px;
  padding: 8px;
  font-family: var(--font-en);
  font-size: 14px; letter-spacing: 0.06em;
  color: var(--c-mute);
  text-decoration: none;
}
.mnav__tel:hover { color: var(--c-primary-deep); }
.mnav__foot {
  padding: 16px 28px 0;
  display: flex; flex-direction: column; gap: 4px;
  font-size: 14px; color: var(--c-mute); letter-spacing: 0.04em; line-height: 1.7;
}

/* =========================================================
   Tablet (768–1024)
========================================================= */
@media (max-width: 1180px) {
  .rege-nav { gap: 18px; font-size: 14px; }
  .rege-header__actions .btn-tel-block small { font-size: 14px; }
  .rege-header__actions .btn-tel-block span { font-size: 14px; }
  .rege-header__actions .btn-cta { padding: 10px 16px; font-size: 14px; }
}

@media (max-width: 1180px) {
  :root { --header-h: 72px; }
  .rege-header__inner { padding: 0 24px; gap: 16px; }
  .rege-nav { display: none; }
  .rege-header__actions { display: none; }
  .hamburger { display: block; position: fixed; top: 16px; right: 16px; margin-left: 0; z-index: 110; }
  .rege-logo img { height: 32px !important; }
  .rege-header.scrolled .rege-logo img { height: 28px !important; }
  .rege-logo__mark { font-size: 24px; }
  .rege-logo__sub { font-size: 14px; }
  .mnav__header { display: block; }

  /* FV */
  .fv--split { grid-template-columns: 1fr !important; gap: 32px !important; padding: calc(var(--header-h) + 16px) 32px 60px !important; }
  .fv-split__visual { padding-top: 0 !important; }
  .fv-split__title, .fv-catch { font-size: 44px !important; }
  .fv-features-row { gap: 12px !important; }
  .fv--split::before { width: 360px !important; height: 360px !important; right: -80px !important; }

  /* Sections (excluding cases — has its own full-bleed) */
  section[class*="banner-slider"], section[class*="diagnosis"],
  section[class*="worry"], section[class*="category"], section[class*="feature"],
  section[class*="doctor"], section[class*="clinic"],
  section[class*="cta-block"], section[class*="message"], section[class*="recommend"],
  section[class*="promise"] {
    padding-left: 32px !important; padding-right: 32px !important;
  }

  .section-head__en { font-size: 14px !important; }
  .section-head__jp { font-size: 30px !important; }

  /* Message — keep 2-column on tablet */
  .message-inner { gap: 40px !important; }
  .message-quote { font-size: 22px !important; text-align: left !important; padding-left: 0 !important; }

  /* Banner slider sized for tablet */
  .bs-track--loop, .bs-card--img { --bs-card-w: 360px !important; }

  /* Category */
  .cat-back-btn { display: flex !important; margin-left: auto !important; margin-right: auto !important; }
  .cat-tabs { grid-template-columns: repeat(3, 1fr) !important; }
  .cat-tab { padding: 18px 12px !important; }
  .cat-tab__icon { width: 48px !important; height: 48px !important; }
  .cat-tab__icon svg, .cat-tab__icon img { width: 26px !important; height: 26px !important; }
  .cat-tab__en { font-size: 14px !important; }
  .cat-tab__jp { font-size: 16px !important; }
  .cat-cards { grid-template-columns: repeat(2, 1fr) !important; }
  .cat-menu-item { flex-wrap: wrap !important; }

  /* Recommend */
  .recommend-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 20px !important; }

  /* Feature */
  .feature-grid { grid-template-columns: repeat(2, 1fr) !important; }

  /* Doctor / Clinic */
  .doctor-grid { grid-template-columns: 1fr !important; gap: 32px !important; }
  .clinic-grid { grid-template-columns: 1fr !important; gap: 32px !important; }
  .clinic-photos { grid-template-columns: 1fr 1fr !important; }
  .clinic-photo--lg { grid-column: span 2 !important; }

  /* Worry – その他のお悩み */
  .worry-other { grid-template-columns: 1fr !important; padding: 32px 28px !important; gap: 20px !important; }
  .worry-other__list { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 10px !important; }
  .worry-other__chip { display: flex !important; justify-content: center !important; width: 100% !important; }

  /* Cases — full-bleed, smaller card */
  .case-card { flex: 0 0 420px !important; }
  .cases-slider { padding: 0 !important; }
  .cases-arrow:first-of-type { left: 12px !important; margin-left: 0 !important; }
  .cases-arrow:last-of-type { right: 12px !important; margin-right: 0 !important; }

  /* Promise */
  .promise-grid { grid-template-columns: repeat(2, 1fr) !important; }

  /* Footer */
  .rege-footer__inner { grid-template-columns: 1fr 1fr !important; gap: 32px !important; padding: 60px 32px !important; }
}

/* =========================================================
   Mobile (–767)
========================================================= */
@media (max-width: 767px) {
  :root { --header-h: 64px; }

  /* Header tighter */
  .rege-header__inner { padding: 0 18px; }
  .rege-logo img { height: 28px !important; }
  .rege-header.scrolled .rege-logo img { height: 24px !important; }
  .rege-footer__logo img { height: 36px !important; }
  .mnav__brand img { height: 32px !important; }
  .rege-logo__mark { font-size: 22px; }
  .rege-logo__sub { font-size: 14px; letter-spacing: 0.24em; }
  .hamburger { width: 40px; height: 40px; top: 16px; right: 16px; }
  .hamburger span { width: 16px; }
  .hamburger span:nth-child(1) { top: 13px; }
  .hamburger span:nth-child(2) { top: 19px; }
  .hamburger span:nth-child(3) { top: 25px; }
  .hamburger.is-active span:nth-child(1),
  .hamburger.is-active span:nth-child(3) { top: 19px; }

  /* Drawer */
  .mnav__panel { width: 100%; padding-top: calc(var(--header-h) + 8px); }
  .mnav__list a { padding: 16px 22px; gap: 12px; }
  .mnav__lbl { font-size: 16px; }
  .mnav__cta { padding: 20px 22px 12px; }
  .mnav__foot { padding: 14px 22px 0; }

  /* FV */
  .fv--split { padding: calc(var(--header-h) + 16px) 18px 40px !important; gap: 24px !important; min-height: auto !important; }
  .fv-split__eyebrow { margin-bottom: 18px !important; font-size: 14px !important; letter-spacing: 0.24em !important; }
  .fv-split__eyebrow .fv-eyebrow-line { width: 24px !important; }
  .fv-split__title, .fv-catch { font-size: 32px !important; line-height: 1.4 !important; letter-spacing: 0.02em !important; }
  .fv-split__sub, .fv-sub { font-size: 18px !important; margin-top: 16px !important; }
  .fv-features { margin: 32px 0 !important; }
  .fv-feature { grid-template-columns: 40px 100px 1fr !important; gap: 12px !important; padding: 16px 0 !important; }
  .fv-feature__num { font-size: 18px !important; }
  .fv-feature__kw { font-size: 14px !important; }
  .fv-feature__title { font-size: 18px !important; }
  .fv-cta-row .btn-cta { padding: 12px 18px !important; font-size: 14px !important; }
  .hero-foot-svg, .fv-visual-frame { aspect-ratio: 4 / 5 !important; }
  .fv--split::before { width: 240px !important; height: 240px !important; right: -60px !important; opacity: 0.12 !important; }

  /* Section padding (excluding full-bleed cases) */
  section[class*="banner-slider"], section[class*="diagnosis"],
  section[class*="worry"], section[class*="category"], section[class*="feature"],
  section[class*="doctor"], section[class*="clinic"],
  section[class*="cta-block"], section[class*="message"], section[class*="recommend"],
  section[class*="promise"], section[class*="reviews"] {
    padding-left: 18px !important; padding-right: 18px !important;
    padding-top: 56px !important; padding-bottom: 56px !important;
  }
  .cases { padding-top: 56px !important; padding-bottom: 56px !important; }

  /* Section heads */
  .section-head { margin-bottom: 36px !important; }
  .section-head__en { font-size: 14px !important; letter-spacing: 0.32em !important; }
  .section-head__jp { font-size: 22px !important; letter-spacing: 0.08em !important; }
  .section-head__lead { font-size: 18px !important; line-height: 1.9 !important; }

  /* Message */
  .message { padding: 80px 18px !important; }
  .message-inner { grid-template-columns: 1fr !important; gap: 12px !important; }
  .message .section-head { margin-bottom: 16px !important; }
  .message-body { padding-top: 0 !important; }
  .message-lead { font-size: 18px !important; line-height: 2 !important; margin-bottom: 28px !important; }
  .message-quote { font-size: 18px !important; padding-left: 0 !important; text-align: left !important; }
  .message-quote__mark { font-size: 44px !important; }

  /* Banner slider */
  .bs-track--loop, .bs-card--img { --bs-card-w: 280px !important; }
  .banner-slider--bare .bs-controls > button { width: 32px !important; height: 32px !important; }

  /* Feature cards */
  .feature-grid { grid-template-columns: 1fr !important; gap: 18px !important; border-left: none !important; }
  .feature-card { padding: 28px 22px !important; border-right: none !important; }
  .feature-card__num { font-size: 56px !important; }

  /* Recommend */
  .recommend-grid { grid-template-columns: 1fr !important; gap: 18px !important; }
  .recommend-intro__btns { flex-direction: column !important; gap: 10px !important; }
  .recommend-intro__btns .btn-cta { width: 100% !important; justify-content: center !important; }

  /* Promise */
  .promise-grid { grid-template-columns: 1fr !important; }

  /* Diagnosis */
  .diag-card { padding: 28px 20px !important; }
  .diag-q h3, .dx-q__title { font-size: 18px !important; }
  .diag-options, .dx-opts { grid-template-columns: 1fr !important; gap: 8px !important; }
  .diag-option, .dx-opt { padding: 14px 16px !important; font-size: 18px !important; }
  .diag-result__cards, .dx-result__cards { grid-template-columns: 1fr !important; }

  /* Worry — keep as-is per user request, only basic fit */
  .worry { padding: 56px 18px !important; }
  .worry-grid { grid-template-columns: 1fr !important; gap: 32px !important; }
  .worry-other { grid-template-columns: 1fr !important; padding: 28px 22px !important; gap: 16px !important; }
  .worry-other h3 { font-size: 18px !important; }
  .worry-other__list { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 8px !important; }
  .worry-other__chip { display: flex !important; justify-content: center !important; width: 100% !important; padding: 4px 14px !important; font-size: 14px !important; }
  .worry-modal__inner { padding: 28px 22px !important; max-width: 92vw !important; }

  /* Category */
  .cat-tabs { grid-template-columns: repeat(2, 1fr) !important; gap: 0 !important; }
  .cat-tab { padding: 16px 10px !important; }
  .cat-tab__icon { width: 44px !important; height: 44px !important; margin-bottom: 8px !important; }
  .cat-tab__icon svg, .cat-tab__icon img { width: 24px !important; height: 24px !important; }
  .cat-tab__en { font-size: 14px !important; letter-spacing: 0.16em !important; }
  .cat-tab__jp { font-size: 16px !important; }
  .cat-cards { grid-template-columns: 1fr !important; gap: 16px !important; }
  .cat-card__name { font-size: 18px !important; }
  .cat-card__btns .btn-cta { padding: 9px 12px !important; font-size: 14px !important; }
  .cat-panel__head { flex-direction: column !important; gap: 16px !important; align-items: flex-start !important; }

  /* CTA block */
  .cta-block { padding: 80px 18px !important; }
  .cta-block__title { font-size: 22px !important; line-height: 1.6 !important; }
  .cta-block__lead { font-size: 18px !important; }
  .cta-block__btns { flex-direction: column !important; gap: 10px !important; }
  .cta-block__btns .btn-cta { width: 100%; justify-content: center; }

  /* Cases */
  .case-card { flex: 0 0 320px !important; }
  .cases-slider { padding: 0 !important; gap: 0 !important; }
  .cases-arrow { width: 40px !important; height: 40px !important; }
  .cases-arrow:first-of-type { left: 8px !important; margin-left: 0 !important; }
  .cases-arrow:last-of-type { right: 8px !important; margin-right: 0 !important; }
  .cases-track { padding: 40px 0 !important; }

  /* Doctor */
  .doctor-portrait { aspect-ratio: 4/5 !important; }
  .doctor-name { font-size: 22px !important; }
  .doctor-bio { font-size: 18px !important; }
  .doctor-list li { font-size: 18px !important; gap: 8px !important; }

  /* Clinic */
  .clinic-photos { grid-template-columns: 1fr !important; }
  .clinic-photo--lg { grid-column: auto !important; }
  .clinic-photo { aspect-ratio: 16/10 !important; }
  .clinic-info h3 { font-size: 18px !important; }
  .clinic-info dl { font-size: 18px !important; }

  /* Reviews */
  .review-card { min-width: 280px !important; padding: 24px 20px !important; }

  /* Footer */
  .rege-footer__inner { grid-template-columns: 1fr !important; gap: 28px !important; padding: 48px 24px !important; }
  .rege-footer__inner h4 { font-size: 16px !important; margin-bottom: 12px !important; }
  .rege-footer__inner ul { font-size: 18px !important; }
  .rege-footer__bottom { flex-direction: column !important; gap: 8px !important; padding: 18px 24px !important; font-size: 14px !important; text-align: center; }
}

/* =========================================================
   Very small (–380)
========================================================= */
@media (max-width: 380px) {
  .fv-split__title, .fv-catch { font-size: 28px !important; }
  .section-head__en { font-size: 14px !important; }
  .section-head__jp { font-size: 19px !important; }
  .bs-track--loop, .bs-card--img { --bs-card-w: 220px !important; }
  .case-card { flex: 0 0 260px !important; }
  .cat-cards { grid-template-columns: 1fr !important; }
  .cat-tab__icon { width: 40px !important; height: 40px !important; }
  .cat-tab__icon svg, .cat-tab__icon img { width: 22px !important; height: 22px !important; }
  .cat-tab__en { font-size: 14px !important; }
  .cat-tab__jp { font-size: 16px !important; }
  .feature-card { padding: 22px 18px !important; }
  .feature-card__num { font-size: 44px !important; }
  .message-quote { font-size: 18px !important; text-align: left !important; padding-left: 0 !important; }
  .cta-block__title { font-size: 18px !important; }
}


/* === SP banner-slider--bare padding fix === */
@media (max-width: 1024px) {
  .banner-slider.banner-slider--bare {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }
}
@media (max-width: 767px) {
  .banner-slider.banner-slider--bare {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
  }
}


/* Footer padding reset on smaller screens */
@media (max-width: 1024px) {
  .rege-footer { padding-right: 32px !important; }
}
@media (max-width: 767px) {
  .rege-footer { padding-right: 18px !important; padding-left: 18px !important; }
}

/* SP: reduce decorative orb intensity for stability */
@media (max-width: 943px) {
  .message-bg { opacity: 0.35 !important; }
  .dx::before { opacity: 0.4 !important; filter: blur(80px) !important; }
  .dx::after { opacity: 0.35 !important; filter: blur(90px) !important; }
  .cta-bg { opacity: 0.4 !important; }
  .cta-block::before { opacity: 0.08 !important; }
  .cta-block::after { opacity: 0.06 !important; }
}

/* Hide menu count badge on tablet/SP */
@media (max-width: 1024px) {
  .cat-panel__count { display: none !important; }
}

/* Doctor section: no top padding & full width across all breakpoints */
@media (max-width: 1024px) {
  section.doctor { padding-top: 0 !important; padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 56px !important; max-width: none !important; margin: 0 !important; }
  section.doctor .doctor-grid { padding: 0 32px !important; }
  section.doctor .doctor-head { padding: 0 32px !important; }
}
@media (max-width: 767px) {
  section.doctor { padding-top: 0 !important; padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 56px !important; }
  section.doctor .doctor-grid { padding: 0 18px !important; }
  section.doctor .doctor-head { padding: 0 18px !important; }
}

/* Clinic section: no top padding & full width across all breakpoints */
@media (max-width: 1024px) {
  section.clinic { padding-top: 0 !important; padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 56px !important; max-width: none !important; margin: 0 !important; }
  section.clinic .clinic-grid { padding: 0 32px !important; }
  section.clinic .section-head { padding: 0 32px !important; }
}
@media (max-width: 767px) {
  section.clinic { padding-top: 0 !important; padding-left: 0 !important; padding-right: 0 !important; padding-bottom: 56px !important; }
  section.clinic .clinic-grid { padding: 0 18px !important; }
  section.clinic .section-head { padding: 0 18px !important; }
}

/* Category section: no top padding on tablet/SP */
@media (max-width: 1024px) {
  section.category { padding-top: 0 !important; padding-bottom: 56px !important; }
}
@media (max-width: 767px) {
  section.category { padding-top: 0 !important; padding-bottom: 56px !important; }
}

/* Mobile (~SP): align body text under titles to left */
@media (max-width: 540px) {
  .section-head__lead,
  .message-lead,
  .message-quote,
  .message-sign,
  .dx-title__lead,
  .cta-block__lead,
  .cat-panel__head p,
  .feature-card p,
  .recommend-card p,
  .promise-card p,
  .doctor-bio,
  .reason-card__desc,
  .recommend-intro__lead {
    text-align: left !important;
  }
}

/* Mobile: recommend section overrides */
@media (max-width: 540px) {
  /* "「自費診療って、私に必要？」と感じる方へ" centered (override generic left-align) */
  .recommend .section-head__lead { text-align: center !important; }
  /* Body text below stays left */
  .recommend-intro p { text-align: left !important; }
}

/* Message section: editorial layout responsive */
@media (max-width: 1024px) {
  .message-inner {
    grid-template-columns: 1fr !important;
    grid-template-areas:
      "head"
      "visual"
      "body" !important;
    gap: 28px !important;
  }
  .message-head { align-self: start !important; }
  .message-visual { aspect-ratio: auto !important; max-width: 100%; margin: 0 auto; }
}
@media (max-width: 767px) {
  .message-heading { font-size: 22px !important; line-height: 1.6 !important; margin-bottom: 0 !important; }
}
