/* Адвокат Елизавета Орлова (демо) — design system "Портрет / Монография".
   Slate-teal accent for medical law on ivory, stone and brass. Display: Oranienbaum (one weight, display sizes only).
   Body: Commissioner. Sections: 0 tokens · 1 base · 2 header · 3 hero · 4 chapters · 5 components · 6 chronology
   · 7 contacts · 8 footer · 9 legal · 10 mobile bar · 11 print. */

@property --p { syntax: '<number>'; inherits: true; initial-value: 0; }

/* ───────── 0 · tokens ───────── */
:root {
  --ivory: #F6F3EE;
  --paper: #FBF9F5;
  --stone: #E4E1DA;
  --stone-2: #D6D2C8;
  --ink: #1E1919;
  --muted: #5B5653;
  --hair: rgba(30, 25, 25, .16);
  --hair-2: rgba(30, 25, 25, .08);

  --teal: #2F4B4F;
  --teal-d: #1F3438;
  --teal-m: #4F6F72;
  --mist: #DCE5E3;
  --mist-2: #BFD0CE;

  --brass: #9A8657;
  --brass-d: #6E5E36;
  --brass-l: #CDBB8B;

  --on-d: #F2EFE8;
  --on-d-m: rgba(242, 239, 232, .74);
  --hair-d: rgba(242, 239, 232, .2);

  --ff-d: 'Oranienbaum', 'Bodoni 72', 'Didot', 'Playfair Display', Georgia, 'Times New Roman', serif;
  --ff-b: 'Commissioner', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

  --fs-d1: clamp(46px, 7.2vw, 112px);
  --fs-d2: clamp(36px, 5vw, 78px);
  --fs-d3: clamp(28px, 3.3vw, 50px);
  --fs-d4: clamp(22px, 2.2vw, 30px);
  --fs-lead: clamp(18px, 1.5vw, 21px);
  --fs-body: 17px;
  --fs-small: 14.5px;
  --fs-micro: 12px;

  --gutter: clamp(18px, 4vw, 56px);
  --maxw: 1360px;
  --gap: clamp(18px, 2.4vw, 36px);
  --section: clamp(76px, 11vw, 168px);
  --nav-h: 68px;
  --ease: cubic-bezier(.2, .7, .2, 1);
  --vh: 100vh;
}
@supports (height: 100svh) { :root { --vh: 100svh; } }
@media (max-width: 720px) { :root { --nav-h: 58px; --fs-body: 16.5px; } }

/* ───────── 1 · base ───────── */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 18px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--ivory); color: var(--ink); font: 400 var(--fs-body)/1.65 var(--ff-b); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
html.menu-open, html.dlg-open { overflow: hidden; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
p { margin: 0 0 1em; }
h1, h2, h3, h4 { margin: 0; font-weight: 400; }
ul, ol { margin: 0; padding: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--teal); outline-offset: 3px; border-radius: 2px; }
.on-dark :focus-visible, .chap--dark :focus-visible, .ftr :focus-visible { outline-color: var(--brass-l); }
.skip { position: absolute; left: 12px; top: -64px; z-index: 200; background: var(--ink); color: #fff; padding: 12px 18px; border-radius: 2px; text-decoration: none; transition: top .2s; }
.skip:focus { top: 12px; }
.sr { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; padding: 0; }

.wrap { width: min(100% - 2 * var(--gutter), var(--maxw)); margin-inline: auto; }
.didone { font-family: var(--ff-d); font-weight: 400; letter-spacing: -.005em; }
.d1 { font: 400 var(--fs-d1)/.98 var(--ff-d); letter-spacing: -.012em; }
.d2 { font: 400 var(--fs-d2)/1.02 var(--ff-d); letter-spacing: -.01em; }
.d3 { font: 400 var(--fs-d3)/1.1 var(--ff-d); letter-spacing: -.005em; }
.d4 { font: 400 var(--fs-d4)/1.2 var(--ff-d); }
.lead { font-size: var(--fs-lead); line-height: 1.58; }
.small { font-size: var(--fs-small); line-height: 1.55; }
.muted { color: var(--muted); }
.kicker { display: flex; align-items: center; gap: 12px; margin: 0; font: 600 var(--fs-micro)/1.3 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--brass-d); }
.kicker::before { content: ''; flex: none; width: 28px; height: 1px; background: currentColor; }
.kicker--plain::before { display: none; }
.on-dark .kicker, .chap--dark .kicker, .ftr .kicker { color: var(--brass-l); }

