
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-roman.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
  unicode-range: U+0020-007E, U+00A0, U+00A9, U+00AB, U+00AD, U+00B2, U+00B7, U+00B9, U+00BB, U+00D7,
                 U+0401, U+0410-044F, U+0451, U+2009-200B, U+2010, U+2013, U+2018-2019, U+201C-201E,
                 U+2026, U+202F, U+2032, U+2116, U+2190-2193, U+2212, U+2248, U+25A0;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("/assets/fonts/source-serif-4-italic.woff2") format("woff2");
  font-weight: 400; font-style: italic; font-display: swap;
  unicode-range: U+0020-007E, U+00A0, U+00A9, U+00AB, U+00AD, U+00B2, U+00B7, U+00B9, U+00BB, U+00D7,
                 U+0401, U+0410-044F, U+0451, U+2009-200B, U+2010, U+2013, U+2018-2019, U+201C-201E,
                 U+2026, U+202F, U+2032, U+2116, U+2190-2193, U+2212, U+2248, U+25A0;
}
@font-face {
  font-family: "SS4 Formula";
  src: url("/assets/fonts/source-serif-4-roman.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: block;
}
@font-face { font-family: "SS4 Fallback"; src: local("Georgia");
  font-style: normal; size-adjust: 104.4%; ascent-override: 99.2%; descent-override: 32.1%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Fallback"; src: local("Georgia Italic"), local("Georgia-Italic");
  font-style: italic; size-adjust: 97.9%; ascent-override: 105.8%; descent-override: 34.2%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Fallback Noto"; src: local("Noto Serif"), local("Noto Serif Regular"), local("NotoSerif-Regular");
  font-style: normal; size-adjust: 97.2%; ascent-override: 106.6%; descent-override: 34.5%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Fallback Noto"; src: local("Noto Serif Italic"), local("NotoSerif-Italic");
  font-style: italic; size-adjust: 95.3%; ascent-override: 108.7%; descent-override: 35.2%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Display Fallback"; src: local("Georgia");
  font-style: normal; size-adjust: 98.4%; ascent-override: 105.3%; descent-override: 34%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Display Fallback"; src: local("Georgia Italic"), local("Georgia-Italic");
  font-style: italic; size-adjust: 91.5%; ascent-override: 113.2%; descent-override: 36.6%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Display Fallback Noto"; src: local("Noto Serif"), local("Noto Serif Regular"), local("NotoSerif-Regular");
  font-style: normal; size-adjust: 91.6%; ascent-override: 113.1%; descent-override: 36.6%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Display Fallback Noto"; src: local("Noto Serif Italic"), local("NotoSerif-Italic");
  font-style: italic; size-adjust: 89%; ascent-override: 116.4%; descent-override: 37.6%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Formula Fallback"; src: local("Georgia");
  size-adjust: 87.1%; ascent-override: 118.9%; descent-override: 38.5%; line-gap-override: 0%; }
@font-face { font-family: "SS4 Formula Fallback Noto"; src: local("Noto Serif"), local("Noto Serif Regular"), local("NotoSerif-Regular");
  size-adjust: 86.2%; ascent-override: 120.2%; descent-override: 38.9%; line-gap-override: 0%; }

:root {
  color-scheme: light;

  --paper:        #F0F3F5;     --paper-2:      #E5E9EC;     --mat:          #FAFBFC;     --ink:          #1B1D21;     --ink-2:        #494C51;
  --ink-3:        #606369;     --construct:    #94979C;       --arc:          #7E8186;
  --rule:         #C4C8CB;     --sangina:      #9E3D25;     --sangina-tint: #F3D9D2;     --dim:  .52;
  --veil: rgb(240 243 245 / .72);

  --r-ui: 12px;
  --r-media: 24px;

  --lw-ink: 1.5px; --lw-check: 1px; --lw-construct: 1px; --lw-arc: 1.25px; --lw-rule: 1px; --lw-brace: 1.25px;
    --ul-offset: .34em;

  --gutter:    clamp(1.5rem, .5773rem + 3.785vw, 3rem);         --section-y: clamp(6rem, 4.5143rem + 6.0952vw, 10rem);        --head-gap:  clamp(2rem, 1.6286rem + 1.5238vw, 3rem);       
    --fig-hero:   clamp(176px, calc(100svh - 430px), 72vw);
  --fig-method: min(78vw, 46svh);

  --dur-micro: 150ms; --dur-state: 240ms; --dur-layout: 400ms; --dur-enter: 700ms;
  --dur-hand: 700ms; --dur-compass: 560ms; --dur-tick: 50ms;
  --dur-brace: 220ms; --dur-label: 240ms;
  --ease-out:     cubic-bezier(.22, 1, .36, 1);
  --ease-out-4:   cubic-bezier(.25, 1, .5, 1);
  --ease-hand:    cubic-bezier(.35, .05, .5, .9);
  --ease-compass: cubic-bezier(.65, 0, .35, 1);

    --ff-text:    "Source Serif 4", "SS4 Fallback", "SS4 Fallback Noto", serif;
  --ff-display: "Source Serif 4", "SS4 Display Fallback", "SS4 Display Fallback Noto", serif;
  --ff-formula: "SS4 Formula", "SS4 Formula Fallback", "SS4 Formula Fallback Noto", serif;

    --fs-formula: min(clamp(3.25rem, 1.6143rem + 8.7619vw, 9.5rem), 100cqi / 5.45);
  --fs-h1:       clamp(1.875rem, 1.2714rem + 2.4762vw, 3.5rem);
  --fs-h2:       clamp(2.125rem, 1.5214rem + 2.4762vw, 3.75rem);
  --fs-claim:    clamp(1.625rem, 1.2536rem + 1.5238vw, 2.625rem);
  --fs-dir-main: clamp(1.625rem, 1.3929rem + .9524vw, 2.25rem);
  --fs-dir:      clamp(1.25rem, 1.1571rem + .381vw, 1.5rem);
  --fs-lead:     clamp(1rem, .9071rem + .381vw, 1.25rem);
  --fs-text:     clamp(1.0625rem, 1.0393rem + .0952vw, 1.125rem);
  --fs-small:    clamp(.9375rem, .9143rem + .0952vw, 1rem);
  --fs-eyebrow:  clamp(.9375rem, .8911rem + .1905vw, 1.0625rem);
  --fs-caption:  clamp(.8125rem, .7429rem + .2857vw, 1rem);
  --fs-app:      clamp(.8125rem, .7893rem + .0952vw, .875rem);
  --fs-brand:    clamp(1.0625rem, 1.0161rem + .1905vw, 1.1875rem);
  --fs-brand-sub: clamp(.75rem, .7268rem + .0952vw, .8125rem);
}
@media (min-width: 768px) {
  :root { --fig-hero: clamp(300px, calc(100svh - 524px), 500px); }
}
@media (min-width: 1024px) {
  :root {
    --fig-hero:   clamp(300px, calc(100vh - 460px), 460px);
    --fig-method: clamp(360px, min(58vh, min(50vw - 48px, 600px) - 84px), 516px);
  }
}

*, *::before, *::after { box-sizing: border-box; }
html {
  background: var(--paper); color: var(--ink);
  font-family: var(--ff-text); font-weight: 400;
  font-synthesis: none; font-kerning: normal; font-optical-sizing: auto;
  font-variant-numeric: lining-nums proportional-nums;
  overflow-wrap: break-word;
  hanging-punctuation: first allow-end;
  -webkit-text-size-adjust: 100%; text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
}
body {
  margin: 0; min-height: 100vh;
  font-size: var(--fs-text); line-height: 1.55;
  overflow-x: clip;               }
@media (min-width: 768px) { body { line-height: 1.6; } }
h1, h2, h3, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3 { font-weight: 400; }
b, strong { font-weight: 400; font-style: italic; }   img { display: block; max-width: 100%; height: auto; }
button { font: inherit; color: inherit; }
dialog:not([open]) { display: none; }   ::selection { background: var(--sangina-tint); color: var(--ink); }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
:focus:not(:focus-visible) { outline: none; }

a, .ul {
  --ul-c: var(--ink-2);
  --ul-y: calc(1.036em + var(--ul-offset));
  color: inherit; text-decoration: none; padding-bottom: .25em;
  background-image: linear-gradient(var(--ink), var(--ink)), linear-gradient(var(--ul-c), var(--ul-c));
  background-repeat: no-repeat;
  background-position: 0 var(--ul-y), 0 var(--ul-y);
  background-size: 0 1.5px, 100% 1px;
}
@media (hover: hover) and (pointer: fine) {
  a, .ul { transition: background-size var(--dur-micro) var(--ease-out); }
  a:hover, .act:hover .ul { background-size: 100% 1.5px, 100% 1px; }
}
@media (forced-colors: active) { a, .ul { text-decoration: underline; } }   
.act {
  position: relative; display: inline; margin: 0; padding: 0; border: 0; background: none;
  font: inherit; font-style: italic; line-height: inherit; color: var(--ink); text-align: left; cursor: pointer;
}
.act::after { content: ""; position: absolute; left: -6px; right: -6px; top: 50%; height: 44px; translate: 0 -50%; }

.wrap { width: min(1200px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.nw { white-space: nowrap; }
.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
.hit { position: relative; }
.hit::after { content: ""; position: absolute; left: -6px; right: -6px; top: 50%; height: 44px; translate: 0 -50%; }   .skip {
  position: absolute; left: var(--gutter); top: 8px; z-index: 70;
  padding: 10px 16px; background: var(--paper); border: 1px solid var(--ink); border-radius: var(--r-ui);
  text-decoration: none; transform: translateY(-160%);
}
.skip:focus { transform: none; }
.flow { -webkit-hyphens: auto; hyphens: auto; hyphenate-limit-chars: 6 3 3; text-wrap: pretty; }
[lang="en"] { -webkit-hyphens: manual; hyphens: manual; }

.insert {
  display: inline-flex; align-items: center; justify-content: center; min-height: 44px;
  padding: 0 18px; border: var(--lw-ink) solid var(--ink); border-radius: var(--r-ui);
  background: var(--paper); color: var(--ink);
  font-family: var(--ff-text); font-size: 1rem; font-style: italic; line-height: 1.25;
  text-align: center; text-decoration: none; cursor: pointer;
  transition: background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) { .insert:hover { background-color: var(--paper-2); } }
.insert:active { background-color: color-mix(in oklch, var(--paper-2), var(--ink) 6%); }

.btn {
  display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 24px;
  border: var(--lw-ink) solid var(--ink); border-radius: var(--r-ui);
  background: var(--ink); color: var(--paper);
  font-size: var(--fs-text); line-height: 1.25; text-align: center; text-decoration: none;
  transition: background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .btn:hover { background-color: color-mix(in oklab, var(--ink), var(--paper) 12%); border-color: color-mix(in oklab, var(--ink), var(--paper) 12%); }
}
.btn:active { background-color: color-mix(in oklab, var(--ink), var(--paper) 20%); border-color: color-mix(in oklab, var(--ink), var(--paper) 20%); }

.eyebrow { font-size: var(--fs-eyebrow); font-style: italic; line-height: 1.3; color: var(--ink-2); margin-bottom: 12px; }
.eyebrow--lc { text-transform: lowercase; }
.sec h2 {
  font-family: var(--ff-display); font-size: var(--fs-h2); line-height: 1.06; letter-spacing: -.012em;
  text-wrap: balance; margin-bottom: var(--head-gap);
}
.sec { padding-top: var(--section-y); scroll-margin-top: 72px; }

.top {
  display: flex; align-items: baseline; gap: 16px;
  height: 56px; padding-top: 11px;
}
.brand { position: relative; display: block; color: var(--ink); text-decoration: none; background: none; padding: 0; min-width: 0; margin-right: auto; }
.brand::after { content: ""; position: absolute; left: -8px; right: -8px; top: 50%; min-height: 100%; height: 44px; translate: 0 -50%; }
.brand__name { display: block; font-size: var(--fs-brand); line-height: 1.1; white-space: nowrap; margin-inline-start: -.51em; }
.brand__sub { display: block; font-size: var(--fs-brand-sub); font-style: italic; line-height: 1.2; color: var(--ink-2); }
@media (min-width: 390px) { .brand__sub { white-space: nowrap; } }   @supports (hanging-punctuation: first) { .brand__name { margin-inline-start: 0; } }
.top__nav { display: none; }
.nav { display: flex; gap: 32px; }
.nav a, .top__contact, .menu__toggle, .bar__menu, .bar__contact {
  position: relative; font-size: 1rem; line-height: 1.25; text-decoration: none;
}
.nav a, .top__contact, .bar__contact, .menu__list a, .menu__more a { --ul-c: transparent; }
.top__contact, .bar__contact { --ul-y: calc(.9755em + var(--ul-offset)); margin-bottom: -.25em; }
.nav a { color: var(--ink-2); }
.nav a::after, .top__contact::after, .menu__toggle::after, .bar__menu::after, .bar__contact::after {
  content: ""; position: absolute; inset: -12px -8px;   }
.top__contact { color: var(--ink); }
@media (max-width: 359px) { .top__contact { display: none; } }
@media (min-width: 1024px) {
  .top { height: 88px; padding-top: 26px; gap: 0; }
  .top__nav { display: block; }
  .top__contact { margin-left: 48px; }
}

html.menu-open { overflow: hidden; }
.menu > summary { list-style: none; cursor: pointer; }
.menu > summary::-webkit-details-marker { display: none; }
.menu__toggle { display: inline-block; color: var(--ink); user-select: none; }
.menu__close { display: none; }
.menu[open] > .menu__toggle { position: relative; z-index: 61; }
.menu[open] > .menu__toggle .menu__open { display: none; }
.menu[open] > .menu__toggle .menu__close { display: inline; }
.menu__sheet {
  position: absolute; left: 0; right: 0; top: 56px; z-index: 60;
  background: var(--paper); padding: 8px var(--gutter) 24px; border-bottom: 1px solid var(--rule);
}
html.js-ready .menu[open] > .menu__toggle {
  position: fixed; top: 0; right: var(--gutter);
  display: flex; align-items: center; height: 56px;
}
html.js-ready .menu__sheet { position: fixed; inset: 0; overflow-y: auto; padding: 104px var(--gutter) 48px; border-bottom: 0; }
.menu__list li { font-family: var(--ff-display); font-size: 2rem; line-height: 56px; }
.menu__list a { text-decoration: none; }
.menu__rule { border: 0; border-top: 1px solid var(--rule); margin: 16px 0 8px; }
.menu__more { font-size: 1.25rem; line-height: 44px; }
@keyframes menu-in { from { opacity: 0; } }
@keyframes menu-out { to { opacity: 0; } }
.menu[open] .menu__sheet { animation: menu-in var(--dur-state) var(--ease-out); }
.menu.is-closing .menu__sheet { animation: menu-out 180ms var(--ease-out-4) forwards; }
@media (min-width: 1024px) { .menu { display: none; } }

.bar {
  position: fixed; inset: 0 0 auto; z-index: 30; height: 48px;
  background: var(--paper); border-bottom: 1px solid var(--rule);
  transform: translateY(-100%); visibility: hidden;
  transition: transform 180ms var(--ease-out-4), visibility 0s linear 180ms;
}
.bar.is-shown { transform: none; visibility: visible; transition: transform var(--dur-state) var(--ease-out-4), visibility 0s; }
.bar__in { display: flex; align-items: center; gap: 16px; height: 100%; }
.bar .brand__name { font-size: var(--fs-brand); }
.bar__nav { display: none; }
.bar__menu { padding: 0; border: 0; background: none; cursor: pointer; color: var(--ink); }
.bar__contact { color: var(--ink); }
@media (min-width: 1024px) {
  .bar__nav { display: block; }
  .bar__menu { display: none; }
  .bar__contact { margin-left: 32px; }
}

.hero { padding: 16px 0 24px; }   .fm { container-type: inline-size; margin: 0; }
.fm__grid {
  --fm-fs: var(--fs-formula);
  display: grid; grid-template-columns: repeat(5, max-content); justify-content: center;
  font-family: var(--ff-formula); font-size: var(--fm-fs); font-weight: 400;
  font-variation-settings: "opsz" 60; font-kerning: normal;
  line-height: 1; letter-spacing: 0; white-space: nowrap; color: var(--ink);
}
.fm__t, .fm__op { grid-row: 1; align-self: baseline; }
.fm__t--1, .fm__t--2 { width: .924em; }
.fm__t--3 { width: 1.284em; }
.fm__op { width: .5em; text-align: center; }
.fm__op--times { margin-inline: .32em; }
.fm__op--eq { margin-inline: .30em; }
.fm__x { display: inline-block; width: .401em; height: .434em; margin-inline: .05em -.451em; vertical-align: .113em; overflow: visible; }
.fm__x path { fill: none; stroke-linecap: butt; stroke-dasharray: 1; }
.fm__xh { stroke: var(--sangina); stroke-width: 33.2; }
.fm__xm { stroke: var(--ink); stroke-width: 30.4; }
.fm__xg { color: transparent; }
.fm__sup { font-size: 1.1em; line-height: 0; vertical-align: -.039em; }
.fm__u {
  grid-row: 2; align-self: start; width: 0; min-width: 100%;
  display: flex; flex-direction: column; align-items: center; margin-top: -.0695em;
}
.fm__u--1 { grid-column: 1; } .fm__u--2 { grid-column: 3; } .fm__u--3 { grid-column: 5; }
.fm__brace { display: block; width: 100%; height: .1em; margin-bottom: .07em; overflow: visible; }
.fm__brace path {
  fill: none; stroke: var(--ink-2); stroke-width: var(--lw-brace); vector-effect: non-scaling-stroke;
  stroke-linecap: round; stroke-linejoin: round;
}
.fm__cap {
  font-family: var(--ff-text); font-size: var(--fs-caption); font-style: italic;
  font-variation-settings: normal;
  line-height: 1.25; color: var(--ink-2); white-space: normal; text-align: center; text-wrap: balance;
  -webkit-hyphens: manual; hyphens: manual;
  width: max-content; min-width: min-content; max-width: 9.75em;
}
.fm__u--1 .fm__cap { translate: max(0px, calc(50% - 50cqi + 2.2239 * var(--fm-fs))) 0; }
.fm__u--3 .fm__cap { translate: min(0px, calc(50cqi - 2.0441 * var(--fm-fs) - 50%)) 0; }
@media (max-width: 379px) { .fm__cap { font-size: .75rem; } }
@media (max-width: 359px) { .fm__cap { max-width: 6em; } }
@media (min-width: 768px) { .fm__cap { max-width: none; white-space: nowrap; } }

.fig { position: relative; aspect-ratio: 1000 / 940; margin-inline: auto; }
.fig > svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.ln-ink { fill: none; stroke: var(--ink); stroke-width: var(--lw-ink); vector-effect: non-scaling-stroke; stroke-linecap: round; }
.ln-check { fill: none; stroke: currentColor; stroke-width: var(--lw-check); vector-effect: non-scaling-stroke; stroke-linecap: round; }
.ln-construct { fill: none; stroke: var(--arc); stroke-width: var(--lw-arc); vector-effect: non-scaling-stroke; }   .hand { fill: var(--sangina); }
.rv { fill: none; stroke: #fff; stroke-width: 48; stroke-dasharray: 1; }    .rv-ra { stroke-width: 24; }
.L-ax-a { transform-origin: 10% 91.4894%; --turn: turn-a; }
.L-ax-i { transform-origin: 90% 91.4894%; --turn: turn-i; }
.L-copies use:nth-child(1) { --k: 1; }   .L-copies use:nth-child(2) { --k: 2; }   .L-copies use:nth-child(3) { --k: 3; }
.L-copies use:nth-child(4) { --k: 4; }   .L-copies use:nth-child(5) { --k: 5; }   .L-copies use:nth-child(6) { --k: 6; }
.L-copies use:nth-child(7) { --k: 7; }   .L-copies use:nth-child(8) { --k: 8; }   .L-copies use:nth-child(9) { --k: 9; }
.L-copies use:nth-child(10) { --k: 10; } .L-copies use:nth-child(11) { --k: 11; } .L-copies use:nth-child(12) { --k: 12; }
.L-copies use:nth-child(13) { --k: 13; } .L-copies use:nth-child(14) { --k: 14; } .L-copies use:nth-child(15) { --k: 15; }
.L-copies use:nth-child(16) { --k: 16; } .L-copies use:nth-child(17) { --k: 17; } .L-copies use:nth-child(18) { --k: 18; }
.L-copies use:nth-child(19) { --k: 19; } .L-copies use:nth-child(20) { --k: 20; } .L-copies use:nth-child(21) { --k: 21; }
.L-copies use:nth-child(22) { --k: 22; } .L-copies use:nth-child(23) { --k: 23; } .L-copies use:nth-child(24) { --k: 24; }
.pt { position: absolute; font-size: var(--fs-caption); font-style: italic; line-height: 1; color: var(--ink-2); white-space: nowrap; }
.pt-a, .pt-i2 { right: calc(90% + .6em); }
.pt-i { left: calc(90% + .6em); }
.pt-a, .pt-i { top: 91.4894%; translate: 0 -30%; }
.pt-i2 { top: 6.383%; translate: 0 -60%; }
.prime { margin-inline-start: -.06em; }

.hero__z { margin-top: 12px; }
.hero .fig { width: var(--fig-hero); }
.hero__txt { margin-top: 16px; }
.hero h1 { font-family: var(--ff-display); font-size: var(--fs-h1); line-height: 1.08; letter-spacing: -.01em; text-wrap: balance; }
.lead { margin-top: 12px; max-width: 32em; font-size: var(--fs-lead); line-height: 1.45; text-wrap: pretty; }
.hero__acts {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px 24px;
  margin-top: 10px; font-size: 1rem; line-height: 1.5;
}
@media (min-width: 768px) { .hero__acts { justify-content: flex-start; column-gap: 32px; } }
@media (min-width: 1024px) {
  .hero { padding: 24px 0 96px; }
  .hero__z { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; margin-top: 56px; }
  .hero__txt { grid-area: 1 / 1; margin: 0; max-width: calc(50% - 12px); }       .hero .fig { grid-area: 1 / 1; justify-self: start; margin: 0 0 0 calc(50% + 2.04405 * var(--fs-formula) - var(--fig-hero) / 2); }
  .lead { font-family: var(--ff-display); }
}

.sig { --t1: 150ms; --t2: 860ms; --t3: 1440ms; --t4: 2540ms; }
@keyframes lit { from { opacity: .52; } }
@keyframes dash { from { stroke-dashoffset: 1; } }
@keyframes fade { from { opacity: 0; } }
@keyframes brace { from { clip-path: inset(0 50% 0 50%); } to { clip-path: inset(0 0 0 0); } }
@keyframes draw { from { clip-path: inset(0 92% 0 0); } to { clip-path: inset(0 9% 0 0); } }
@keyframes turn-a { from { transform: rotate(90deg); } }
@keyframes turn-i { from { transform: rotate(-90deg); } }
@keyframes show { from { opacity: 0; } }
.sig .fm__t--2 { animation: lit var(--dur-state) var(--ease-out-4) calc(var(--t2) - 40ms) backwards; }
.sig .fm__op--eq, .sig .fm__t--3 { animation: lit var(--dur-state) var(--ease-out-4) var(--t4) backwards; }
.sig .fm__xh { animation: dash 180ms var(--ease-hand) var(--t1) backwards; }
.sig .fm__xm { animation: dash 180ms linear calc(var(--t2) - 20ms) backwards; }
.sig .fm__brace { animation: brace var(--dur-brace) var(--ease-out) var(--d) backwards; }
.sig .fm__cap { animation: fade var(--dur-label) var(--ease-out) var(--d) backwards; }
.sig .fm__u--1 .fm__brace { --d: 560ms; }  .sig .fm__u--1 .fm__cap { --d: 600ms; }
.sig .fm__u--2 .fm__brace { --d: 1120ms; } .sig .fm__u--2 .fm__cap { --d: 1160ms; }
.sig .fm__u--3 .fm__brace { --d: calc(var(--t4) + 20ms); } .sig .fm__u--3 .fm__cap { --d: calc(var(--t4) + 60ms); }
.sig .L-stroke { animation: draw var(--dur-hand) var(--ease-hand) var(--t1) backwards; }
.sig .L-ax { animation: var(--turn) var(--dur-compass) var(--ease-compass) var(--t2) backwards, show 1ms steps(1, end) var(--t2) backwards; }
.sig .rv-arc { animation: dash var(--dur-compass) var(--ease-compass) var(--t2) backwards; }
.sig .L-copies use { animation: show 1ms steps(1, end) calc(var(--t3) + (var(--k) - 1) * var(--dur-tick)) backwards; }
.sig .pt { animation: fade 160ms var(--ease-out) var(--d) backwards; }
.sig .pt-a { --d: 170ms; } .sig .pt-i { --d: 700ms; } .sig .pt-i2 { --d: 1340ms; }
html.intro-hold .sig * { animation-play-state: paused !important; }
html.no-intro .sig * { animation: none !important; }

.claim {
  font-family: var(--ff-display); font-size: var(--fs-claim); font-style: italic; line-height: 1.18;
  text-wrap: balance; max-width: 996px;
}
.result h2 { max-width: 690px; }
.status { margin-top: 8px; font-size: var(--fs-small); line-height: 1.5; color: var(--ink-2); max-width: 34em; }
.result__def { margin-top: 24px; max-width: 34em; }
.result__proof { margin-top: 40px; }
.braced { display: grid; grid-template-columns: 12px minmax(0, 1fr); column-gap: 24px; }
.brace { display: flex; flex-direction: column; }
.brace svg { display: block; width: 12px; flex: none; overflow: visible; }
.brace path {
  fill: none; stroke: var(--ink-2); stroke-width: var(--lw-brace); vector-effect: non-scaling-stroke;
  stroke-linecap: round; stroke-linejoin: round;
}
.brace .brace__bar { flex: 1 1 0; min-height: 4px; margin-block: -1px; }
.brace__bar path { stroke-linecap: butt; }
.cases { max-width: calc(34em + 36px); }
.cases__list { display: grid; row-gap: 16px; padding-block: 8px; }
.fnref { position: relative; color: var(--ink-3); text-decoration: none; background: none; }
.fnref::after { content: ""; position: absolute; left: 50%; top: 50%; width: 44px; height: 44px; translate: -50% -50%; }
.result__rival { margin-top: 40px; max-width: 34em; }
.result__auth { margin-top: 16px; max-width: 34em; }
.qed { float: right; margin-inline-start: 1em; color: var(--ink); }
.apparatus {
  position: relative; margin-top: 40px; padding-top: 20px;
  max-width: 690px; font-size: var(--fs-app); line-height: 1.45; color: var(--ink-3);
}
.apparatus::before { content: ""; position: absolute; top: 0; left: 0; width: 40%; border-top: var(--lw-rule) solid var(--rule); }
.apparatus p + p { margin-top: 8px; }
.apparatus a { color: var(--ink-2); }   .fn { margin-inline: -8px; padding: 4px 8px; border-radius: var(--r-ui); }
@keyframes fn-flash { 0% { background-color: transparent; } 15%, 70% { background-color: var(--paper-2); } 100% { background-color: transparent; } }
.fn:target { animation: fn-flash 1200ms linear; }
@media (min-width: 1024px) {
  .result__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: start; }
  .result__thesis { grid-column: 1 / span 6; }
  .result__proof { grid-column: 8 / span 5; margin-top: 0; }
  .apparatus { margin-top: 64px; }
}

.founder__eyebrow { margin-bottom: 16px; }
.founder__photo { width: 280px; max-width: 100%; margin: 0 0 24px; }
.founder__photo img {
  width: 100%; aspect-ratio: 1; border-radius: var(--r-ui);
  font-size: var(--fs-small); font-style: italic; line-height: 1.5; color: var(--ink-3); text-align: center;
}
@media (min-width: 768px) { .founder__photo { width: 320px; } }
.founder h2 { margin-bottom: 0; }
.founder__role { margin-top: 8px; font-size: var(--fs-small); font-style: italic; line-height: 1.5; color: var(--ink-2); }
.facts { margin-top: 24px; max-width: 34em; }
.facts li { font-size: var(--fs-small); line-height: 1.5; color: var(--ink-2); }   .facts li + li { margin-top: 16px; }
.letter { margin-top: 40px; max-width: 32em; }
.letter p + p { text-indent: 1.5em; }
.sign {
  display: table; margin: 16px 0 0 auto;
  font-size: 1.25rem; font-style: italic; line-height: 1.2; color: var(--sangina);
}
.letter .sign { text-indent: 0; }   @media (min-width: 1024px) {
  .founder__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: start; }
  .founder__grid > * { grid-column: 1 / span 6; }
  .founder__eyebrow { grid-row: 1; margin-bottom: 12px; }
    .founder__photo { grid-column: 7 / span 6; grid-row: 2 / span 5; justify-self: end; width: 384px; margin: 0; position: sticky; top: 120px; }
  .founder h2 { grid-row: 2; }
  .founder__role { grid-row: 3; }
  .facts { grid-row: 4; }
  .letter { grid-row: 5; }
  .sign { font-size: 1.375rem; }
}

@property --p { syntax: '<number>'; inherits: true; initial-value: 1; }
@keyframes m-p { from { --p: 0; } to { --p: 1; } }
.method__text { max-width: 34em; }
.m-track { position: relative; padding-block: 64px 16px; }
.m-stage { display: grid; place-items: center; pointer-events: none; }
.m-scene {
  position: relative; width: var(--fig-method);
  --s1-0: .05; --s1-d: .15; --s2a-0: .25; --s2a-d: .08; --s2b-0: .34; --s2b-d: .16;
  --s3a-0: .55; --s3a-d: .08; --s3b-0: .635; --s3b-d: .01; --s3c-0: .64; --s3c-d: .04; --s3d-0: .69; --s3d-d: .04;
  --s4a-0: .78; --s4a-d: .12; --s4b-0: .90; --s4b-d: .04;
  --a1-0: .05; --a1-d: .02; --a2-0: .25; --a2-d: .02; --a3-0: .55; --a3-d: .02; --a4-0: .78; --a4-d: .02;
  --h1-0: .20; --h1-d: .02; --h4-0: .90; --h4-d: .02;
    --s1: 1; --e1: 1; --s2a: 1; --e2a: 1; --s2b: 1; --s3a: 1; --s3b: 1; --s3c: 1; --s3d: 1; --s4a: 1; --e4a: 1; --s4b: 1;
  --a1: 1; --a2: 1; --a3: 1; --a4: 1; --h1: 1; --h4: 1;
}
.m-scene > .fig { width: 100%; }

.method {
  --m-entry: 60%;
  --m-shift: calc(var(--fig-method) * .47 + 72px - 50svh);
}
@media (min-width: 1024px) {
  .method {
    --m-entry: 87.5%;
    --m-head: calc(50svh - var(--fig-method) * .41 - 24px - var(--fs-caption) * .2745 - var(--fs-eyebrow));
    --m-shift: calc(0px - var(--m-head));
    display: grid; grid-template-columns: minmax(0, 1fr);
  }
  .method > .wrap, .m-track { grid-area: 1 / 1; }
  .method__head { max-width: calc((100% - 264px) * 5 / 12 + 96px); }     .m-track { padding-block: calc(24px + var(--fs-caption) * .2745 + var(--fs-eyebrow) - var(--fig-method) * .06) 0; }
  .m-stage {
    grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px;
    width: min(1200px, 100% - 2 * var(--gutter)); margin-inline: auto;
  }
  .m-scene { grid-column: 7 / span 6; }
}
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .m-track { height: 170svh; padding-block: 0; margin-top: var(--m-shift); view-timeline: --method block; }
    .m-stage {
      position: sticky; top: 0; height: 100svh;
      animation-name: m-p; animation-duration: auto; animation-timing-function: linear; animation-fill-mode: both;
      animation-timeline: --method; animation-range: entry var(--m-entry) contain 100%;
    }
    .m-scene {
      --s1: clamp(0, (var(--p) - var(--s1-0)) / var(--s1-d), 1);
      --s2a: clamp(0, (var(--p) - var(--s2a-0)) / var(--s2a-d), 1);
      --s2b: clamp(0, (var(--p) - var(--s2b-0)) / var(--s2b-d), 1);
      --s3a: clamp(0, (var(--p) - var(--s3a-0)) / var(--s3a-d), 1);
      --s3b: clamp(0, (var(--p) - var(--s3b-0)) / var(--s3b-d), 1);
      --s3c: clamp(0, (var(--p) - var(--s3c-0)) / var(--s3c-d), 1);
      --s3d: clamp(0, (var(--p) - var(--s3d-0)) / var(--s3d-d), 1);
      --s4a: clamp(0, (var(--p) - var(--s4a-0)) / var(--s4a-d), 1);
      --s4b: clamp(0, (var(--p) - var(--s4b-0)) / var(--s4b-d), 1);
      --a1: clamp(0, (var(--p) - var(--a1-0)) / var(--a1-d), 1);
      --a2: clamp(0, (var(--p) - var(--a2-0)) / var(--a2-d), 1);
      --a3: clamp(0, (var(--p) - var(--a3-0)) / var(--a3-d), 1);
      --a4: clamp(0, (var(--p) - var(--a4-0)) / var(--a4-d), 1);
      --h1: clamp(0, (var(--p) - var(--h1-0)) / var(--h1-d), 1);
      --h4: clamp(0, (var(--p) - var(--h4-0)) / var(--h4-d), 1);
      --e1: calc(var(--s1) * (.15 + var(--s1) * (2.5 - 1.65 * var(--s1))));
      --e2a: calc(var(--s2a) * var(--s2a) * (3 - 2 * var(--s2a)));
      --e4a: calc(var(--s4a) * (.15 + var(--s4a) * (2.5 - 1.65 * var(--s4a))));
    }
  }
}
html.method-js .m-track { height: 170svh; padding-block: 0; margin-top: var(--m-shift); }
html.method-js .m-stage { position: sticky; top: 0; height: 100svh; }
@media (min-width: 1024px) {
  html.method-js .method__head { position: sticky; top: var(--m-head); min-height: calc(100svh - var(--m-head)); }
}
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) and (min-width: 1024px) {
    .method__head { position: sticky; top: var(--m-head); min-height: calc(100svh - var(--m-head)); }
  }
}
@media (max-width: 1023px) and (prefers-reduced-motion: no-preference) {
  html.js-ready .method[style*="--m-head-h"] {
    scroll-margin-top: calc(min(29svh, 50svh - var(--fig-method) * .47 - 20px) - var(--section-y) - var(--m-head-h) - var(--m-shift));
  }
}
.m-scene .L-sb { clip-path: inset(0 calc(92% - 83% * var(--e1)) 0 0); }
.m-scene .L-st { clip-path: inset(0 calc(92% - 83% * var(--e4a)) 0 0); }
.m-scene .L-ax { opacity: calc(var(--s2a) * 1000); }
.m-scene .L-ax-a { transform: rotate(calc(90deg * (1 - var(--e2a)))); }
.m-scene .L-ax-i { transform: rotate(calc(-90deg * (1 - var(--e2a)))); }
.m-scene .rv-arc { stroke-dashoffset: calc(1 - var(--e2a)); }
.m-scene .L-copies use { opacity: calc(var(--s2b) * 23 - var(--k) + 1); }
.m-scene .rv-diag { stroke-dashoffset: calc(1 - var(--s3a)); }
.m-scene .pt-o { opacity: var(--s3b); }
.m-scene .tick { opacity: calc(var(--s3c) * 4 - var(--j) + 1); }
.m-scene .tick--1 { --j: 1; } .m-scene .tick--2 { --j: 2; } .m-scene .tick--3 { --j: 3; } .m-scene .tick--4 { --j: 4; }
.m-scene .rv-ra { stroke-dashoffset: calc(1 - var(--s3d)); }
.m-scene .L-check { color: color-mix(in oklab, var(--construct) calc(var(--s4b) * 100%), var(--ink)); opacity: calc(1 - .55 * var(--s4b)); }
.m-scene .pt-a { opacity: calc(var(--s1) * 20); }
.m-scene .pt-i { opacity: calc((var(--s1) - .9) * 10); }
.m-scene .pt-i2 { opacity: calc((var(--s2a) - .85) * 6.67); }
.m-cap {
  position: absolute; white-space: nowrap;
  font-size: var(--fs-caption); font-style: italic; line-height: 1.25;
  color: color-mix(in oklab, var(--ink) calc(var(--a) * 100%), var(--ink-3));
}
.m-cap .hum { color: color-mix(in oklab, var(--sangina) calc(var(--h) * 100%), currentColor); }
.m-cap1 { --a: var(--a1); --h: var(--h1); left: 10%; right: 10%; top: calc(91.4894% + 20px); text-align: center; }
.m-cap4 { --a: var(--a4); --h: var(--h4); left: 10%; right: 10%; bottom: calc(93.617% + 20px); text-align: center; }
.m-cap2, .m-cap3 { top: 48.936%; writing-mode: vertical-rl; rotate: 180deg; translate: -50% -50%; }
.m-cap2 { --a: var(--a2); left: 5%; }
.m-cap3 { --a: var(--a3); left: 95%; }
@media (min-width: 1024px) {
  .m-cap1 { top: calc(91.4894% + 24px); }
  .m-cap4 { bottom: calc(93.617% + 24px); }
  .m-cap2 { left: calc(10% - 24px - var(--fs-caption) * .625); }
  .m-cap3 { left: calc(90% + 24px + var(--fs-caption) * .625); }
}

