@font-face {
  font-family: "Onest";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("onest-cyrillic-300-700.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Onest";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("onest-latin-300-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --canvas: #f4f6f9;
  --surface: #fff;
  --ink: #101318;
  --secondary: #59616e;
  --rule: #d7dde6;
  --cobalt: #1847d6;
  --cobalt-dark: #1238ab;
  --cobalt-tint: #e8eeff;
  --tint-ink: #485778;
  --tint-rule: #c9d4ec;
  --font: "Onest", "Segoe UI", sans-serif;
  --shell: 80rem;
  --header-height: 4.75rem;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --z-header: 10;
  --z-menu: 20;
  --z-skip: 30;
}
*, *::before, *::after { box-sizing: border-box; }
html {
  background: var(--canvas);
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-height) + 1.25rem);
  scrollbar-color: #929cab var(--canvas);
  scrollbar-gutter: stable;
}
body {
  margin: 0;
  color: var(--ink);
  background: var(--canvas);
  font: 400 1rem/1.65 var(--font);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body.menu-open { overflow: hidden; }
main, section, article, header, footer, nav, div, figure { min-width: 0; }
h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
h1, h2, h3, h4 { font-weight: 500; text-wrap: balance; }
h1, h2 { line-height: 1.07; letter-spacing: -.04em; }
h2 { font-size: clamp(2.4rem, 3.7vw, 3.4rem); }
h3 { font-size: 1.375rem; line-height: 1.25; letter-spacing: -.025em; }
h4 { font-size: 1rem; }
p, li, dd { text-wrap: pretty; }
a { color: inherit; text-decoration: none; text-underline-offset: .25em; }
button { color: inherit; font: inherit; cursor: pointer; }
button, a, summary { -webkit-tap-highlight-color: transparent; }
button { border: 0; }
img { display: block; max-width: 100%; }
::selection { color: var(--surface); background: var(--cobalt); }
:focus-visible { outline: 3px solid var(--cobalt); outline-offset: 5px; }
main:focus, h1[tabindex]:focus, h2[tabindex]:focus { outline: none; }
.page-shell { width: min(calc(100% - 8rem), var(--shell)); margin-inline: auto; }
.section-space { padding-block: clamp(5rem, 8vw, 7.5rem); }
.section-columns, .case-intro, .case-body, .contact-intro {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: clamp(3rem, 7vw, 7rem);
}
.nowrap { white-space: nowrap; }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.icon { width: 1.25rem; height: 1.25rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.skip-link { position: fixed; inset: .75rem auto auto .75rem; z-index: var(--z-skip); padding: .75rem 1rem; color: var(--surface); background: var(--cobalt); transform: translateY(-180%); }
.skip-link:focus { transform: translateY(0); }

/* Navigation and controls */
.site-header { position: sticky; top: 0; z-index: var(--z-header); background: var(--canvas); border-bottom: 1px solid var(--rule); }
.header-shell { display: flex; align-items: center; gap: 2rem; min-height: var(--header-height); }
.brand { display: grid; gap: .2rem; margin-right: auto; line-height: 1.2; }
.brand strong { font-size: .875rem; font-weight: 600; letter-spacing: -.02em; }
.brand span { color: var(--secondary); font-size: .75rem; }
.desktop-nav { display: flex; gap: 2.1rem; margin-inline: auto; }
.desktop-nav a, .header-cv { display: inline-flex; align-items: center; min-height: 2.75rem; font-size: .8125rem; color: var(--secondary); transition: color 180ms var(--ease); }
.desktop-nav a[aria-current] { color: var(--cobalt); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .5rem; }
.header-contact { display: inline-flex; align-items: center; gap: 1rem; min-height: 2.75rem; font-size: .8125rem; font-weight: 500; color: var(--cobalt); }
.nojs-nav { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; padding-block: .75rem; font-size: .875rem; }
.nojs-nav a { padding-block: .5rem; }
.js .nojs-nav { display: none; }
.button { display: inline-flex; justify-content: center; align-items: center; gap: 1.5rem; min-height: 3.5rem; padding: .85rem 1.25rem; border-radius: .375rem; color: var(--surface); background: var(--cobalt); font-size: .875rem; font-weight: 500; line-height: 1.4; transition: background 180ms var(--ease), transform 180ms var(--ease); }
.text-link { display: inline-flex; align-items: center; gap: .65rem; min-height: 2.75rem; font-size: .875rem; font-weight: 500; color: var(--cobalt); }
a .icon { transition: transform 180ms var(--ease); }
.button:active { transform: translateY(1px); }
.button:focus-visible { outline-offset: 4px; }
.menu-toggle { display: none; }
.menu-toggle, .menu-close { position: relative; width: 3rem; height: 3rem; padding: 0; flex: 0 0 auto; background: transparent; border-radius: .375rem; }
.menu-toggle span, .menu-close span { position: absolute; top: 50%; left: 50%; width: 1.25rem; height: 1.5px; background: currentColor; }
.menu-toggle span:first-child { transform: translate(-50%, -4px); }
.menu-toggle span:last-child { transform: translate(-50%, 4px); }
.menu-close span:first-child { transform: translate(-50%, -50%) rotate(45deg); }
.menu-close span:last-child { transform: translate(-50%, -50%) rotate(-45deg); }
.menu-panel { position: fixed; inset: 0; z-index: var(--z-menu); overflow-y: auto; visibility: hidden; opacity: 0; pointer-events: none; color: var(--ink); background: var(--canvas); transition: opacity 180ms var(--ease), visibility 180ms; }
.menu-panel.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
.menu-panel__inner { display: grid; grid-template-rows: auto 1fr auto; min-height: 100dvh; width: min(calc(100% - 3rem), 42rem); margin-inline: auto; }
.menu-panel__head { display: flex; align-items: center; justify-content: space-between; min-height: 4.25rem; border-bottom: 1px solid var(--rule); font-size: .875rem; }
.menu-panel nav { display: grid; align-content: center; gap: .75rem; padding-block: 2rem; }
.menu-panel nav a { width: fit-content; padding-block: .3rem; font-size: clamp(1.75rem, 7vw, 3.5rem); line-height: 1.2; letter-spacing: -.035em; }
.menu-panel__footer { display: flex; gap: 2rem; padding-block: 1rem max(1.5rem, env(safe-area-inset-bottom)); border-top: 1px solid var(--rule); }
.menu-panel__footer a { padding-block: .65rem; font-size: .875rem; color: var(--cobalt); }

/* The portrait and name form a single introduction. */
.hero { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); grid-template-rows: auto 1fr auto; column-gap: clamp(3rem, 6vw, 6rem); row-gap: 1.75rem; padding-block: 3.25rem 2rem; }
.hero-heading { grid-column: 2; grid-row: 1; padding-top: 2rem; }
.hero h1 { font-size: clamp(3.4rem, 5.2vw, 5.5rem); line-height: 1.01; }
.hero-role { margin-top: 2rem; color: var(--cobalt); font-size: clamp(1.25rem, 2vw, 1.75rem); line-height: 1.35; letter-spacing: -.025em; }
.hero-portrait { position: relative; grid-column: 1; grid-row: 1 / 3; min-height: 39rem; overflow: hidden; background: var(--rule); }
.hero-portrait picture, .hero-portrait img { display: block; width: 100%; height: 100%; }
.hero-portrait img { position: absolute; object-fit: cover; object-position: 63% 50%; }
.hero-copy { display: flex; flex-direction: column; grid-column: 2; grid-row: 2; }
.hero-lead { max-width: 29rem; color: var(--secondary); font-size: 1.0625rem; line-height: 1.7; }
.hero-actions { margin-top: 1.75rem; }
.hero-details { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-top: auto; padding-top: 3rem; padding-bottom: 1.25rem; font-size: .8125rem; line-height: 1.55; }
.hero-details span { display: inline-block; margin-top: .35rem; color: var(--secondary); font-size: .75rem; }
.hero-next { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; min-height: 3rem; color: var(--secondary); font-size: .8125rem; }
.hero-next .icon { color: var(--cobalt); }
@media (prefers-reduced-motion: no-preference) {
  .hero-portrait img { animation: portrait-arrive 650ms var(--ease) both; }
  @keyframes portrait-arrive { from { transform: scale(1.025); } to { transform: scale(1); } }
}

/* Services: a readable scope of work, followed by the working relationship. */
.services { background: var(--surface); }
.section-intro > p { max-width: 27rem; margin-top: 1.75rem; color: var(--secondary); }
.section-intro > .section-aside { max-width: 24rem; margin-top: 1.5rem; font-size: .875rem; }
.section-intro > .text-link { flex-wrap: wrap; margin-top: 1.5rem; }
.service { padding-block: 1.6rem; border-top: 1px solid var(--rule); }
.service:first-child { padding-top: 0; border-top: 0; }
.service:last-child { padding-bottom: 0; }
.service p { max-width: 38rem; margin-top: .7rem; color: var(--secondary); font-size: .9375rem; }
.approach { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(3rem, 7vw, 7rem); margin-top: 4rem; padding-top: 2.5rem; border-top: 1px solid var(--rule); }
.approach h3 { color: var(--cobalt); }
.approach p { max-width: 38rem; font-size: 1.125rem; line-height: 1.65; }
.approach p + p { margin-top: 1rem; color: var(--secondary); font-size: .9375rem; }

/* The family example and its source stay together. */
.case-study { background: var(--cobalt-tint); }
.case-context > p:first-child { font-size: 1.375rem; line-height: 1.4; letter-spacing: -.02em; }
.case-context .case-dates { margin-top: .5rem; color: var(--tint-ink); font-size: .8125rem; font-variant-numeric: tabular-nums; }
.case-context > p:last-child { max-width: 35rem; margin-top: 1.5rem; color: var(--tint-ink); font-size: .9375rem; }
.case-body { margin-top: 3.75rem; }
.case-body h3 { margin-bottom: 1rem; }
.case-body p { color: var(--tint-ink); font-size: .9375rem; }
.case-rhythm > p { max-width: 27rem; }
.achievement-list { margin-top: 1.75rem; }
.achievement-list > div { display: grid; grid-template-columns: 8.5rem 1fr; gap: 1rem; padding-block: .95rem; border-top: 1px solid var(--tint-rule); }
.achievement-list dt { color: var(--tint-ink); font-size: .8125rem; }
.achievement-list dd { font-size: .9375rem; line-height: 1.5; }
.case-results .case-note { margin-top: 1.25rem; font-size: .75rem; line-height: 1.65; }
.text-details { margin-top: 1.25rem; font-size: .875rem; }
.text-details summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; width: fit-content; max-width: 100%; min-height: 2.75rem; padding-block: .5rem; color: var(--cobalt); font-weight: 500; cursor: pointer; list-style: none; }
.text-details summary::-webkit-details-marker { display: none; }
.text-details summary::marker { content: ""; }
.text-details summary .icon { transition: transform 180ms var(--ease); }
.text-details[open] summary .icon { transform: rotate(180deg); }
.text-details > p, .detail-copy { margin-top: .75rem; }
.family-quote { margin-top: 4rem; padding-top: 3rem; border-top: 1px solid var(--tint-rule); }
.family-quote blockquote { max-width: 66rem; font-size: clamp(1.65rem, 2.9vw, 2.625rem); line-height: 1.35; letter-spacing: -.025em; }
.family-quote figcaption { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 1.75rem; font-size: .875rem; }
.quote-source { display: block; margin-top: .3rem; color: var(--tint-ink); font-size: .75rem; }

