:root {
  --motion-instant: 80ms;
  --motion-press-in: var(--motion-instant);
  --motion-press-release: 140ms;
  --motion-card: 140ms;
  --motion-fast: 180ms;
  --motion-normal: 180ms;
  --motion-route: 220ms;
  --motion-page-enter: 1000ms;
  --page-enter-distance: 20px;
  --ease-page-enter: cubic-bezier(.25,.1,.25,1);
  --motion-menu-exit: 180ms;
  --motion-menu-curtain: 560ms;
  --motion-menu-content-delay: 210ms;
  --motion-menu-stagger: 18ms;
  --motion-notice-enter: 650ms;
  --motion-notice-fade: 500ms;
  --notice-enter-distance: 40px;
  --ease-notice-enter: cubic-bezier(.2,.85,.2,1);
  --ease-ui: cubic-bezier(.2,.8,.2,1);
  --ease-soft: ease-out;
  --ease-route: var(--ease-ui);
  --ease-menu-curtain: cubic-bezier(.76,0,.24,1);
  --ui-image-placeholder: #f4f2f1;
  --ui-feedback-ring: rgba(84,133,158,.7);
  --ui-press-scale: .985;
  --ui-navigation-scale: .99;
  --ui-feedback-shadow: inset 0 0 0 1px rgba(48,52,58,.2), 0 2px 8px rgba(48,52,58,.08);
}
/* One refresh gesture for all public pages; never move the page or fixed CTA. */
@media (any-pointer: coarse) {
  html.site-pull-refresh-enabled,
  html.site-pull-refresh-enabled body { overscroll-behavior-y: contain; }
}
/* Neutral initial state until the current admin data has been rendered. */
.data-state-loading-placeholder {
  min-height: 96px;
  border-radius: 18px;
  background:
    radial-gradient(circle at 28% 36%, rgba(238, 154, 185, .09), transparent 35%),
    radial-gradient(circle at 72% 64%, rgba(125, 193, 225, .1), transparent 38%),
    #fbfaf8;
}

[data-price-panel] > .data-state-loading-placeholder {
  width: min(100%, 980px);
  min-height: 0;
  margin: 0 auto;
  aspect-ratio: 2 / 3;
}

[data-recruit-hero] > .data-state-loading-placeholder,
[data-recruit-page] > .data-state-loading-placeholder {
  min-height: clamp(260px, 66vw, 560px);
}

.access-map-loading-placeholder {
  width: 100%;
  min-height: clamp(280px, 62vw, 520px);
  border-radius: 0;
}

.area-tabs:empty {
  min-height: 48px;
}

.access-map-unavailable {
  display: grid;
  min-height: clamp(280px, 62vw, 520px);
  place-items: center;
  color: rgba(52, 59, 68, .46);
  background:
    radial-gradient(circle at 28% 36%, rgba(238, 154, 185, .1), transparent 34%),
    radial-gradient(circle at 72% 64%, rgba(125, 193, 225, .11), transparent 38%),
    #fbfaf8;
  font-family: "Cormorant Garamond", serif;
  letter-spacing: .16em;
}

.site-shell-fallback .mobile-menu-button[aria-disabled="true"] {
  pointer-events: none;
}