.dirs h2 { max-width: 15em; }
.dir-main__title { font-family: var(--ff-display); font-size: var(--fs-dir-main); line-height: 1.15; letter-spacing: -.005em; text-wrap: balance; max-width: 12em; }
.dir-main__text { margin-top: 12px; font-size: var(--fs-small); line-height: 1.5; color: var(--ink-2); max-width: 26em; }
.dir-list { display: grid; row-gap: 24px; margin-top: 40px; max-width: calc(34em + 36px); }
.dir { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: baseline; }
.dir__n { grid-area: 1 / 1; font-family: var(--ff-display); font-size: var(--fs-dir); line-height: 1.2; color: var(--ink-3); }
.dir__title { grid-area: 1 / 2; font-family: var(--ff-display); font-size: var(--fs-dir); line-height: 1.2; text-wrap: balance; }
.dir__text { grid-area: 2 / 2; margin-top: 6px; font-size: var(--fs-small); line-height: 1.5; color: var(--ink-2); max-width: 30em; }
.dirs__more { margin-top: 24px; padding-left: 36px; line-height: 44px; }   @media (min-width: 1024px) {
  .dirs__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: baseline; }
  .dir-main { grid-column: 1 / span 5; }
  .dir-list { grid-column: 7 / span 6; margin: 0; row-gap: 32px; }
  .dirs__more { margin-top: 32px; margin-left: calc((100% + 24px) / 2); }
}