.link { text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat; padding-bottom: 2px; transition: background-size .4s var(--ease); }
.link:hover { background-size: 0 1px; background-position: 100% 100%; }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 50px; padding: 0 26px; border: 1px solid var(--teal); border-radius: 2px; background: var(--teal); color: var(--on-d); font: 600 15px/1.1 var(--ff-b); letter-spacing: .01em; text-decoration: none; transition: background .25s, color .25s, border-color .25s; }
.btn:hover { background: var(--teal-d); border-color: var(--teal-d); }
.btn svg { width: 18px; height: 18px; flex: none; transition: transform .35s var(--ease); }
.btn:hover .i-arrow { transform: translateX(4px); }
.btn--ghost { background: transparent; color: var(--teal); }
.btn--ghost:hover { background: var(--teal); color: var(--on-d); border-color: var(--teal); }
.btn--light { background: var(--on-d); border-color: var(--on-d); color: var(--teal-d); }
.btn--light:hover { background: #fff; border-color: #fff; color: var(--teal-d); }
.btn--line-light { background: transparent; border-color: var(--hair-d); color: var(--on-d); }
.btn--line-light:hover { background: var(--on-d); color: var(--teal-d); border-color: var(--on-d); }
.btn--sm { min-height: 44px; padding: 0 18px; font-size: 14px; }
.btn--block { width: 100%; }

.ico { width: 20px; height: 20px; flex: none; }
.stamp { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0; padding: 14px 0 0; border-top: 1px solid var(--hair); font: 500 12.5px/1.5 var(--ff-b); letter-spacing: .02em; color: var(--muted); }
.stamp b { color: var(--ink); font-weight: 600; }
.on-dark .stamp, .chap--dark .stamp { border-color: var(--hair-d); color: var(--on-d-m); }
.on-dark .stamp b, .chap--dark .stamp b { color: var(--on-d); }
.sheet .stamp, .docs .stamp { border-color: var(--hair); color: var(--muted); }
.sheet .stamp b, .docs .stamp b { color: var(--ink); }

/* ───────── 2 · header and menu ───────── */
.hdr { position: sticky; top: 0; z-index: 50; height: var(--nav-h); background: rgba(246, 243, 238, .92); border-bottom: 1px solid transparent; transition: border-color .3s, background .3s; }
@supports (backdrop-filter: blur(1px)) { .hdr { background: rgba(246, 243, 238, .84); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3); } }
.hdr.is-stuck { border-bottom-color: var(--hair); }
.hdr__in { height: 100%; display: flex; align-items: center; gap: clamp(16px, 3vw, 44px); }
.logo { display: flex; flex-direction: column; justify-content: center; gap: 3px; min-height: 44px; text-decoration: none; margin-right: auto; min-width: 0; }
.logo__word { font: 400 25px/1 var(--ff-d); letter-spacing: .005em; white-space: nowrap; }
.logo__sub { font: 600 10.5px/1 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--brass-d); white-space: nowrap; }
.nav { display: none; gap: clamp(16px, 2vw, 30px); }
.nav a { position: relative; padding: 15px 0; font: 500 14.5px/1 var(--ff-b); text-decoration: none; letter-spacing: .01em; }
.nav a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px; background: var(--brass); transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ease); }
.nav a:hover::after, .nav a[aria-current="page"]::after { transform: scaleX(1); }
.hdr__duty { display: none; flex-direction: column; justify-content: center; min-height: 44px; gap: 3px; text-decoration: none; text-align: right; }
.hdr__duty small { font: 600 10px/1 var(--ff-b); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.hdr__duty b { font: 600 15px/1 var(--ff-b); letter-spacing: .01em; font-variant-numeric: tabular-nums; }
.hdr__actions { display: flex; align-items: center; gap: 12px; }
.menu-btn { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 4px; background: none; border: 0; font: 600 13px/1 var(--ff-b); letter-spacing: .12em; text-transform: uppercase; }
.menu-btn__bars { position: relative; width: 22px; height: 10px; }
.menu-btn__bars::before, .menu-btn__bars::after { content: ''; position: absolute; left: 0; right: 0; height: 1.5px; background: currentColor; transition: transform .35s var(--ease), top .35s var(--ease); }
.menu-btn__bars::before { top: 0; }
.menu-btn__bars::after { top: 8px; }
.menu-open .menu-btn__bars::before { top: 4px; transform: rotate(45deg); }
.menu-open .menu-btn__bars::after { top: 4px; transform: rotate(-45deg); }
.hdr__actions .btn { display: none; }
@media (min-width: 540px) { .hdr__actions .btn { display: inline-flex; } }
@media (min-width: 1120px) { .nav { display: flex; } .menu-btn { display: none; } }
@media (min-width: 1320px) { .hdr__duty { display: flex; } }

.mnav { position: fixed; inset: var(--mnav-top, 58px) 0 0 0; z-index: 49; display: flex; flex-direction: column; padding: 24px var(--gutter) 32px; background: var(--ivory); overflow: auto; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: opacity .35s var(--ease), transform .45s var(--ease), visibility 0s .45s; }
.menu-open .mnav { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.mnav ol { list-style: none; border-top: 1px solid var(--hair); }
.mnav li { border-bottom: 1px solid var(--hair); }
.mnav a { display: grid; grid-template-columns: 52px 1fr; align-items: baseline; padding: 16px 0; text-decoration: none; font: 400 clamp(30px, 8vw, 46px)/1.1 var(--ff-d); }
.mnav a i { font: 600 12px/1 var(--ff-b); font-style: normal; letter-spacing: .14em; color: var(--brass-d); }
.mnav__foot { margin-top: auto; padding-top: 28px; display: grid; gap: 6px; font-size: 14.5px; color: var(--muted); }
.mnav__foot b { color: var(--ink); font-weight: 600; }

/* ───────── 3 · hero: «Имя-маска» ───────── */
.hero { --p: 0; position: relative; background: var(--ivory); }
.hero__stage { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto auto; min-height: max(640px, calc(var(--vh) - var(--nav-h))); background: var(--ivory); isolation: isolate; overflow: hidden;
  /* name size: limited by width and by the height left between the top row and the buttons */
  --nm: min(calc(min(78vw, 1180px) / 3.1), calc((var(--vh) - var(--nav-h) - var(--rb, 44px) - 250px) / 1.6));
  --zoom: clamp(0, calc((var(--p) - .03) / .66), 1);
  --veil: clamp(0, calc((var(--p) - .5) / .28), 1);
  --fade: clamp(0, calc(var(--p) / .1), 1);
  --fact: clamp(0, calc((var(--p) - .78) / .17), 1); }

/* The photo group multiplies onto ivory. Inside it a white veil with the name in black is "screened" onto the photo:
   white stays white (= ivory after multiply), black letters let the photo through. No ghost, exact page colour.
   A teal wash sits between photo and veil and fades out while the photo is revealed. */
.hero__ph { grid-area: 1 / 1 / -1 / 2; position: relative; z-index: 0; display: grid; grid-template-rows: subgrid; mix-blend-mode: multiply; isolation: isolate; }
.hero__ph picture { position: absolute; inset: 0; z-index: 0; display: block; }
.hero__ph img { width: 100%; height: 100%; object-fit: cover; object-position: 54% 62%; filter: contrast(1.22) brightness(.96); }
.hero__ph::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(112deg, #33545a 0%, #587a80 50%, #8aa5a7 100%); mix-blend-mode: multiply; }
.hero__veil { grid-area: 1 / 1 / -1 / 2; z-index: 2; display: grid; grid-template-rows: subgrid; background: #fff; mix-blend-mode: screen; position: relative; }
.hero__name { grid-row: 2; place-self: center; margin: 0; padding: 0 0 .02em; color: #000; font: 400 var(--nm)/.88 var(--ff-d); text-align: center; letter-spacing: .004em; -webkit-text-stroke: .012em #000; transform-origin: 21% 80%; user-select: none; }
.hn-first { display: block; font-size: .685em; line-height: 1; margin-bottom: .035em; letter-spacing: .01em; }
.hn-last { display: block; white-space: nowrap; }
.hn-last span { display: inline; }

.hero__top { grid-area: 1 / 1; z-index: 3; display: flex; justify-content: space-between; align-items: center; gap: 16px; padding-top: clamp(18px, 2.6vw, 30px); }
.hero__top p { margin: 0; }
.hero__top-r { font: 600 var(--fs-micro)/1.3 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--muted); text-align: right; }
.hero__cue { display: none; align-items: center; gap: 12px; font: 600 11px/1 var(--ff-b); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.hero__cue::after { content: ''; width: 44px; height: 1px; background: currentColor; transform-origin: left; animation: cue 2.4s var(--ease) infinite; }
@keyframes cue { 0% { transform: scaleX(0); opacity: 1; } 60% { transform: scaleX(1); opacity: 1; } 100% { transform: scaleX(1); opacity: 0; } }
.hero__ui { grid-area: 3 / 1; z-index: 3; display: grid; grid-template-columns: 1fr; gap: 20px 40px; padding-block: 16px calc(var(--rb, 44px) + clamp(24px, 3vw, 40px)); align-items: end; }
.hero__role { margin: 0 0 12px; font: 600 12.5px/1.5 var(--ff-b); letter-spacing: .08em; text-transform: uppercase; color: var(--brass-d); }
.hero__lead { max-width: 60ch; margin: 0; }
.hero__cta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.hero__cta .btn:first-child { grid-column: 1 / -1; }
@media (min-width: 900px) {
  .hero__ui { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .hero__cta { max-width: 640px; justify-self: end; width: 100%; }
}

/* facts strip (static: dark text on ivory, row 4) */
.facts { grid-area: 4 / 1; z-index: 3; position: relative; margin: 0; border-top: 1px solid var(--hair); background: var(--ivory); }
.facts__in { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-block: 0; }
.facts__in > div { padding: 18px 16px 22px 0; }
.facts__in > div + div { padding-left: 16px; border-left: 1px solid var(--hair); }
.facts dt { margin: 0 0 8px; font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.facts dd { margin: 0; font: 400 clamp(19px, 1.9vw, 26px)/1.12 var(--ff-d); }
.facts dd small { display: block; margin-top: 4px; font: 400 12.5px/1.4 var(--ff-b); color: var(--muted); }
@media (max-width: 1000px) {
  .facts__in { display: flex; width: 100%; margin: 0; padding-inline: var(--gutter); overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); scrollbar-width: none; }
  .facts__in::-webkit-scrollbar { display: none; }
  .facts__in > div { flex: 0 0 min(64vw, 240px); scroll-snap-align: start; }
}

/* animated reveal (CSS scroll-driven where supported, otherwise app.js writes --p) */
html.hero-anim .hero { height: calc(var(--vh) * 2.45); }
html.hero-anim .hero__stage { position: sticky; top: var(--nav-h); height: calc(var(--vh) - var(--nav-h)); min-height: 600px; }
@supports (animation-timeline: view()) {
  html.hero-anim .hero { animation: hero-p linear both; animation-timeline: view(block 0px 0px); animation-range: contain 0% contain 100%; }
}
@keyframes hero-p { from { --p: 0; } to { --p: 1; } }
html.hero-anim .hero__name { transform: scale(calc(1 + var(--zoom) * var(--zoom) * 30)); will-change: transform; }
html.hero-anim .hero__veil { opacity: calc(1 - var(--veil)); }
html.hero-anim .hero__ph::before { opacity: calc(1 - var(--zoom)); }
html.hero-anim .hero__ph img { filter: contrast(calc(1.22 - var(--zoom) * .16)) brightness(calc(.96 + var(--zoom) * .04)); transform: scale(calc(1.12 - var(--zoom) * .12)); }
html.hero-anim .hero__top, html.hero-anim .hero__ui { opacity: calc(1 - var(--fade)); transform: translate3d(0, calc(var(--fade) * -34px), 0); }
html.hero-anim .hero.is-scrolled .hero__top, html.hero-anim .hero.is-scrolled .hero__ui { visibility: hidden; pointer-events: none; }
@media (min-width: 1001px) { html.hero-anim .hero__cue { display: flex; } }
html.hero-anim .hero .facts { grid-area: 3 / 1; align-self: end; border: 0; color: var(--on-d); opacity: var(--fact); transform: translate3d(0, calc((1 - var(--fact)) * 70px), 0); padding-top: 70px; padding-bottom: clamp(18px, 3vw, 36px); background: linear-gradient(to top, rgba(14, 27, 30, .92) 8%, rgba(14, 27, 30, .55) 62%, rgba(14, 27, 30, 0)); pointer-events: none; }
html.hero-anim .hero.is-revealed .facts { pointer-events: auto; }
html.hero-anim .hero .facts__in > div { border-color: var(--hair-d); }
html.hero-anim .hero .facts dt { color: var(--brass-l); }
html.hero-anim .hero .facts dd small { color: var(--on-d-m); }
html.hero-anim .hero__stage::after { content: ''; grid-area: 1 / 1 / -1 / 2; z-index: 1; pointer-events: none; background: linear-gradient(rgba(14, 27, 30, .35), rgba(14, 27, 30, 0) 24%); opacity: var(--veil); }

/* intro on load */
@media (prefers-reduced-motion: no-preference) {
  .hero__top > *, .hero__ui > * { animation: rise 1s var(--ease) both; }
  .hero__ui > :nth-child(2) { animation-delay: .12s; }
  .hero__name { animation: name-in 1.4s var(--ease) both; }
  @keyframes rise { from { opacity: 0; translate: 0 22px; } to { opacity: 1; translate: 0 0; } }
  @keyframes name-in { from { opacity: 0; filter: blur(14px); } to { opacity: 1; filter: blur(0); } }
}

/* short laptop screens: smaller name, one-line role */
@media (max-height: 800px) and (min-width: 721px) {
  .hero__stage { --nm: min(calc(min(78vw, 1180px) / 3.1), calc((var(--vh) - var(--nav-h) - var(--rb, 44px) - 295px) / 1.6)); }
  .hero__role .hide-s { display: none; }
  .hero__lead { font-size: 16.5px; line-height: 1.5; }
  .hero__ui { gap: 14px 32px; padding-top: 8px; }
}

/* stacked name (ОРЛ / ОВА): phones and portrait tablets */
@media (max-width: 720px), (max-width: 1000px) and (orientation: portrait) {
  .hero__stage { --nm: min(calc(88vw / 1.64), calc((var(--vh) - var(--nav-h) - var(--rb, 34px) - 410px) / 2.2)); }
  .hero__name { line-height: .86; transform-origin: 44% 24%; -webkit-text-stroke-width: .016em; }
  .hn-first { font-size: .355em; margin-bottom: .1em; letter-spacing: .012em; }
  .hn-last span { display: block; }
}
@media (max-width: 899px) {
  .hero__ui { padding-bottom: calc(var(--rb, 34px) + 56px + 18px); }
  html.hero-anim .hero .facts { padding-bottom: calc(56px + 18px); }
}
@media (max-width: 720px) {
  .hero__top { padding-bottom: 14px; }
  .hero__top-r { display: none; }
  .hero__top .kicker { font-size: 10.5px; letter-spacing: .13em; }
  .hero__top .kicker::before { display: none; }
  .hero__ui { gap: 12px; padding-top: 10px; }
  .hero__role { font-size: 10.5px; letter-spacing: .06em; margin-bottom: 6px; }
  .hero__lead { font-size: 15.5px; line-height: 1.5; }
  .hero__cta { gap: 8px; }
  .hero__cta .btn { min-height: 48px; padding: 0 10px; font-size: 13.5px; line-height: 1.2; text-align: center; }
  .hero__cta .btn--ghost svg { display: none; }
  .hide-m { display: none; }
}

/* ───────── 4 · chapters ───────── */
.chap { padding-block: var(--section); position: relative; }
.chap--stone { background: var(--stone); }
.chap--dark { background: var(--teal-d); color: var(--on-d); }
.chap--tight { padding-block: clamp(56px, 8vw, 112px); }
.chap--flush { padding-top: 0; }
.chap-head { display: grid; gap: 14px var(--gap); margin-bottom: clamp(36px, 6vw, 84px); }
.chap-head__no { font: 400 clamp(60px, 8vw, 128px)/.8 var(--ff-d); color: var(--brass); letter-spacing: -.02em; user-select: none; }
.chap-head__title { display: grid; gap: 18px; align-content: end; }
.chap-head__aside { align-self: end; max-width: 46ch; }
.chap-head__aside p:last-child { margin-bottom: 0; }
@media (min-width: 900px) {
  .chap-head { grid-template-columns: minmax(96px, 1.05fr) minmax(0, 6.4fr) minmax(0, 4fr); align-items: end; }
}
.chap--dark .chap-head__no { color: var(--brass-l); opacity: .9; }

.plate { position: relative; height: clamp(84px, 11vw, 150px); overflow: hidden; background-color: var(--teal); color: var(--brass-l);
  background-image: linear-gradient(rgba(242, 239, 232, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(242, 239, 232, .07) 1px, transparent 1px), linear-gradient(rgba(242, 239, 232, .13) 1px, transparent 1px), linear-gradient(90deg, rgba(242, 239, 232, .13) 1px, transparent 1px);
  background-size: 22px 22px, 22px 22px, 110px 110px, 110px 110px; background-position: 0 -1px, -1px 0, 0 -1px, -1px 0; }
.plate svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.plate__cap { position: absolute; left: var(--gutter); bottom: 10px; margin: 0; font: 600 10.5px/1 var(--ff-b); letter-spacing: .18em; text-transform: uppercase; color: rgba(242, 239, 232, .66); }

/* about */
.about { display: grid; gap: clamp(36px, 5vw, 72px); }
.about__quote { margin: 0; text-wrap: balance; }
.about__quote em { font-style: normal; color: var(--teal); }
.about__text p { max-width: 62ch; }
.about__text p:first-child { font-size: var(--fs-lead); line-height: 1.58; }
@media (min-width: 960px) {
  .about { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(48px, 7vw, 120px); align-items: start; }
  .about__side { position: sticky; top: calc(var(--nav-h) + 32px); }
}
.regcard { margin-top: clamp(28px, 4vw, 48px); background: var(--paper); border: 1px solid var(--hair); border-top: 3px solid var(--brass); padding: clamp(20px, 3vw, 32px); }
.regcard h3 { font: 600 var(--fs-micro)/1.3 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--brass-d); margin-bottom: 16px; }
.regcard dl { display: grid; gap: 0; margin: 0; }
.regcard dl > div { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 4px 16px; padding: 11px 0; border-top: 1px solid var(--hair-2); font-size: 15px; line-height: 1.45; }
.regcard dl > div:first-child { border-top: 0; padding-top: 0; }
.regcard dt { color: var(--muted); font-size: 13px; padding-top: 1px; }
.regcard dd { margin: 0; font-weight: 500; }
.regcard__act { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--hair); font-size: 14px; font-weight: 600; }
.regcard__act a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: var(--teal); }
.regcard__act svg { width: 17px; height: 17px; }
.regcard__note { margin: 14px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--muted); }

/* practice list */
.plist { border-top: 1px solid var(--ink); }
.pl { border-bottom: 1px solid var(--hair); }
.pl > summary { list-style: none; display: grid; grid-template-columns: 38px minmax(0, 1fr) 40px; gap: 0 14px; align-items: baseline; padding: clamp(20px, 2.8vw, 38px) 0; cursor: pointer; }
.pl > summary::-webkit-details-marker { display: none; }
.pl__no { font: 600 12.5px/1 var(--ff-b); letter-spacing: .14em; color: var(--brass-d); }
.pl__title { display: block; font: 400 clamp(27px, 4.3vw, 64px)/1.05 var(--ff-d); letter-spacing: -.008em; transition: transform .55s var(--ease), color .3s; text-wrap: balance; }
.pl__fee { grid-column: 2; margin-top: 8px; font: 500 13px/1.4 var(--ff-b); color: var(--muted); letter-spacing: .02em; }
.pl__fee b { color: var(--ink); font-weight: 600; }
.pl__icon { grid-row: 1; grid-column: 3; position: relative; align-self: center; justify-self: end; width: 36px; height: 36px; border: 1px solid var(--ink); border-radius: 50%; transition: background .3s, border-color .3s, transform .5s var(--ease); }
.pl__icon::before, .pl__icon::after { content: ''; position: absolute; left: 50%; top: 50%; width: 12px; height: 1.5px; background: currentColor; transform: translate(-50%, -50%); transition: transform .4s var(--ease); }
.pl__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.pl[open] .pl__icon { background: var(--teal); border-color: var(--teal); color: var(--on-d); }
.pl[open] .pl__icon::after { transform: translate(-50%, -50%) rotate(0); }
.pl[open] .pl__title { color: var(--teal); }
@media (hover: hover) { .pl > summary:hover .pl__title { transform: translateX(10px); color: var(--teal); } }
@media (min-width: 900px) {
  .pl > summary { grid-template-columns: 64px minmax(0, 1fr) auto 44px; gap: 0 24px; }
  .pl__fee { grid-column: 3; grid-row: 1; margin: 0; text-align: right; white-space: nowrap; }
  .pl__icon { grid-column: 4; }
}
.pl__body { display: grid; gap: 22px var(--gap); padding: 0 0 clamp(28px, 4vw, 56px); animation: pl-in .6s var(--ease) both; }
@keyframes pl-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.pl__body p { max-width: 62ch; }
.pl__body ul { list-style: none; display: grid; gap: 9px; max-width: 62ch; }
.pl__body li { position: relative; padding-left: 22px; font-size: 16px; line-height: 1.5; }
.pl__body li::before { content: ''; position: absolute; left: 0; top: .72em; width: 12px; height: 1px; background: var(--brass); }
.pl__facts { display: grid; gap: 14px; align-content: start; }
.pl__fact { padding: 16px 0 0; border-top: 1px solid var(--ink); }
.pl__fact b { display: block; margin-bottom: 4px; font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.pl__fact span { font-size: 15px; line-height: 1.5; }
.pl__more { margin-top: 4px; }
@media (min-width: 900px) {
  .pl__body { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); padding-left: 88px; }
}

.fees { margin-top: clamp(48px, 7vw, 96px); }
.fees h3 { margin-bottom: 22px; }
.ttable { width: 100%; border-collapse: collapse; font-size: 16px; }
.ttable caption { text-align: left; padding-bottom: 12px; font-size: 14px; color: var(--muted); }
.ttable th, .ttable td { text-align: left; vertical-align: top; padding: 18px 16px 18px 0; border-top: 1px solid var(--hair); }
.ttable thead th { padding-block: 0 12px; border-top: 0; font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.ttable tbody th { font-weight: 600; width: 34%; }
.ttable td:last-child { text-align: right; white-space: nowrap; font: 400 clamp(21px, 2vw, 28px)/1.1 var(--ff-d); padding-right: 0; }
.ttable tbody tr:last-child th, .ttable tbody tr:last-child td { border-bottom: 1px solid var(--ink); }
.fees__notes { display: grid; gap: 22px var(--gap); margin-top: 26px; }
.fees__notes ul { list-style: none; display: grid; gap: 6px; font-size: 15px; }
.fees__notes li { padding-left: 18px; position: relative; }
.fees__notes li::before { content: ''; position: absolute; left: 0; top: .75em; width: 10px; height: 1px; background: var(--brass); }
.fees__legal { font-size: 14px; line-height: 1.55; color: var(--muted); max-width: 60ch; }
@media (min-width: 900px) { .fees__notes { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) {
  .ttable caption { display: block; width: 100%; }
  .ttable thead { display: none; }
  .ttable, .ttable tbody, .ttable tr, .ttable th, .ttable td { display: block; width: 100%; }
  .ttable tbody th { width: 100%; padding: 18px 0 4px; border-top: 1px solid var(--hair); }
  .ttable td { border: 0 !important; padding: 0 0 4px; }
  .ttable td:last-child { text-align: left; padding: 6px 0 18px; }
  .ttable tbody tr:last-child td:last-child { border-bottom: 1px solid var(--ink) !important; }
}

/* method rail */
.rail { position: relative; }
.rail__track { display: flex; gap: clamp(14px, 2vw, 28px); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 22px; padding-inline: max(var(--gutter), calc((100vw - var(--maxw)) / 2)); scroll-padding-inline: max(var(--gutter), calc((100vw - var(--maxw)) / 2)); scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; cursor: grab; }
.rail__track::-webkit-scrollbar { display: none; }
.rail__track.is-drag { cursor: grabbing; scroll-snap-type: none; user-select: none; }
.shot { flex: 0 0 min(80vw, 440px); scroll-snap-align: start; margin: 0; }
.shot__img { position: relative; overflow: hidden; background: var(--stone-2); }
.shot__img img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; transition: transform 1.2s var(--ease); }
@media (hover: hover) { .shot:hover .shot__img img { transform: scale(1.04); } }
.shot figcaption { padding-top: 18px; display: grid; gap: 8px; }
.shot__no { font: 600 12px/1 var(--ff-b); letter-spacing: .15em; color: var(--brass-d); }
.shot__word { font: 400 clamp(36px, 4vw, 54px)/1 var(--ff-d); }
.shot__text { margin: 0; max-width: 34ch; font-size: 15.5px; line-height: 1.55; color: var(--muted); }
.shot--text { display: flex; flex-direction: column; justify-content: space-between; padding: clamp(22px, 3vw, 36px); background: var(--teal); color: var(--on-d); min-height: 300px; }
.shot--text h3 { font: 400 clamp(34px, 3.6vw, 48px)/1.04 var(--ff-d); margin-bottom: 22px; }
.steps { list-style: none; counter-reset: st; display: grid; gap: 0; }
.steps li { counter-increment: st; display: grid; grid-template-columns: 34px 1fr; gap: 0 10px; padding: 14px 0; border-top: 1px solid var(--hair-d); font-size: 15px; line-height: 1.5; }
.steps li::before { content: counter(st, decimal-leading-zero); font: 600 12px/1.9 var(--ff-b); letter-spacing: .1em; color: var(--brass-l); }
.steps b { display: block; font-weight: 600; }
.steps span { color: var(--on-d-m); }
.rail__bar { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 12px; }
.rail__line { flex: 1; height: 1px; background: var(--hair); position: relative; }
.rail__line i { position: absolute; left: 0; top: -1px; height: 3px; width: 30%; background: var(--teal); transition: transform .12s linear; transform-origin: left; }
.rail__btns { display: none; gap: 8px; }
.rail__btn { width: 48px; height: 48px; display: grid; place-items: center; border: 1px solid var(--ink); background: transparent; border-radius: 50%; transition: background .25s, color .25s; }
.rail__btn:hover:not(:disabled) { background: var(--ink); color: var(--ivory); }
.rail__btn:disabled { opacity: .3; cursor: default; }
.rail__btn svg { width: 20px; height: 20px; }
.rail__btn--prev svg { transform: scaleX(-1); }
@media (min-width: 900px) { .rail__btns { display: flex; } .shot { flex-basis: min(34vw, 440px); } }

/* publications */
.pubs { list-style: none; border-top: 1px solid var(--ink); }
.pub { border-bottom: 1px solid var(--hair); }
.pub a { display: grid; grid-template-columns: 1fr; gap: 6px 24px; padding: 22px 0; text-decoration: none; transition: padding .4s var(--ease); }
.pub__type { font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.pub__title { font: 400 clamp(23px, 2.4vw, 34px)/1.15 var(--ff-d); text-wrap: balance; }
.pub__meta { font-size: 14.5px; color: var(--muted); }
.pub__go { display: none; width: 22px; height: 22px; }
@media (min-width: 900px) {
  .pub a { grid-template-columns: 130px minmax(0, 1fr) 280px 22px; align-items: baseline; padding: 26px 0; }
  .pub__go { display: block; align-self: center; transition: transform .4s var(--ease); }
  .pub a:hover { padding-left: 14px; }
  .pub a:hover .pub__go { transform: translateX(6px); }
  .pub a:hover .pub__title { color: var(--teal); }
}
.pubs__note { margin: 22px 0 0; font-size: 13.5px; color: var(--muted); }

/* ───────── 5 · forms, chips, badges ───────── */
.field { display: grid; gap: 7px; margin-bottom: 18px; }
.field > label, .field > .lbl, .field legend { font: 600 12px/1.3 var(--ff-b); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); padding: 0; }
.field legend { margin-bottom: 7px; }
fieldset.field { border: 0; margin: 0 0 18px; padding: 0; min-width: 0; }
.input { width: 100%; min-height: 50px; padding: 12px 14px; background: var(--paper); border: 1px solid var(--hair); border-radius: 2px; color: var(--ink); font-size: 16px; line-height: 1.4; transition: border-color .2s, box-shadow .2s; }
textarea.input { min-height: 96px; resize: vertical; }
select.input { appearance: none; padding-right: 40px; background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-position: calc(100% - 20px) 52%, calc(100% - 14px) 52%; background-size: 6px 6px; background-repeat: no-repeat; }
.input:hover { border-color: rgba(30, 25, 25, .4); }
.input:focus { outline: 0; border-color: var(--teal); box-shadow: 0 0 0 3px rgba(47, 75, 79, .18); }
.input::placeholder { color: #8a8480; }
.field__hint { font-size: 13px; line-height: 1.45; color: var(--muted); }
.field__hint--warn { color: var(--brass-d); font-weight: 500; }
.count { font-size: 12px; color: var(--muted); text-align: right; font-variant-numeric: tabular-nums; }
.chip-row { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; }
.chip input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.chip span { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border: 1px solid var(--hair); background: var(--paper); border-radius: 2px; font-size: 14.5px; font-weight: 500; transition: background .2s, border-color .2s, color .2s; }
.chip:hover span { border-color: rgba(30, 25, 25, .45); }
.chip input:checked + span { background: var(--teal); border-color: var(--teal); color: var(--on-d); }
.chip input:focus-visible + span { outline: 2px solid var(--teal); outline-offset: 3px; }
.consent { display: grid; grid-template-columns: 24px 1fr; gap: 12px; align-items: start; min-height: 44px; font-size: 14px; line-height: 1.5; color: var(--muted); margin: 6px 0 20px; cursor: pointer; }
.consent input { width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--teal); cursor: pointer; }
.consent a { color: var(--ink); }
.warnline { display: flex; gap: 10px; padding: 12px 14px; margin-bottom: 18px; background: rgba(154, 134, 87, .14); border-left: 2px solid var(--brass); font-size: 14px; line-height: 1.45; }
.badge { display: inline-flex; align-items: center; gap: 10px; margin: 0; padding: 8px 14px 8px 12px; background: var(--paper); border: 1px solid var(--hair); border-radius: 999px; font: 600 13px/1.2 var(--ff-b); }
.badge__dot { width: 9px; height: 9px; border-radius: 50%; background: #8a8480; flex: none; }
.badge.is-open .badge__dot { background: #3b8a5a; box-shadow: 0 0 0 4px rgba(59, 138, 90, .18); }
.badge.is-closed .badge__dot { background: var(--brass); }
.msgr { display: flex; flex-wrap: wrap; gap: 8px; }
.msgr a { display: inline-flex; align-items: center; gap: 9px; min-height: 46px; padding: 0 16px; border: 1px solid var(--ink); border-radius: 2px; text-decoration: none; font-size: 14.5px; font-weight: 600; transition: background .25s, color .25s; }
.msgr a:hover { background: var(--ink); color: var(--ivory); }
.msgr svg { width: 19px; height: 19px; }

/* ───────── 6 · chronology builder ───────── */
.chrono { display: grid; gap: clamp(28px, 4vw, 48px); }
@media (min-width: 1000px) { .chrono { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); align-items: start; gap: clamp(32px, 4vw, 64px); } .chrono__side { position: sticky; top: calc(var(--nav-h) + 24px); } }
.chrono__intro { margin-bottom: 28px; }
.chrono__intro p { color: var(--on-d-m); max-width: 52ch; }
.chrono__form { padding-top: 22px; border-top: 1px solid var(--hair-d); }
.chrono .field > label, .chrono .field legend { color: var(--on-d-m); }
.chrono .input { background: rgba(242, 239, 232, .07); border-color: var(--hair-d); color: var(--on-d); color-scheme: dark; }
.chrono .input:hover { border-color: rgba(242, 239, 232, .5); }
.chrono .input:focus { border-color: var(--brass-l); box-shadow: 0 0 0 3px rgba(205, 187, 139, .22); }
.chrono .input::placeholder { color: rgba(242, 239, 232, .45); }
.chrono select.input option { color: #1E1919; background: #fff; }
.chrono .count { color: var(--on-d-m); }
.chrono .field__hint { color: var(--on-d-m); }
.chrono__row2 { display: grid; gap: 0 14px; }
@media (min-width: 520px) { .chrono__row2 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) and (max-width: 1240px) { .chrono__row2 { grid-template-columns: 1fr; } }
.chrono__tools { display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--hair-d); }
.chrono__tools button { background: none; border: 0; padding: 0; min-height: 44px; display: inline-flex; align-items: center; gap: 8px; color: var(--on-d); font-size: 14px; font-weight: 500; }
.chrono__tools button svg { width: 17px; height: 17px; }
.chrono__keep { display: grid; grid-template-columns: 22px 1fr; gap: 10px; align-items: start; min-height: 44px; margin-top: 16px; font-size: 13.5px; line-height: 1.5; color: var(--on-d-m); cursor: pointer; }
.chrono__keep input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--brass-l); }
.chrono__status { min-height: 1.5em; margin: 14px 0 0; font-size: 13.5px; color: var(--brass-l); }

.sheet { background: var(--paper); color: var(--ink); padding: clamp(22px, 3.4vw, 48px); box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 30px 60px -30px rgba(0, 0, 0, .55); position: relative; }
.sheet::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--brass); }
.sheet__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 24px; padding-bottom: 18px; border-bottom: 1px solid var(--ink); }
.sheet__title { font: 400 clamp(28px, 3vw, 42px)/1.05 var(--ff-d); }
.sheet__sum { margin: 0; font-size: 13.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
.tl { list-style: none; position: relative; margin: 0; padding: 8px 0 0; }
.ev { position: relative; display: grid; grid-template-columns: 78px minmax(0, 1fr) 44px; gap: 0 18px; padding: 22px 0 6px; }
.ev::before { content: ''; position: absolute; left: 78px; top: 0; bottom: 0; width: 1px; background: var(--hair); transform: translateX(8px); }
.ev::after { content: ''; position: absolute; left: 78px; top: 34px; width: 11px; height: 11px; border-radius: 50%; background: var(--paper); border: 2px solid var(--ev, var(--teal)); transform: translateX(3px); }
.ev__date { text-align: right; font-variant-numeric: tabular-nums; }
.ev__date b { display: block; font: 400 38px/1 var(--ff-d); }
.ev__date span { display: block; margin-top: 4px; font: 600 11px/1.2 var(--ff-b); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.ev__body { padding-left: 22px; min-width: 0; padding-bottom: 14px; }
.ev__type { display: inline-block; margin: 0 0 6px; padding: 3px 9px; font: 600 10.5px/1.4 var(--ff-b); letter-spacing: .12em; text-transform: uppercase; color: var(--ev, var(--teal)); background: color-mix(in srgb, var(--ev, var(--teal)) 11%, transparent); }
.ev__place { margin: 0 0 4px; font-weight: 600; line-height: 1.35; }
.ev__note { margin: 0; font-size: 15px; line-height: 1.5; color: #3b3735; overflow-wrap: anywhere; }
.ev__del { align-self: start; width: 44px; height: 44px; display: grid; place-items: center; background: none; border: 0; color: var(--muted); border-radius: 50%; opacity: .5; transition: opacity .2s, background .2s, color .2s; }
.ev:hover .ev__del, .ev__del:focus-visible { opacity: 1; }
.ev__del:hover { background: var(--stone); color: var(--ink); }
.ev__del svg { width: 18px; height: 18px; }
.ev--visit { --ev: #2F4B4F; } .ev--exam { --ev: #4F6F72; } .ev--diag { --ev: #6E5E36; } .ev--proc { --ev: #1F3438; } .ev--rx { --ev: #566638; } .ev--compl { --ev: #8a4a3a; } .ev--disch { --ev: #4a5a78; } .ev--other { --ev: #6b6661; }
.gap { margin: 0; padding: 2px 0 2px 118px; list-style: none; position: relative; font: 600 11.5px/1.6 var(--ff-b); letter-spacing: .06em; color: var(--brass-d); }
.gap::before { content: ''; position: absolute; left: 86px; top: 0; bottom: 0; width: 1px; background: var(--hair); }
.tl__empty { padding: 36px 0 20px; text-align: center; color: var(--muted); }
.sheet__foot { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--hair); font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.sheet__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
@media (max-width: 520px) {
  .ev { grid-template-columns: 54px minmax(0, 1fr) 44px; gap: 0 8px; }
  .ev::before { left: 54px; } .ev::after { left: 54px; }
  .ev__date b { font-size: 30px; }
  .ev__body { padding-left: 16px; }
  .gap { padding-left: 84px; } .gap::before { left: 62px; }
}

.docs { margin-top: clamp(22px, 3vw, 36px); background: var(--paper); color: var(--ink); padding: clamp(22px, 3.4vw, 44px); position: relative; }
.docs::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--teal-m); }
.docs__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 20px; margin-bottom: 8px; }
.docs h3 { font: 400 clamp(24px, 2.4vw, 32px)/1.1 var(--ff-d); }
.docs__count { font: 600 12.5px/1 var(--ff-b); letter-spacing: .06em; color: var(--muted); font-variant-numeric: tabular-nums; }
.docs__lead { font-size: 14.5px; color: var(--muted); max-width: 60ch; }
.dlist { list-style: none; display: grid; gap: 0; margin: 14px 0 0; }
.dlist li { border-top: 1px solid var(--hair); }
.dlist label { display: grid; grid-template-columns: 26px 1fr; gap: 14px; align-items: start; padding: 14px 0; cursor: pointer; }
.dlist input { width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--teal); cursor: pointer; }
.dlist span { font-size: 15.5px; line-height: 1.45; }
.dlist em { display: block; margin-top: 3px; font-style: normal; font-size: 12.5px; color: var(--muted); }
.dlist .tag { display: inline-block; margin-left: 8px; padding: 1px 8px; font: 600 10px/1.6 var(--ff-b); letter-spacing: .1em; text-transform: uppercase; color: var(--teal); background: var(--mist); vertical-align: 2px; }
.docs__next { margin: 20px 0 22px; padding: 14px 16px; background: var(--mist); font-size: 14.5px; line-height: 1.55; }
.docs__next b { font-weight: 600; }
.dlist input:checked + span { color: var(--muted); text-decoration: line-through; text-decoration-color: rgba(30, 25, 25, .3); }