/* The CV is available at two levels of detail. */
.file-type { color: var(--secondary); font-size: .75rem; font-weight: 400; }
.timeline ol { display: grid; gap: 1.75rem; padding: 0; list-style: none; }
.timeline li { display: grid; grid-template-columns: 6.5rem 1fr; gap: 1.75rem; }
.timeline-period { padding-top: .25rem; color: var(--cobalt); font-size: .8125rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.timeline h3 { font-size: 1.1875rem; line-height: 1.35; }
.timeline li div p { margin-top: .4rem; color: var(--secondary); font-size: .875rem; }
.education { margin-top: 2.5rem; padding-top: 2.25rem; border-top: 1px solid var(--rule); }
.education > p { max-width: 38rem; margin-top: 1rem; color: var(--secondary); font-size: .9375rem; }
.detail-copy { color: var(--secondary); }
.detail-copy h4 { margin-block: 1.5rem .6rem; color: var(--ink); }
.detail-copy ul { display: grid; gap: .65rem; padding-left: 1.25rem; }
.detail-copy li::marker { color: var(--cobalt); }

/* Publications link to their original sources. */
.press { padding-block: 1rem 6.5rem; }
.press h2 { font-size: clamp(2rem, 3vw, 2.6rem); }
.press-list { display: grid; grid-template-columns: 1fr 1fr; gap: 2.25rem; }
.press-item { display: flex; flex-direction: column; align-items: flex-start; padding-top: 1.25rem; border-top: 1px solid var(--rule); }
.press-meta { display: grid; gap: .3rem; margin-bottom: 1rem; font-size: .875rem; font-weight: 600; }
.press-meta time { color: var(--secondary); font-size: .75rem; font-weight: 400; font-variant-numeric: tabular-nums; }
.press-item h3 { margin-bottom: 1rem; font-size: 1.1875rem; line-height: 1.45; letter-spacing: -.02em; }
.press-action { display: inline-flex; align-items: center; gap: .65rem; min-height: 2.75rem; margin-top: auto; color: var(--cobalt); font-size: .75rem; }
.press-action .icon { width: 1rem; height: 1rem; }

/* Contact */
.contact { background: var(--cobalt-tint); }
.contact-copy > p { max-width: 35rem; color: var(--tint-ink); font-size: 1.0625rem; }
.contact-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem 1.5rem; margin-top: 1.75rem; }
.contact-phone { display: inline-block; margin-top: 1rem; padding-block: .5rem; color: var(--tint-ink); font-size: .875rem; font-variant-numeric: tabular-nums; }
.contact-terms { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(3rem, 7vw, 7rem); margin-top: 3.5rem; padding-top: 1.75rem; border-top: 1px solid var(--tint-rule); }
.contact-terms p { max-width: 35rem; color: var(--tint-ink); font-size: .8125rem; }
.site-footer .page-shell { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: 5.5rem; padding-block: 1rem; color: var(--secondary); font-size: .75rem; }
.site-footer a { display: inline-flex; align-items: center; gap: .75rem; min-height: 2.75rem; }
.site-footer .icon { width: 1rem; height: 1rem; }

