:root {
  --serif: 'Noto Sans JP', sans-serif;
  --sans: 'Noto Sans JP', sans-serif;
  --ink-rich: #173c38;
  --paper-rich: #f9f6ef;
  --line-rich: color-mix(in srgb, var(--green) 19%, transparent);
  --shadow-soft: 0 24px 70px rgba(19, 59, 54, .13);
  --text-xs: .78rem;
  --text-sm: .9rem;
  --text-body: 1rem;
  --text-lead: clamp(1.08rem, 1.3vw, 1.28rem);
  --text-heading: clamp(2rem, 3.5vw, 3.55rem);
  --text-display: clamp(2.7rem, 5.2vw, 5.7rem);
}

html { scroll-behavior: smooth; }

body {
  font-family: var(--sans);
  font-size: var(--text-body);
  font-kerning: normal;
  font-feature-settings: 'palt' 1;
  letter-spacing: .025em;
  background: var(--paper-rich);
}

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .42;
  background-image: radial-gradient(circle at 10% 0%, rgba(195, 132, 55, .065), transparent 28%), radial-gradient(circle at 92% 34%, rgba(31, 91, 83, .055), transparent 26%);
}

p, li, dd { line-height: 1.95; }
p { max-width: 68ch; }

h1, h2, h3, .brand strong, blockquote {
  font-family: var(--serif);
  font-weight: 600;
  font-feature-settings: 'palt' 1;
  text-wrap: balance;
}

h1 { font-size: var(--text-display); line-height: 1.42; letter-spacing: .065em; }
h2 { font-size: var(--text-heading); line-height: 1.48; letter-spacing: .055em; }
h3 { letter-spacing: .04em; }

.site-header {
  border-top: 3px solid var(--orange);
  border-bottom-color: var(--line-rich);
  background: color-mix(in srgb, var(--paper-rich) 94%, transparent);
  box-shadow: 0 10px 34px rgba(23, 60, 56, .055);
}

.header-inner { min-height: 88px; }
.brand { gap: 13px; }
.brand-mark { filter: drop-shadow(0 5px 8px rgba(30, 82, 74, .16)); }
.brand strong { font-size: 1.08rem; letter-spacing: .075em; }
.brand small { margin-top: .18rem; font-size: .68rem; letter-spacing: .13em; }

.desktop-nav a {
  font-size: var(--text-sm);
  font-weight: 500;
  letter-spacing: .045em;
}
.desktop-nav a::after { height: 1px; bottom: -11px; }

.button {
  min-height: 48px;
  border-radius: 3px;
  font-weight: 700;
  letter-spacing: .045em;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
}
.button--accent { box-shadow: 0 12px 28px rgba(189, 104, 45, .2), inset 0 0 0 1px rgba(255,255,255,.16); }
.button:hover { transform: translateY(-2px); }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  font-family: var(--sans);
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: .18em;
}
.eyebrow::before { content: ''; width: 1.8rem; height: 1px; background: currentColor; opacity: .58; }

.home-hero { min-height: 760px; }
.hero-copy { padding-block: clamp(5rem, 9vw, 9rem); }
.hero-copy h1 { margin-top: 1.4rem; color: var(--ink-rich); }
.lead { font-size: var(--text-lead); line-height: 2; letter-spacing: .035em; }
.hero-image { isolation: isolate; }
.hero-image::before {
  content: '';
  position: absolute;
  inset: 2.2rem 0 2.2rem -2.2rem;
  z-index: 1;
  border: 1px solid rgba(247, 241, 228, .72);
  pointer-events: none;
}
.hero-image::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(90deg, rgba(249,246,239,.15), transparent 25%), linear-gradient(0deg, rgba(12,48,44,.12), transparent 36%);
  pointer-events: none;
}
.hero-image img { filter: saturate(.88) contrast(1.035); }

.status-panel {
  border-radius: 2px;
  border-color: var(--line-rich);
  background: rgba(255, 253, 248, .78);
  box-shadow: 0 14px 38px rgba(31, 76, 69, .07);
}
.trust-row { font-size: var(--text-sm); letter-spacing: .03em; }