html {
  background: var(--bg, #f7f7f6);
}

/* Reference entrance: one group fades up from 20px over 1s with CSS ease.
   Portrait/data preparation precedes this animation; native departure never waits. */
html[data-detail-motion="enter"] [data-page-enter] {
  animation: ui-page-arrival var(--motion-page-enter) var(--ease-page-enter) both;
}
html[data-detail-motion="pending"] [data-page-enter] {
  opacity:0;
  transform:translate3d(0,var(--page-enter-distance),0);
}
@keyframes ui-page-arrival {
  from { opacity: 0; transform: translate3d(0,var(--page-enter-distance),0); }
  to { opacity: 1; transform: translate3d(0,0,0); }
}

body {
  min-height: 100svh;
}


:where(a[href],button,[role="button"],[role="link"]) {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.is-ui-pressable {
  transform-origin:center;
  transition:transform var(--motion-instant) var(--ease-ui),box-shadow var(--motion-instant) var(--ease-soft);
}
.is-ui-pressed {
  transform:scale(var(--ui-press-scale));
  opacity:1;
  box-shadow:var(--ui-feedback-shadow);
  transition-duration:var(--motion-instant);
}
:where(a[href],button,[role="button"],[role="link"]):focus-visible {
  outline:2px solid var(--ui-feedback-ring);
  outline-offset:3px;
}
.is-ui-navigating {
  transform:scale(var(--ui-navigation-scale));
  opacity:1;
  box-shadow:var(--ui-feedback-shadow);
  pointer-events:none;
  transition-duration:var(--motion-card);
}
.mobile-menu-link[aria-current="page"] {
  background:rgba(126,175,196,.08);
  font-weight:600;
}
body.menu-selection-in-progress .mobile-menu-link[aria-current="page"]:not(.is-ui-pressed),
body.ui-route-pending .mobile-menu-link[aria-current="page"]:not(.is-ui-navigating) {
  background:transparent;
}
body.menu-open .mobile-menu-link.is-ui-pressed,
body.menu-open .mobile-menu-link.is-ui-navigating {
  opacity:1;
  transform:scale(var(--ui-press-scale));
  box-shadow:var(--ui-feedback-shadow);
  transition-delay:0s;
  transition-duration:var(--motion-press-in);
}
.mobile-menu-link:focus:not(:focus-visible) {outline:none;}
.bottom-fixed-nav {
  transition: opacity var(--motion-fast) var(--ease-soft),
              transform var(--motion-fast) var(--ease-ui),
              visibility 0s linear var(--motion-fast);
}

body.menu-open .bottom-fixed-nav {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(8px);
  transition-delay: 0s;
}


/* Opening keeps the approved curtain and stagger. Closing after selection is
   one short pass that runs in parallel with native navigation. */
@media (max-width: 900px) {
  body.menu-open.menu-exit .mobile-menu-panel {
    visibility: visible !important;
    pointer-events: none !important;
    opacity: 0 !important;
    transition: opacity var(--motion-menu-exit) var(--ease-soft), visibility 0s linear var(--motion-menu-exit) !important;
  }

  body.menu-open.menu-exit .mobile-menu-sheet {
    opacity: 0 !important;
    clip-path: inset(0 0 0 0) !important;
    transform: translate3d(0, -4px, 0) !important;
    transition: opacity var(--motion-menu-exit) var(--ease-soft), transform var(--motion-menu-exit) var(--ease-ui) !important;
  }

  body.menu-open.menu-exit .mobile-menu-backdrop,
  body.menu-open.menu-exit .mobile-menu-head,
  body.menu-open.menu-exit .mobile-menu-actions,
  body.menu-open.menu-exit .mobile-menu-note,
  body.menu-open.menu-exit .mobile-menu-link {
    opacity: 0 !important;
    transition-delay: 0s !important;
    transition-duration: var(--motion-menu-exit) !important;
  }
}


.site-load-status {
  position:relative;
  z-index:100;
  margin:20px;
  padding:16px;
  color:#404a50;
  background:#f2f6f7;
  border:1px solid #dce5e8;
  border-radius:12px;
  text-align:center;
}
body > .site-load-status {position:fixed;bottom:100px;left:0;right:0;}
.site-load-status button {padding:10px 18px;border:1px solid #b7cbd3;border-radius:8px;background:#fff;}
@media (hover:none), (pointer:coarse) {
  :where(a[href],button,[role="button"],[role="link"]):active {
    opacity:1;
    transform:scale(var(--ui-press-scale));
    box-shadow:var(--ui-feedback-shadow);
  }
  .schedule-card:hover:not(.is-ui-pressed):not(.is-ui-navigating),
  .therapist-mini-card:hover:not(.is-ui-pressed):not(.is-ui-navigating),
  .newface-slide:hover:not(.is-ui-pressed):not(.is-ui-navigating),
  .ranking-card:hover:not(.is-ui-pressed):not(.is-ui-navigating),
  .promo-card:hover:not(.is-ui-pressed):not(.is-ui-navigating),
  .information-card:hover:not(.is-ui-pressed):not(.is-ui-navigating) {transform:none;}
  .schedule-card:hover img,.therapist-mini-card:hover img,.newface-slide:hover img,.ranking-card:hover img {transform:none;}
}
@media (prefers-reduced-motion:reduce) {
  html[data-detail-motion] [data-page-enter] {animation:none;opacity:1;transform:none;}
  .is-ui-pressable {transition:box-shadow 80ms linear;}
  .is-ui-pressed,.is-ui-navigating,
  :where(a[href],button,[role="button"],[role="link"]):active,
  body.menu-open .mobile-menu-link.is-ui-pressed,
  body.menu-open .mobile-menu-link.is-ui-navigating {transform:none;}
  body.menu-exit .mobile-menu-panel,body.menu-exit .mobile-menu-sheet,body.menu-exit .mobile-menu-link {
    transition-duration:.01ms !important;transition-delay:0s !important;
  }
}