/* Recommendation: original letter, screen and print. */
.letter-nav { display: flex; justify-content: space-between; align-items: center; gap: 1rem; max-width: 54rem; margin-inline: auto; padding: 1.5rem 0; }
.letter-nav button { background: transparent; padding: .75rem; color: var(--cobalt); font-size: .875rem; }
.no-js [data-print] { display: none; }
.letter-main { width: min(calc(100% - 3rem), 54rem); margin: 0 auto 4rem; }
.letter-paper { padding: clamp(1.5rem, 5vw, 4.5rem); background: var(--surface); }
.letter-paper h1 { font-size: clamp(2rem, 4vw, 3rem); }
.letter-date { margin-top: 1rem; color: var(--secondary); font-size: .875rem; }
.letter-prose { margin-top: 2.5rem; }
.letter-prose p + p { margin-top: 1.25rem; }
.letter-prose h2 { margin-block: 2.5rem 1rem; font-size: 1.375rem; line-height: 1.35; letter-spacing: -.02em; }
.letter-prose ul { padding-left: 1.3rem; }
.letter-prose li { margin-bottom: .75rem; }
.letter-sign { margin-top: 2.5rem; }
.letter-sign p + p { margin-top: .25rem; }
.letter-note { margin-top: 1.5rem; color: var(--secondary); font-size: .75rem; }

