/*
 * Home-page stylesheet entry point
 *
 * The base custom properties live in :root in hero-mockup.css because they are
 * shared with the site shell. Home-only rules are loaded here in cascade order.
 * Keep the imports in this order: it preserves the existing cascade exactly
 * while making each role and the few necessary final normalisations explicit.
 */

/* 1. Design tokens */
/* --type-*, --button-*, --ui-* and --radius-* are declared in hero-mockup.css. */

/* 7. Mobile media queries
 * Loaded first to retain the established component cascade below. */
/* mobile-home-final.css */
@media (max-width: 900px) {
  body[data-page="home"] .site-header {
    position: fixed !important;
    inset: 0 !important;
    z-index: 110 !important;
    width: 0 !important;
    min-height: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  body[data-page="home"] .site-header .brand-row {
    position: static !important;
    inset: auto !important;
    display: flex !important;
    width: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
  }

  body[data-page="home"].menu-open .site-header .mobile-menu-button {
    visibility: hidden;
    pointer-events: none;
  }

  body[data-page="home"] .site-header .mobile-menu-button {
    position: fixed !important;
    top: 12px !important;
    right: 16px !important;
    left: auto !important;
    margin: 0 !important;
    transform: none !important;
  }
}



/* 6. Section-specific styles */
/* home-scroll-widgets.css */
/* Vertically scrolling widgets for the home-page Relaxy and campaign areas. */
.relaxy-embed-shell {
  width: min(calc(100% - 40px), 550px);
  height: 800px;
  margin: 0 auto;
  overflow: hidden;
  border: 1px solid rgba(57, 62, 70, .11);
  border-radius: 12px;
  background: #fff;
  box-shadow: var(--shadow-soft);
}

.relaxy-embed {
  display: block;
  width: 100%;
  height: 800px;
  border: 0;
  border-radius: 12px;
  background: #fff;
}

body[data-page="home"] .relaxy-scroll-widget,
body[data-page="home"] .top-campaign-widget,
body[data-page="home"] .reviews-widget {
  width: min(100% - 40px, 720px);
  height: 448px;
  margin: 0 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(57, 62, 70, .11);
  border-radius: 20px;
  background: rgba(255, 255, 255, .78);
  box-shadow: 0 15px 34px rgba(42, 48, 57, .08), inset 0 1px 0 rgba(255, 255, 255, .82);
  scrollbar-width: thin;
  scrollbar-color: rgba(119, 133, 145, .45) transparent;
}

body[data-page="home"] .relaxy-official-label {
  width: min(100% - 40px, 720px);
  margin: -4px auto 12px;
  color: #7b838a;
  font-family: var(--font-card-ui);
  font-size: .62rem;
  letter-spacing: .14em;
  text-align: center;
}

body[data-page="home"] .relaxy-scroll-widget::-webkit-scrollbar,
body[data-page="home"] .top-campaign-widget::-webkit-scrollbar,
body[data-page="home"] .reviews-widget::-webkit-scrollbar {
  width: 5px;
}

body[data-page="home"] .relaxy-scroll-widget::-webkit-scrollbar-thumb,
body[data-page="home"] .top-campaign-widget::-webkit-scrollbar-thumb,
body[data-page="home"] .reviews-widget::-webkit-scrollbar-thumb {
  border-radius: 99px;
  background: rgba(119, 133, 145, .42);
}

body[data-page="home"] .relaxy-scroll-widget-inner {
  display: grid;
  gap: 12px;
  padding: 16px;
}

body[data-page="home"] .relaxy-timeline-post {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 11px;
  min-height: 118px;
  padding: 17px 16px;
  border: 1px solid rgba(75, 84, 94, .07);
  border-radius: 14px;
  background: rgba(255, 255, 255, .83);
  color: #30363a;
  text-decoration: none;
}

body[data-page="home"] .relaxy-timeline-post:hover {
  border-color: rgba(92, 113, 130, .16);
  background: rgba(255, 255, 255, .96);
}

body[data-page="home"] .relaxy-avatar {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 50%;
  color: rgba(45, 53, 60, .83);
  font-family: var(--font-display-en);
  font-size: .98rem;
}

body[data-page="home"] .relaxy-avatar--blue { background: rgba(183, 221, 244, .82); }
body[data-page="home"] .relaxy-avatar--pink { background: rgba(249, 202, 218, .76); }
body[data-page="home"] .relaxy-avatar--yellow { background: rgba(255, 229, 147, .73); }
body[data-page="home"] .relaxy-avatar--green { background: rgba(196, 237, 216, .82); }

body[data-page="home"] .relaxy-post-body { display:block; min-width:0; }

body[data-page="home"] .relaxy-post-head {
  display:flex;
  min-width:0;
  align-items:center;
  gap:6px;
}

body[data-page="home"] .relaxy-post-head strong {
  overflow:hidden;
  color:#384047;
  font-family: var(--font-card-ui);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.02em;
  text-overflow:ellipsis;
  white-space:nowrap;
}

body[data-page="home"] .relaxy-post-head small {
  flex:0 0 auto;
  padding:2px 5px;
  border-radius:99px;
  background:rgba(173,216,241,.34);
  color:#657788;
  font-size:.49rem;
  letter-spacing:.05em;
}

body[data-page="home"] .relaxy-post-head time {
  flex:0 0 auto;
  margin-left:auto;
  color: #8b949c;
  font-family: var(--font-card-ui);
  font-size:.56rem;
}

body[data-page="home"] .relaxy-post-text {
  display:block;
  margin-top:8px;
  color:#505a63;
  font-size:.74rem;
  line-height:1.65;
}

body[data-page="home"] .relaxy-post-actions {
  display:block;
  margin-top:10px;
  color:#99a1a8;
  font-size:.62rem;
  letter-spacing:.08em;
}

body[data-page="home"] .review-cta-section {
  padding: 10px 0 28px;
  background: linear-gradient(180deg, #fff 0%, #fbf8fb 100%);
}

body[data-page="home"] .reviews-widget-inner {
  display: grid;
  gap: 12px;
  padding: 16px;
}

body[data-page="home"] .review-timeline-post {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 11px;
  padding: 16px;
  border: 1px solid rgba(75, 84, 94, .07);
  border-radius: 14px;
  background: rgba(255,255,255,.84);
}

body[data-page="home"] .review-avatar {
  display:grid;
  width:36px;
  height:36px;
  overflow:hidden;
  place-items:center;
  border-radius:50%;
  color:#4c5760;
  font-family:var(--font-display-en);
  font-size:.9rem;
}

body[data-page="home"] .review-avatar--photo {
  border:1px solid rgba(255,255,255,.94);
  background:#f4f3f0;
  box-shadow:0 3px 10px rgba(42,48,57,.10);
}

body[data-page="home"] .review-avatar--photo img {
  width:100%;
  height:100%;
  object-fit:cover;
}

body[data-page="home"] .review-avatar--blue { background:rgba(183,221,244,.82); }
body[data-page="home"] .review-avatar--pink { background:rgba(249,202,218,.76); }
body[data-page="home"] .review-avatar--yellow { background:rgba(255,229,147,.73); }
body[data-page="home"] .review-post-body { min-width:0; }
body[data-page="home"] .review-post-head { display:flex; align-items:center; gap:6px; min-width:0; }
body[data-page="home"] .review-post-head strong { color:#384047; font-family:var(--font-card-ui); font-size:.74rem; font-weight:600; }
body[data-page="home"] .review-post-head time { margin-left:auto; color:#8b949c; font-size:.55rem; white-space:nowrap; }
body[data-page="home"] .review-stars { color:#dc9e57; font-size:.66rem; letter-spacing:.03em; }
body[data-page="home"] .review-post-text { display:block; margin-top:8px; color:#505a63; font-size:.73rem; line-height:1.65; }
body[data-page="home"] .review-widget-more { padding:12px 4px 3px; color:#5f6972; font-size:.72rem; letter-spacing:.06em; text-align:right; text-decoration:none; }

body[data-page="home"] .top-campaign-widget-inner {
  display: grid;
  gap: 14px;
  padding: 14px;
}

body[data-page="home"] .top-campaign-feature {
  width: 100%;
  min-height: 254px;
  margin: 0;
  border-radius: 14px;
}

body[data-page="home"] .top-campaign-feature-copy {
  min-height: 254px;
  padding: 28px;
}

body[data-page="home"] .top-campaign-feature--early img { object-position: center 20%; }
body[data-page="home"] .top-campaign-feature--advance img { object-position: center 22%; }

body[data-page="home"] .top-campaign-more {
  width: min(100% - 40px, 720px);
}

@media (max-width: 640px) {
  .relaxy-embed-shell {
    width: calc(100% - 32px);
  }

  body[data-page="home"] .relaxy-official-label {
    width: calc(100% - 32px);
    margin: -3px auto 10px;
    font-size: .56rem;
  }

  body[data-page="home"] .relaxy-scroll-widget,
  body[data-page="home"] .top-campaign-widget,
  body[data-page="home"] .reviews-widget {
    width: calc(100% - 32px);
    height: 372px;
    border-radius: 16px;
  }

  body[data-page="home"] .relaxy-scroll-widget-inner {
    gap: 10px;
    padding: 12px;
  }

  body[data-page="home"] .relaxy-timeline-post {
    min-height: 108px;
    padding: 15px 14px;
    border-radius: 12px;
  }

  body[data-page="home"] .relaxy-post-text { font-size: .68rem; line-height: 1.55; }

  body[data-page="home"] .review-cta-section { padding:6px 0 21px; }

  body[data-page="home"] .reviews-widget-inner { gap:10px; padding:12px; }
  body[data-page="home"] .review-timeline-post { padding:14px; border-radius:12px; }
  body[data-page="home"] .review-post-text { font-size:.68rem; line-height:1.55; }

  body[data-page="home"] .top-campaign-widget-inner { gap: 12px; padding: 12px; }

  body[data-page="home"] .top-campaign-feature,
  body[data-page="home"] .top-campaign-feature-copy {
    min-height: 238px;
  }

  body[data-page="home"] .top-campaign-feature-copy { padding: 23px; }
  body[data-page="home"] .top-campaign-feature-copy strong { font-size: 1.32rem; }
  body[data-page="home"] .top-campaign-feature-copy b { font-size: .69rem; }
  body[data-page="home"] .top-campaign-more { width: calc(100% - 32px); }
}



/* 2. Shared typography */
/* home-typography.css?v=20261017-v120 */
/* Home typography uses the shared roles declared in :root. No layout values live here. */
body[data-page="home"] {
  color: var(--type-body-color);
  font-family: var(--type-body-font);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line-height);
  letter-spacing: var(--type-body-letter-spacing);
}

body[data-page="home"] .section-heading-en {
  color: var(--type-section-en-color);
  font-family: var(--type-section-en-font);
  font-size: var(--type-section-en-size);
  line-height: var(--type-section-en-line-height);
  letter-spacing: var(--type-section-en-letter-spacing);
}

body[data-page="home"] .section-heading-ja {
  color: var(--type-section-ja-color);
  font-family: var(--type-section-ja-font);
  font-size: var(--type-section-ja-size);
  line-height: var(--type-section-ja-line-height);
  letter-spacing: var(--type-section-ja-letter-spacing);
}

/* Multi-line reading text: normal copy and compact card descriptions. */
body[data-page="home"] .recruit-copy p:last-of-type,
body[data-page="home"] .newface-note {
  font-family: var(--type-content-font);
  font-size: var(--type-content-size);
  line-height: var(--type-content-line-height);
  letter-spacing: var(--type-content-letter-spacing);
}

body[data-page="home"] .information-item p,
body[data-page="home"] .relaxy-post-text,
body[data-page="home"] .review-post-text,
body[data-page="home"] .top-campaign-feature-copy b,
body[data-page="home"] .promo-card-copy b {
  font-family: var(--type-card-copy-font);
  font-size: var(--type-card-copy-size);
  line-height: var(--type-card-copy-line-height);
  letter-spacing: var(--type-card-copy-letter-spacing);
}

body[data-page="home"] .relaxy-post-text,
body[data-page="home"] .review-post-text {
  color: var(--type-support-color);
  font-family: var(--type-support-font);
}

body[data-page="home"] .text-link,
body[data-page="home"] .detail-link,
body[data-page="home"] .review-widget-more {
  color: var(--type-link-color);
  font-family: var(--type-link-font);
  font-size: var(--type-link-size);
  line-height: var(--type-link-line-height);
  letter-spacing: var(--type-link-letter-spacing);
}

body[data-page="home"] .section-button,
body[data-page="home"] .ghost-button {
  color: var(--type-button-color);
  font-family: var(--type-button-font);
  font-size: var(--type-button-size);
  line-height: var(--type-button-line-height);
  letter-spacing: var(--type-button-letter-spacing);
}


/* home-heading-spacing.css */
/* Home section-heading rhythm only. Section content and component spacing are untouched. */
body[data-page="home"] .section-heading {
  gap: var(--home-heading-ornament-gap);
  margin-bottom: var(--home-heading-content-gap);
}

body[data-page="home"] .section-heading > div {
  padding-block: var(--home-heading-inner-padding-block-start) var(--home-heading-inner-padding-block-end);
}

body[data-page="home"] .section-heading-ja {
  margin-top: var(--home-heading-en-ja-gap);
}

body[data-page="home"] .heading-ornament {
  flex: 0 0 34px;
  width: 34px;
}

@media (max-width: 640px) {
  body[data-page="home"] .section-heading {
    gap: var(--home-heading-ornament-gap);
    margin-bottom: 30px;
    padding-inline: 8px;
  }

  body[data-page="home"] .section-heading > div {
    min-width: 0;
    width: auto;
    flex: 0 1 auto;
    padding-block: var(--home-heading-inner-padding-block-start) var(--home-heading-inner-padding-block-end);
  }

  body[data-page="home"] .heading-ornament {
    display: block;
    min-width: 18px;
    width: auto;
    max-width: 34px;
    flex: 1 1 18px;
  }

  body[data-page="home"] .heading-ornament::before {
    width: 6px;
    height: 6px;
  }
}



/* 3. Shared links */
/* home-list-links.css */
/* Home list-navigation links only. Cards and primary buttons are intentionally excluded. */
body[data-page="home"] .text-link.list-text-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 4px;
  border: 0;
  background: transparent;
  box-shadow: none;
  color: var(--type-link-color);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: .075em;
  text-decoration: none;
}

body[data-page="home"] .text-link.list-text-link::after {
  content: "";
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-left: 11px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform .22s ease;
}

body[data-page="home"] .text-link.list-text-link:hover,
body[data-page="home"] .text-link.list-text-link:focus-visible {
  color: #2c3542;
  transform: none;
}

body[data-page="home"] .text-link.list-text-link:hover::after,
body[data-page="home"] .text-link.list-text-link:focus-visible::after {
  transform: translateX(3px) rotate(45deg);
}


/* home-card-detail-links.css */
/* Low-priority detail cues inside home-page cards only. */
body[data-page="home"] .card-detail-link {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 44px;
  margin: 0;
  padding: 0 3px;
  border: 0;
  background: transparent;
  box-shadow: none;
  color: currentColor;
  font-family: var(--font-body);
  font-size: 12px;
  font-style: normal;
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: .07em;
  text-decoration: none;
}

body[data-page="home"] .card-detail-link::after {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 9px;
  border-top: 1.25px solid currentColor;
  border-right: 1.25px solid currentColor;
  transform: rotate(45deg);
  transition: transform .22s ease;
}

body[data-page="home"] .card-detail-link:hover::after,
body[data-page="home"] .card-detail-link:focus-visible::after {
  transform: translateX(2px) rotate(45deg);
}

/* Existing cards reveal this hint on hover/focus; retain that behavior while giving it the shared hit area. */
body[data-page="home"] .therapist-mini-detail-link.card-detail-link {
  max-height: 44px;
}



/* 4. Shared buttons */
/* home-button-system.css */
/* Top-page button roles only. Text-link and card-detail styles remain in their dedicated sheets. */
body[data-page="home"] .button-primary,
body[data-page="home"] .reservation-actions .button-primary,
body[data-page="home"] .mobile-fixed-nav .button-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--button-primary-height);
  border-radius: var(--button-radius-pill);
  font-family: var(--font-body);
  font-size: var(--button-font-size);
  font-weight: var(--button-font-weight);
  line-height: var(--button-line-height);
  letter-spacing: var(--button-letter-spacing);
  box-shadow: none;
}

body[data-page="home"] .reservation-actions .button-primary {
  padding-inline: 22px;
}

body[data-page="home"] .mobile-fixed-nav .button-primary {
  min-height: 48px;
  padding: 0 8px;
}

body[data-page="home"] .button-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--button-secondary-height);
  padding: 0 20px;
  border: 1px solid rgba(70, 77, 84, .18);
  border-radius: var(--button-radius-pill);
  background: rgba(255,255,255,.82);
  box-shadow: none;
  color: var(--type-button-color);
  font-family: var(--font-body);
  font-size: var(--button-font-size);
  font-weight: var(--button-font-weight);
  line-height: var(--button-line-height);
  letter-spacing: var(--button-letter-spacing);
}



/* 6. Section-specific refinements */
/* review-cta-refinement.css?v=20260911-section-title-v1 */
/* Review CTA refinement only: reduce ornament weight while preserving its existing content and placement. */
body[data-page="home"] .review-cta-section {
  padding: 34px 0 28px;
}

body[data-page="home"] .review-section-heading {
  margin-bottom: 32px;
}

body[data-page="home"] .home-reviews-panel {
  width: min(100% - 40px, 720px);
  margin: 0 auto 22px;
  overflow: hidden;
  border: 1px solid rgba(54,59,65,.08);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 10px 28px rgba(42,48,57,.05);
}

body[data-page="home"] .home-reviews-heading {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  padding:19px 20px 4px;
}

body[data-page="home"] .home-reviews-heading span { display:grid; gap:3px; }
body[data-page="home"] .home-reviews-heading b { color:#343b41; font-family:var(--font-display-en); font-size:1.1rem; font-weight:500; letter-spacing:.12em; }
body[data-page="home"] .home-reviews-heading small { color:#8b9298; font-size:.64rem; letter-spacing:.08em; }
body[data-page="home"] .home-reviews-heading > a { color:#6c747a; font-size:.66rem; letter-spacing:.05em; text-decoration:none; white-space:nowrap; }
body[data-page="home"] .review-post-meta { display:flex; align-items:center; gap:7px; margin-top:4px; }
body[data-page="home"] .review-post-meta a { color:#59656d; font-size:.67rem; font-weight:600; text-decoration:none; }
body[data-page="home"] .review-post-meta small { color:#8b949c; font-size:.58rem; }
body[data-page="home"] .review-post-text { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
body[data-page="home"] .home-reviews-empty { padding:28px 20px; color:#818990; font-size:.72rem; text-align:center; }
body[data-page="home"] .reviews-widget-inner { grid-template-columns:minmax(0,1fr); gap:10px; }
body[data-page="home"] .review-timeline-post { grid-template-columns:32px minmax(0,1fr); padding:14px; }
body[data-page="home"] .review-avatar { width:32px; height:32px; }
body[data-page="home"] .review-post-head { align-items:flex-start; flex-wrap:wrap; }
body[data-page="home"] .review-post-head time { width:100%; margin-left:0; }

@media (max-width: 640px) {
  body[data-page="home"] .review-cta-section {
    padding: 24px 0 21px;
  }

  body[data-page="home"] .review-section-heading {
    margin-bottom: 24px;
  }

  body[data-page="home"] .home-reviews-panel { width:calc(100% - 32px); margin-bottom:18px; border-radius:15px; }
  body[data-page="home"] .home-reviews-heading { padding:16px 16px 3px; }
  body[data-page="home"] .home-reviews-heading b { font-size:1rem; }
  body[data-page="home"] .home-reviews-heading > a { font-size:.6rem; }
  body[data-page="home"] .reviews-widget-inner { display:grid; overflow:visible; }
  body[data-page="home"] .review-timeline-post { width:100%; min-width:0; }
}



/* 7. Mobile media queries */
/* fixed-reservation-bar.css */
/* One shared bottom reservation component. Do not override this per page. */
:root {
  --bottom-nav-height: 74px;
  --bottom-nav-max-width: 720px;
  --bottom-nav-side-gap: 12px;
  --bottom-nav-bottom-gap: 8px;
  --bottom-nav-inner-padding: 4px;
  --bottom-nav-item-padding-x: 8px;
  --bottom-nav-item-gap: 3px;
  --bottom-nav-radius: 17px;
  --bottom-nav-item-radius: 12px;
  --bottom-nav-border: 1px solid rgba(45, 49, 51, .07);
  --bottom-nav-divider: rgba(45, 49, 51, .055);
  --bottom-nav-shadow: 0 7px 20px rgba(41, 45, 47, .075), inset 0 1px 0 rgba(255, 255, 255, .78);
  --bottom-nav-icon-size: 33.35px;
  --bottom-nav-icon-svg-size: 20.7px;
  --bottom-nav-label-size: .6555rem;
  --bottom-nav-safe-bottom: env(safe-area-inset-bottom, 0px);
  --bottom-nav-clearance: calc(var(--bottom-nav-height) + var(--bottom-nav-bottom-gap) + var(--bottom-nav-safe-bottom) + 16px);
}

.bottom-fixed-nav {
  display: none;
}

@media (max-width: 640px) {
  .bottom-fixed-nav {
    position: fixed;
    z-index: 1000;
    right: var(--bottom-nav-side-gap);
    bottom: calc(var(--bottom-nav-bottom-gap) + var(--bottom-nav-safe-bottom));
    left: var(--bottom-nav-side-gap);
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: auto;
    max-width: var(--bottom-nav-max-width);
    height: var(--bottom-nav-height);
    margin: 0 auto;
    padding: var(--bottom-nav-inner-padding);
    gap: 0;
    border: var(--bottom-nav-border);
    border-radius: var(--bottom-nav-radius);
    background: rgba(255, 255, 255, .83);
    box-shadow: var(--bottom-nav-shadow);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-sizing: border-box;
    isolation: isolate;
    pointer-events: auto;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    transition: opacity .2s ease, visibility 0s linear .2s;
  }

  .bottom-fixed-nav__item {
    position: relative;
    z-index: 1;
    display: flex;
    min-width: 0;
    min-height: calc(var(--bottom-nav-height) - (var(--bottom-nav-inner-padding) * 2));
    align-items: center;
    justify-content: center;
    gap: var(--bottom-nav-item-gap);
    padding: 0 var(--bottom-nav-item-padding-x);
    border: 0;
    border-radius: var(--bottom-nav-item-radius);
    background: transparent;
    color: #303537;
    font-family: var(--font-body, "Noto Sans JP", sans-serif);
    font-size: var(--bottom-nav-label-size);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: .025em;
    text-decoration: none;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
    overflow: hidden;
    will-change: transform;
    transition: background-color .12s ease, box-shadow .12s ease, transform .12s cubic-bezier(.2, .8, .2, 1);
  }

  .bottom-fixed-nav__item > * {
    pointer-events: none;
  }

  .bottom-fixed-nav__item + .bottom-fixed-nav__item {
    border-left: 1px solid var(--bottom-nav-divider);
  }

  .bottom-fixed-nav__icon {
    display: grid;
    width: var(--bottom-nav-icon-size);
    height: var(--bottom-nav-icon-size);
    flex: 0 0 var(--bottom-nav-icon-size);
    place-items: center;
    border-radius: 50%;
    transition: filter .12s ease, transform .12s cubic-bezier(.2, .8, .2, 1);
  }

  .bottom-fixed-nav__icon--phone { background: rgba(128, 204, 241, .32); }
  .bottom-fixed-nav__icon--line { background: rgba(126, 223, 175, .29); }
  .bottom-fixed-nav__icon--web { background: rgba(246, 148, 185, .28); }

  .bottom-fixed-nav__icon svg {
    width: var(--bottom-nav-icon-svg-size);
    height: var(--bottom-nav-icon-svg-size);
    fill: none;
    stroke: #303537;
    stroke-width: 2.1;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  .bottom-fixed-nav__label {
    display: block;
    min-width: 0;
    white-space: nowrap;
    text-align: left;
    transition: opacity .12s ease, transform .12s ease;
  }

  .bottom-fixed-nav__item:active,
  .bottom-fixed-nav__item.is-pressed {
    background: transparent;
    box-shadow: none;
    opacity: 1;
    transform: translateY(1px) scale(.98);
  }

  .bottom-fixed-nav__item:active .bottom-fixed-nav__icon,
  .bottom-fixed-nav__item.is-pressed .bottom-fixed-nav__icon {
    filter: none;
    transform: scale(.94);
  }

  .bottom-fixed-nav__item:active .bottom-fixed-nav__label,
  .bottom-fixed-nav__item.is-pressed .bottom-fixed-nav__label {
    opacity: 1;
    transform: none;
  }

  .bottom-fixed-nav__item:focus-visible {
    outline: 2px solid rgba(104, 160, 184, .55);
    outline-offset: -2px;
  }

  .bottom-fixed-nav__item[aria-disabled="true"] {
    pointer-events: none;
    opacity: .45;
  }

  .site-footer {
    padding-bottom: var(--bottom-nav-clearance);
  }
}

@media (hover: hover) and (pointer: fine) {
  .bottom-fixed-nav__item:hover .bottom-fixed-nav__icon {
    transform: scale(1.05);
  }
}

@media (max-width:359px) { :root { --bottom-nav-item-padding-x:3px; } }


/* home-tap-targets.css */
/* Touch-target sizing only. Visual design, labels, colors, and layout remain unchanged. */
@media (pointer: coarse) {
  body[data-page="home"] .text-link.list-text-link,
  body[data-page="home"] .card-detail-link {
    min-height: 44px;
  }

  body[data-page="home"] .promo-nav,
  body[data-page="home"] .newface-nav {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
  }

  body[data-page="home"] .site-header .mobile-menu-button,
  body[data-page="home"] .mobile-menu-button {
    min-width: 44px;
    min-height: 44px;
  }

  body[data-page="home"] .campaign-back-top,
  body[data-page="home"] .home-back-top {
    width: 44px;
    height: 44px;
  }

  body[data-page="home"] .hero-quick-actions a,
  body[data-page="home"] .mobile-fixed-nav .fixed-nav-item {
    min-height: 44px;
  }
}



/* 5. Shared cards and 8. required cascade normalisation */
/* home-surface-tokens.css */
/* Home surface tokens: borders, shadows, and subdued copy only. */
body[data-page="home"] :is(.relaxy-scroll-widget,.top-campaign-widget,.information-item,.price-visual-board,.access-map-card,.recruit-copy) {
  border-color: var(--ui-card-border);
}

body[data-page="home"] :is(
  .schedule-card-visual,
  .newface-visual,
  .top-campaign-feature,
  .information-thumb
) {
  box-shadow: var(--ui-shadow-photo-card);
}

body[data-page="home"] .top-campaign-widget,
body[data-page="home"] .relaxy-scroll-widget {
  box-shadow: var(--shadow-soft);
}

body[data-page="home"] :is(
  .button-secondary,
  .site-header .mobile-menu-button,
  .campaign-back-top,
  .home-back-top
) {
  border-color: var(--ui-button-border);
}

body[data-page="home"] .mobile-fixed-nav {
  border-color: var(--ui-card-border);
  box-shadow: var(--ui-shadow-cta);
}

body[data-page="home"] :is(
  .relaxy-post-actions,
  .review-post-actions,
  .information-copy small
) {
  color: var(--ui-text-subtle);
}


/* home-radius-tokens.css */
/* Home corner-radius scale only. */
body[data-page="home"] :is(
  .tag-row span,
  .information-meta b,
  .section-heading > div,
  .campaign-back-top,
  .home-back-top
) {
  border-radius: var(--radius-small);
}

body[data-page="home"] :is(
  .schedule-card,
  .therapist-mini-card,
  .relaxy-scroll-widget,
  .top-campaign-widget,
  .information-item,
  .relaxy-timeline-post,
  .review-timeline-post,
  .price-visual-board,
  .access-map-card,
  .recruit-copy,
  .site-header .mobile-menu-button
) {
  border-radius: var(--radius-medium);
}

body[data-page="home"] :is(.top-campaign-feature,.mobile-fixed-nav) {
  border-radius: var(--radius-large);
}

body[data-page="home"] :is(.button-primary,.button-secondary,.section-button,.ghost-button,.card-detail-link,.text-link.list-text-link) {
  border-radius: var(--radius-pill);
}



/* 8. Required section exception: schedule cards prioritise the photograph.
 * The status ticker is a separate band before the visual, never an image overlay.
 */
body[data-page="home"] .schedule-card {
  display: flex;
  flex-direction: column;
}

body[data-page="home"] .schedule-card > .schedule-status-marquee {
  position: relative;
  inset: auto;
  z-index: 1;
  display: block;
  flex: 0 0 28px;
  height: 28px;
  border-bottom: 1px solid rgba(232, 236, 242, .92);
}

body[data-page="home"] .schedule-card-visual {
  flex: 0 0 auto;
  aspect-ratio: 3 / 4;
}

body[data-page="home"] .schedule-card-body {
  flex: 1 1 auto;
}

@media (max-width: 640px) {
  body[data-page="home"] .schedule-card > .schedule-status-marquee {
    flex-basis: 26px;
    height: 26px;
  }

  body[data-page="home"] .schedule-card-visual {
    aspect-ratio: 2 / 3;
  }
}

/* 8. Required section exception: the recruit banner is the sole home-page CTA. */
body[data-page="home"] .recruit-section {
  padding-bottom: clamp(24px, 4vw, 32px);
}

body[data-page="home"] .recruit-hero-stage {
  width: min(100%, 860px);
}

body[data-page="home"] .recruit-hero-card {
  display: block;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body[data-page="home"] .recruit-banner-link {
  position: relative;
  display: grid;
  aspect-ratio: 16 / 10;
  padding: 8px;
  overflow: hidden;
  border-color: var(--ui-card-border);
  border-radius: var(--radius-large);
  background: linear-gradient(145deg, rgba(255,255,255,.98), rgba(247,249,252,.94));
  box-shadow: var(--ui-shadow-photo-card);
  text-decoration: none;
}

body[data-page="home"] .recruit-banner-link picture,
body[data-page="home"] .recruit-banner-link img {
  display: block;
  width: 100%;
  height: 100%;
}

body[data-page="home"] .recruit-banner-link img {
  object-fit: contain;
}

body[data-page="home"] .recruit-banner-more {
  position: absolute;
  right: 16px;
  bottom: 15px;
  z-index: 1;
  padding: 5px 8px;
  border: 1px solid rgba(255,255,255,.56);
  border-radius: var(--radius-pill);
  background: rgba(36, 40, 45, .42);
  color: #fff;
  font-family: var(--font-body);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .12em;
  line-height: 1;
}

body[data-page="home"] .recruit-banner-link:focus-visible {
  outline: 2px solid rgba(96, 137, 221, .72);
  outline-offset: 3px;
}

@media (max-width: 640px) {
  body[data-page="home"] .recruit-hero-stage {
    width: 100%;
  }

  body[data-page="home"] .recruit-banner-link {
    aspect-ratio: 16 / 10;
    padding: 7px;
  }

  body[data-page="home"] .recruit-banner-more {
    right: 13px;
    bottom: 12px;
    font-size: 9px;
  }
}
/* Desktop hero: hide the four-item reservation menu. */
@media (min-width: 641px) {
  body[data-page="home"] .hero-quick-actions {
    display: none;
  }
}

body[data-page="home"] .schedule-empty-state {
  grid-column: 1 / -1;
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 260px;
  overflow: hidden;
  border: 1px solid rgba(220, 213, 210, .72);
  border-radius: 26px;
  background:
    radial-gradient(circle at 16% 28%, rgba(247, 205, 218, .34), transparent 32%),
    radial-gradient(circle at 84% 68%, rgba(201, 228, 239, .38), transparent 34%),
    radial-gradient(circle at 54% 12%, rgba(249, 230, 165, .22), transparent 29%),
    rgba(255, 255, 255, .9);
  box-shadow: 0 18px 46px rgba(61, 69, 76, .07);
  text-align: center;
}

body[data-page="home"] .schedule-empty-state__content {
  display: grid;
  justify-items: center;
  gap: 12px;
  padding: 42px 24px;
}

body[data-page="home"] .schedule-empty-state__eyebrow {
  color: #c98ca0;
  font-family: "Cinzel", serif;
  font-size: .72rem;
  letter-spacing: .28em;
}

body[data-page="home"] .schedule-empty-state strong {
  color: #34373c;
  font-family: "Shippori Mincho", serif;
  font-size: clamp(1rem, 2vw, 1.3rem);
  font-weight: 500;
  line-height: 1.8;
}

body[data-page="home"] .schedule-empty-state__message {
  color: #7f858c;
  font-size: .84rem;
  letter-spacing: .06em;
}

@media (max-width: 640px) {
  body[data-page="home"] .schedule-empty-state {
    min-height: 230px;
    border-radius: 22px;
  }
}

