/* D3 header and its existing disclosures. Markup and navigation stay intact. */
html { scroll-padding-top:calc(var(--frame-height) + var(--frame-tabs-height) + 12px); }
#main,#top,.page > main > section[id],#hours,#first-visit,#directions { scroll-margin-top:var(--anchor-gap); }
#main:focus,#top:focus { outline:none; }
.skip-link { position:fixed; top:20px; left:20px; z-index:60; transform:translateY(-200%); padding:12px 20px; border-radius:var(--r-s); background:var(--navy); color:var(--surface); }
.skip-link:focus { transform:none; outline-color:var(--focus-ring-on-navy); }
.floating-header { position:fixed; top:0; left:0; right:0; z-index:30; background:var(--glass); color:var(--ink); -webkit-backdrop-filter:blur(20px) saturate(1.3); backdrop-filter:blur(20px) saturate(1.3); box-shadow:var(--shadow-header); }
.header-inner { max-width:var(--max); height:100%; margin-inline:auto; padding-inline:var(--header-gutter); display:flex; align-items:center; }
.header-info { height:var(--header-info); overflow:hidden; border-bottom:1px solid var(--line); color:var(--muted); font-size:var(--frame-text-13); transition:height .6s var(--header-ease),opacity .6s var(--header-ease),border-bottom-width .6s var(--header-ease); }
.header-info .header-inner { justify-content:space-between; gap:24px; }
.header-info-right { display:flex; align-items:center; gap:14px; white-space:nowrap; }
.header-info-right i { width:1px; height:11px; background:var(--line-2); }
.header-info b { color:var(--ink); font-weight:600; letter-spacing:.01em; }
.header-main { position:relative; height:var(--header-main); transition:height .6s var(--header-ease); }
.floating-header.is-scrolled .header-info { height:0; opacity:0; border-bottom-width:0; }
.floating-header.is-scrolled .header-main { height:var(--frame-header-compact); }
.header-row { gap:32px; }
.pill-brand { display:flex; flex:0 0 auto; align-items:center; gap:10px; color:var(--navy); }
.pill-brand img { width:28px; height:37px; object-fit:contain; flex-shrink:0; }
.pill-brand-name { font-size:var(--frame-text-21); font-weight:600; line-height:1.2; letter-spacing:-.04em; }
.pill-brand-name small { display:block; color:var(--muted); font-size:var(--frame-text-12); line-height:1.45; font-weight:400; letter-spacing:-.03em; white-space:nowrap; }
.desktop-nav { display:flex; flex:1; min-width:0; align-self:stretch; align-items:stretch; justify-content:center; gap:clamp(18px,3vw,52px); }
.nav-group { display:flex; align-items:stretch; min-width:0; }
.desktop-nav a { position:relative; display:flex; align-items:center; justify-content:center; min-height:var(--tap-min); white-space:nowrap; font-size:var(--frame-text-14); line-height:1.6; }
.desktop-nav .nav-trigger { z-index:1; height:100%; padding:0 4px; color:var(--ink); font-size:var(--frame-text-16); font-weight:500; letter-spacing:-.03em; }
.nav-highlight { position:absolute; left:0; bottom:-1px; height:2px; background:var(--navy); pointer-events:none; opacity:0; transition:transform .6s var(--header-ease),width .6s var(--header-ease),opacity .6s var(--header-ease); }
.header-tools { position:relative; flex:0 0 auto; }
.hours-button { display:inline-flex; align-items:center; gap:8px; height:var(--tap-min); padding:0 18px; border:1px solid var(--line-2); border-radius:var(--r-s); background:transparent; color:var(--navy); font-size:var(--frame-text-15); font-weight:600; white-space:nowrap; }
.hours-button svg { width:16px; height:16px; }
.hours-button[aria-expanded="true"] { background:var(--navy); border-color:var(--navy); color:var(--surface); }
.hours-panel { position:absolute; top:calc(100% + 14px); right:0; z-index:5; width:340px; padding:24px; border:1px solid var(--line); border-radius:var(--r-m); background:var(--surface); color:var(--ink); box-shadow:var(--shadow-panel); opacity:0; visibility:hidden; transform:translateY(-8px); transition:opacity .6s var(--header-ease),transform .6s var(--header-ease),visibility 0s .6s; }
.is-hours .hours-panel { opacity:1; visibility:visible; transform:none; transition-delay:0s; }
.hours-panel .nav-hours { font-size:var(--frame-text-14); }
.hours-panel .nav-hours th,.hours-panel .nav-hours td { padding-block:7px; }
.hours-panel .nav-hours caption { font-size:var(--frame-text-17); font-weight:500; color:var(--ink); }
.hours-panel .nav-hours-note { font-size:var(--frame-text-13); color:var(--muted); }
.hours-notice { padding:8px 12px; border-radius:var(--r-s); background:var(--tint); }
.hours-contact { display:grid; gap:2px; margin-top:16px; padding-top:16px; border-top:1px solid var(--line); font-size:var(--frame-text-13); color:var(--muted); }
.hours-contact b { font-size:var(--frame-text-20); color:var(--ink); font-weight:500; letter-spacing:.01em; }
.hours-more { display:inline-flex; align-items:center; gap:10px; margin-top:14px; color:var(--navy); font-size:var(--frame-text-14); font-weight:500; }
.desktop-nav .nav-panel { position:absolute; top:calc(100% + 1px); left:0; right:0; z-index:3; padding:28px max(var(--header-gutter),calc((100% - var(--max))/2 + var(--header-gutter))) 32px; color:var(--ink); transition:opacity .6s var(--header-ease); }
.nav-panel::before { content:''; position:absolute; left:0; right:0; top:-14px; height:14px; }
.desktop-nav .nav-panel-overview { justify-content:space-between; padding:8px 12px 16px; border-bottom:1px solid var(--line); color:var(--navy); }
.nav-panel-layout { display:grid; grid-template-columns:minmax(0,1fr) 260px; gap:24px; padding-top:16px; }
.nav-link-area { min-width:0; }
.nav-panel-items { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.desktop-nav .nav-panel-link { flex-direction:column; justify-content:flex-start; align-items:flex-start; min-height:76px; padding:12px; border-radius:var(--r-s); white-space:normal; }
.nav-panel-link span { font-size:var(--frame-text-15); font-weight:500; }
.nav-panel-link small { margin-top:4px; font-size:var(--frame-text-12); color:var(--muted); font-weight:400; }
.desktop-nav .nav-panel a[aria-current] { background:var(--tint); }
.nav-panel--parts .nav-link-area { display:grid; grid-template-columns:144px minmax(0,1fr); gap:16px; }
.nav-panel--parts .nav-panel-link { min-height:66px; padding:8px 10px; }
.nav-panel--parts .nav-panel-all { grid-column:1 / -1; min-height:var(--tap-min); flex-direction:row; align-items:center; gap:10px; }
.nav-panel-all small { margin-top:0; }
.nav-body { position:relative; align-self:start; width:144px; border-radius:var(--r-m); overflow:hidden; background:var(--band); }
.nav-body img { width:100%; height:auto; }
.nav-body-ring { position:absolute; width:20px; height:20px; border:3px solid var(--navy); border-radius:var(--frame-circle); transform:translate(-50%,-50%); opacity:0; transition:opacity .6s var(--header-ease); }
.nav-link-area:has([data-body-part="neck"]:is(:hover,:focus-visible)) [data-ring="neck"],
.nav-link-area:has([data-body-part="shoulder"]:is(:hover,:focus-visible)) [data-ring="shoulder"],
.nav-link-area:has([data-body-part="arm"]:is(:hover,:focus-visible)) [data-ring="arm"],
.nav-link-area:has([data-body-part="hand"]:is(:hover,:focus-visible)) [data-ring="hand"],
.nav-link-area:has([data-body-part="back"]:is(:hover,:focus-visible)) [data-ring="back"],
.nav-link-area:has([data-body-part="chest"]:is(:hover,:focus-visible)) [data-ring="chest"],
.nav-link-area:has([data-body-part="hip"]:is(:hover,:focus-visible)) [data-ring="hip"],
.nav-link-area:has([data-body-part="knee"]:is(:hover,:focus-visible)) [data-ring="knee"],
.nav-link-area:has([data-body-part="foot"]:is(:hover,:focus-visible)) [data-ring="foot"] { opacity:1; }
.nav-info { min-width:0; padding:16px 20px; border-radius:var(--r-m); background:var(--band); font-size:var(--frame-text-13); color:var(--muted); }
.nav-info-title { margin-bottom:10px; color:var(--ink); font-size:var(--frame-text-15); font-weight:500; }
.nav-info-title span { font-weight:400; font-size:var(--frame-text-13); }
.desktop-nav .nav-info-link { justify-content:space-between; gap:12px; margin-top:14px; padding:10px 12px; border-radius:var(--r-s); background:var(--surface); color:var(--navy); font-size:var(--frame-text-13); white-space:normal; text-align:left; }
.nav-flow { display:grid; gap:7px; margin:0; padding:0; list-style:none; counter-reset:flow; color:var(--ink); }
.nav-flow li { display:flex; align-items:center; gap:10px; min-height:30px; counter-increment:flow; }
.nav-flow li::before { content:counter(flow,decimal-leading-zero); color:var(--navy); font-size:var(--frame-text-12); }
.nav-doctor { width:96px; height:120px; margin-bottom:12px; border-radius:var(--r-s); object-fit:cover; }
.nav-hours { width:100%; border-collapse:collapse; color:var(--ink); font-size:var(--frame-text-13); font-variant-numeric:tabular-nums; }
.nav-hours caption { margin-bottom:8px; text-align:left; color:var(--navy); font-size:var(--frame-text-13); }
.nav-hours th,.nav-hours td { padding:5px 0; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; font-weight:400; }
.nav-hours td { text-align:right; }
.floating-header .nav-hours .visit-b-lunch th,.floating-header .nav-hours .visit-b-lunch td { color:var(--muted); font-weight:400; }
.nav-hours-note { margin-top:10px; font-size:var(--frame-text-12); }
.nav-stage { position:absolute; top:100%; left:0; right:0; z-index:2; border-bottom:1px solid var(--line); background:var(--glass); -webkit-backdrop-filter:blur(24px) saturate(1.4); backdrop-filter:blur(24px) saturate(1.4); pointer-events:none; opacity:0; transition:height .6s var(--header-ease),opacity .6s var(--header-ease); }
.floating-header.is-menu .nav-stage { opacity:1; }
.nav-panel.is-leaving,.nav-panel.is-entering { opacity:0; }
.nav-panel.is-leaving { pointer-events:none; }
.notice-chip { position:absolute; top:100%; left:0; right:0; z-index:-1; display:flex; align-items:center; gap:10px; width:calc(100% - 24px); max-width:700px; min-height:var(--tap-min); margin:8px auto 0; padding:2px 4px 2px 16px; border:1px solid var(--line); border-radius:var(--r-pill); background:var(--surface); color:var(--muted); font-size:var(--frame-text-12); transition:opacity .25s ease,transform .25s ease; }
.notice-chip.is-away { opacity:0; transform:translateY(-8px); pointer-events:none; visibility:hidden; transition:opacity .25s ease,transform .25s ease,visibility 0s .25s; }
.notice-chip p { min-width:0; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.notice-detail { display:flex; align-items:center; justify-content:center; min-width:var(--tap-min); min-height:var(--tap-min); flex-shrink:0; color:var(--navy); text-decoration:underline; text-underline-offset:4px; }
.notice-close { display:grid; place-items:center; flex:0 0 var(--tap-min); height:var(--tap-min); border-radius:var(--frame-circle); background:transparent; }
.cross { position:relative; display:block; width:12px; height:12px; }
.cross::before,.cross::after { content:''; position:absolute; left:0; top:5px; width:12px; height:1px; background:currentColor; transform:rotate(45deg); }
.cross::after { transform:rotate(-45deg); }
.menu-trigger { display:none; }
.menu-lines { display:flex; flex-direction:column; justify-content:center; gap:5px; width:16px; height:20px; }
.menu-lines::before,.menu-lines::after { content:''; display:block; width:16px; height:1px; background:currentColor; }
@media (hover:hover) {
  .desktop-nav .nav-trigger:hover { color:var(--navy); }
  .desktop-nav .nav-panel a:hover,.notice-close:hover { background:var(--tint); }
  .hours-button:hover { background:var(--navy); border-color:var(--navy); color:var(--surface); }
}
@media (860px < width <= 1100px) {
  .header-row { gap:10px; padding-inline:20px; }
  .desktop-nav { gap:7px; }
  .desktop-nav .nav-trigger { padding-inline:2px; }
  .header-info { font-size:var(--frame-text-11); }
  .header-info .header-inner { gap:12px; }
  .header-info-right { gap:8px; }
  .hours-button { padding-inline:10px; }
}
@media (max-width:860px) {
  .header-info,.header-tools,.desktop-nav,.nav-stage,.nav-highlight { display:none; }
  .header-main,.floating-header.is-scrolled .header-main { height:var(--frame-header-phone); }
  .header-row { justify-content:space-between; gap:12px; }
  .pill-brand img { width:26px; height:34px; }
  .pill-brand-name { font-size:var(--frame-text-19); }
  .pill-brand-name small { font-size:var(--frame-text-11); }
  .menu-trigger { display:flex; align-items:center; justify-content:center; gap:10px; min-height:var(--tap-min); padding:10px 16px; border:1px solid var(--line-2); border-radius:var(--r-s); background:var(--surface); color:var(--navy); font-size:var(--frame-text-13); }
  .notice-chip { max-width:560px; width:calc(100% - 16px); padding-left:14px; gap:8px; font-size:var(--frame-text-11); }
}
@media (prefers-reduced-motion:reduce) {
  .floating-header *,.mobile-dock *,.menu-sheet *,.s9d-footer * { animation:none !important; transition:none !important; }
}