.contact h2 { margin-bottom: 32px; }
.contacts__row + .contacts__row { margin-top: 40px; }
.contacts dt { font-size: var(--fs-small); font-style: italic; line-height: 1.5; color: var(--ink-2); }
.contacts dd { margin: 4px 0 0; }
.contacts__who { display: block; font-size: var(--fs-dir); line-height: 1.3; }
.contacts__who--arsen { color: var(--sangina); }
.contacts__line { position: relative; margin-top: 4px; font-size: var(--fs-dir); line-height: 1.3; }
.contacts__line .hit { position: static; }
.contacts__line .hit::after { left: 0; right: 0; }   .contacts__line--act { margin-top: 16px; }           .contact__ask { display: block; width: 100%; margin-top: 48px; font-size: var(--fs-text); line-height: 1.5; }
.contact__ask::after { left: 0; right: 0; }
html:not(.js) [data-chat-open] { display: none; }
html.js:not(.js-ready) [data-chat-open] { visibility: hidden; }
@media (min-width: 1024px) {
  .contact__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; align-items: baseline; }
  .contact h2 { grid-column: 1 / span 4; grid-row: 1; margin: 0; }
  .contacts { grid-column: 5 / span 8; grid-row: 1; }
  .contacts__row { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); column-gap: 24px; align-items: baseline; }
  .contacts dt { grid-column: 1 / span 3; }
  .contacts dd { grid-column: 4 / span 5; margin: 0; }
  .contact__ask { grid-column: 8 / span 5; grid-row: 2; }
}