/* ───────── 7 · contacts ───────── */
.visit { display: grid; gap: clamp(36px, 5vw, 72px); }
@media (min-width: 1000px) { .visit { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); align-items: start; } }
.cinfo { display: grid; gap: 0; margin: 0 0 24px; }
.cinfo > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 4px 16px; padding: 16px 0; border-top: 1px solid var(--hair); }
.cinfo > div:last-child { border-bottom: 1px solid var(--hair); }
.cinfo dt { font: 600 11px/1.6 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); padding-top: 2px; }
.cinfo dd { margin: 0; }
.cinfo dd b { font-weight: 600; }
@media (max-width: 520px) { .cinfo > div { grid-template-columns: 1fr; gap: 6px; } }
.cinfo__phone { font: 400 clamp(26px, 2.6vw, 36px)/1.1 var(--ff-d); text-decoration: none; font-variant-numeric: lining-nums; }
.hours { display: grid; grid-template-columns: auto 1fr; gap: 3px 22px; margin: 0; font-size: 15.5px; font-variant-numeric: tabular-nums; }
.hours dt, .hours dd { margin: 0; }
.hours dt { color: var(--muted); }
.map { position: relative; margin: 0; background: var(--stone); border: 1px solid var(--hair); }
.map__svg { width: 100%; height: auto; }
.map__route svg { width: 18px; height: 18px; }
.map__stage { position: relative; overflow: hidden; }
@media (max-width: 560px) { .map__svg { width: 150%; max-width: none; margin-left: -46%; } }
.map__badge { position: absolute; left: 12px; top: 12px; box-shadow: 0 8px 24px -12px rgba(0, 0, 0, .3); }
.map__route { position: absolute; right: 12px; bottom: 12px; }
.map figcaption { padding: 10px 14px; font-size: 12.5px; color: var(--muted); border-top: 1px solid var(--hair); background: var(--paper); }
.map text { font-family: var(--ff-b); }
.panel { background: var(--paper); border: 1px solid var(--hair); border-top: 3px solid var(--teal); padding: clamp(22px, 3.4vw, 40px); }
.panel h3 { font: 400 clamp(26px, 2.6vw, 36px)/1.1 var(--ff-d); margin-bottom: 8px; }
.panel > .small { margin-bottom: 22px; }
.days { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 10px; margin: 0 -2px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.day { position: relative; flex: 0 0 auto; scroll-snap-align: start; }
.day input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.day span { display: grid; gap: 2px; justify-items: center; min-width: 68px; padding: 10px 6px; border: 1px solid var(--hair); background: var(--ivory); border-radius: 2px; transition: background .2s, color .2s, border-color .2s; }
.day b { font: 400 26px/1 var(--ff-d); }
.day small { font: 600 11px/1.2 var(--ff-b); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.day:hover span { border-color: rgba(30, 25, 25, .45); }
.day input:checked + span { background: var(--teal); border-color: var(--teal); color: var(--on-d); }
.day input:checked + span small { color: var(--on-d-m); }
.day input:focus-visible + span { outline: 2px solid var(--teal); outline-offset: 3px; }
.slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(78px, 1fr)); gap: 8px; }
.slot { position: relative; }
.slot input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.slot span { display: grid; place-items: center; min-height: 44px; border: 1px solid var(--hair); background: var(--ivory); border-radius: 2px; font: 600 14.5px/1 var(--ff-b); font-variant-numeric: tabular-nums; transition: background .2s, color .2s, border-color .2s; }
.slot:hover span { border-color: rgba(30, 25, 25, .45); }
.slot input:checked + span { background: var(--teal); border-color: var(--teal); color: var(--on-d); }
.slot input:disabled { cursor: not-allowed; }
.slot input:disabled + span { color: #a8a29b; background: transparent; text-decoration: line-through; border-style: dashed; }
.slot input:focus-visible + span { outline: 2px solid var(--teal); outline-offset: 3px; }
.picked { min-height: 1.6em; margin: 12px 0 22px; font-size: 14.5px; font-weight: 500; color: var(--teal); }
.priem-photo { margin: 0; }
.priem-photo img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.priem-photo figcaption { padding-top: 10px; font-size: 13px; color: var(--muted); }

/* ───────── 8 · footer ───────── */
.ftr { background: var(--teal-d); color: var(--on-d); padding-top: clamp(56px, 8vw, 110px); }
.ftr a { text-decoration: none; }
.ftr a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ftr .ftr__word { margin: 0 0 clamp(36px, 5vw, 64px); font: 400 min(29vw, 410px)/.8 var(--ff-d); letter-spacing: -.01em; color: transparent; -webkit-text-stroke: 1px rgba(205, 187, 139, .55); user-select: none; overflow: hidden; white-space: nowrap; }
.ftr__cols { display: grid; gap: 34px var(--gap); grid-template-columns: 1fr; padding-bottom: clamp(36px, 5vw, 64px); }
@media (min-width: 640px) { .ftr__cols { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .ftr__cols { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.ftr h3 { margin-bottom: 14px; font: 600 11px/1.3 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--brass-l); }
.ftr ul { list-style: none; display: grid; gap: 4px; }
.ftr li a { display: inline-flex; align-items: center; min-height: 36px; }
@media (max-width: 899px) { .ftr ul { gap: 0; } .ftr li a { min-height: 44px; min-width: 44px; } }
.ftr p { color: var(--on-d-m); font-size: 14.5px; line-height: 1.6; margin: 0 0 8px; }
.ftr__id { font-size: 15px !important; color: var(--on-d) !important; }
.ftr__id b { font-weight: 600; }
.ftr__legal { padding: 22px 0; border-top: 1px solid var(--hair-d); display: grid; gap: 8px; font-size: 13px; line-height: 1.55; color: var(--on-d-m); }
.ftr__legal p { font-size: 13px; margin: 0; }
.ftr__bot { padding: 18px 0 calc(22px + env(safe-area-inset-bottom)); border-top: 1px solid var(--hair-d); display: flex; flex-wrap: wrap; gap: 6px 24px; justify-content: space-between; font-size: 13px; color: var(--on-d-m); }
.ftr__bot a { color: var(--on-d); }

/* ───────── 9 · inner pages and legal ───────── */
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 0 10px; margin: 0 0 4px; font-size: 13.5px; color: var(--muted); }
.crumbs a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; } .crumbs a:hover { text-decoration: underline; }
.phead { padding-block: clamp(48px, 8vw, 120px) clamp(32px, 5vw, 64px); }
.phead__title { font: 400 clamp(42px, 7vw, 108px)/.98 var(--ff-d); letter-spacing: -.012em; margin-bottom: 22px; text-wrap: balance; }
.phead__lead { max-width: 58ch; }
.legal { max-width: 780px; margin-inline: auto; padding-block: clamp(48px, 7vw, 104px); }
.legal h1 { font: 400 clamp(36px, 5vw, 64px)/1.04 var(--ff-d); margin-bottom: 22px; text-wrap: balance; }
.legal h2 { font: 400 clamp(24px, 2.6vw, 32px)/1.15 var(--ff-d); margin: 2.2em 0 .6em; }
.legal p, .legal li { font-size: 16.5px; line-height: 1.7; }
.legal ul { padding-left: 1.2em; margin: 0 0 1em; display: grid; gap: 4px; }
.legal__demo { padding: 14px 18px; background: rgba(154, 134, 87, .14); border-left: 2px solid var(--brass); font-size: 15px !important; }
.legal a { color: var(--teal); }
.legal__id { padding: 18px 22px; background: var(--paper); border: 1px solid var(--hair); border-top: 3px solid var(--brass); font-size: 15px !important; }
.qa { border-top: 1px solid var(--ink); }
.qa details { border-bottom: 1px solid var(--hair); }
.qa summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 1fr 24px; gap: 16px; align-items: center; padding: 20px 0; font: 400 clamp(21px, 2.1vw, 28px)/1.2 var(--ff-d); }
.qa summary::-webkit-details-marker { display: none; }
.qa summary::after { content: '+'; font: 300 28px/1 var(--ff-b); text-align: center; transition: transform .35s var(--ease); }
.qa details[open] summary::after { transform: rotate(45deg); }
.qa details > div { padding: 0 0 22px; max-width: 66ch; color: #3b3735; animation: pl-in .5s var(--ease) both; }

/* ───────── 10 · mobile contact bar ───────── */
.mbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; display: none; grid-template-columns: 1fr 1fr 1.25fr; background: var(--teal-d); color: var(--on-d); padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -10px 30px -12px rgba(0, 0, 0, .35); transform: translateY(0); transition: transform .4s var(--ease); }
.mbar a { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 56px; padding: 0 8px; text-decoration: none; font: 600 14px/1.1 var(--ff-b); border-left: 1px solid var(--hair-d); }
.mbar a:first-child { border-left: 0; }
.mbar a:last-child { background: var(--on-d); color: var(--teal-d); }
.mbar svg { width: 19px; height: 19px; }
.mbar.is-hidden { transform: translateY(110%); }
@media (max-width: 899px) { .mbar { display: grid; } body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); } }

