@font-face { font-family: Nunito; src: url("fonts/nunito-latin-variable.woff2") format("woff2"); font-style: normal; font-weight: 200 900; font-display: swap; }
@font-face { font-family: Nunito; src: url("fonts/nunito-latin-ext-variable.woff2") format("woff2"); font-style: normal; font-weight: 200 900; font-display: swap; unicode-range: U+0100-024F,U+1E00-1EFF; }
/* Isolate genuine prose italics: the chapter numerals retain their simulated slant. */
@font-face { font-family: "Nunito Prose Italic"; src: url("fonts/nunito-italic-latin-v32.woff2") format("woff2"); font-style: italic; font-weight: 200 900; font-display: swap; }
@font-face { font-family: "Nunito Prose Italic"; src: url("fonts/nunito-italic-latin-ext-v32.woff2") format("woff2"); font-style: italic; font-weight: 200 900; font-display: swap; unicode-range: U+0100-024F,U+1E00-1EFF; }
:root {
  --paper: #f2eee5; --ink: #35414a; --accent: #a75b42; --accent-text: #974e36; --muted: #656a68; --line: #d5cec3;
  --process-paper: #e8e1d3; --process-muted: #5d625f; --contact-paper: #2f3a41; --contact-accent: #d39176;
  --s1: 8px; --s2: 16px; --s3: 24px; --s4: 40px; --s5: 64px; --s6: 104px; --s7: 168px;
  --wide: 1280px; --gutter: clamp(24px, 5.5vw, 80px); --grid-gap: 32px; --axis: 4; --header-offset: 72px;
  color-scheme: light; font-family: Nunito, sans-serif; color: var(--ink); background: var(--paper); font-synthesis: none; text-rendering: optimizeLegibility;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--header-offset); }