@media (hover: hover) and (pointer: fine) {
  .button:hover { background: var(--cobalt-dark); }
  .text-link:hover, .header-cv:hover, .desktop-nav a:hover { color: var(--cobalt-dark); text-decoration: underline; }
  .button:hover .icon, .text-link:hover .icon, .press-item:hover .icon, .header-contact:hover .icon { transform: translate(2px, -2px); }
  .hero-next:hover .icon { transform: translateY(3px); }
  .press-item:hover h3 { color: var(--cobalt); }
  .menu-panel a:hover { color: var(--cobalt); }
}

@media (max-width: 68rem) {
  :root { --header-height: 4.25rem; }
  .page-shell { width: calc(100% - 3rem); }
  .header-shell { gap: 1rem; }
  .desktop-nav, .header-cv, .header-contact { display: none; }
  .menu-toggle { display: block; }
  .no-js .menu-toggle { display: none; }
  .no-js .header-contact { display: inline-flex; }
  .hero { column-gap: 2.25rem; padding-top: 2rem; }
  .hero-heading { padding-top: 1rem; }
  .hero h1 { font-size: clamp(2.75rem, 5.8vw, 4rem); }
  .hero-portrait { min-height: 36rem; }
  .hero-role { margin-top: 1.5rem; font-size: 1.4rem; }
  .hero-details { grid-template-columns: 1fr; gap: 1rem; padding-top: 1.75rem; }
  .hero-details span { margin-top: .15rem; }
  .section-columns, .case-intro, .case-body, .approach, .contact-intro, .contact-terms { gap: 2.5rem; }
  .achievement-list > div { grid-template-columns: 7rem 1fr; }
  .timeline li { grid-template-columns: 1fr; gap: .45rem; }
  .press-list { gap: 1.5rem; }
}
@media (max-width: 47.99rem) {
  :root { --header-height: 4rem; }
  h2 { font-size: clamp(2rem, 8.7vw, 2.8rem); }
  h3 { font-size: 1.25rem; }
  .page-shell { width: calc(100% - 3rem); }
  .section-space { padding-block: 4rem; }
  .brand span { display: none; }
  .header-shell { min-height: var(--header-height); }
  .hero { grid-template-columns: 1fr; grid-template-rows: auto auto auto auto; row-gap: 1.5rem; padding-block: 2rem 1rem; }
  .hero-heading, .hero-copy, .hero-portrait, .hero-next { grid-column: 1; }
  .hero-heading { grid-row: 1; padding: 0; }
  .hero h1 { font-size: clamp(2.45rem, 11.8vw, 4.4rem); line-height: 1.04; }
  .hero-role { margin-top: 1rem; font-size: 1.125rem; line-height: 1.4; }
  .hero-role br { display: none; }
  .hero-portrait { grid-row: 2; min-height: 0; height: clamp(15rem, 71vw, 26rem); }
  .hero-portrait img { object-position: 61% 39%; }
  .hero-copy { grid-row: 3; }
  .hero-lead { max-width: 38rem; font-size: .9375rem; line-height: 1.65; }
  .hero-actions { margin-top: 1.25rem; }
  .hero-actions .button { width: 100%; justify-content: space-between; min-height: 3.25rem; }
  .hero-details { grid-template-columns: 1fr 1fr; padding-top: 1.5rem; padding-bottom: 0; gap: 1.5rem; font-size: .75rem; }
  .hero-details span { font-size: .75rem; }
  .hero-next { grid-row: 4; min-height: 2.75rem; font-size: .75rem; }
  .section-columns, .case-intro, .case-body, .approach, .contact-intro, .contact-terms { grid-template-columns: 1fr; gap: 2rem; }
  .section-intro > p { max-width: 38rem; margin-top: 1.25rem; font-size: .9375rem; }
  .section-intro > .section-aside { max-width: 38rem; margin-top: 1rem; font-size: .8125rem; }
  .service { padding-block: 1.4rem; }
  .service p { margin-top: .65rem; font-size: .9375rem; }
  .approach { gap: 1rem; margin-top: 2.75rem; padding-top: 2rem; }
  .approach p { font-size: 1rem; }
  .approach p + p { font-size: .875rem; }
  .case-intro { gap: 1.5rem; }
  .case-context > p:first-child { font-size: 1.125rem; }
  .case-context > p:last-child { margin-top: 1.25rem; font-size: .9375rem; }
  .case-body { margin-top: 2rem; gap: 2rem; }
  .case-body h3 { margin-bottom: .8rem; }
  .case-body p { font-size: .9375rem; }
  .achievement-list { margin-top: 1.25rem; }
  .achievement-list > div { grid-template-columns: 6.7rem 1fr; gap: .75rem; }
  .achievement-list dt { font-size: .75rem; }
  .achievement-list dd { font-size: .8125rem; }
  .case-results .case-note { font-size: .75rem; }
  .family-quote { margin-top: 2.5rem; padding-top: 2rem; }
  .family-quote blockquote { font-size: 1.625rem; }
  .family-quote figcaption { align-items: flex-start; flex-direction: column; gap: .75rem; margin-top: 1.5rem; }
  .timeline ol { gap: 1.5rem; }
  .timeline li { grid-template-columns: 5.25rem 1fr; gap: 1rem; }
  .timeline-period { font-size: .75rem; }
  .timeline h3 { font-size: 1rem; }
  .timeline li div p { font-size: .875rem; }
  .education { margin-top: 2rem; padding-top: 1.75rem; }
  .education > p { font-size: .9375rem; }
  .text-details { font-size: .8125rem; }
  .press { padding-block: 0 4rem; }
  .press h2 { font-size: 2rem; }
  .press h2 br { display: none; }
  .press-list { grid-template-columns: 1fr; gap: 1.5rem; }
  .press-meta { display: flex; flex-wrap: wrap; gap: .75rem; align-items: baseline; margin-bottom: .75rem; }
  .press-item h3 { margin-bottom: .5rem; font-size: 1.125rem; }
  .contact-copy > p { font-size: .9375rem; }
  .contact-actions { gap: .5rem 1.25rem; margin-top: 1.5rem; }
  .contact .button { width: 100%; justify-content: space-between; }
  .contact-phone { margin-top: .25rem; }
  .contact-terms { margin-top: 2rem; padding-top: 1.5rem; gap: 1rem; }
  .contact-terms p { font-size: .8125rem; }
  .site-footer .page-shell { min-height: 4.5rem; gap: .75rem; font-size: .6875rem; }
  .letter-nav { padding-block: 1rem; }
  .letter-nav .text-link { font-size: .75rem; }
  .letter-paper { padding: 1.5rem; }
  .letter-paper h1 { font-size: 1.8rem; overflow-wrap: break-word; }
  .letter-prose { font-size: .875rem; }
}
@media (max-width: 23rem) {
  .page-shell, .menu-panel__inner { width: calc(100% - 2rem); }
  .brand strong { font-size: .8125rem; }
  .hero h1 { font-size: 2.4rem; }
  .hero-role { font-size: 1rem; }
  .timeline li { grid-template-columns: 1fr; gap: .25rem; }
  .family-quote blockquote { font-size: 1.5rem; }
  .letter-main { width: calc(100% - 2rem); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  html { scrollbar-gutter: auto; }
  body { color: #101318; background: #fff; }
  .site-header, .menu-panel, .skip-link, .hero-actions, .hero-next, .contact-actions, .site-footer, .letter-nav, .nojs-nav { display: none; }
  .page-shell { width: 100%; }
  .section-space { padding-block: 2rem; }
  .hero { padding-top: 0; }
  .letter-main { width: 100%; margin: 0; }
  .letter-paper { padding: 0; }
  .letter-prose { font-size: 10.5pt; line-height: 1.6; }
  .letter-prose h2, .letter-sign { break-after: avoid; }
  .letter-prose p, .letter-prose li { orphans: 3; widows: 3; }
}