/* toast */
.toast { position: fixed; left: 50%; bottom: calc(28px + env(safe-area-inset-bottom)); z-index: 300; max-width: calc(100vw - 32px); padding: 13px 20px; background: var(--ink); color: #fff; font-size: 14px; line-height: 1.4; border-radius: 2px; transform: translate(-50%, 18px); opacity: 0; pointer-events: none; transition: opacity .3s, transform .4s var(--ease); box-shadow: 0 14px 40px -14px rgba(0, 0, 0, .5); }
.toast.is-on { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 899px) { .toast { bottom: calc(76px + env(safe-area-inset-bottom)); } }

/* ───────── 11 · print ───────── */
.chrono-print { display: none; }
@media print {
  @page { margin: 16mm; }
  html.print-chrono body > *:not(.chrono-print) { display: none !important; }
  html.print-chrono .chrono-print { display: block; color: #000; font: 400 11pt/1.45 var(--ff-b); background: #fff; }
  .chrono-print h1 { font: 400 26pt/1.1 var(--ff-d); margin: 0 0 4pt; }
  .chrono-print .cp__sub { color: #444; margin: 0 0 14pt; font-size: 10pt; }
  .chrono-print table { width: 100%; border-collapse: collapse; margin-bottom: 14pt; }
  .chrono-print th, .chrono-print td { text-align: left; vertical-align: top; padding: 6pt 8pt 6pt 0; border-top: 0.6pt solid #888; font-size: 10.5pt; }
  .chrono-print th { font-size: 8.5pt; letter-spacing: .08em; text-transform: uppercase; color: #444; }
  .chrono-print h2 { font: 400 16pt/1.2 var(--ff-d); margin: 16pt 0 6pt; }
  .chrono-print ul { margin: 0 0 12pt; padding: 0; list-style: none; }
  .chrono-print li { padding: 3pt 0 3pt 16pt; position: relative; font-size: 10.5pt; }
  .chrono-print li::before { content: ''; position: absolute; left: 0; top: 5pt; width: 8pt; height: 8pt; border: 0.8pt solid #000; }
  .chrono-print .cp__foot { margin-top: 18pt; padding-top: 8pt; border-top: 0.6pt solid #000; font-size: 9pt; color: #333; }
}

/* motion safety */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .hero__cue { display: none !important; }
}


/* ───────── 12 · inner pages: about, practice, timeline, publications, contacts ───────── */
.hl { margin: 0 0 12px; font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.chap--teal { background: var(--teal); color: var(--on-d); }
.chap--teal .kicker { color: var(--brass-l); }
.chap--teal :focus-visible { outline-color: var(--brass-l); }
.chap--teal .stamp { border-color: var(--hair-d); color: var(--on-d-m); }
.chap--teal .stamp b { color: var(--on-d); }
.phead--split { display: grid; gap: 28px var(--gap); align-items: end; }
.phead__year { margin: 0; color: var(--brass); font: 400 clamp(96px, 17vw, 260px)/.8 var(--ff-d); letter-spacing: -.03em; user-select: none; }
.phead__year small { display: block; margin-top: 16px; font: 600 11px/1.4 var(--ff-b); letter-spacing: .17em; text-transform: uppercase; color: var(--brass-d); }
@media (min-width: 900px) { .phead--split { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); } .phead__year { text-align: right; } }
.facts--page { margin-top: clamp(36px, 5vw, 72px); border-bottom: 1px solid var(--hair); }
.facts--4 .facts__in { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.facts--4 .facts__in > div:first-child { padding-left: 0; }
@media (max-width: 1000px) { .facts--4 .facts__in { display: flex; } }

/* about: identity block, dated facts, method, order, categories */
.idblock { display: grid; gap: clamp(28px, 4vw, 56px); }
.idblock .regcard { margin-top: clamp(22px, 3vw, 34px); }
.idblock__text > p:first-child { max-width: 56ch; }
.idfig { margin: 0; }
.idfig img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: var(--stone-2); }
.idfig figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; padding-top: 10px; font-size: 13px; color: var(--muted); }
@media (min-width: 900px) { .idblock { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); align-items: start; } .idfig { position: sticky; top: calc(var(--nav-h) + 28px); } }
.cv { border-top: 1px solid var(--ink); }
.cv__row { display: grid; gap: 6px 28px; padding: clamp(18px, 2.4vw, 28px) 0; border-bottom: 1px solid var(--hair); }
.cv__k { font: 400 clamp(32px, 4vw, 56px)/1 var(--ff-d); color: var(--teal); font-variant-numeric: lining-nums; }
.cv__v b { display: block; font-weight: 600; font-size: 17.5px; margin-bottom: 4px; }
.cv__v p { margin: 0; max-width: 62ch; color: #3b3735; font-size: 16px; line-height: 1.55; }
@media (min-width: 900px) { .cv__row { grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); align-items: baseline; } }
.method { display: grid; gap: clamp(26px, 3vw, 40px); margin-bottom: clamp(48px, 7vw, 96px); }
.method__item { padding-top: 18px; border-top: 1px solid var(--ink); }
.method__no { display: block; margin-bottom: 14px; font: 600 12px/1 var(--ff-b); letter-spacing: .15em; color: var(--brass-d); }
.method__word { display: block; margin-bottom: 14px; font: 400 clamp(32px, 3.4vw, 52px)/1.05 var(--ff-d); hyphens: none; }
.method__item p { margin: 0; max-width: 40ch; color: #3b3735; font-size: 16px; line-height: 1.6; }
@media (min-width: 900px) { .method { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.order { list-style: none; counter-reset: od; display: grid; gap: 0; border-top: 1px solid var(--ink); }
.order li { counter-increment: od; padding: 22px 0 26px; border-bottom: 1px solid var(--hair); }
.order li::before { content: counter(od, decimal-leading-zero); display: block; margin-bottom: 12px; font: 400 clamp(40px, 4.4vw, 64px)/.9 var(--ff-d); color: var(--brass); }
.order b { display: block; margin-bottom: 6px; font: 400 clamp(24px, 2.2vw, 32px)/1.1 var(--ff-d); }
.order span { display: block; max-width: 40ch; font-size: 15.5px; line-height: 1.55; color: #3b3735; }
.order small { display: block; margin-top: 10px; font: 600 11px/1.4 var(--ff-b); letter-spacing: .12em; text-transform: uppercase; color: var(--teal-m); }
@media (min-width: 700px) { .order { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--gap); } }
@media (min-width: 1100px) { .order--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .order--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 700px) and (max-width: 1099px) { .order--3 li:last-child { grid-column: 1 / -1; } }
.cats { list-style: none; border-top: 1px solid var(--ink); }
.cats li { display: grid; gap: 6px 28px; padding: clamp(18px, 2.4vw, 28px) 0; border-bottom: 1px solid var(--hair); }
.cats__ref { font: 400 clamp(24px, 2.6vw, 38px)/1.1 var(--ff-d); color: var(--teal); }
.cats__d { margin: 0; max-width: 62ch; font-size: 16px; line-height: 1.55; }
.cats__d small { display: block; margin-top: 6px; font: 600 11px/1.4 var(--ff-b); letter-spacing: .12em; text-transform: uppercase; color: var(--brass-d); }
@media (min-width: 900px) { .cats li { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); align-items: baseline; } }
.note { margin: 22px 0 0; padding: 14px 18px; background: rgba(154, 134, 87, .14); border-left: 2px solid var(--brass); font-size: 14.5px; line-height: 1.55; max-width: 76ch; }
.chap--stone .note { background: rgba(251, 249, 245, .6); }
.split { display: grid; gap: clamp(28px, 4vw, 64px); }
@media (min-width: 960px) { .split { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); align-items: start; } .split__side { position: sticky; top: calc(var(--nav-h) + 28px); } }
.split__side p { max-width: 46ch; }
.docs--flat { margin-top: 0; }
.cta { display: grid; gap: 28px var(--gap); align-items: end; }
.cta__t { font: 400 clamp(36px, 5vw, 76px)/1.02 var(--ff-d); letter-spacing: -.01em; text-wrap: balance; margin: 14px 0 0; }
.cta__p { margin: 0 0 22px; max-width: 46ch; color: var(--on-d-m); }
.cta__btns { display: flex; flex-wrap: wrap; gap: 10px; }
@media (min-width: 900px) { .cta { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }

/* practice: contents rail, guides, stages, deadline tool */
.gl { display: grid; gap: clamp(24px, 4vw, 56px); }
.toc { list-style: none; margin: 0 calc(var(--gutter) * -1); padding: 10px var(--gutter); display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; position: sticky; top: var(--nav-h); z-index: 10; background: var(--ivory); border-bottom: 1px solid var(--hair); }
.toc::-webkit-scrollbar { display: none; }
.toc a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border: 1px solid var(--hair); border-radius: 2px; background: var(--paper); white-space: nowrap; text-decoration: none; font: 500 14px/1.2 var(--ff-b); transition: background .2s, color .2s, border-color .2s; }
.toc a i { font: 600 11px/1 var(--ff-b); font-style: normal; letter-spacing: .12em; color: var(--brass-d); }
.toc small { display: none; }
.toc a[aria-current="true"] { background: var(--teal); border-color: var(--teal); color: var(--on-d); }
.toc a[aria-current="true"] i { color: var(--brass-l); }
@media (min-width: 1000px) {
  .gl { grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); }
  .toc { display: grid; gap: 0; margin: 0; padding: 0; overflow: visible; top: calc(var(--nav-h) + 32px); align-self: start; background: none; border-bottom: 0; border-top: 1px solid var(--ink); }
  .toc a { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: baseline; min-height: 0; padding: 14px 8px 14px 0; border: 0; border-bottom: 1px solid var(--hair); border-radius: 0; background: none; white-space: normal; font-size: 15px; transition: padding .35s var(--ease), color .2s; }
  .toc a:hover { padding-left: 8px; }
  .toc small { display: block; margin-top: 3px; font: 500 12.5px/1.4 var(--ff-b); color: var(--muted); }
  .toc a[aria-current="true"] { background: none; color: var(--teal); box-shadow: inset 2px 0 0 var(--brass); padding-left: 12px; }
  .toc a[aria-current="true"] i { color: var(--brass-d); }
  .toc a[aria-current="true"] small { color: var(--muted); }
}
.guide { padding-block: clamp(40px, 6vw, 84px); border-top: 1px solid var(--ink); scroll-margin-top: calc(var(--nav-h) + 76px); }
.guide:first-child { border-top: 0; padding-top: clamp(12px, 2vw, 24px); }
.guide__head { display: grid; gap: 12px 24px; margin-bottom: clamp(24px, 3.5vw, 44px); }
.guide__no { font: 400 clamp(54px, 7vw, 104px)/.8 var(--ff-d); color: var(--brass); }
.guide__title { font: 400 clamp(30px, 3.6vw, 54px)/1.06 var(--ff-d); text-wrap: balance; }
.guide__fee { margin: 0; font: 400 clamp(26px, 2.6vw, 36px)/1.1 var(--ff-d); color: var(--teal); white-space: nowrap; }
.guide__fee small { display: block; margin-top: 4px; font: 500 13px/1.4 var(--ff-b); letter-spacing: .02em; color: var(--muted); }
@media (min-width: 760px) { .guide__head { grid-template-columns: auto minmax(0, 1fr) auto; align-items: end; } }
.guide__grid { display: grid; gap: 28px clamp(24px, 3vw, 48px); }
@media (min-width: 900px) { .guide__grid { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); align-items: start; } }
.guide__main > p { max-width: 62ch; }
.guide__main h4.hl { margin: 1.7em 0 12px; }
.guide__main > h4.hl:first-child { margin-top: 0; }
.guide__box { padding-top: 16px; margin-bottom: 26px; border-top: 1px solid var(--ink); }
.guide__box p { font-size: 15px; line-height: 1.55; margin: 0 0 .8em; }
.guide .qa { margin-top: clamp(28px, 4vw, 44px); }
.guide__go { display: flex; flex-wrap: wrap; gap: 0 28px; margin: 18px 0 0; font-weight: 600; font-size: 15px; }
.guide__go a { display: inline-flex; align-items: center; min-height: 44px; }
.ticks { list-style: none; display: grid; gap: 9px; margin: 0 0 1em; }
.ticks li { position: relative; padding-left: 22px; font-size: 15.5px; line-height: 1.5; }
.ticks li::before { content: ''; position: absolute; left: 0; top: .72em; width: 12px; height: 1px; background: var(--brass); }
.stages { list-style: none; counter-reset: sg; margin: 0 0 1.4em; border-top: 1px solid var(--hair); }
.stages li { counter-increment: sg; display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 2px 12px; padding: 16px 0; border-bottom: 1px solid var(--hair); }
.stages li::before { content: counter(sg, decimal-leading-zero); grid-row: 1 / span 2; font: 600 12px/1.9 var(--ff-b); letter-spacing: .1em; color: var(--brass-d); }
.stages li > * { grid-column: 2; }
.stages__t { font: 600 11.5px/1.5 var(--ff-b); letter-spacing: .08em; text-transform: uppercase; color: var(--teal-m); }
.stages b { display: block; font-weight: 600; }
.stages p { margin: 2px 0 0; font-size: 15.5px; line-height: 1.55; max-width: none; }
.dtool { display: grid; gap: clamp(28px, 4vw, 56px); }
@media (min-width: 1000px) { .dtool { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); align-items: start; } .dtool__side { position: sticky; top: calc(var(--nav-h) + 24px); } }
.dtool__side > p { color: var(--on-d-m); max-width: 52ch; }
.dtool__form { padding-top: 22px; border-top: 1px solid var(--hair-d); }
.dtool .field > label, .dtool .field legend { color: var(--on-d-m); }
.dtool .input { background: rgba(242, 239, 232, .07); border-color: var(--hair-d); color: var(--on-d); color-scheme: dark; }
.dtool .input:hover { border-color: rgba(242, 239, 232, .5); }
.dtool .input:focus { border-color: var(--brass-l); box-shadow: 0 0 0 3px rgba(205, 187, 139, .22); }
.dtool select.input option { color: #1E1919; background: #fff; }
.dtool .field__hint { color: var(--on-d-m); }
.dres { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 20px; padding: 16px 0; border-top: 1px solid var(--hair); }
.dres:first-of-type { border-top: 0; }
.dres__k { font-weight: 600; line-height: 1.4; }
.dres__n { grid-column: 1; font-size: 13px; line-height: 1.45; color: var(--muted); }
.dres__d { grid-row: 1 / span 2; grid-column: 2; align-self: center; font: 400 clamp(24px, 2.4vw, 34px)/1 var(--ff-d); font-variant-numeric: lining-nums; white-space: nowrap; color: var(--teal-d); }
.dres__empty { margin: 0; padding: 22px 0 6px; color: var(--muted); }
@media (max-width: 479px) { .dres { grid-template-columns: 1fr; } .dres__d { grid-row: auto; grid-column: 1; margin-top: 4px; } }
.factors { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.factors li { padding: 10px 0 10px 18px; position: relative; border-top: 1px solid var(--hair); font-size: 15px; }
.factors li::before { content: ""; position: absolute; left: 0; top: calc(10px + .78em); width: 10px; height: 1px; background: var(--brass); }

/* timeline page */
.legend { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 0; padding: 0; font-size: 13px; color: var(--on-d-m); }
.legend li { display: inline-flex; align-items: center; gap: 8px; }
.legend i { width: 10px; height: 10px; border-radius: 50%; background: var(--ev, var(--brass-l)); flex: none; box-shadow: 0 0 0 2px rgba(242, 239, 232, .55); }
.chrono__legend { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--hair-d); }
.chrono__legend .hl { color: var(--brass-l); }
.dd { display: grid; gap: clamp(28px, 4vw, 56px); }
.dd ul { list-style: none; display: grid; gap: 0; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.dd li { position: relative; padding: 14px 0 14px 32px; border-bottom: 1px solid var(--hair); font-size: 16px; line-height: 1.5; }
.dd--yes li::before { content: ''; position: absolute; left: 7px; top: 1.05em; width: 7px; height: 12px; border: solid var(--teal); border-width: 0 2px 2px 0; transform: rotate(40deg); }
.dd--no li::before { content: '×'; position: absolute; left: 4px; top: .55em; font: 400 24px/1 var(--ff-b); color: #8a4a3a; }
.dd h3 { font: 400 clamp(26px, 2.6vw, 36px)/1.1 var(--ff-d); margin-bottom: 16px; }
@media (min-width: 900px) { .dd { grid-template-columns: 1fr 1fr; } }
.letter { margin-top: clamp(22px, 3vw, 36px); background: var(--paper); color: var(--ink); padding: clamp(22px, 3.4vw, 44px); position: relative; }
.letter::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--brass-l); }
.letter h3 { font: 400 clamp(24px, 2.4vw, 32px)/1.1 var(--ff-d); margin-bottom: 8px; }
.letter__orgs { margin: 0 0 14px; font-size: 14.5px; line-height: 1.55; color: var(--muted); max-width: 62ch; }
.letter__body { margin: 0 0 18px; padding: 18px 20px; background: var(--ivory); border: 1px solid var(--hair); font: 400 14.5px/1.65 var(--ff-b); white-space: pre-wrap; overflow-wrap: anywhere; }
.letter__act { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.letter .stamp { border-color: var(--hair); color: var(--muted); }
.letter .stamp b { color: var(--ink); }

/* publications */
.pfilter { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin: 0 0 clamp(22px, 3vw, 36px); }
.pfilter .chip-row { flex: 1 1 auto; }
.pfilter__n { margin: 0; font-size: 13.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
.band { margin: 0; position: relative; background: var(--teal-d); }
.band img { width: 100%; height: clamp(180px, 26vw, 360px); object-fit: cover; object-position: 50% 68%; }
.band figcaption { position: absolute; left: var(--gutter); bottom: 14px; padding: 6px 12px; background: rgba(31, 52, 56, .82); color: var(--on-d); font: 600 11px/1.4 var(--ff-b); letter-spacing: .14em; text-transform: uppercase; }
.lib { border-top: 1px solid var(--ink); }
.doc { display: grid; gap: 18px clamp(24px, 4vw, 64px); padding-block: clamp(34px, 5vw, 72px); border-bottom: 1px solid var(--hair); scroll-margin-top: calc(var(--nav-h) + 12px); }
.doc__yr { font: 400 clamp(54px, 6vw, 92px)/.85 var(--ff-d); color: var(--brass); font-variant-numeric: lining-nums; }
.doc__aside { display: grid; gap: 8px; align-content: start; }
.doc__meta { margin: 0; font-size: 14px; line-height: 1.5; color: var(--muted); }
.doc__title { font: 400 clamp(28px, 3.2vw, 46px)/1.1 var(--ff-d); margin-bottom: 18px; text-wrap: balance; }
.doc__lead { font-size: var(--fs-lead); line-height: 1.58; max-width: 60ch; }
.doc__body p, .doc__body li { max-width: 62ch; }
.doc__body h4.hl { margin: 1.7em 0 12px; }
.doc__body .stages { max-width: 66ch; }
.doc__tools { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.doc__src { margin: 22px 0 0; font-size: 13px; line-height: 1.55; color: var(--muted); max-width: 66ch; }
@media (min-width: 900px) { .doc { grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); } .doc__aside { position: sticky; top: calc(var(--nav-h) + 28px); align-self: start; } }
.cmp { width: 100%; border-collapse: collapse; margin: 6px 0 22px; font-size: 15px; line-height: 1.5; }
.cmp th, .cmp td { text-align: left; vertical-align: top; padding: 12px 16px 12px 0; border-top: 1px solid var(--hair); }
.cmp thead th { padding-block: 0 10px; border-top: 0; font: 600 11px/1.3 var(--ff-b); letter-spacing: .15em; text-transform: uppercase; color: var(--brass-d); }
.cmp tbody th { width: 24%; font-weight: 600; }
.cmp tbody tr:last-child th, .cmp tbody tr:last-child td { border-bottom: 1px solid var(--ink); }
@media (max-width: 700px) {
  .cmp, .cmp tbody, .cmp tr, .cmp th, .cmp td { display: block; width: 100%; }
  .cmp thead { display: none; }
  .cmp tbody tr { padding: 14px 0; border-top: 1px solid var(--hair); }
  .cmp th, .cmp td { border: 0 !important; padding: 0 0 6px; }
  .cmp tbody th { width: 100%; font-size: 16px; }
  .cmp td[data-label]::before { content: attr(data-label) ': '; font-weight: 600; color: var(--muted); }
}
.doc-print { display: none; }
@media print {
  html.print-doc body > *:not(.doc-print) { display: none !important; }
  html.print-doc .doc-print { display: block; color: #000; font: 400 11.5pt/1.5 var(--ff-b); background: #fff; }
  .doc-print .hl { font-size: 8.5pt; letter-spacing: .12em; text-transform: uppercase; color: #444; margin: 0 0 4pt; }
  .doc-print h1 { font: 400 24pt/1.12 var(--ff-d); margin: 0 0 8pt; }
  .doc-print h3 { font: 400 15pt/1.2 var(--ff-d); margin: 14pt 0 5pt; }
  .doc-print p, .doc-print li { font-size: 11pt; margin: 0 0 6pt; }
  .doc-print ul, .doc-print ol { margin: 0 0 8pt 16pt; padding: 0; }
  .doc-print .doc__tools, .doc-print .stages__t { display: none; }
  .doc-print .cp__foot { margin-top: 16pt; padding-top: 8pt; border-top: 0.6pt solid #000; font-size: 9pt; color: #333; }
}

/* contacts */
.reach { list-style: none; border-top: 1px solid var(--ink); margin: 0 0 clamp(36px, 5vw, 64px); padding: 0; }
.reach li { border-bottom: 1px solid var(--hair); }
.reach a { display: grid; grid-template-columns: 40px minmax(0, 1fr) 24px; gap: 4px 16px; align-items: center; padding: 20px 0; text-decoration: none; transition: padding .4s var(--ease); }
.reach .ico { width: 28px; height: 28px; color: var(--teal); grid-row: 1 / span 2; }
.reach__n { font: 400 clamp(26px, 3.4vw, 46px)/1.05 var(--ff-d); font-variant-numeric: lining-nums; }
.reach__s { grid-column: 2; font-size: 14.5px; line-height: 1.45; color: var(--muted); }
.reach__go { grid-row: 1 / span 2; grid-column: 3; width: 22px; height: 22px; transition: transform .4s var(--ease); }
@media (min-width: 900px) {
  .reach a { grid-template-columns: 56px minmax(0, 5fr) minmax(0, 6fr) 24px; }
  .reach .ico { grid-row: auto; }
  .reach__s { grid-column: auto; }
  .reach__go { grid-row: auto; grid-column: auto; }
  .reach a:hover { padding-left: 14px; }
  .reach a:hover .reach__go { transform: translateX(6px); }
  .reach a:hover .reach__n { color: var(--teal); }
}
.find { display: grid; gap: clamp(28px, 4vw, 64px); }
@media (min-width: 900px) { .find { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); align-items: start; } }
.find .priem-photo { margin-bottom: 0; }
.access { margin-top: 28px; }
