/* Shared Japanese editorial composition. Artwork is independent, transparent,
   and never used as a rectangular background behind readable content. */
body.home-page, body.inner-page {
  background-color: #faf7ef;
  background-image: linear-gradient(#fffdf8c9, #fffdf8c9), url('washi-texture.png');
}

/* The hero now sits on the same page ground, without a separate paper panel. */
.hero {
  width: 100%; max-width: none; height: clamp(430px, 28vw, 540px);
  min-height: 0; margin: 0; background: transparent; overflow: clip;
}
.hero-visual {
  position: absolute; right: 0; top: 28px; width: 63%;
  aspect-ratio: 675 / 260; isolation: isolate;
  clip-path: polygon(4% 0, 100% 0, 100% 100%, 0 100%, 0 10%);
}
.hero .hero-photo {
  position: static; display: block; width: 100%; height: auto;
  max-width: 100%; object-fit: contain;
}
.hero .hero-copy {
  width: 37%; min-width: 0; height: auto; padding: 42px 20px 42px max(3vw, calc((100vw - 1320px) / 2));
  background: none;
}
.hero .hero-copy::before { content: none; }
.hero .hero-copy::after {
  left: -52px; bottom: -28px; width: 240px; height: 145px;
  background: url('title-ornament-wa-v2.webp') center / contain no-repeat;
  clip-path: none; opacity: .35; transform: scaleX(-1);
}
.hero h1 { font-size: clamp(25px, 2.22vw, 35px); line-height: 1.6; white-space: nowrap; }
.hero h1 .welcome { letter-spacing: .13em; }
.hero .hero-lead { font-size: clamp(13px, 1.1vw, 16px); line-height: 1.9; max-width: 390px; }
.hero .hero-stamp { right: 28px; bottom: 1px; }
.hero-ribbon { height: 100%; }
.hero-ribbon-copy { font-size: clamp(10px, 3.8889cqh, 18px); }
.hero-ribbon-english { font-size: clamp(7px, 3.0556cqh, 14px); }
.home-page .quick-actions { padding-top: 10px; }

/* One continuous ground across the title and body of every inner page. */
.inner-page #main { position: relative; isolation: isolate; overflow: clip; }
.inner-page #main::before, .inner-page #main::after {
  content: ''; position: absolute; z-index: -1; pointer-events: none;
  width: 430px; aspect-ratio: 2 / 3;
  background: url('page-ornament-flow-v1.webp') center / contain no-repeat; opacity: .18;
}
.inner-page #main::before { left: -285px; top: 340px; }
.inner-page #main::after { right: -255px; bottom: 60px; transform: scaleX(-1); }
.inner-page .container { max-width: 1180px; }
.inner-page .header-inner, .inner-page .footer-main { max-width: 1320px; }
.page-hero { padding: 24px 0 0; background: none; border: 0; }
.page-hero::after { content: none; }
.page-hero .container { position: relative; padding-bottom: 40px; border-bottom: 1px solid #b5832766; }
.page-hero .breadcrumb { color: #746754; font-size: 12px; margin-bottom: 34px; }
.page-title-group { position: relative; z-index: 1; min-height: 96px; padding-left: 24px; border-left: 3px solid var(--red); }
.page-title-group h1 { font-size: 40px; font-weight: 500; letter-spacing: .13em; padding-top: 3px; }
.page-title-group .eyebrow { margin-top: 14px; font: 11px/1.5 Georgia,serif; letter-spacing: .24em; color: #8b6935; }
.page-title-art { position: absolute; right: 4px; bottom: 5px; width: 360px; height: 240px; object-fit: contain; opacity: .87; pointer-events: none; }
.page-main { padding: 46px 0 70px; }
.page-main::before { content: none; }
.inner-page .paper-panel { background: none; border: 0; border-radius: 0; padding: 0; }
.inner-page .page-block + .page-block { margin-top: 54px; }
.inner-page .section-heading { padding-bottom: 14px; margin-bottom: 28px; background: none; border-bottom-color: #b5832780; }
.inner-page .section-heading h2 { font-size: 28px; font-weight: 500; }
.inner-page .button-line { min-height: 48px; border: 0; border-bottom: 1px solid var(--gold); background: transparent; padding: 12px 2px; font-family: var(--serif); font-size: 17px; }
.inner-page .button-line:hover { color: #761d18; background: #b5832708; }

/* Clinic: an editorial profile and four open illustrated entries. */
.profile-block { grid-template-columns: 260px minmax(0,1fr); gap: 68px; max-width: 1000px; margin-inline: auto; }
.profile-block .quarter-seal {
  position: relative; display: block; width: 260px; max-width: 100%; aspect-ratio: 1241 / 1267;
  margin: 0; border: 0; border-radius: 0; background: url('anniversary-seal-transparent-v1.webp') center / contain no-repeat; font-family: var(--serif); font-size: 28px;
}
.profile-content h2 { font-size: 28px; line-height: 1.65; font-weight: 500; padding-bottom: 18px; margin-bottom: 20px; border-bottom: 1px solid #b5832766; }
.profile-content dl { grid-template-columns: 110px minmax(0,1fr); gap: 13px 20px; line-height: 1.9; }
.profile-content dt { font-size: 13px; }
.profile-content dd { font-size: 15px; }
.clinic-feature-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; }
.clinic-feature { grid-template-columns: 126px minmax(0,1fr); gap: 24px; align-items: start; background: none; border: 0; border-bottom: 1px solid #b5832740; padding: 30px 0 34px; }
.clinic-feature img { width: 126px; height: 178px; object-fit: contain; align-self: center; }
.clinic-feature .feature-number { font-size: 14px; letter-spacing: .15em; margin-bottom: 7px; }
.clinic-feature h3 { font-size: 22px; font-weight: 500; line-height: 1.65; }
.clinic-feature p { font-size: 14px; line-height: 2; }
.inner-page .care-note { padding: 25px 0; border-block: 1px solid #b5832766; }
.care-note h2 { font-size: 24px; font-weight: 500; }
.care-note p { font-family: var(--serif); font-size: 22px; letter-spacing: .08em; }

/* Medical guide: practical table, generous rules, no numbered card wall. */
.inner-page .schedule-table { background: #fffdf9a6; }
.schedule-table caption { font-size: 28px; font-weight: 500; padding-bottom: 16px; border-bottom: 1px solid #b5832780; }
.schedule-table thead { background: #f0e8d8; }
.schedule-table th, .schedule-table td { border-color: #d5c6aa; padding: 18px 5px; }
.schedule-table tbody td { color: #a0392b; }
.schedule-meta { gap: 40px; margin-top: 26px; }
.schedule-meta h3 { font: 500 17px/1.7 var(--serif); }
.schedule-meta p { font-size: 17px; }
.start-note { font-size: 14px; line-height: 2; }
.patient-grid { grid-template-columns: 1fr 1fr; gap: 0 48px; }
.patient-card { position: relative; background: none; border: 0; border-bottom: 1px solid #b5832740; padding: 28px 0 28px 66px; min-height: 170px; }
.patient-card .patient-number { position: absolute; top: 30px; left: 4px; width: 42px; height: 42px; object-fit: contain; margin: 0; }
.patient-card h3 { font-size: 23px; font-weight: 500; }
.patient-card p { line-height: 1.95; }
.patient-card a { font-size: 13px; color: var(--red); }

/* Access: address and image sit on the paper, not within nested UI cards. */
.inner-page .access-layout { grid-template-columns: minmax(0,.72fr) minmax(0,1.28fr); gap: 56px; }
.access-data h2 { font-size: 25px; font-weight: 500; line-height: 1.6; padding-bottom: 20px; border-bottom: 1px solid #b5832766; }
.access-data dt { color: #876532; margin-top: 22px; }
.access-data dd { font-size: 15px; line-height: 1.9; }
.inner-page .parking-box { padding: 26px 0; border-block: 1px solid #b5832766; }
.parking-box h2, .landmark h2 { font-size: 25px; font-weight: 500; }
.parking-icon { border-radius: 0; border-width: 1px; }
.inner-page .landmark { gap: 40px; }
.landmark img { object-fit: contain; border: 0; }
.landmark p { font-size: 14px; line-height: 2; }

/* Generated map artwork + independently typeset exact labels. */
.map-card { border: 0; border-radius: 0; background: none; box-shadow: none; }
.map-card-heading { padding: 0 0 12px; gap: 14px; border-bottom: 1px solid #b5832780; }
.map-card-heading h3 { font: 500 22px/1.6 var(--serif); }
.map-eyebrow { color: #886932; font: 10px/1.5 Georgia,serif; letter-spacing: .16em; }
.map-illustration { display: block; border: 0; background: none; position: relative; margin-top: 16px; }
.wa-map { position: relative; container-type: inline-size; display: block; aspect-ratio: 3 / 2; }
.wa-map > img { width: 100%; height: auto; display: block; }
.wa-map picture, .wa-map picture img { width: 100%; height: auto; display: block; }
.map-label { position: absolute; display: block; text-align: center; font: 500 clamp(10px,2.6cqw,19px)/1.5 var(--serif); white-space: nowrap; color: #493e2f; }
.map-label--station { left: 15%; top: 18%; font-size: clamp(12px,3.7cqw,25px); letter-spacing: .1em; }
.map-label--exit { left: 16%; top: 28%; font: 500 clamp(10px,2.2cqw,16px)/1.5 var(--sans); }
.map-label--line { left: 3.5%; top: 54%; writing-mode: vertical-rl; letter-spacing: .08em; font-size: clamp(9px,2cqw,14px); }
.map-label--second { left: 64%; top: 25%; transform: translateX(-50%); font-size: clamp(10px,2.6cqw,18px); }
.map-label--second::before { content: ''; position: absolute; right: 92%; top: 80%; width: 14cqw; height: 1px; background: #a18a61; transform-origin: right; transform: rotate(-12deg); }
.map-label--street { left: 44%; top: 48%; transform: translate(-50%,-50%); font-size: clamp(9px,2.3cqw,17px); letter-spacing: .035em; }
.map-label--city { left: 80.8%; top: 18%; transform: translateX(-50%); writing-mode: vertical-rl; letter-spacing: .08em; font-size: clamp(10px,2.3cqw,16px); }
.map-label--mall { left: 90.3%; top: 69%; transform: translateX(-50%); font-size: clamp(10px,2.5cqw,18px); }
.map-label--clinic { left: 44.8%; top: 69%; transform: translateX(-50%); font-size: clamp(12px,3.4cqw,24px); font-weight: 600; color: #9e3025; }
.map-label--clinic small { display: block; margin-top: 4px; font: 400 clamp(9px,2.2cqw,15px)/1.5 var(--sans); color: #584c3a; }
.map-card-footer { padding: 16px 0 0; }
.map-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.map-action { border-radius: 0; border: 1px solid #a43828; background: #a43828 url('hero-red-pattern-v4.webp') left center / cover; color: white; font: 500 15px/1.6 var(--serif); min-height: 48px; padding: 10px 12px; }
.map-action:hover { background-color: #822820; filter: brightness(.92); }
.map-help { margin-top: 14px; color: #796e5d; line-height: 1.8; }

@media (max-width: 520px) {
  .wa-map { aspect-ratio: 1122 / 1402; }
  .map-label--station { left: 19%; top: 18%; font-size: clamp(16px,4.7cqw,21px); }
  .map-label--exit { left: 21%; top: 25%; font-size: 12px; }
  .map-label--line { left: 4%; top: 52%; font-size: 12px; }
  .map-label--second { left: 66%; top: 24%; font-size: clamp(11px,3cqw,15px); }
  .map-label--second::before { top: 65%; right: 83%; width: 16cqw; transform: rotate(-27deg); }
  .map-label--street { left: 48%; top: 43%; font-size: clamp(10px,2.9cqw,14px); letter-spacing: 0; }
  .map-label--city { left: 82.5%; top: 20%; font-size: 12px; letter-spacing: .06em; }
  .map-label--mall { left: 91%; top: 65%; font-size: 12px; }
  .map-label--clinic { left: 47%; top: 61%; font-size: clamp(17px,5.2cqw,23px); line-height: 1.6; }
  .map-label--clinic > span { display: block; }
  .map-label--clinic small { font-size: 10px; margin-top: 9px; }
}

@media (min-width: 1800px) {
  .hero { height: 560px; }
  .hero-visual { width: 1200px; }
  .hero .hero-copy { width: calc(100% - 1200px); padding-left: max(40px,calc((100vw - 1600px)/2)); padding-right: 30px; }
}
@media (min-width: 701px) and (max-width: 1150px) {
  .hero { height: 400px; }
  .hero-visual { width: 61%; top: 45px; }
  .hero .hero-copy { width: 39%; padding: 28px 15px 42px 4%; }
  .hero h1 { font-size: clamp(20px,2.2vw,25px); }
  .hero .hero-lead { font-size: 12px; line-height: 1.85; }
  .hero .hero-copy::after { width: 170px; }
  .hero-ribbon-copy { font-size: clamp(8px,3.8cqh,13px); }
  .hero-ribbon-english { font-size: clamp(6px,3cqh,10px); }
  .hero .hero-stamp { right: 18px; }
}
@media (max-width: 900px) {
  .page-title-art { width: 280px; height: 187px; }
  .page-title-group h1 { font-size: 33px; }
  .page-main { padding-top: 34px; }
  .profile-block { grid-template-columns: 210px minmax(0,1fr); gap: 32px; }
  .profile-content h2 { font-size: 24px; }
  .clinic-feature-list { grid-template-columns: 1fr; }
  .clinic-feature { grid-template-columns: 126px minmax(0,1fr); gap: 30px; }
  .inner-page .access-layout { grid-template-columns: 1fr; gap: 36px; }
  .access-data dt { margin-top: 0; }
}
@media (max-width: 700px) {
  .hero { height: auto; min-height: 0; padding-top: 14px; overflow: clip; }
  .hero-visual { position: relative; width: 100%; max-width: none; top: auto; right: auto; }
  .hero .hero-copy { width: 100%; padding: 24px 26px 45px; }
  .hero h1 { font-size: clamp(22px,5.7vw,30px); line-height: 1.65; white-space: normal; }
  .hero .hero-lead { font-size: 14px; line-height: 1.9; max-width: 540px; padding-right: 3px; }
  .hero .hero-stamp { right: 25px; bottom: 6px; }
  .hero .hero-copy::after { width: 155px; height: 100px; bottom: -13px; left: -30px; opacity: .28; }
  .hero-ribbon { width: 32%; height: 100%; aspect-ratio: auto; }
  .hero-ribbon-copy { font-size: clamp(7px,5.6cqh,13px); }
  .hero-ribbon-english { display: none; }
  .home-page .quick-actions { padding-top: 16px; }
  .inner-page .container { width: calc(100% - 40px); }
  .inner-page .header-inner { width: calc(100% - 14px); }
  .page-hero { padding-top: 18px; }
  .page-hero .container { padding-bottom: 26px; }
  .page-hero .breadcrumb { font-size: 10px; margin-bottom: 28px; }
  .page-title-group { min-height: 82px; padding-left: 15px; }
  .page-title-group h1 { font-size: clamp(24px,6vw,32px); letter-spacing: .05em; }
  .page-title-group .eyebrow { font-size: 9px; letter-spacing: .18em; margin-top: 10px; }
  .page-title-art { width: 170px; height: 113px; right: -20px; bottom: -4px; opacity: .42; }
  .page-main { padding: 30px 0 46px; }
  .inner-page #main::before { width: 300px; left: -235px; top: 320px; }
  .inner-page #main::after { width: 300px; right: -240px; opacity: .13; }
  .inner-page .page-block + .page-block { margin-top: 38px; }
  .inner-page .section-heading { margin-bottom: 12px; }
  .inner-page .section-heading h2 { font-size: 24px; }
  .profile-block { grid-template-columns: 1fr; gap: 18px; }
  .profile-block .quarter-seal { width: 190px; font-size: 23px; margin-inline: auto; }
  .profile-content h2 { font-size: clamp(20px,5.3vw,24px); padding-bottom: 14px; margin-bottom: 16px; }
  .profile-content dl { grid-template-columns: 85px minmax(0,1fr); gap: 12px; }
  .profile-content dt { font-size: 12px; }
  .profile-content dd { font-size: 13px; }
  .clinic-feature { grid-template-columns: 78px minmax(0,1fr); gap: 19px; padding: 23px 0; }
  .clinic-feature img { width: 78px; height: 112px; }
  .clinic-feature h3 { font-size: 19px; line-height: 1.6; }
  .clinic-feature p { font-size: 13px; line-height: 1.9; }
  .inner-page .care-note { padding-block: 20px; }
  .care-note h2 { font-size: 22px; }
  .care-note p { font-size: 20px; }
  .inner-page .button-line { font-size: 15px; }
  .schedule-table caption { font-size: 25px; }
  .schedule-table th, .schedule-table td { padding: 14px 1px; font-size: 14px; }
  .schedule-table tbody th { font-size: 10px; }
  .schedule-table thead th { font-size: 11px; }
  .schedule-table small { font-size: 8px; }
  .schedule-meta { gap: 20px; }
  .schedule-meta p { font-size: 16px; }
  .start-note { font-size: 12px; }
  .patient-grid { grid-template-columns: 1fr; gap: 0; }
  .patient-card { display: block; padding: 23px 0 23px 57px; min-height: 0; }
  .patient-card .patient-number { top: 26px; width: 35px; height: 35px; }
  .patient-card h3 { font-size: 21px; }
  .patient-card p { font-size: 13px; }
  .access-data h2 { font-size: 23px; }
  .access-data dt { margin-top: 12px; }
  .access-data dd { font-size: 14px; }
  .inner-page .access-layout { padding: 0; }
  .inner-page .parking-box { padding-block: 24px; }
  .parking-box h2, .landmark h2 { font-size: 22px; }
  .parking-box p { font-size: 13px; line-height: 2; }
  .inner-page .landmark { gap: 22px; }
  .map-card-heading h3 { font-size: 21px; }
  .map-card-footer { padding: 12px 0 0; }
  .map-actions { grid-template-columns: 1fr; gap: 8px; }
  .map-action { font-size: 14px; min-height: 48px; }
  .map-help { font-size: 10px; }
}