.foot { margin-top: var(--section-y); padding-bottom: calc(32px + env(safe-area-inset-bottom, 0px)); }
.foot__in { font-size: var(--fs-app); line-height: 1.45; color: var(--ink-3); }
.foot__mark { color: var(--ink); }
.foot__meta { margin-top: 16px; }
.foot__imprint, .foot__links { display: block; }
.foot__links { margin-top: 24px; }
.foot__sep--wide { display: none; }
.foot a { color: var(--ink-2); }   .foot__noscript { margin-top: 16px; }
@media (min-width: 1024px) {
  .foot { padding-bottom: 40px; }
  .foot__in { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; column-gap: 32px; }
  .foot__meta { margin: 0; }
  .foot__imprint, .foot__links, .foot__sep--wide { display: inline; }
  .foot__links { margin: 0; }
  .foot__noscript { flex-basis: 100%; }
}

.pill {
  position: fixed; z-index: 20;
  right: max(var(--gutter), (100% - 1200px) / 2);
  bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  padding: 0 20px;
  transform: translateY(calc(100% + 16px + env(safe-area-inset-bottom, 0px)));
  visibility: hidden;
  transition: transform 180ms var(--ease-out-4), visibility 0s linear 180ms, background-color var(--dur-micro) var(--ease-out);
}
.pill.is-shown {
  transform: none; visibility: visible;
  transition: transform var(--dur-state) var(--ease-out-4), visibility 0s, background-color var(--dur-micro) var(--ease-out);
}
html.chat-open .pill { visibility: hidden; }