.section { padding-block: clamp(5.5rem, 9vw, 9.5rem); }
.section--tint { background-color: #f1eee5; background-image: linear-gradient(135deg, rgba(255,255,255,.4), transparent 48%); }
.section-heading { margin-bottom: clamp(2.5rem, 4vw, 4.2rem); }
.section-heading h2 { color: var(--ink-rich); }
.section-heading > p:last-child { font-size: var(--text-lead); }

.split-feature > img,
.rehab-feature > img,
.letter-grid > img,
.rehab-detail > img,
.prep-grid > img,
.page-hero img {
  border-radius: 2px;
  border: 9px solid rgba(255, 253, 248, .92);
  outline: 1px solid var(--line-rich);
  box-shadow: var(--shadow-soft);
  filter: saturate(.87) contrast(1.025);
}

.service-editorial article { position: relative; border-top-color: var(--line-rich); }
.service-editorial article > span,
.values article > b {
  font-family: var(--serif);
  font-size: clamp(2.5rem, 4vw, 4.8rem);
  font-weight: 500;
  line-height: 1;
  color: color-mix(in srgb, var(--green) 20%, transparent);
}
.service-editorial h3 { font-size: clamp(1.35rem, 2vw, 1.85rem); }

.principles li { border-bottom-color: var(--line-rich); }
.principles strong, .access-list strong, .steps strong { letter-spacing: .04em; }
.text-link { font-weight: 700; letter-spacing: .06em; text-underline-offset: .45em; }

.section--dark {
  background-color: #153d38;
  background-image: radial-gradient(circle at 85% 15%, rgba(204, 142, 70, .13), transparent 34%);
}
.section--dark h2 { color: #faf4e8; }
.closing-cta { border-top: 1px solid rgba(255,255,255,.12); }

.director-strip > img { box-shadow: var(--shadow-soft); filter: saturate(.82) contrast(1.03); }
.credential { font-size: var(--text-sm); letter-spacing: .12em; }
blockquote { font-size: clamp(1.22rem, 2vw, 1.65rem); line-height: 1.85; letter-spacing: .045em; }

.hours-card, .info-card, .notice, .temporary {
  border-radius: 2px;
  border-color: var(--line-rich);
  box-shadow: 0 18px 48px rgba(25, 68, 62, .07);
}

.page-hero { background: linear-gradient(135deg, #f4f1e9 0%, #fbf8f1 58%, #eef2ec 100%); }
.page-hero-grid { padding-block: clamp(4.5rem, 8vw, 7.5rem); }
.page-hero h1 { color: var(--ink-rich); }

.editorial-list article { border-top-color: var(--line-rich); }
.editorial-list article h2 { font-size: clamp(2rem, 3.5vw, 3.4rem); }
.equipment-art, .line-art { border-radius: 2px; box-shadow: var(--shadow-soft); }

.steps b, .visit-flow b {
  font-family: var(--serif);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

table { font-variant-numeric: tabular-nums; }
details { border-bottom-color: var(--line-rich); }
summary { font-family: var(--serif); font-weight: 600; letter-spacing: .035em; }

.site-footer { background: #102f2c; }
.site-footer .brand strong { color: #faf4e8; }
.demo-note { font-size: var(--text-xs); letter-spacing: .06em; }

@media (max-width: 820px) {
  h1 { font-size: clamp(2.35rem, 10.5vw, 3.75rem); line-height: 1.5; letter-spacing: .045em; }
  h2 { font-size: clamp(1.8rem, 8vw, 2.65rem); }
  .header-inner { min-height: 74px; }
  .brand strong { font-size: .95rem; }
  .home-hero { min-height: auto; }
  .hero-copy { padding-block: 4.5rem 3.75rem; }
  .hero-image::before { inset: 1rem; }
  .section { padding-block: 5.25rem; }
  .split-feature > img, .rehab-feature > img, .letter-grid > img, .rehab-detail > img, .prep-grid > img, .page-hero img { border-width: 6px; }
  .mobile-actions .button { border-radius: 2px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .button { transition: none; }
}