body { overflow-x: clip; margin: 0; font-size: 20px; line-height: 1.6; }
body::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: .17; background: url("paper.svg") 0 0 / 180px 180px; }
button { font: inherit; color: inherit; }
a { color: inherit; text-underline-offset: .35em; text-decoration-thickness: 1px; text-decoration-color: var(--accent); }
a:hover { text-decoration-thickness: 2px; }
::selection { background: #e9d6cb; color: var(--ink); }
button, a, summary { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
button, summary { cursor: pointer; }
:focus-visible { outline: 2px solid var(--accent-text); outline-offset: 6px; }
[hidden] { display: none !important; }
img { display: block; max-width: 100%; height: auto; }
figure, p, h1, h2, h3 { margin: 0; }
h1, h2, h3 { font-weight: 400; text-wrap: balance; }
p { text-wrap: pretty; }
.container { width: min(calc(100% - var(--gutter) * 2), var(--wide)); margin-inline: auto; }
.grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--grid-gap); }
.grid > * { min-width: 0; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.skip-link { position: fixed; top: var(--s2); left: var(--s2); padding: var(--s2) var(--s3); background: var(--ink); color: white; transform: translateY(-180%); z-index: 20; }
.skip-link:focus { transform: none; }
.site-header { position: sticky; top: 0; z-index: 10; background: var(--paper); transition: box-shadow 200ms ease; }
.site-header.is-scrolled { box-shadow: 0 1px 0 var(--line); }
.site-nav { align-items: center; min-height: var(--header-offset); }
.site-nav a { justify-self: start; width: max-content; white-space: nowrap; font-size: 18px; padding-block: var(--s1); min-width: 44px; min-height: 44px; text-decoration: none; }
.site-nav a:hover, .site-nav a[aria-current] { color: var(--accent-text); text-decoration: underline; text-underline-offset: .45em; }
.hero { padding: var(--s3) 0 var(--s5); text-align: center; }
.hero-kicker { font-size: 13px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--accent-text); margin-bottom: var(--s2); }
.hero h1 { font-size: 104px; letter-spacing: -.04em; line-height: 1; }
.hero-stage { position: relative; width: min(calc(100% - var(--gutter) * 2), var(--wide)); margin: var(--s2) auto 0; aspect-ratio: 1672 / 941; }
.hero-stage picture, .hero-stage img { display: block; width: 100%; height: 100%; object-fit: contain; }
/* Calibrate the complete approved still against the original video's final frame. */
.hero-stage picture { position: relative; transform: scale(.92); transform-origin: center; }
.hero-stage[data-motion="loading"] picture, .hero-stage[data-motion="playing"] picture { transform: none; }
.hero-stage { isolation: isolate; background: var(--paper); }
.hero-stage picture, .hero-motion-layer { z-index: 1; mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent), linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent); mask-composite: intersect; }
.hero-stage picture, .hero-motion { mix-blend-mode: darken; }
/* Blend the video only with its own paper, never with another set of figures. */
.hero-motion-layer { position: absolute; inset: 0; isolation: isolate; background: var(--paper); pointer-events: none; opacity: 0; transition: opacity 500ms ease-in-out; }
.hero-motion { display: block; width: 100%; height: 100%; object-fit: contain; }
.hero-stage[data-motion="playing"] picture { visibility: hidden; }
.hero-stage[data-motion="playing"] .hero-motion-layer { opacity: 1; transition: none; }
.hero-stop { position: absolute; z-index: 2; right: 12px; bottom: 12px; width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--ink); }
.hero-stop::before { content: ""; grid-area: 1 / 1; width: 30px; height: 30px; box-sizing: border-box; border: 1px solid var(--muted); border-radius: 50%; background: rgb(242 238 229 / 60%); box-shadow: 0 1px 3px rgb(53 65 74 / 8%); }
.hero-stop svg { grid-area: 1 / 1; position: relative; width: 8px; height: 10px; }
.hero-stop:focus-visible { outline-color: var(--ink); outline-offset: 2px; }
.hero-stop[aria-disabled="true"] { cursor: default; }
.chapter { padding-block: var(--s7) var(--s6); scroll-margin-top: calc(var(--s3) - var(--s7)); }
.chapter-title { align-items: end; min-height: 150px; }
.chapter-number { grid-column: 1 / var(--axis); justify-self: end; text-align: right; display: block; position: relative; color: transparent; -webkit-text-stroke: 1.7px var(--accent); font-size: 200px; font-weight: 300; line-height: .75; letter-spacing: -.17em; font-style: italic; font-synthesis: style; transform: translate(var(--dx, 0px), var(--dy, 0px)) rotate(var(--rot, 0deg)); transform-origin: right bottom; text-shadow: 4px 3px 0 rgb(167 91 66 / 9%); }
.chapter-number::after { content: attr(data-number); position: absolute; left: 4px; top: 4px; -webkit-text-stroke: .55px var(--accent); opacity: .35; }
.rolfing .chapter-number, :where(.reading-opener:not(.process-opener)) .chapter-number { --rot: -7deg; --dx: -16px; --dy: -4px; }
.process .chapter-number, .process-opener .chapter-number { --rot: 3deg; --dx: -30px; --dy: 1.5px; }
.about .chapter-number { --rot: -2deg; --dx: -22.5px; --dy: 0px; }
.contact .chapter-number { --rot: 4deg; --dx: -33px; --dy: 1.5px; }
@media (min-width: 1101px) {
  /* Independent margin drawings: preserve their tilt and lower each optically. */
  .chapter-title > .chapter-number { grid-column: 1 / 3; justify-self: center; translate: 0 var(--chapter-drop, 32px); }
  .chapter-title > .chapter-number[data-number="2"] { --chapter-drop: 40px; }
  .chapter-title > .chapter-number[data-number="3"] { --chapter-drop: 48px; }
  .chapter-title > .chapter-number[data-number="4"] { --chapter-drop: 40px; }
  /* The lower stroke extends over the following film's paper background. */
  .process .chapter-title > .chapter-number { z-index: 1; }
}
.chapter h2 { grid-column: var(--axis) / -1; font-size: 64px; line-height: 1; letter-spacing: -.035em; }
.chapter h2 sup, .reading-opener h1 sup { font-size: .34em; vertical-align: top; line-height: 1.5; letter-spacing: 0; }
.chapter-body { margin-top: var(--s5); }
.rolfing-copy { row-gap: var(--s3); }
.rolfing-introduction { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; row-gap: var(--s3); }
.lede { grid-column: var(--axis) / 12; display: block; font-size: 40px; line-height: 1.2; letter-spacing: -.02em; }
.body-copy { grid-column: var(--axis) / 10; display: block; }
.rolfing-details { grid-column: 1 / -1; }
.rolfing-details > summary { min-height: 44px; list-style: none; }
.rolfing-details > summary::-webkit-details-marker { display: none; }
.rolfing-details > summary::marker { content: ""; }
.disclosure-label { grid-column: var(--axis) / -1; justify-self: start; display: flex; align-items: center; gap: var(--s1); min-height: 44px; padding-block: var(--s1); font-weight: 700; text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: .35em; }
.disclosure-label:hover { color: var(--accent-text); }
.disclosure-label svg { width: 20px; height: 20px; color: var(--accent); flex: 0 0 auto; }
.disclosure-open { display: none; }
.rolfing-details[open] > summary .disclosure-closed { display: none; }
.rolfing-details[open] > summary .disclosure-open { display: inline; }
.rolfing-details[open] > summary svg { transform: rotate(180deg); }
.article-body { padding-top: var(--s5); row-gap: var(--s3); }
.article-body > p { grid-column: var(--axis) / 11; }
.fascia-figure { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; align-items: end; margin-block: var(--s6); }
.reading-plate, .fascia-figure { background: var(--paper); }
.fascia-figure img { grid-column: var(--axis) / -1; grid-row: 1; width: 100%; mix-blend-mode: darken; mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent), linear-gradient(to bottom, transparent, #000 4%, #000 92%, transparent); mask-composite: intersect; }
.fascia-figure figcaption { grid-column: 1 / var(--axis); grid-row: 1; padding-bottom: var(--s3); border-bottom: 1px solid var(--line); font-size: 13px; line-height: 1.6; color: var(--muted); }
.illustration-credit summary { list-style: none; min-height: 44px; padding-block: var(--s1); text-decoration: underline dotted; text-underline-offset: .35em; }
.illustration-credit summary::-webkit-details-marker { display: none; }
.illustration-credit summary::after { content: " +"; }
.illustration-credit[open] summary::after { content: " −"; }
.source-note { display: block; margin-top: var(--s2); }
.article-actions { row-gap: var(--s3); margin-top: var(--s4); }
.article-sources { grid-column: var(--axis) / 10; border-top: 1px solid var(--line); padding-top: var(--s1); font-size: 13px; line-height: 1.6; }
.article-sources summary { min-height: 44px; padding-block: var(--s1); }
.article-sources ul { padding-left: var(--s3); }
.article-sources li + li { margin-top: var(--s2); }
.collapse-link { grid-column: var(--axis) / -1; justify-self: start; border: 0; background: transparent; padding: var(--s1) 0; min-height: 44px; font-size: 20px; text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: .35em; }
.collapse-link span { margin-left: var(--s1); }
.process { padding-block: var(--s6); scroll-margin-top: calc(var(--s3) - var(--s6)); background: var(--process-paper); }
.process .chapter-title h2 { grid-column: var(--axis) / 9; }
.chapter-lede { color: var(--process-muted); font-size: 18px; line-height: 1.6; }
.process-film { --film-height: min(500px, max(360px, calc(100svh - 400px))); --cell-width: calc(var(--film-height) * 9 / 16); --step: clamp(120px, 12vw, 170px); --active-scale: 1; position: relative; width: 100%; height: var(--film-height); margin-top: var(--s3); overflow: hidden; isolation: isolate; background: var(--process-paper); touch-action: pan-y; }
.process-enhanced .process-film { cursor: pointer; }
.process-film[role="slider"]:focus-visible { outline: 2px solid var(--accent-text); outline-offset: -6px; }
.process-reel { position: absolute; top: 0; left: 0; display: flex; align-items: center; width: max-content; mix-blend-mode: darken; transform: translate3d(var(--reel-x, 0px), 0, 0); transition: transform 320ms ease; }
.process-cell { position: relative; z-index: 0; flex: 0 0 auto; width: var(--cell-width); aspect-ratio: 9 / 16; opacity: var(--fade, .08); filter: saturate(var(--sat, .25)); mix-blend-mode: darken; transform: scale(var(--scale, .65)); transform-origin: center 87.5%; transition: opacity 240ms ease, filter 240ms ease, transform 320ms ease; }
.process-cell + .process-cell { margin-left: calc(var(--step) - var(--cell-width)); }
.process-cell.active { z-index: 2; opacity: 1; filter: none; transform: scale(var(--active-scale)); }
.process-cell > img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: contain; }
.process-shield { --core-width: 24%; --arm-width: 32%; position: absolute; z-index: 1; top: 0; left: 0; width: var(--cell-width); height: calc(var(--cell-width) * 16 / 9); background: var(--process-paper); pointer-events: none; transform: scale(var(--active-scale)); transform-origin: center 87.5%; transition: left 320ms ease; mask-image: radial-gradient(ellipse var(--core-width) 48% at 50% 51%, #000 0 83%, transparent 100%), radial-gradient(ellipse var(--arm-width) 16% at 50% 39%, #000 0 76%, transparent 100%), radial-gradient(ellipse 17% 16% at 50% 19%, #000 0 82%, transparent 100%), radial-gradient(ellipse 23% 9% at 50% 91%, #000 0 75%, transparent 100%); }
.process-shield[data-selected="3"] { --arm-width: 38%; }
.process-shield[data-selected="5"], .process-shield[data-selected="9"], .process-shield[data-selected="10"] { --arm-width: 42%; --core-width: 27%; }
.process:not(.process-enhanced) .process-reel { left: calc(50% - var(--cell-width) / 2); }
.process:not(.process-enhanced) .process-cell:not(.active), .process:not(.process-enhanced) .process-shield { display: none; }
.session-row { margin-top: var(--s3); align-items: start; row-gap: var(--s3); }
.session-detail { grid-column: var(--axis) / 8; }
.session-detail h3, .about-copy h3 { font-size: 40px; letter-spacing: -.02em; line-height: 1.2; }
.session-steps { grid-column: 8 / -1; display: flex; align-items: center; justify-content: safe flex-end; overflow-x: auto; overscroll-behavior-x: contain; padding-block: var(--s1); scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
.session-steps button { flex: 0 0 44px; min-width: 44px; height: 44px; border: 0; border-bottom: 2px solid transparent; color: var(--ink); background: transparent; font-size: 13px; font-weight: 800; }
.session-steps button[aria-current="step"] { color: var(--accent-text); border-bottom-color: var(--accent); }
.session-steps button:hover { color: var(--accent-text); }
.static-sessions { grid-column: var(--axis) / -1; margin-block: var(--s3) 0; padding-left: var(--s3); columns: 2; font-size: 18px; }
.static-sessions li { break-inside: avoid; padding: var(--s1) var(--s2) var(--s1) 0; }
.about-layout { align-items: end; row-gap: var(--s3); }
.portrait { grid-column: var(--axis) / 8; width: 100%; }
/* Reveal the actual page paper; finish the fade before the first hair. */
.portrait img { width: 100%; border-radius: 10px; mask-image: linear-gradient(to bottom, transparent, #000 18%); }
.about-copy { grid-column: 8 / -1; padding-bottom: var(--s3); border-bottom: 1px solid var(--line); }
.about-copy p { max-width: 36ch; color: var(--muted); margin-top: var(--s3); }
.contact { --accent: var(--contact-accent); --accent-text: #e3a78e; --line: rgb(242 238 229 / 22%); background: var(--contact-paper); color: var(--paper); }
.contact-layout { margin-top: var(--s5); align-items: end; font-style: normal; }
.contact-links { grid-column: var(--axis) / 10; display: flex; flex-direction: column; gap: var(--s2); }
.contact-links a { width: fit-content; font-size: 52px; line-height: 1.3; letter-spacing: -.02em; text-decoration-color: var(--contact-accent); text-underline-offset: .2em; min-height: 44px; }
.contact-links a[href^="tel:"] { font-variant-numeric: tabular-nums; }
.contact-location { grid-column: 10 / -1; }
.text-link { display: inline-flex; align-items: center; gap: var(--s1); min-height: 44px; padding-block: var(--s1); font-weight: 700; }
.text-link.go { margin-top: var(--s2); }
.text-link.go svg { width: 20px; height: 20px; flex: 0 0 auto; color: var(--accent); transition: transform 200ms ease; }
.text-link.go:hover svg { transform: translateX(4px); }
.error-page { min-height: 90svh; max-width: 760px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.error-page h1 { font-size: 44px; line-height: 1.2; margin-bottom: var(--s3); }
.error-page p { margin-bottom: var(--s3); }
@media (min-width: 721px) and (max-width: 1200px) {
  .contact-links, .contact-location { grid-column: var(--axis) / -1; }
  .contact-location { margin-top: var(--s4); }
}
@media (max-width: 1100px) {
  :root { --axis: 3; }
  .hero h1 { font-size: clamp(58px, 9vw, 104px); }
  .body-copy { grid-column: var(--axis) / 12; }
  .session-detail { grid-column: var(--axis) / -1; }
  .session-steps { grid-column: var(--axis) / -1; justify-content: flex-start; }
  .portrait { grid-column: var(--axis) / 7; }
  .about-copy { grid-column: 7 / -1; }
  .contact-links { grid-column: var(--axis) / -1; }
  .contact-location { grid-column: var(--axis) / -1; margin-top: var(--s4); }
}
@media (min-width: 721px) and (max-width: 800px) {
  .contact-links a { font-size: 40px; }
}
@media (min-width: 721px) {
  .site-nav { grid-column: 1 / -1; grid-row: 1; display: flex; justify-content: center; column-gap: 40px; }
}
@media (max-width: 720px) {
  :root { --gutter: 24px; --header-offset: 60px; --axis: 1; }
  body { font-size: 18px; }
  .grid { grid-template-columns: minmax(0, 1fr); }
  .grid > *, .grid .body-copy, .grid .lede, .grid .article-body > p, .grid .fascia-figure, .grid .article-sources, .grid .portrait, .grid .about-copy, .grid .session-detail, .grid .session-steps, .grid .contact-links, .grid .contact-location { grid-column: 1 / -1; }
  .site-nav { display: flex; justify-content: space-between; gap: var(--s1); }
  .site-nav a { font-size: 15px; }
  .hero { padding: var(--s3) 0 var(--s4); }
  .hero-kicker { font-size: 11px; letter-spacing: .16em; padding-inline: var(--gutter); }
  .hero h1 { font-size: clamp(32px, 10.8vw, 58px); letter-spacing: -.04em; white-space: nowrap; }
  .hero-stage { width: min(100%, 500px); aspect-ratio: 18 / 19; margin-top: var(--s2); }
  .hero-stage picture { transform: none; }
  .chapter { padding-block: var(--s6) var(--s5); scroll-margin-top: calc(var(--s3) - var(--s6)); }
  .chapter-title { grid-template-columns: 73px minmax(0, 1fr); column-gap: var(--s2); min-height: 100px; }
  .chapter-title .chapter-number { grid-column: 1; font-size: 6.6rem; justify-self: start; text-align: left; transform-origin: left bottom; --dx: 0px; --dy: 0px; }
  .chapter-title h2, .process .chapter-title h2 { grid-column: 2; font-size: 44px; }
  .chapter-body { margin-top: var(--s4); }
  .lede, .session-detail h3, .about-copy h3 { font-size: 26px; line-height: 1.2; }
  .rolfing-introduction { grid-template-columns: minmax(0, 1fr); row-gap: var(--s2); }
  .disclosure-label { font-size: 18px; }
  .article-body { padding-top: var(--s4); row-gap: var(--s2); }
  .fascia-figure { grid-template-columns: minmax(0, 1fr); row-gap: var(--s2); margin-block: var(--s5); }
  .fascia-figure img { grid-column: 1; grid-row: 1; }
  .fascia-figure figcaption { grid-column: 1; grid-row: 2; padding-bottom: var(--s2); }
  .collapse-link { font-size: 18px; }
  .process { padding-block: var(--s5); scroll-margin-top: calc(var(--s3) - var(--s5)); }
  .process .process-intro { grid-column: 1 / -1; grid-row: 2; }
  .process .chapter-lede { margin: 0; }
  .process-film { --cell-width: min(70vw, 280px); --step: clamp(100px, 30vw, 160px); height: calc(var(--cell-width) * 16 / 9); margin-top: var(--s2); }
  .process:not(.process-enhanced) .process-reel { left: calc(50% - var(--cell-width) / 2); }
  .session-row { margin-top: var(--s2); row-gap: var(--s2); }
  .session-steps { justify-content: flex-start; }
  .static-sessions { columns: 1; }
  .portrait { max-width: 405px; }
  .about-copy { margin-top: var(--s2); padding-bottom: var(--s2); }
  .about-copy p { margin-top: var(--s2); }
  .contact-layout { margin-top: var(--s4); }
  .contact-links a { font-size: 28px; overflow-wrap: anywhere; }
  .contact-location { margin-top: var(--s3); }
  .contact-location p, .contact-location a { font-size: 18px; }
}
@media (max-width: 360px) {
  .contact-links a { font-size: 26px; }
}
/* Session phases keep their descriptions in the stacked layout. */
.session-steps .phase-caption { display: contents; }
.phase-divider { display: none; }
.session-steps .phase-subtitle { font-size: 17px; line-height: 24px; position: relative; top: -1.5px; }
.session-steps .phase-caption > .copy-label { color: var(--process-muted); }
.session-steps .is-active .phase-caption > .copy-label { color: var(--accent-text); }
@media (max-width: 720px) {
  .session-steps .phase-caption > .copy-label { grid-column: 1; }
  .session-steps .phase-caption > .phase-subtitle { grid-column: 1 / -1; grid-row: 2; font-size: 16px; top: -1px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}
/* Content round: source-generated homepage panels, reading pages and shared footer. */
.reading-page .site-header > .grid { min-height: var(--header-offset); }
.home-link { grid-column: var(--axis) / -1; align-self: center; justify-self: start; min-width: 44px; min-height: 44px; margin-inline-start: -28px; display: inline-flex; align-items: flex-start; gap: 8px; font-size: 17px; text-decoration: none; white-space: nowrap; }
.home-link svg { flex: none; width: 20px; height: 20px; margin-block-start: calc((1lh - 20px) / 2); transform: rotate(180deg); }
.home-link:hover { color: var(--accent-text); text-decoration: underline; text-underline-offset: .45em; }
.homepage-article-link { grid-column: var(--axis) / -1; }
.copy-label { font-size: 13px; line-height: 1.5; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.small-copy { font-size: 17px; line-height: 1.5; }
.session-row { margin-top: var(--s3); }
/* One grid item owns the copy; desktop column placement must not leak into phone text. */
.process-intro { grid-column: 9 / -1; display: block; }
.session-detail { grid-column: var(--axis) / -1; display: grid; grid-template-columns: subgrid; }
.session-panel { grid-column: 1 / -1; grid-row: 1; visibility: hidden; display: flex; flex-direction: column; gap: var(--s2); min-width: 0; }
.session-panel.is-current { visibility: visible; }
.session-area { color: var(--process-muted); }
.session-area .copy-label { margin-right: var(--s1); }
.session-panel > p:last-child { color: var(--ink); }
.process:not(.process-enhanced) .session-row { display: none; }
.process-selection { margin-top: var(--s4); row-gap: var(--s4); }
.session-row .session-steps { grid-column: 1 / -1; grid-row: 2; margin-top: var(--s3); display: grid; grid-template-columns: subgrid; overflow: visible; padding: 0; }
.phase-groups { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; column-gap: var(--grid-gap); }
.phase-group { grid-column: span 3; min-width: 0; display: flex; flex-direction: column; gap: var(--s1); }
.phase-group > .copy-label { color: var(--process-muted); }
.phase-group.is-active > .copy-label { color: var(--accent-text); }
.phase-buttons { display: flex; justify-content: space-between; gap: 0; border-top: 2px solid transparent; background: linear-gradient(var(--line), var(--line)) top / 100% 1px no-repeat; padding-top: var(--s1); }
.phase-group.is-active .phase-buttons { border-top-color: var(--accent); background: none; }
.phase-subtitle { color: var(--process-muted); }
.process-link { grid-column: var(--axis) / -1; justify-self: start; margin: 0 !important; }
.static-sessions { columns: auto; }
.static-sessions section + section { margin-top: var(--s4); }
.static-sessions h3 { font-size: 24px; }
.static-sessions h4 { margin: 0; font-size: 21px; }
.static-sessions li { margin-top: var(--s3); }
.static-sessions li p { margin-top: var(--s2); }
.about-layout { align-items: start; row-gap: 32px; }
.about-copy { border: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s3); }
.about-copy p { max-width: none; margin: 0; color: var(--ink); }
.contact-layout { align-items: end; }
.contact-links .copy-label { color: var(--accent-text); }
.contact-response { grid-column: var(--axis) / 10; max-width: 52ch; color: #b9b7af; }
.contact-intro { color: #b9b7af; }
.contact-practical { margin-top: var(--s5); align-items: start; }
.contact-block { border-top: 1px solid var(--line); padding-top: var(--s3); display: flex; flex-direction: column; gap: var(--s2); }
.contact-block .copy-label { color: var(--accent-text); margin: 0; }
.contact-price { grid-column: var(--axis) / 7; }
.contact-cancellation { grid-column: 7 / 10; }
.contact-venue { grid-column: 10 / -1; }
.contact-venue > p a { text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); }
.contact-venue > p a:hover, .contact-venue > p a:focus-visible { text-decoration-color: var(--accent); }
.contact .secondary-copy { color: #b9b7af; }
.room-list { padding: 0; margin: 0; list-style: none; }
.contact-block .go { margin-top: 0; align-self: start; }
.contact-subpage { padding-top: var(--s6); scroll-margin-top: 0; }
.contact-subpage .contact-layout { margin-top: 0; }
/* Paint the paper inside the reading backdrop: Safari can lose the negative-z
   grain layer when blending transformed images. An 83% paper wash retains the
   original grain strength (the SVG's .21 opacity multiplied by .17). */
body.reading-page { --paper-wash: color-mix(in srgb, var(--paper) 83%, transparent); background: linear-gradient(var(--paper-wash), var(--paper-wash)), url("paper.svg") 0 0 / 180px 180px var(--paper); background-attachment: fixed; }
body.reading-page::before { content: none; }
.reading-page main { padding-block: var(--s6) var(--s7); }
.reading-opener h1 { grid-column: var(--axis) / -1; font-size: 64px; font-weight: 400; letter-spacing: -.035em; line-height: 1.05; }
.reading-intro { margin-top: 40px; row-gap: var(--s3); }
.reading-copy { grid-column: var(--axis) / 10; }
.reading-section { margin-top: var(--s6); align-items: start; scroll-margin-top: var(--s3); }
.reading-index { grid-column: 1 / var(--axis); justify-self: end; text-align: right; font-size: 13px; font-weight: 800; line-height: 1.5; letter-spacing: .1em; color: var(--accent-text); padding-top: var(--s3); }
.ruled-copy { border-top: 1px solid var(--line); padding-top: var(--s3); display: flex; flex-direction: column; gap: var(--s3); }
.reading-copy h2 { font-size: 40px; line-height: 1.15; letter-spacing: -.02em; }
.overview-grid { margin-top: var(--s5); }
.series-overview { grid-column: var(--axis) / -1; display: grid; grid-template-columns: subgrid; }
.series-overview .phase-group > .copy-label { color: var(--accent-text); }
.overview-link { flex: 1 1 0; min-width: 44px; display: flex; flex-direction: column; align-items: center; color: var(--ink); text-decoration: none; }
.overview-link img { width: min(76px, 100%); height: 76px; object-fit: contain; mix-blend-mode: darken; }
.overview-link span { font-size: 13px; font-weight: 800; line-height: 1.5; padding-block: var(--s1); }
.overview-link:hover span { text-decoration: underline; }
.phase-heading { margin-top: var(--s6); align-items: start; }
.phase-heading .reading-index { padding-top: var(--s1); }
.phase-heading h3 { font-size: 32px; line-height: 1.2; font-weight: 400; margin-bottom: var(--s2); }
.session-entry { margin-top: var(--s4); align-items: start; scroll-margin-top: var(--s3); }
.session-numeral { font-size: 72px; -webkit-text-stroke-width: 1.2px; justify-self: end; text-align: right; transform-origin: right top; --rot: -4deg; --dx: -16px; --dy: 24px; }
.session-numeral[data-number="1"] { --dx: -10px; --dy: 23px; }
.session-numeral[data-number="5"], .session-numeral[data-number="6"], .session-numeral[data-number="7"], .session-numeral[data-number="8"], .session-numeral[data-number="10"] { --dx: -17px; }
.session-numeral[data-number="6"], .session-numeral[data-number="7"] { --dx: -19px; }
.session-thumbnail { grid-column: var(--axis) / 6; width: 100%; height: 256px; object-fit: contain; object-position: left top; mix-blend-mode: darken; }
.session-reading { grid-column: 6 / 10; border-top: 1px solid var(--line); padding-top: var(--s3); display: flex; flex-direction: column; gap: var(--s2); }
.session-reading h4 { font-size: 24px; line-height: 1.3; font-weight: 400; letter-spacing: -.01em; margin: 0; }
.session-reading .session-area { color: var(--muted); }
.reading-plate { --plate-end: 10; margin-top: var(--s5); align-items: end; }
.reading-plate img { grid-column: var(--axis) / var(--plate-end); grid-row: 1; width: 100%; mix-blend-mode: darken; mask-image: linear-gradient(to right, transparent, #000 6%, #000 94%, transparent), linear-gradient(to bottom, transparent, #000 4%, #000 92%, transparent); mask-composite: intersect; }
.reading-plate figcaption { grid-column: 1 / var(--axis); grid-row: 1; padding-bottom: var(--s3); border-bottom: 1px solid var(--line); font-size: 17px; color: var(--muted); }
.reading-plate figcaption, .fascia-figure figcaption { text-align: right; }
.after-plate { margin-top: var(--s5); }
.structures-grid { margin-top: var(--s4); row-gap: var(--s4); }
.structures { grid-column: var(--axis) / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s4) var(--grid-gap); }
.structure-copy { border-top: 1px solid var(--line); padding-top: var(--s2); }
.structure-copy strong { font-weight: 700; }
.bibliography-section h2 { font-size: 32px; }
.reading-books { display: grid; gap: 40px; margin-top: 32px; }
.reading-book .book-author { color: var(--muted); }
.reading-book h3 { margin-top: 8px; font-size: 24px; line-height: 32px; position: relative; }
.reading-book cite { font-style: normal; }
#fascie em, .illustration-credit cite, .reading-book .book-description { font-family: "Nunito Prose Italic", Nunito, sans-serif; font-style: italic; }
.reading-book .book-description { margin-top: 16px; line-height: var(--body-leading); position: relative; top: 1.5px; }
@media (max-width: 1200px) and (min-width: 721px) {
  .contact-response { grid-column: var(--axis) / -1; }
}
@media (max-width: 1100px) and (min-width: 721px) {
  .reading-copy, .article-sources { grid-column: var(--axis) / 11; }
  .reading-plate { --plate-end: 11; }
  .phase-group:nth-child(2) { grid-column: span 4; }
  .session-detail { grid-column: var(--axis) / -1; }
  .contact-price { grid-column: var(--axis) / 8; }
  .contact-cancellation { grid-column: 8 / -1; }
  .contact-venue { grid-column: var(--axis) / -1; margin-top: var(--s4); }
  .session-thumbnail { grid-column: var(--axis) / 5; }
  .session-reading { grid-column: 5 / -1; }
}
@media (max-width: 720px) {
  .reading-page .site-header .home-link { grid-column: 1 / -1; margin-inline-start: 0; font-size: 15px; }
  .copy-label { font-size: 11px; }
  .small-copy { font-size: 16px; }
  .session-row { margin-top: var(--s2); }
  .session-detail { grid-column: 1 / -1; min-height: 0; }
  .session-panel { gap: var(--s2); min-height: 0; }
  .process-selection { margin-top: var(--s3); row-gap: var(--s3); }
  .phase-groups { grid-template-columns: minmax(0, 1fr); row-gap: var(--s3); }
  .phase-group { grid-column: 1 / -1; }
  .session-steps .phase-group { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: var(--s1); row-gap: var(--s1); align-items: center; }
  .session-steps .phase-group > .copy-label { grid-column: 1; }
  .session-steps .phase-buttons { grid-column: 2; min-width: 0; }
  .session-steps .phase-subtitle { grid-column: 1 / -1; }
  .phase-buttons { min-height: 54px; }
  .session-steps button { flex: 0 0 44px; }
  .about-layout { row-gap: var(--s3); }
  .about-copy { margin: 0; gap: var(--s2); }
  .contact-response { grid-column: 1 / -1; }
  .contact-practical { margin-top: var(--s5); row-gap: var(--s4); }
  .contact-price, .contact-cancellation, .contact-venue { grid-column: 1 / -1; margin: 0; }
  .contact-subpage { padding-top: var(--s5); }
  .reading-page main { padding-block: var(--s5) var(--s6); }
  .reading-opener h1 { grid-column: 2; font-size: 40px; }
  .reading-intro { margin-top: 24px; row-gap: var(--s2); }
  .reading-copy { grid-column: 1 / -1; }
  .reading-section { margin-top: var(--s5); row-gap: var(--s2); }
  .reading-index { grid-column: 1 / -1; padding: 0; font-size: 11px; }
  .reading-index, .reading-plate figcaption, .fascia-figure figcaption { justify-self: start; text-align: left; }
  .reading-copy h2 { font-size: 28px; }
  .ruled-copy { padding-top: var(--s2); gap: var(--s2); }
  .overview-grid { margin-top: var(--s4); }
  .phase-heading { margin-top: var(--s5); row-gap: var(--s2); }
  .phase-heading .reading-index { padding: 0; }
  .phase-heading h3 { font-size: 24px; }
  .session-entry { grid-template-columns: 96px minmax(0, 1fr); column-gap: var(--s2); row-gap: var(--s2); padding-top: var(--s2); border-top: 1px solid var(--line); }
  .session-entry .session-numeral { grid-column: 1; grid-row: 1; font-size: 44px; justify-self: start; text-align: left; transform-origin: left top; --dx: 0px; --dy: 0px; }
  .session-entry .session-thumbnail { grid-column: 1; grid-row: 2; height: 128px; width: 72px; }
  .session-reading { display: contents; }
  .session-reading h4 { grid-column: 2; grid-row: 1; font-size: 21px; align-self: center; min-height: 44px; }
  .session-reading .session-area { grid-column: 2; grid-row: 2; }
  .session-reading > p:not(.session-area) { grid-column: 1 / -1; grid-row: 3; }
  .reading-plate { margin-top: var(--s4); row-gap: var(--s2); }
  .reading-plate img { grid-column: 1; grid-row: 1; }
  .reading-plate figcaption { grid-column: 1; grid-row: 2; padding-bottom: var(--s2); font-size: 16px; }
  .after-plate { margin-top: var(--s4); }
  .structures-grid { margin-top: var(--s3); row-gap: var(--s3); }
  .structures { grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr); row-gap: var(--s3); }
  .bibliography-section h2 { font-size: 24px; }
}
/* Baseline rhythm: every flow box follows --b; type nudges move glyphs only. */
:root { --b: 8px; --body-leading: 32px; --header-offset: 88px; }
body { line-height: var(--body-leading); }
.site-nav a, .home-link { font-size: 17px; line-height: 24px; padding-block: 16px; min-height: 56px; position: relative; top: -1.5px; }
.hero { container-type: inline-size; }
.hero-kicker { line-height: 16px; position: relative; top: 4px; }
.hero h1 { font-size: 104px; line-height: 104px; position: relative; top: 2px; }
.hero-stage {
  --hero-stage-top: 264px; --hero-floor: 40px;
  aspect-ratio: auto;
  block-size: min(
    round(up, calc(min(100cqi - var(--gutter) * 2, var(--wide)) * 941 / 1672), var(--b)),
    max(448px, round(down, calc((100svh - var(--hero-stage-top) - var(--hero-floor)) / .873), var(--b)))
  );
}
.chapter-title { min-height: 152px; }
.chapter-number { line-height: 152px; }
.chapter h2, .reading-opener h1 { line-height: 64px; position: relative; top: 3px; }
.chapter h2 sup, .reading-opener h1 sup { line-height: 0; }
.chapter-body { margin-top: 40px; }
.rolfing-copy { row-gap: 0; }
.rolfing-introduction { row-gap: 32px; }
.body-copy, p.reading-copy, .about-copy p, .session-panel > p:not(.session-area), .reading-copy > p, .session-reading > p:not(.session-area), .structure-copy, .static-sessions p { line-height: 32px; position: relative; top: 1.5px; }
.lede { font-size: 32px; line-height: 40px; letter-spacing: -.015em; position: relative; top: 1.5px; }
.session-detail h3, .reading-copy h2 { line-height: 48px; position: relative; top: 3px; }
.small-copy, .chapter-lede, .reading-plate figcaption { font-size: 17px; line-height: 24px; position: relative; top: -1.5px; }
.process .chapter-lede { font-size: 24px; line-height: 32px; letter-spacing: -.01em; color: var(--ink); top: 0; }
.copy-label, .reading-index, .overview-link span { line-height: 16px; position: relative; top: 4px; }
.session-area .copy-label { position: static; }
.text-link { line-height: 32px; min-height: 48px; align-items: baseline; position: relative; top: 1.5px; }
.text-link.small-copy { line-height: 24px; top: -1.5px; }
/* Centre the arrow on the text line, independently of extra touch-target height. */
.text-link svg { align-self: flex-start; margin-block-start: calc((1lh - 20px) / 2); }
.text-link.go { margin-top: 0; }
/* Leave one full text line before the secondary link, accounting for its padding. */
.homepage-article-link { margin-top: calc(var(--body-leading) - var(--s1)); }
.process .chapter-title { align-items: end; }
.process-film { --film-height: round(down, min(504px, max(360px, calc(100svh - 400px))), var(--b)); }
.session-detail { min-height: 0; }
.session-panel { min-height: 240px; }
.session-panel { gap: 16px; }
.session-panel .session-area { top: -1.5px; }
/* Keep the panel's flow edge exact; apply glyph calibration inside its last paragraph. */
.session-panel > p:not(.session-area) { position: static; }
.session-text { position: relative; top: 1.5px; }
.phase-buttons { border-top: 0; padding-top: 8px; background: linear-gradient(var(--line), var(--line)) top / 100% 1px no-repeat; }
.phase-group.is-active .phase-buttons { border-top: 0; background: linear-gradient(var(--accent), var(--accent)) top / 100% 2px no-repeat; }
.session-steps button { height: 48px; line-height: 16px; padding-block: 16px; position: relative; top: 4px; border-bottom: 0; }
.session-steps button[aria-current="step"] { box-shadow: inset 0 -2px var(--accent); }
.overview-link img { height: 112px; }
.overview-link span { line-height: 16px; }
.portrait { container-type: inline-size; --portrait-height: round(up, calc(100cqi * 1799 / 1200), var(--b)); }
.portrait img { height: var(--portrait-height); object-fit: contain; }
/* Keep the photo, then start the caption on the biography's body-line phase. */
.about-education { margin-top: calc(round(up, calc(var(--portrait-height) + 24px), var(--body-leading)) - var(--portrait-height)); font-size: 16px; line-height: var(--body-leading); color: var(--muted); }
/* Nunito's smaller roles share the biography's baseline within each line box. */
.education-title { position: relative; top: 3px; font-weight: 700; color: var(--ink); text-wrap: balance; }
.education-institution, .education-years { position: relative; top: 4px; font-size: 14px; }
.education-institution a { text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); }
.education-institution a:hover, .education-institution a:focus-visible { text-decoration-color: currentColor; }
.education-institution a:focus-visible { outline-color: var(--ink); }
.about-copy { gap: 0; }
.about-copy p + p { margin-top: 32px; }
.contact-layout { align-items: start; row-gap: 16px; }
.contact-links { grid-row: 1; }
/* The reply note belongs to the contact links, on their shared text axis. */
.contact-response { grid-row: 2; padding-top: 0; margin-top: 8px; }
.contact-registration { grid-column: var(--axis) / -1; grid-row: 3; font-size: 14px; line-height: 24px; color: #b9b7af; }
.contact-links a { line-height: 64px; min-height: 64px; position: relative; top: -1px; }
.contact-block { border-top: 0; box-shadow: inset 0 1px var(--line); padding-top: 24px; gap: 0; }
.session-reading h4 { line-height: 32px; position: relative; top: 0; }
.contact-practical { align-items: start; }
.contact-details { display: flex; flex-direction: column; }
.contact-subpage h2.visually-hidden { position: absolute; top: auto; }
.contact-block .copy-label { min-height: 32px; }
.contact-block .small-copy { font-size: 20px; line-height: var(--body-leading); top: 1.5px; }
.contact-block > p.small-copy:first-of-type { padding-top: 0; }
.contact-block .secondary-copy { margin: 0; }
/* All practical columns share one running-text rhythm. */
.contact-block > :not(.copy-label) { margin-top: var(--body-leading); }
.contact-block > .copy-label + p { margin-top: 24px; }
.contact-block .contact-details > * + * { margin-top: var(--body-leading); }
.contact-block .text-link { padding-block: 0; }
/* Shared content rows align supporting copy as the adjacent introductions wrap. */
@media (min-width: 721px) {
  .contact-practical { align-items: stretch; }
  .contact-block { display: grid; grid-template-rows: subgrid; grid-row: span 3; }
  .contact-block > * { align-self: start; }
}
.illustration-credit summary { line-height: 24px; min-height: 48px; }
.reading-intro { row-gap: 32px; }
.reading-intro > .lede { margin-bottom: 0; }
.reading-index { padding-top: 24px; }
.ruled-copy { border-top: 0; box-shadow: inset 0 1px var(--line); gap: 0; }
.ruled-copy > h2 + p, .ruled-copy > h2 + ul { margin-top: 24px; }
.ruled-copy > p + p { margin-top: 32px; }
.phase-heading h3, .bibliography-section h2 { line-height: 40px; position: relative; top: 1.5px; }
.session-numeral { line-height: 72px; }
.session-thumbnail { height: 256px; }
.session-reading { border-top: 0; box-shadow: inset 0 1px var(--line); gap: 16px; }
.reading-plate { container-type: inline-size; }
.reading-plate img { height: round(up, calc(((100cqi + var(--grid-gap)) * (var(--plate-end) - var(--axis)) / 12 - var(--grid-gap)) * 1061 / 1482), var(--b)); object-fit: contain; }
.reading-plate figcaption { border-bottom: 0; box-shadow: inset 0 -1px var(--line); }
.structures-grid .reading-copy { line-height: 32px; top: 1.5px; }
.structure-copy { border-top: 0; box-shadow: inset 0 1px var(--line); }
@media (min-width: 721px) and (max-width: 900px) {
  .hero h1 { font-size: 80px; line-height: 88px; top: 2px; }
  .hero-stage { --hero-stage-top: 248px; }
}
@media (min-width: 721px) and (max-width: 1100px) {
  .reading-plate { row-gap: 24px; }
  .reading-plate figcaption { grid-column: var(--axis) / var(--plate-end); grid-row: 2; text-align: left; }
}
@media (min-width: 721px) and (max-width: 800px) {
  .contact-links a { top: 3px; }
}
@media (max-width: 720px) {
  :root { --b: 4px; --body-leading: 28px; --header-offset: 64px; }
  /* Balance the 24px text line inside its 48px target, alongside the language disc. */
  .site-nav a, .reading-page .site-header .home-link { font-size: 15px; line-height: 24px; padding-block: 12px; min-height: 48px; top: -.5px; }
  .hero-kicker { line-height: 16px; top: .5px; }
  .hero h1 { font-size: 48px; line-height: 52px; top: -1.5px; }
  .hero-stage { block-size: round(up, calc(min(100cqi, 500px) * 19 / 18), var(--b)); }
  .chapter-title { min-height: 104px; }
  .chapter > .chapter-title { align-items: last baseline; row-gap: var(--s3); }
  /* Align glyph baselines; bottom-aligned boxes leave the outline numeral too high. */
  .chapter > .chapter-title > .chapter-number, .chapter > .chapter-title > h2 { grid-row: 1; top: 2px; }
  .chapter-title .chapter-number { font-size: 104px; line-height: 104px; }
  .chapter-title h2, .reading-opener h1 { font-size: 44px; line-height: 48px; top: 1.5px; }
  .chapter-body { margin-top: 20px; }
  .body-copy, p.reading-copy, .structures-grid .reading-copy, .about-copy p, .session-panel > p:not(.session-area), .reading-copy > p, .session-reading > p:not(.session-area), .structure-copy, .static-sessions p { line-height: 28px; top: .5px; }
  .lede { font-size: 24px; line-height: 32px; top: 0; }
  .session-detail h3, .reading-copy h2 { font-size: 26px; line-height: 32px; top: -.5px; }
  .small-copy, .chapter-lede, .reading-plate figcaption { font-size: 16px; line-height: 24px; top: -1px; }
  .process .chapter-lede { font-size: 21px; line-height: 28px; letter-spacing: -.01em; top: -.5px; }
  .copy-label, .reading-index, .overview-link span { line-height: 16px; top: .5px; }
  .overview-link span { font-size: 11px; }
  .text-link { line-height: 28px; min-height: 48px; top: .5px; }
  .text-link.small-copy { line-height: 24px; top: -1px; }
  .process-film { --film-height: round(up, calc(min(70vw, 280px) * 16 / 9), var(--b)); --cell-width: calc(var(--film-height) * 9 / 16); height: var(--film-height); }
  .session-panel .session-area { top: -1px; }
  .session-text { top: .5px; }
  .session-steps button { height: 48px; padding-block: 16px; top: .5px; }
  .session-steps .phase-group { box-shadow: inset 0 1px var(--line); padding-top: 8px; }
  .session-steps .phase-group.is-active { box-shadow: inset 0 2px var(--accent); }
  .session-steps .phase-group .phase-buttons { background: none; min-height: 48px; padding-top: 0; }
  .about-copy p + p { margin-top: 28px; }
  .contact-links a { line-height: 36px; min-height: 44px; top: 1px; }
  .contact-block .copy-label { min-height: 16px; }
  .contact-block .small-copy { font-size: 18px; line-height: var(--body-leading); top: .5px; }
  .session-reading h4 { line-height: 28px; top: -.5px; }
  .reading-intro { row-gap: 28px; }
  .reading-books { gap: 32px; margin-top: 28px; }
  .reading-book h3 { font-size: 21px; line-height: 28px; top: -1px; }
  .reading-book .book-description { top: .5px; }
  .rolfing-introduction { row-gap: 28px; }
  .about-layout { row-gap: 28px; }
  .about-education { margin-top: 24px; }
  .education-title { top: 1px; }
  .education-institution, .education-years { top: 2px; }
  .ruled-copy > p + p { margin-top: 28px; }
  .phase-heading h3, .bibliography-section h2 { line-height: 32px; top: 0; }
  .session-entry { border-top: 0; box-shadow: inset 0 1px var(--line); }
  .session-entry .session-numeral { line-height: 48px; }
  .session-reading h4 { align-self: start; min-height: 48px; }
  .reading-plate img { height: round(up, calc(100cqi * 1061 / 1482), var(--b)); }
}
@media (max-width: 420px) {
  .chapter-title { grid-template-columns: 58px minmax(0, 1fr); }
  .chapter-title .chapter-number { font-size: 88px; line-height: 88px; }
  .chapter > .chapter-title > .chapter-number, .chapter > .chapter-title > h2 { top: 3px; }
}
@media (max-width: 360px) {
  .contact-links a { top: 2px; }
  .session-steps .phase-group { grid-template-columns: minmax(0, 1fr); }
  .session-steps .phase-buttons { grid-column: 1; grid-row: 2; }
  .session-steps .phase-caption > .phase-subtitle { grid-row: 3; }
  .reading-opener h1 { font-size: 36px; line-height: 40px; top: 0; }
}

/* The complete desktop band fits below the header; the stage uses the remainder.
   Narrower layouts retain the stacked, full-size targets used on phones/tablets. */
@media (min-width: 721px) and (max-width: 1100px) {
  .process .chapter-title h2 { grid-column: var(--axis) / 7; }
  .process .process-intro { grid-column: 7 / -1; }
}
@media (min-width: 721px) and (max-width: 1255px) {
  .session-steps .phase-buttons { margin-top: auto; }
}
@media (min-width: 1101px) and (max-width: 1255px) {
  .process .chapter-title h2 { grid-column: var(--axis) / 8; }
  .process .process-intro { grid-column: 8 / -1; }
  .session-panel { min-height: 240px; }
}
@media (min-width: 1256px) {
  .process { container-type: inline-size; }
  .process.process-enhanced {
    --band-pad: var(--s5);
    height: round(down, clamp(600px, calc(100svh - var(--header-offset)), 960px), var(--b));
    padding-block: var(--band-pad);
    display: grid; grid-template-rows: 152px 24px minmax(0, 1fr);
    /* html already reserves the sticky header, so do not add that offset twice. */
    scroll-margin-top: 0;
  }
  .process .chapter-title { grid-template-rows: 152px; }
  .process .chapter-title h2 { grid-column: 4 / 8; }
  /* Share the title's cap top; anchor the first line independently of wrapping.
     The link occupies the clear upper-right stage area, above its empty track. */
  .process .process-intro { grid-column: 8 / -1; align-self: start; margin-top: 88px; display: flex; flex-direction: column; gap: var(--s1); margin-bottom: 0; position: relative; z-index: 1; }
  .process-intro .process-link { font-size: 17px; line-height: 24px; top: -1.5px; }
  .process-enhanced .chapter-title { grid-row: 1; }
  .process-enhanced .process-stage {
    --stage-grid: min(calc(100cqi - var(--gutter) * 2), var(--wide));
    --panel-start: calc((100cqi - var(--stage-grid)) / 2 + (var(--stage-grid) + var(--grid-gap)) * 7 / 12);
    position: relative; grid-row: 3; min-height: 0;
  }
  .process-enhanced .process-film {
    --film-height: 100%;
    /* Resolve the cell width against the stage's definite grid-row height. */
    --cell-width: calc(100cqh * 9 / 16);
    position: absolute; inset: 0; height: 100%; margin: 0;
    mask-image: linear-gradient(to right, #000 calc(var(--panel-start) - 64px), transparent calc(var(--panel-start) - 16px));
  }
  .process-enhanced .process-stage { container-type: size; }
  .process-enhanced .session-row { position: relative; height: 100%; margin-block: 0; pointer-events: none; }
  .process-enhanced .session-detail {
    grid-column: 8 / -1; height: 100%; min-height: 0;
    grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; row-gap: var(--s2);
    container-type: inline-size; pointer-events: auto;
  }
  .process-enhanced .session-panel { min-height: 0; justify-content: safe flex-end; }
  .process-enhanced .session-panel > * { flex-shrink: 0; }
  .process.is-compact .session-panel > p:not(.session-area) { font-size: 17px; line-height: 24px; top: -1.5px; }
  .process.is-compact .session-text { top: -1.5px; }
  .process-enhanced .session-steps { grid-template-columns: minmax(0, 1fr); margin: 0; padding-bottom: var(--s1); align-self: end; }
  .process-enhanced .phase-groups {
    /* At 1280px the five-column panel is narrower than the reference's 472px. */
    column-gap: clamp(0px, calc((100cqi - 440px) / 2), 16px);
    grid-template-columns: 3fr 4fr 3fr;
  }
  .process-enhanced .phase-group { grid-column: auto; }
  .process-enhanced .phase-caption { display: block; min-height: 16px; font-size: 13px; line-height: 16px; }
  .process-enhanced .phase-caption > .copy-label { display: block; line-height: 16px; }
  .process-enhanced .phase-subtitle { display: none; }
  .process-enhanced .phase-buttons { padding-top: 0; }
  .process-enhanced .process-selection { display: none; }
  .process:not(.process-enhanced) .process-stage { --stage-grid: min(calc(100cqi - var(--gutter) * 2), var(--wide)); }
  .process:not(.process-enhanced) .process-reel { left: calc((100cqi - var(--stage-grid)) / 2 + (var(--stage-grid) + var(--grid-gap)) * (var(--axis) - 1) / 12); }
}
@media (min-width: 1256px) and (max-width: 1439px) {
  .process .chapter-lede { font-size: 20px; line-height: 32px; letter-spacing: 0; top: 1.5px; }
}
@media (min-width: 1256px) and (max-height: 820px) {
  .process-enhanced .session-detail h3 { font-size: 32px; line-height: 40px; top: 1.5px; }
  .process-enhanced .session-panel > p:not(.session-area) { font-size: 17px; line-height: 24px; top: -1.5px; }
  .process-enhanced .session-text { top: -1.5px; }
}
@media (min-width: 1256px) and (max-height: 760px) {
  .process.process-enhanced { --band-pad: var(--s4); }
}

/* A quiet legal row on the existing text axis; the privacy page stays plain. */
.footer-legal { margin-top: 48px; }
.footer-legal::before { content: ""; grid-column: var(--axis) / -1; height: 24px; background: linear-gradient(var(--line), var(--line)) top / 100% 1px no-repeat; }
.footer-legal-row { grid-column: var(--axis) / -1; display: flex; align-items: baseline; column-gap: 32px; }
.footer-trademark { flex: 1; min-width: 0; padding-block: 10px; font-size: 12px; line-height: 24px; color: #b9b7af; position: relative; top: -2.5px; }
.footer-legal a { flex: none; display: inline-flex; align-items: center; min-height: 44px; padding-block: 10px; font-size: 14px; line-height: 24px; color: #b9b7af; text-decoration-color: currentColor; position: relative; top: -2.5px; }
.privacy-content { grid-column: var(--axis) / -1; max-width: 72ch; }
.privacy-content h1 { font-size: 64px; line-height: 64px; letter-spacing: -.035em; position: relative; top: 3px; }
.privacy-content h2 { margin-top: 48px; margin-bottom: 24px; font-size: 28px; line-height: 40px; letter-spacing: -.02em; position: relative; top: 3px; }
.privacy-content p { position: relative; top: 1.5px; }
.privacy-content p + p { margin-top: 32px; }
.privacy-content .privacy-updated { margin-top: 24px; color: var(--muted); font-size: 16px; line-height: 24px; top: -1px; }
.privacy-content a { overflow-wrap: anywhere; }
.privacy-content a[href^="tel:"] { white-space: nowrap; }
/* A landscape phone has tablet width but very little vertical reading space. */
@media (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  :root { --header-offset: 64px; }
  .hero { padding-block: 16px 24px; }
  .hero-kicker { margin-bottom: 8px; }
  .hero h1 { font-size: 48px; line-height: 56px; }
  .hero-stage {
    --hero-stage-top: 176px; --hero-floor: 24px;
    block-size: min(
      round(up, calc(min(100cqi - var(--gutter) * 2, var(--wide)) * 941 / 1672), var(--b)),
      max(112px, round(down, calc((100svh - var(--hero-stage-top) - var(--hero-floor)) / .873), var(--b)))
    );
  }
  .chapter { padding-block: 40px 48px; scroll-margin-top: -24px; }
  .process { padding-block: 40px; }
  .chapter-title { min-height: 88px; align-items: last baseline; }
  .chapter-title > .chapter-number { font-size: 88px; line-height: 88px; margin-inline-end: 16px; --dx: 0px; --dy: 0px; top: 1.5px; }
  .chapter h2, .reading-opener h1 { font-size: 44px; line-height: 48px; top: 1.5px; }
  .chapter-body { margin-top: 24px; }
  .lede { font-size: 24px; line-height: 32px; top: 0; }
  .process .chapter-lede { font-size: 21px; line-height: 28px; top: -.5px; }
  .reading-page main { padding-block: 40px 48px; }
  .reading-intro { margin-top: 24px; }
  .contact-layout { margin-top: 24px; }
  .contact-links a { font-size: clamp(28px, 4.7vw, 40px); line-height: 48px; }
  .contact-subpage { padding-top: 40px; scroll-margin-top: 0; }

  .process .chapter-title { column-gap: 24px; grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .process .chapter-title > .chapter-number { grid-column: 1 / 3; grid-row: 1; justify-self: start; margin-inline-end: 0; }
  .process .chapter-title h2 { grid-column: 3 / 6; grid-row: 1; font-size: clamp(32px, 5.4vw, 40px); }
  .process .process-intro { grid-column: 6 / -1; grid-row: 1; }
  .process .chapter-lede { font-size: 17px; line-height: 24px; top: -1.5px; }
  .process-film { --film-height: round(down, clamp(144px, calc(100svh - 176px), 256px), var(--b)); --cell-width: calc(var(--film-height) * 9 / 16); --step: 96px; height: var(--film-height); }
  .process-enhanced .process-stage { width: min(calc(100% - var(--gutter) * 2), var(--wide)); margin: 8px auto 0; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 16px 24px; align-items: start; }
  .process-enhanced .process-film { grid-column: 1 / 6; grid-row: 1; margin: 0; }
  .process-enhanced .session-row, .process-enhanced .session-detail { display: contents; }
  .process-enhanced .session-panel { grid-column: 6 / -1; grid-row: 1; min-height: 0; gap: 8px; }
  .process-enhanced .session-panel h3 { font-size: 26px; line-height: 32px; top: -.5px; }
  .process-enhanced .session-panel .session-area,
  .process-enhanced .session-panel > p:not(.session-area) { font-size: 17px; line-height: 24px; }
  .process-enhanced .session-panel .session-area { top: -1.5px; }
  .process-enhanced .session-text { top: -1.5px; }
  .process-enhanced .session-steps { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: subgrid; margin: 0; padding: 0; }
  .process-enhanced .phase-groups { grid-template-columns: 3fr 4fr 3fr; column-gap: 16px; }
  .process-enhanced .session-steps .phase-group { grid-column: auto; display: flex; flex-direction: column; align-items: stretch; gap: 8px; box-shadow: none; padding-top: 0; }
  .process-enhanced .phase-caption { display: block; }
  .process-enhanced .phase-caption > .copy-label { font-size: 11px; line-height: 16px; }
  .process-enhanced .phase-subtitle { display: none; }
  .process-enhanced .session-steps .phase-buttons { min-height: 48px; padding-top: 0; background: linear-gradient(var(--line), var(--line)) top / 100% 1px no-repeat; }
  .process-enhanced .session-steps .is-active .phase-buttons { background: linear-gradient(var(--accent), var(--accent)) top / 100% 2px no-repeat; }
  .process-link { grid-column: 1 / -1; }
}
@media (max-width: 720px) and (max-height: 500px) and (orientation: landscape) {
  /* Reserve the centred 44px stop target below the portrait canvas's final feet. */
  .hero-stage { --hero-floor: 32px; block-size: max(112px, round(down, calc(100svh - var(--hero-stage-top) - var(--hero-floor)), var(--b))); }
}
@media (max-width: 720px) and (orientation: portrait) {
  /* Keep figure taps available without restoring the numbered controls. */
  .process-enhanced .process-film { cursor: pointer; touch-action: auto; }
  .process-enhanced .session-steps, .process-enhanced .session-panel:not(.is-current) { display: none; }
  .process-enhanced .session-panel { min-height: 0; }
}
@media (max-width: 720px) {
  .footer-legal { margin-top: 32px; }
  .footer-legal-row { flex-direction: column; align-items: stretch; }
  .footer-trademark { padding-block: 0; top: 0; }
  .footer-legal::before, .footer-legal-row, .privacy-content { grid-column: 1 / -1; }
  .footer-legal a { align-self: flex-start; top: 2px; }
  .privacy-content h1 { font-size: 40px; line-height: 48px; top: -1px; }
  .privacy-content h2 { margin-top: 40px; margin-bottom: 16px; font-size: 24px; line-height: 32px; top: 0; }
  .privacy-content p { top: 0; }
  .privacy-content .privacy-updated { top: -1px; }
  .privacy-content p + p { margin-top: 28px; }
}
/* Reading sessions share a ground line, while their unused top paper overlaps.
   The complete canvases retain one scale; no drawing is cropped or stretched. */
@media (min-width: 721px) {
  .session-entry { container-type: inline-size; align-items: end; margin-top: 48px; --figure-height: 320px; --foot-inset: calc(var(--figure-height) / 8); }
  .session-entry .session-thumbnail { grid-column: var(--axis) / 6; grid-row: 1; width: calc(var(--figure-height) * 9 / 16); max-width: none; height: var(--figure-height); align-self: end; margin-top: calc(-1 * round(down, calc(var(--ink-top) * var(--figure-height) / 1280), 8px)); transform: translateX(calc(var(--ink-left) * -100% / 720)); }
  .session-entry .session-reading { grid-column: 6 / -1; grid-row: 1; max-width: 624px; position: relative; align-self: end; margin-bottom: var(--foot-inset); padding-top: 0; padding-bottom: 16px; box-shadow: none; }
  .session-reading::after { content: ""; position: absolute; inset-inline: 0; bottom: -1px; height: 1px; background: var(--line); }
  .session-entry .session-numeral { grid-row: 1; align-self: end; margin-bottom: var(--foot-inset); --dy: 12px; z-index: 1; }
}
@media (min-width: 721px) and (max-width: 1100px) {
  .session-entry { --figure-height: round(down, clamp(256px, calc(((100cqi + var(--grid-gap)) * 3 / 12 - var(--grid-gap)) * 16 / 9), 320px), 64px); }
  .session-entry .session-thumbnail { grid-column: 3 / 6; }
}
@media (min-width: 1101px) and (max-width: 1200px) {
  /* Two figure columns replace three here; keep a real gutter for the widest poses. */
  .session-entry { --figure-height: 256px; }
}
@media (max-width: 720px) {
  /* On phones the grounded drawing introduces one continuous reading column. */
  .session-entry { position: relative; grid-template-columns: 48px minmax(0, 1fr); padding-top: 0; box-shadow: none; row-gap: 16px; --figure-height: 192px; --trim-top: round(down, calc(var(--ink-top) * var(--figure-height) / 1280), 4px); background: linear-gradient(var(--line), var(--line)) 0 calc(var(--figure-height) - var(--trim-top) - var(--figure-height) / 8) / 100% 1px no-repeat; }
  .session-entry .session-thumbnail { grid-column: 2; grid-row: 1; height: var(--figure-height); width: calc(var(--figure-height) * 9 / 16); max-width: none; margin-top: calc(-1 * var(--trim-top)); margin-bottom: -16px; transform: translateX(calc(var(--ink-left) * -100% / 720)); }
  .session-entry .session-numeral { grid-column: 1; grid-row: 1; align-self: end; margin-bottom: calc(var(--figure-height) / 8 - 16px); --dy: 12px; }
  .session-reading h4 { grid-column: 1 / -1; grid-row: 2; min-height: 0; }
  .session-reading .session-area { grid-column: 1 / -1; grid-row: 3; }
  .session-reading > p:not(.session-area) { grid-column: 1 / -1; grid-row: 4; }
}
@media (min-width: 560px) and (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  /* Use the available width on short screens; keep the complete explanation beside the pose. */
  .session-entry { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 0; align-items: end; padding-top: 0; box-shadow: none; background: none; --figure-height: 192px; --foot-inset: calc(var(--figure-height) / 8); }
  .session-entry .session-thumbnail { grid-column: 1 / 5; grid-row: 1; height: var(--figure-height); width: calc(var(--figure-height) * 9 / 16); max-width: none; margin-top: calc(-1 * round(down, calc(var(--ink-top) * var(--figure-height) / 1280), 4px)); margin-bottom: 0; transform: translateX(calc(48px - var(--ink-left) * 100% / 720)); align-self: end; }
  .session-entry .session-reading { display: flex; flex-direction: column; gap: 12px; grid-column: 5 / -1; grid-row: 1; max-width: 624px; align-self: end; margin-bottom: var(--foot-inset); padding-top: 0; padding-bottom: 16px; box-shadow: none; position: relative; }
  .session-reading::after { content: ""; position: absolute; inset-inline: 0; bottom: -1px; height: 1px; background: var(--line); }
  .session-reading h4 { font-size: 21px; line-height: 28px; top: -.5px; }
  .session-reading .session-area { font-size: 16px; line-height: 24px; top: -1px; }
  .session-reading .copy-label { font-size: 11px; line-height: 16px; top: .5px; }
  .session-reading > p:not(.session-area) { font-size: 17px; line-height: 24px; top: -1px; }
  .session-entry .session-numeral { grid-column: 1; grid-row: 1; align-self: end; justify-self: start; font-size: 44px; line-height: 48px; margin-bottom: var(--foot-inset); transform-origin: left top; --dx: 0px; --dy: 12px; }
}
@media (min-width: 721px) and (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  .session-entry { --figure-height: 224px; }
}

/* The full method name is one heading, with the descriptor in a smaller role. */
.method-opener { min-height: 192px; }
.method-opener > .chapter-number { align-self: start; }
.method-name { display: block; }
.method-name > sup { position: relative; top: .8em; }
.method-descriptor { display: block; margin-top: 8px; font-size: 24px; line-height: 32px; letter-spacing: 0; position: relative; top: -3px; }
.rolfing > .chapter-body, .method-opener + .reading-intro { margin-top: 24px; }
/* The original mark illustrates only the homepage lead; the chapter grid stays intact. */
.rolfing-lead { --mark-height: 112px; grid-column: var(--axis) / 12; display: grid; grid-template-columns: calc(var(--mark-height) * 150.12 / 261.792) minmax(0, 1fr); column-gap: 32px; align-items: center; position: relative; top: 1.5px; }
.rolfing-mark { grid-column: 1; grid-row: 1; display: block; width: 100%; height: var(--mark-height); }
.rolfing-mark svg { display: block; width: 100%; height: 100%; fill: currentColor; }
.rolfing-lead > .lede { grid-column: 2; grid-row: 1; position: static; }
@media (max-width: 720px) {
  .method-opener { min-height: 136px; align-items: first baseline; }
  .method-opener > .chapter-number, .method-opener > .method-heading { align-self: first baseline; }
  .chapter-title.method-opener > .method-heading { top: 2px; }
  .method-descriptor { font-size: 18px; line-height: 24px; top: 0; }
  .rolfing > .chapter-body { margin-top: 20px; }
  .rolfing-lead { --mark-height: 96px; grid-column: 1 / -1; column-gap: 24px; top: 0; }
}
@media (max-width: 420px) {
  .method-opener { padding-top: 16px; }
  .chapter-title.method-opener > .method-heading { top: 3px; }
}
@media (max-width: 360px) {
  .reading-opener .method-descriptor { top: 1.5px; }
  .rolfing-lead { --mark-height: 80px; column-gap: 16px; }
}
@media (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  .method-opener { min-height: 120px; padding-top: 0; align-items: first baseline; }
  .method-opener > .chapter-number, .method-opener > .method-heading { align-self: first baseline; }
  .chapter-title.method-opener > .method-heading { top: 3px; }
  .method-descriptor { font-size: 18px; line-height: 24px; top: 0; }
  .rolfing { padding-top: 24px; }
  .rolfing > .chapter-body { margin-top: 16px; }
  .rolfing-lead { --mark-height: 64px; column-gap: 16px; top: 0; }
}
@media (min-width: 721px) and (max-width: 1100px) and (max-height: 500px) and (orientation: landscape) {
  .chapter-title.method-opener > .method-heading { top: 7px; }
  .method-descriptor { top: -4px; }
}