.p404 { text-align: center; padding: 15svh 0 0; }
.fig--404 { width: clamp(240px, 22vw, 320px); }
.p404 .L-stroke { animation: draw var(--dur-hand) var(--ease-hand) 200ms backwards; }
.p404 .pt-a { animation: fade 160ms var(--ease-out) 220ms backwards; }
.p404 .pt-i { animation: fade 160ms var(--ease-out) 750ms backwards; }
.p404 h1 { margin-top: 32px; font-family: var(--ff-display); font-size: clamp(2.125rem, 1.6964rem + 1.7582vw, 3rem); line-height: 1.08; text-wrap: balance; }
.p404 p { margin-top: 16px; }

.doc { padding-top: 40px; }
.doc h1 { font-family: var(--ff-display); font-size: clamp(2.125rem, 1.6964rem + 1.7582vw, 3rem); line-height: 1.08; letter-spacing: -.01em; text-wrap: balance; max-width: 17em; }
.doc__date { margin-top: 12px; font-size: var(--fs-small); color: var(--ink-2); }
.doc__body { max-width: 34em; margin-top: 40px; }
.doc__body h2 { margin-top: 40px; font-family: var(--ff-display); font-size: 1.375rem; line-height: 1.2; }
.doc__body h3 { margin-top: 28px; font-size: var(--fs-text); font-style: italic; line-height: 1.4; }
.doc__body p, .doc__body ul { margin-top: 16px; }
.doc__body h2 + p, .doc__body h3 + p, .doc__body h3 + ul { margin-top: 12px; }
.doc__body li { position: relative; padding-left: 1.1em; }
.doc__body li + li { margin-top: 8px; }
.doc__body li::before { content: "·"; position: absolute; left: .2em; color: var(--ink-3); }
.doc__table { width: 100%; margin-top: 16px; border-collapse: collapse; font-size: var(--fs-small); line-height: 1.45; }
.doc__table th { font-weight: 400; font-style: italic; color: var(--ink-2); text-align: left; }
.doc__table th, .doc__table td { padding: 10px 12px 10px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
@media (max-width: 767px) {
  .doc__table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .doc__table, .doc__table tbody, .doc__table tr, .doc__table td { display: block; }
  .doc__table tr { padding: 12px 0; border-bottom: 1px solid var(--rule); }
  .doc__table td { padding: 2px 0; border: 0; }
  .doc__table td::before { content: attr(data-label) ": "; font-style: italic; color: var(--ink-2); }
}
@media (min-width: 1024px) { .doc { padding-top: 56px; } }

@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
@media (prefers-reduced-motion: reduce) {
  .sig *, .p404 * { animation: none !important; }
  a, .ul, .bar, .bar.is-shown, .insert, .btn { transition: none; }       .pill { transform: none; opacity: 0; transition: opacity 120ms linear, visibility 0s linear 120ms; }
  .pill.is-shown { opacity: 1; transition: opacity 120ms linear, visibility 0s; }
  .menu[open] .menu__sheet, .menu.is-closing .menu__sheet { animation: none; }
  .fn:target { animation: none; background-color: var(--paper-2); }
}
