/* Subpages (/about, /careers, /careers/<role>, /events, /imprint): the landing's system (lab/shell.html) for standalone pages.
   Paper / white / dark grey #121413, Geist 400, square corners, nothing below 15px, hover = colour only
   (except the role rows, which carry the landing's ink-fill hover). Pages are written by lab/subpages.py. */
:root {
  --paper: #F7F7F5; --paper-2: #EFEFEC; --ink: #0B0B0A; --muted: #5E6260; --line: #DEDEDA;
  --deep: #121413; --on-dark: #F2F2EF; --on-dark-muted: #A3A7A4;
  --gutter: clamp(16px, 3.5vw, 50px); --max: 1200px; --sec: clamp(80px, min(10.5vw, 18svh), 152px);
  --text: 'Geist', system-ui, sans-serif; --display: 'Geist', system-ui, sans-serif;
  --fs-d: clamp(34px, 3.6vw, 52px); --fs-h2: clamp(28px, 2.8vw, 40px); --fs-h3: clamp(20px, 1.7vw, 24px);
  --fs-lead: clamp(16px, 1.2vw, 18px); --fs-body: 16px; --fs-ui: 15px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-font-smoothing: antialiased; }
body { background: var(--paper); color: var(--ink); font-family: var(--text); font-size: var(--fs-body); font-weight: 400; line-height: 1.55; overflow-x: clip; }
a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
.wrap { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.h2 { font-family: var(--display); font-weight: 400; letter-spacing: -.03em; font-size: var(--fs-h2); line-height: 1.12; text-wrap: balance; }
.lead { font-size: var(--fs-lead); line-height: 1.45; text-wrap: pretty; }
.muted { color: var(--muted); }

/* square outlined button, as on the landing's careers block */
.s-btn { display: inline-flex; align-items: center; height: 42px; padding: 0 20px; border: 1px solid currentColor; font-size: var(--fs-ui); white-space: nowrap; width: fit-content; transition: background .25s, color .25s, border-color .25s; }
.s-btn:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.s-link { font-size: var(--fs-lead); border-bottom: 1px solid currentColor; padding-bottom: 2px; transition: color .2s; } .s-link:hover { color: var(--muted); }

/* hero: the page headline, large and tight; the short side text sits on the baseline to the right */
.s-hero { padding-top: calc(60px + clamp(56px, 9vw, 136px)); padding-bottom: clamp(40px, 5vw, 72px); }
.s-hero .wrap { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 32px clamp(24px, 5vw, 80px); align-items: end; }
.s-hero h1 { font-family: var(--display); font-weight: 400; letter-spacing: -.04em; font-size: clamp(44px, 7.4vw, 108px); line-height: .98; text-wrap: balance; }
.s-hero.long h1 { font-size: clamp(36px, 5.2vw, 76px); letter-spacing: -.035em; line-height: 1.02; max-width: 17ch; }
.s-hero.long .wrap { grid-template-columns: 1fr; }
.s-hero .side { display: flex; flex-direction: column; align-items: flex-start; gap: 22px; padding-bottom: .5em; }
.s-hero .side p { font-size: var(--fs-lead); line-height: 1.45; color: var(--muted); max-width: 34ch; text-wrap: pretty; }

/* a section: heading in the left column, content in the right, one hairline above */
.s-sec { padding-block: clamp(28px, 3.4vw, 48px) clamp(48px, 6vw, 88px); }
.s-sec > .wrap { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: 20px clamp(24px, 4vw, 64px); align-items: start; padding-top: clamp(24px, 2.8vw, 40px); border-top: 1px solid var(--line); }
.s-sec .big { font-family: var(--display); letter-spacing: -.02em; font-size: clamp(22px, 2.4vw, 34px); line-height: 1.2; max-width: 30ch; text-wrap: pretty; }
.s-end { padding-bottom: var(--sec); }

/* role rows: same row as the landing's careers block (lab/blocks/90-close.html): ink fills from the bottom, name slides right */
.cr-roles { border-top: 1px solid var(--line); }
.s-sec .cr-roles { border-top: 0; margin-top: -13px; }
.cr-roles a { position: relative; outline: none; display: grid; grid-template-columns: minmax(0, 7.5em) minmax(0, 1fr) auto; align-items: baseline; gap: 16px; padding: clamp(13px, 1.5vw, 20px) 12px; margin-inline: -12px; border-bottom: 1px solid var(--line); font-size: clamp(18px, 1.7vw, 24px); letter-spacing: -.01em; line-height: 1.3; }
.cr-roles span, .cr-roles i { color: var(--muted); font-style: normal; white-space: nowrap; font-size: var(--fs-lead); letter-spacing: 0; }
.cr-roles b { font-weight: 400; }
.cr-roles i::after { content: ' ↗'; color: var(--ink); transition: color .25s; }
.cr-roles a::before { content: ''; position: absolute; inset: 0; background: var(--ink); transform: scaleY(0); transform-origin: 50% 100%; transition: transform .38s cubic-bezier(.2,.7,.2,1); }
.cr-roles a > * { position: relative; transition: color .25s, transform .45s cubic-bezier(.2,.7,.2,1); }
.cr-roles a:hover::before, .cr-roles a:focus-visible::before { transform: scaleY(1); }
.cr-roles a:hover b, .cr-roles a:focus-visible b { color: var(--paper); transform: translateX(14px); }
.cr-roles a:hover span, .cr-roles a:hover i, .cr-roles a:focus-visible span, .cr-roles a:focus-visible i { color: #8C8C8C; }
.cr-roles a:hover i::after, .cr-roles a:focus-visible i::after { color: var(--paper); }
.s-more { margin-top: 28px; }

/* about */
.s-photo img { width: 100%; height: auto; aspect-ratio: 2320 / 1280; object-fit: cover; background: #D9D9D4; }
.s-photo figcaption { margin-top: 12px; font-size: var(--fs-ui); color: var(--muted); }
.s-story { padding-block: clamp(40px, 5vw, 72px) var(--sec); }
.s-story .wrap { display: block; }
.s-story.lab { padding-block: 0 clamp(40px, 5vw, 72px); }
.s-story .col { max-width: 38em; }
.s-story p { font-size: clamp(18px, 1.55vw, 22px); line-height: 1.5; letter-spacing: -.005em; text-wrap: pretty; }
.s-story .sign { margin-top: 1.2em; }
.s-story nav { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 28px; margin-top: clamp(32px, 4vw, 56px); }

/* events: one section per year, one row per gathering */
.ev-rows { margin-top: -14px; }
.ev-rows a { display: grid; grid-template-columns: 5.5em minmax(0, 1.25fr) minmax(0, 1fr) 8.5em; gap: 4px 24px; align-items: baseline; padding-block: 14px; border-bottom: 1px solid var(--line); font-size: var(--fs-lead); line-height: 1.35; }
.ev-rows a:last-child { border-bottom: 0; }
.ev-rows time, .ev-rows .n, .ev-rows .c { color: var(--muted); }
.ev-rows .c { text-align: right; white-space: nowrap; }
.ev-rows b { font-weight: 400; transition: color .2s; text-wrap: pretty; }
.ev-rows a:hover b { color: var(--muted); }

/* role pages (/careers/<slug>, /careers/open): headline, the facts under it, then the sections and the form */
.s-hero.role .wrap { grid-template-columns: 1fr; }
.rp-facts { display: grid; grid-template-columns: repeat(5, max-content); gap: 20px clamp(32px, 5vw, 72px); margin-top: clamp(4px, 1.4vw, 20px); }
.rp-facts dt { font-size: var(--fs-ui); color: var(--muted); }
.rp-facts dd { font-size: var(--fs-lead); }
.rp-txt { display: flex; flex-direction: column; gap: 18px; }
.rp-txt .big { margin-bottom: 6px; }
.rp-p { font-size: var(--fs-lead); line-height: 1.5; color: var(--muted); max-width: 38em; text-wrap: pretty; }
.rp-items { list-style: none; margin-top: -14px; max-width: 46em; }
.rp-items li { display: grid; grid-template-columns: 2.6em minmax(0, 1fr); gap: 12px; padding-block: 14px; border-bottom: 1px solid var(--line); font-size: clamp(17px, 1.45vw, 20px); line-height: 1.4; text-wrap: pretty; }
.rp-items li:last-child { border-bottom: 0; }
.rp-items li > :first-child { color: var(--muted); }

/* application form: label above a square white field, one reserved line under each for the hint or the error (no shift) */
.rp-form { display: flex; flex-direction: column; gap: 14px; max-width: 620px; }
.rp-field { display: flex; flex-direction: column; }
.rp-field label { font-size: var(--fs-lead); line-height: 1.4; margin-bottom: 8px; } .rp-field label i { font-style: normal; color: var(--muted); margin-left: 6px; }
.rp-field input, .rp-field textarea { display: block; width: 100%; min-height: 48px; padding: 12px 14px; border: 1px solid #8C908D; border-radius: 0; background: #fff; color: var(--ink); font: 400 16px/1.45 var(--text); appearance: none; -webkit-appearance: none; outline: 2px solid transparent; outline-offset: 2px; transition: border-color .2s, outline-color .2s; }
.rp-field textarea { min-height: 118px; resize: vertical; }
.rp-field ::placeholder { color: var(--muted); opacity: .75; }
.rp-field input:hover, .rp-field textarea:hover { border-color: var(--ink); }
.rp-field input:focus-visible, .rp-field textarea:focus-visible { border-color: var(--ink); outline-color: var(--ink); }
.rp-field [aria-invalid="true"] { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.rp-msg { min-height: 22px; margin-top: 6px; font-size: var(--fs-ui); line-height: 22px; color: var(--muted); outline: none; }
.rp-msg.err { color: var(--ink); } .rp-msg.err::before { content: '— '; }
.rp-send { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 24px; }
.rp-send .rp-msg { margin-top: 0; }
.rp-form .s-btn { height: 48px; min-width: 176px; justify-content: center; background: none; color: inherit; font-family: inherit; font-weight: 400; border-radius: 0; cursor: pointer; }
.rp-form .s-btn:hover { color: #fff; background: var(--ink); }
.rp-form .s-btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.rp-form .s-btn:disabled { opacity: .5; cursor: default; background: none; color: inherit; border-color: currentColor; }
.rp-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.rp-thanks { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; max-width: 620px; outline: none; } .rp-thanks[hidden], .rp-form[hidden] { display: none; }

/* industry pages (/pharma, /industrials): the industry's film under the headline, then where the work happens as rows */
.s-film video { display: block; width: 100%; height: auto; aspect-ratio: 21 / 9; object-fit: cover; background: var(--deep); }
.in-rows { margin-top: -16px; max-width: 46em; }
.in-rows div { display: grid; grid-template-columns: minmax(0, 11em) minmax(0, 1fr); gap: 4px 24px; padding-block: 16px; border-bottom: 1px solid var(--line); font-size: clamp(17px, 1.45vw, 20px); line-height: 1.4; }
.in-rows div:last-child { border-bottom: 0; }
.in-rows dd { color: var(--muted); text-wrap: pretty; }
.in-next { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 28px; margin-top: 14px; }

/* research (/research, /research/<slug>): the post's headline, lead and facts, then one section per heading with the prose
   in the right column. Rows and numbered rows are the site's own (.in-rows, .rp-items). Reference numbers in the text are
   full-size and grey (nothing below 15px, so no superscripts). */
.s-hero.po h1 { font-size: clamp(34px, 4.8vw, 70px); letter-spacing: -.035em; line-height: 1.03; max-width: 19ch; }
.s-hero.po .wrap { gap: clamp(22px, 2.6vw, 36px); }
.po-lead { font-size: clamp(18px, 1.55vw, 22px); line-height: 1.45; color: var(--muted); max-width: 34em; text-wrap: pretty; }
.s-hero.po .rp-facts { grid-template-columns: repeat(3, max-content); margin-top: 0; }
.po-txt { display: flex; flex-direction: column; gap: 1.05em; max-width: 46em; font-size: clamp(17px, 1.4vw, 19px); line-height: 1.6; }
.po-txt > p { max-width: 38em; text-wrap: pretty; }
.po-txt p a:not(.po-c), .po-refs a { border-bottom: 1px solid var(--muted); transition: color .2s; } .po-txt p a:not(.po-c):hover, .po-refs a:hover { color: var(--muted); }
.po-c { color: var(--muted); transition: color .2s; } .po-c:hover { color: var(--ink); }
.po-txt .in-rows, .po-txt .rp-items { margin-block: .35em; border-block: 1px solid var(--line); max-width: none; }
.po-txt .in-rows div { font-size: inherit; line-height: 1.5; } .po-txt .rp-items li { font-size: inherit; line-height: 1.5; }
.po-eq { font-family: 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, serif; font-size: clamp(19px, 2vw, 27px); line-height: 1.5; padding-block: .3em; }
.po-txt sub { font-size: max(15px, .72em); line-height: 0; }
.po-txt p i { font-family: 'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, serif; }
/* the four clocks: one row per clock over the 25 years of a patent family; marks sit at year * 4% of the track */
.po-fig { margin-block: .35em; }
.po-clk { border-top: 1px solid var(--line); }
.po-clk .r { display: grid; grid-template-columns: minmax(0, 13em) minmax(0, 1fr); gap: 0 24px; align-items: center; border-bottom: 1px solid var(--line); }
.po-clk .r p { display: flex; flex-direction: column; padding-block: 12px; line-height: 1.3; font-size: var(--fs-lead); } .po-clk .r p b { font-weight: 400; } .po-clk .r p span { color: var(--muted); font-size: var(--fs-ui); }
.po-clk .t { position: relative; height: 100%; min-height: 64px;
  background: linear-gradient(var(--line), var(--line)) 24% 0 / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) 44% 0 / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) 80% 0 / 1px 100% no-repeat; }
.po-clk .t i { position: absolute; left: var(--x); top: calc(50% - 9px); height: 18px; }
.po-clk .k { width: 2px; background: var(--ink); }
.po-clk .k.g { width: 10px; height: 10px; top: calc(50% - 5px); margin-left: -4px; }
.po-clk .b { width: var(--w); background: var(--ink); }
.po-clk .b.h1 { background: repeating-linear-gradient(90deg, var(--ink) 0 1px, transparent 1px 4px); }
.po-clk .b.h2 { background: repeating-linear-gradient(90deg, #9A9E9B 0 1px, transparent 1px 11px); }
.po-clk .ax { border-bottom: 0; align-items: start; } .po-clk .ax p { padding: 0; }
.po-clk .ax .t { min-height: 34px; background: none; }
.po-clk .ax span { position: absolute; left: var(--x); top: 8px; font-size: var(--fs-ui); line-height: 1.3; color: var(--muted); white-space: nowrap; }
.po-clk .ax span.e { transform: translateX(-100%); }
.po-fig figcaption { margin-top: 6px; font-size: var(--fs-ui); color: var(--muted); }
/* figures of the research posts: the reward map, two time scales, keep or drop, the credit trace (script: FIG_SCRIPT in research_posts.py) */
.po-key { display: flex; flex-wrap: wrap; gap: 6px 26px; margin-bottom: 12px; font-size: var(--fs-ui); line-height: 1.4; color: var(--muted); }
.po-key i { display: inline-block; width: 14px; height: 14px; margin-right: 8px; vertical-align: -2px; border: 2px solid var(--ink); border-radius: 50%; }
.po-key i.pub { background: var(--ink); } .po-key i.desk { border-style: dashed; }
.po-key i.ln { width: 26px; height: 0; border: 0; border-top: 2px solid var(--ink); border-radius: 0; vertical-align: 4px; } .po-key i.ln.dot { border-top: 3px dotted var(--ink); }
.po-key i.ar { width: 26px; border: 0; border-radius: 0; background: #E3E3DE; }
.po-clk .hd p { padding: 0; } .po-clk .t4 { display: grid; grid-template-columns: repeat(4, 1fr); padding-block: 8px; font-size: var(--fs-ui); color: var(--muted); }
.po-clk .t.q { background: linear-gradient(var(--line), var(--line)) 25% 0 / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) 50% 0 / 1px 100% no-repeat, linear-gradient(var(--line), var(--line)) 75% 0 / 1px 100% no-repeat; }
.po-clk .t button { position: absolute; z-index: 1; left: var(--x); top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; padding: 0; border: 2px solid var(--ink); border-radius: 50%; background: var(--paper); cursor: pointer; appearance: none; -webkit-appearance: none; outline: 2px solid transparent; outline-offset: 3px; transition: outline-color .15s; }
.po-clk .t button::after { content: ''; position: absolute; inset: -8px; }
.po-clk .t button.pub { background: var(--ink); } .po-clk .t button.desk { border-style: dashed; }
.po-clk .t button:hover, .po-clk .t button:focus-visible, .po-map .t button[aria-pressed="true"] { outline-color: var(--ink); }
.po-det { display: grid; grid-template-columns: minmax(0, 13em) minmax(0, 1fr); gap: 6px 24px; min-height: 7.4em; padding-block: 16px; border-bottom: 1px solid var(--line); line-height: 1.45; }
.po-det b { display: block; font-weight: 400; } .po-det span { display: block; margin-top: 2px; font-size: var(--fs-ui); color: var(--muted); } .po-det p + p { color: var(--muted); text-wrap: pretty; }
.po-read { padding-block: 14px; border-bottom: 1px solid var(--line); line-height: 1.45; text-wrap: pretty; } .po-read b { font-weight: 400; } .po-read span { color: var(--muted); }
.po-sl { display: grid; grid-template-columns: minmax(0, 13em) minmax(0, 1fr); gap: 8px 24px; align-items: center; margin-bottom: 16px; padding-block: 14px; border-block: 1px solid var(--line); font-size: var(--fs-lead); line-height: 1.3; }
.po-sl .in { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; } .po-sl em { font-style: normal; font-size: var(--fs-ui); color: var(--muted); }
.po-sl input { width: 100%; height: 28px; margin: 0; accent-color: var(--ink); cursor: pointer; }
.po-fig .ch svg { display: block; width: 100%; color: var(--ink); } .po-fig .ch svg text { font: 400 15px var(--text); fill: var(--muted); } .po-fig .ch svg text.n { fill: var(--ink); }
.po-key i.ln.thick { border-top-width: 5px; vertical-align: 3px; }
.po-clk .t.bar { background: linear-gradient(var(--ink), var(--ink)) 50% 0 / 1px 100% no-repeat; } .po-clk .t.bar i { transition: left .15s, width .15s; }
.po-val .in-rows dt span { color: var(--muted); margin-left: 6px; }
.po-eq .gap { display: inline-block; width: 2.4em; } .po-txt sup { font-size: max(15px, .72em); line-height: 0; }
.po-fig + p, .po-eq + .po-fig { margin-top: .5em; }
.po-pick { display: flex; flex-wrap: wrap; gap: 6px 26px; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.po-pick button { padding: 4px 0; border: 0; border-bottom: 1px solid transparent; border-radius: 0; background: none; font: inherit; font-size: var(--fs-lead); color: var(--muted); cursor: pointer; transition: color .2s, border-color .2s; }
.po-pick button:hover, .po-pick button:focus-visible { color: var(--ink); outline: none; } .po-pick button[aria-pressed="true"] { color: var(--ink); border-bottom-color: var(--ink); }
.po-key i.sq { border-radius: 0; background: var(--ink); } .po-key i.sq.o { background: none; } .po-key i.band { width: 26px; height: 10px; border: 0; border-radius: 0; background: #D9D9D4; vertical-align: 0; } .po-key i.ln.dash { border-top: 1px dashed var(--ink); } .po-key i.tri { border: 0; border-radius: 0; background: var(--ink); clip-path: polygon(50% 0, 100% 100%, 0 100%); }
.po-loop .po-det { border-top: 1px solid var(--line); margin-top: 4px; }
.po-ends dd span { color: var(--ink); }
.po-refs { list-style: none; margin-top: -12px; max-width: 46em; }
.po-refs li { display: grid; grid-template-columns: 2.6em minmax(0, 1fr); gap: 12px; padding-block: 12px; border-bottom: 1px solid var(--line); font-size: var(--fs-lead); line-height: 1.5; color: var(--muted); text-wrap: pretty; scroll-margin-top: 90px; }
.po-refs li:target > span:last-child { color: var(--ink); }
.po-refs a { color: var(--ink); white-space: nowrap; }
.po-refs + .in-next { margin-top: clamp(28px, 3.4vw, 48px); }
.s-sec .po-list a { grid-template-columns: minmax(0, 9.5em) minmax(0, 1fr) auto; }
.po-list b { text-wrap: pretty; }
@media (max-width: 860px) { .po-refs { margin-top: 0; border-top: 1px solid var(--line); } }
@media (max-width: 560px) {
  .s-hero.po .rp-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .po-clk .r { grid-template-columns: 1fr; } .po-clk .r p { padding-bottom: 0; } .po-clk .t { min-height: 44px; } .po-clk .ax p { display: none; }
  .po-clk .hd p { display: none; } .po-det, .po-sl { grid-template-columns: 1fr; } .po-det { min-height: 10.5em; }
  .s-sec .po-list a { grid-template-columns: minmax(0, 1fr); } .po-list i { display: none; }
}

/* imprint: one row per block, the name left, the details right */
.s-sec > .wrap.im-rows { display: block; padding-top: 0; }
.im-rows section { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: 6px clamp(24px, 4vw, 64px); padding-block: clamp(20px, 2.2vw, 30px); border-bottom: 1px solid var(--line); }
.im-rows section:last-child { border-bottom: 0; }
.im-rows h2 { font-size: var(--fs-lead); font-weight: 400; line-height: 1.5; color: var(--muted); }
.im-rows p, .im-rows address { font-size: var(--fs-lead); font-style: normal; line-height: 1.5; }
.im-rows a { border-bottom: 1px solid var(--muted); transition: color .2s; } .im-rows a:hover { color: var(--muted); }

@media (max-width: 1000px) {
  .ev-rows a { grid-template-columns: 5.5em minmax(0, 1fr) auto; }
  .ev-rows .n { grid-column: 2; grid-row: 2; }
}
@media (max-width: 860px) {
  .s-hero .wrap { grid-template-columns: 1fr; } .s-hero .side { padding-bottom: 0; }
  .s-sec > .wrap, .s-story .wrap { grid-template-columns: 1fr; } .s-story .col { grid-column: 1; }
  .s-sec .cr-roles, .ev-rows { margin-top: 0; }
  .s-sec .cr-roles { border-top: 1px solid var(--line); } .ev-rows { border-top: 1px solid var(--line); }
  .rp-facts { grid-template-columns: repeat(3, max-content); } .rp-items { margin-top: 0; border-top: 1px solid var(--line); }
  .in-rows { margin-top: 0; border-top: 1px solid var(--line); } .s-film video { aspect-ratio: 16 / 9; }
}
@media (max-width: 560px) {
  .cr-roles a { grid-template-columns: minmax(0, 1fr) auto; } .cr-roles span { display: none; }
  .ev-rows a { grid-template-columns: minmax(0, 1fr) auto; }
  .ev-rows time { grid-column: 1; grid-row: 1; } .ev-rows .c { grid-column: 2; grid-row: 1; }
  .ev-rows b { grid-column: 1 / -1; grid-row: 2; } .ev-rows .n { grid-column: 1 / -1; grid-row: 3; }
  .rp-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); } .im-rows section { grid-template-columns: 1fr; }
  .in-rows div { grid-template-columns: 1fr; }
  .rp-form .s-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .cr-roles a::before, .cr-roles a > * { transition: none; } .cr-roles a:hover b { transform: none; } }

/* footer: the landing's first footer variant (lab/blocks/95-footer.html, "dark, AD ASTRA cut by the edge") */
.b-ft { --m: #A3A7A4; --l: rgba(255,255,255,.12); --hi: #fff; background: #121413; color: #fff; font-size: var(--fs-ui); line-height: 1.5; overflow: hidden; }
.b-ft .wm { display: block; width: fit-content; font-family: 'Alexandria Brand Display', serif; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; font-size: 20px; line-height: 1; color: var(--hi); }
.b-ft a { color: #fff; transition: color .2s; } .b-ft a:hover { color: var(--m); }
.b-ft .main { display: grid; grid-template-columns: minmax(160px, 1fr) repeat(2, minmax(0, 190px)); gap: 40px 24px; padding-block: clamp(48px, 5vw, 72px); }
.b-ft .grp { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; } .b-ft .grp b { font-weight: 400; color: var(--hi); margin-bottom: 6px; } .b-ft .grp a { white-space: nowrap; }
.b-ft .base { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 32px; padding-block: 22px; border-top: 1px solid var(--l); color: var(--m); margin-top: clamp(28px, 3.4vw, 48px); }
.b-ft .giant { display: block; font-family: 'Alexandria Brand Display', serif; font-weight: 600; text-transform: uppercase; letter-spacing: -.01em; white-space: nowrap; text-align: center; line-height: .8; user-select: none; font-size: 16.4vw; height: .47em; overflow: hidden; margin-top: clamp(32px, 5vw, 72px); color: #1E2120; }
@media (max-width: 700px) { .b-ft .main { grid-template-columns: 1fr 1fr; } .b-ft .main > .wm { grid-column: 1 / -1; } }
/* every header menu as a column, next to the wordmark; the columns fold to three, then two */
.b-ft .main:has(.cols) { grid-template-columns: minmax(140px, 1fr) auto; }
.b-ft .cols { display: grid; grid-template-columns: repeat(6, max-content); gap: 36px clamp(22px, 2.8vw, 44px); }
@media (max-width: 1180px) { .b-ft .main:has(.cols) { grid-template-columns: 1fr; } .b-ft .cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 700px) { .b-ft .cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } .b-ft .cols .grp a { white-space: normal; } }
/* pl — the footer after Palantir's (Raphael, 12 Nov): a narrow left column (wordmark, copyright, offices, one pill), the menus as columns
   on the right. Each column has a small grey label in capitals; the links under it are larger and white. No giant words. */
.b-ft.pl .main { grid-template-columns: minmax(220px, 300px) minmax(0, 1fr); gap: 48px clamp(40px, 9vw, 150px); align-items: start; padding-block: clamp(56px, 6vw, 88px); }
.b-ft.pl .side { display: grid; justify-items: start; color: #fff; }
.b-ft.pl .side .wm { margin-bottom: 14px; }
.b-ft.pl .side p { width: 100%; padding-block: 18px; border-bottom: 1px solid var(--l); }
.b-ft.pl .soc { margin-top: 24px; } .b-ft.pl .soc a { display: inline-flex; align-items: center; height: 38px; padding: 0 24px; border: 1px solid rgba(255,255,255,.42); border-radius: 99px; font-size: 12px; letter-spacing: .07em; text-transform: uppercase; color: #fff; transition: background-color .2s, color .2s, border-color .2s; }
.b-ft.pl .soc a:hover { background: #fff; border-color: #fff; color: #121413; }
.b-ft.pl .cols { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 44px clamp(24px, 3vw, 48px); }
.b-ft.pl .grp { gap: 9px; } .b-ft.pl .grp b { margin-bottom: 8px; font-weight: 500; font-size: 11px; line-height: 1.4; letter-spacing: .09em; text-transform: uppercase; color: var(--m); }
.b-ft.pl .grp a { font-size: 16px; line-height: 1.35; color: #fff; } .b-ft.pl .grp a:hover { color: var(--m); }
.b-ft.pl .grp .na { font-size: 16px; line-height: 1.35; color: var(--m); } .b-ft.pl .grp small { font-size: 12px; color: var(--m); } .b-ft.pl .grp .na.pl { color: #fff; }
@media (min-width: 1100px) { .b-ft.pl .cols { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px) { .b-ft.pl .main { grid-template-columns: 1fr; } .b-ft.pl .side { max-width: 420px; } }
@media (max-width: 700px) { .b-ft.pl .cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 20px; } }

.built b { font-weight: inherit; white-space: nowrap; }
.built svg.city { display: inline-block; width: 15px; height: 15px; vertical-align: -.14em; margin-right: .22em; opacity: .85; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
/* contact: one inset screen. Photograph panel left (wordmark, steps, headline), form then calendar right. No site header or footer. */
.ct-body { background: var(--paper); }
.ct { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 10px; min-height: 100svh; padding: 10px; align-items: start; }
.ct-l { position: sticky; top: 10px; height: calc(100svh - 20px); isolation: isolate; overflow: hidden; display: flex; flex-direction: column; padding: 26px 30px 34px; color: #fff; background: #121413; }
.ct-l img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.ct-l::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(8,9,9,.58) 0, rgba(8,9,9,.2) 34%, rgba(8,9,9,.24) 58%, rgba(8,9,9,.8) 100%); }
.ct-wm { font-family: 'Alexandria Brand Display', serif; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; font-size: 22px; line-height: 1; width: fit-content; }
.ct-steps { list-style: none; margin: 30px 0 0; padding: 0; display: grid; gap: 6px; font-size: var(--fs-lead); }
.ct-steps li { display: grid; grid-template-columns: 3.2em auto; justify-content: start; align-items: center; color: rgba(255,255,255,.62); transition: color .3s; }
.ct-steps b { font-weight: 400; padding: 3px 8px; margin-left: -8px; transition: background .3s cubic-bezier(.38,.005,.215,1), color .3s; }
.ct-steps li.on { color: #fff; } .ct-steps li.on b { background: #fff; color: var(--ink); }
.ct-l h1 { margin-top: auto; font-family: var(--display); font-weight: 400; letter-spacing: -.04em; font-size: clamp(48px, 6.2vw, 96px); line-height: .98; }
.ct-r { position: relative; display: flex; justify-content: center; padding: 72px clamp(24px, 6vw, 110px) 48px; min-height: calc(100svh - 24px); }
.ct-x { position: absolute; top: 26px; right: 30px; font-size: var(--fs-lead); border-bottom: 1px solid currentColor; padding-bottom: 2px; transition: color .2s; } .ct-x:hover { color: var(--muted); }
.ct-in { width: min(100%, 680px); margin-block: auto; } .ct-two .ct-in { width: min(100%, 1040px); }
.ct-form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 16px; } .ct-form[hidden], .ct-cal[hidden] { display: none; }
.ct-f { display: flex; flex-direction: column; min-width: 0; } .ct-f.w { grid-column: 1 / -1; }
.ct-f label { font-size: var(--fs-lead); line-height: 1.3; margin-bottom: 10px; }
.ct-f input { width: 100%; height: 58px; padding: 0 18px; border: 0; border-bottom: 1px solid transparent; border-radius: 0; background: var(--paper-2); color: var(--ink); font: 400 18px/1 var(--text); appearance: none; -webkit-appearance: none; outline: none; transition: background .2s cubic-bezier(.38,.005,.215,1), border-color .2s cubic-bezier(.38,.005,.215,1); }
.ct-f input:hover { background: #E8E8E4; } .ct-f input:focus-visible { background: #fff; border-bottom-color: var(--ink); } .ct-f input[aria-invalid="true"] { border-bottom-color: var(--ink); }
.ct-sel { position: relative; } .ct-sel::after { content: ""; position: absolute; right: 20px; top: 50%; width: 9px; height: 9px; margin-top: -8px; border-right: 1.5px solid var(--ink); border-bottom: 1.5px solid var(--ink); transform: rotate(45deg); pointer-events: none; }
.ct-f select { width: 100%; height: 58px; padding: 0 44px 0 18px; border: 0; border-bottom: 1px solid transparent; border-radius: 0; background: var(--paper-2); color: var(--ink); font: 400 18px/1 var(--text); appearance: none; -webkit-appearance: none; outline: none; cursor: pointer; transition: background .2s cubic-bezier(.38,.005,.215,1), border-color .2s cubic-bezier(.38,.005,.215,1); }
.ct-f select:hover { background: #E8E8E4; } .ct-f select:focus-visible { background: #fff; border-bottom-color: var(--ink); }
.ct-m { min-height: 22px; margin-top: 6px; font-size: var(--fs-ui); line-height: 22px; }
.ct-go { grid-column: 1 / -1; display: flex; justify-content: flex-end; margin-top: 6px; padding-top: 26px; border-top: 1px solid var(--line); }
.ct-go button { display: flex; align-items: center; justify-content: space-between; width: min(100%, 300px); height: 58px; padding: 0 20px; border: 0; border-radius: 0; background: var(--ink); color: #fff; font: 400 18px/1 var(--text); cursor: pointer; transition: background .25s; }
.ct-go button:hover { background: #2a2a28; } .ct-go button:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.ct-go i { font-style: normal; transition: transform .35s cubic-bezier(.2,.7,.2,1); } .ct-go button:hover i { transform: translateX(5px); }
/* the calendar keeps a fixed place while it loads: our own line and bar first, cal.com's frame is shown once it reports ready */
.ct-frame { position: relative; min-height: 580px; container-type: inline-size; }
.ct-load { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; font-size: var(--fs-lead); color: var(--ink); }
.ct-load i { display: block; width: 180px; height: 2px; background: var(--line); overflow: hidden; position: relative; }
.ct-load i::after { content: ""; position: absolute; inset: 0; background: var(--ink); transform: translateX(-100%); animation: ct-bar 1.1s cubic-bezier(.38,.005,.215,1) infinite; }
@keyframes ct-bar { to { transform: translateX(100%); } }
#ct-frame { min-height: 580px; visibility: hidden; } .ct-cal.ready #ct-frame { visibility: visible; } .ct-cal.ready .ct-load { display: none; }
/* cal.com stacks month and times when its frame is narrow: keep that version at a phone's width instead of stretched */
@container (max-width: 759px) { #ct-frame { max-width: 440px; margin-inline: auto; } }
.ct-alt { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 28px; margin-top: 14px; font-size: var(--fs-lead); }
.ct-alt button, .ct-alt a { font: inherit; background: none; border: 0; border-bottom: 1px solid currentColor; padding: 0 0 2px; cursor: pointer; color: inherit; } .ct-alt [hidden] { display: none; }
.ct-two .ct { grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); } .ct-two .ct-l h1 { font-size: clamp(36px, 3.8vw, 60px); }
/* step two needs room for month and times side by side: below 1280 the photograph steps aside */
@media (max-width: 1279px) and (min-width: 901px) { .ct-two .ct { grid-template-columns: 1fr; } .ct-two .ct-l { display: none; } .ct-two .ct-r { padding-inline: 24px; } }
@media (max-width: 900px) { .ct, .ct-two .ct { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .ct-l { position: relative; top: auto; height: auto; min-height: 300px; padding: 20px 20px 24px; } .ct-steps { margin-top: 20px; } .ct-l h1 { padding-top: 40px; font-size: clamp(28px, 8.4vw, 44px); line-height: 1.04; }
  .ct-two .ct-l { min-height: 0; } .ct-two .ct-l h1 { display: none; }
  .ct-r { padding: 28px 10px 40px; align-items: flex-start; min-height: 0; } .ct-x { display: none; }
  .ct-form { grid-template-columns: 1fr; } .ct-go button { width: 100%; } }
/* desktop: the page always fits the window, however short. Spacing and field height follow the window height; empty message lines take no room;
   in step two the calendar is scaled down (by the script) when the window is shorter than it. Nothing scrolls. */
@media (min-width: 901px) {
  .ct-body { overflow: hidden; } .ct { height: 100svh; min-height: 0; align-items: stretch; } .ct-l { position: relative; top: auto; height: auto; padding-block: clamp(16px, 3.4svh, 26px) clamp(18px, 4svh, 34px); }
  .ct-steps { margin-top: clamp(12px, 3.6svh, 30px); } .ct-l h1 { font-size: clamp(32px, min(4.3vw, 9svh), 68px); line-height: 1.02; }
  .ct-r { min-height: 0; padding-block: clamp(52px, 9svh, 72px) clamp(14px, 5svh, 48px); }
  .ct-form { gap: clamp(8px, 2.4svh, 20px) 16px; } .ct-f label { margin-bottom: clamp(5px, 1.2svh, 10px); }
  .ct-f input, .ct-f select, .ct-go button { height: clamp(42px, 7.4svh, 58px); }
  .ct-m { min-height: 0; margin-top: 0; } .ct-m:not(:empty) { margin-top: 4px; }
  .ct-go { margin-top: 0; padding-top: clamp(10px, 3svh, 26px); }
  .ct-two .ct-r { padding-block: 56px 12px; } .ct-alt { margin-top: 8px; }
}
/* step two is one framed panel in two columns: who the call is with (and the way back) on the left, the calendar on the right, Close in the corner.
   The calendar has no frame of its own and shares the panel's white. It keeps the width cal.com needs for month and times side by side
   and is scaled as one piece to the room there is (script), so nothing scrolls and nothing floats. */
@media (min-width: 901px) {
  .ct-r { background: #fff; border: 1px solid var(--line); }
  .ct-two .ct-r { display: block; padding: 0; } .ct-two .ct-in { width: 100%; height: 100%; margin: 0; }
  .ct-cal { display: grid; grid-template-columns: clamp(220px, 22vw, 300px) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; height: 100%; }
  .ct-host { grid-area: 1 / 1; display: flex; flex-direction: column; align-items: flex-start; gap: clamp(20px, 5svh, 44px); padding: 26px 28px; border-right: 1px solid var(--line); min-height: 0; }
  .ct-host .ct-wm { color: var(--ink); }
  .ct-who { display: flex; flex-direction: column; gap: 16px; font-size: var(--fs-lead); line-height: 1.3; color: var(--muted); }
  .ct-who b { display: block; font-weight: 400; color: var(--ink); font-family: var(--display); letter-spacing: -.02em; font-size: clamp(24px, 2vw, 30px); line-height: 1.12; margin-top: 4px; }
  .ct-av { display: block; width: clamp(72px, 14svh, 112px); aspect-ratio: 1; background: var(--paper-2); overflow: hidden; } .ct-av img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .ct-alt { grid-area: 2 / 1; justify-content: flex-start; margin: 0; padding: 20px 28px 24px; border-right: 1px solid var(--line); } .ct-alt i { font-style: normal; margin-right: 6px; }
  .ct-frame { grid-area: 1 / 2 / 3 / 3; align-self: center; justify-self: center; width: 790px; min-height: 0; } #ct-frame { min-height: 0; } .ct-load { min-height: 420px; position: static; } .ct-cal.ready .ct-load { display: none; }
  .ct-two .ct-x { top: 24px; right: 28px; }
  .ct-two .ct-l h1 { font-size: clamp(22px, 2.3vw, 38px); }
}
@media (min-width: 1280px) { .ct-host .ct-wm { display: none; } }
@media (max-width: 900px) { .ct-two .ct-r { padding: 20px 10px 40px; } .ct-host { display: flex; align-items: center; padding: 0 0 14px; border-bottom: 1px solid var(--line); margin-bottom: 14px; } .ct-host .ct-wm { display: none; }
  .ct-who { display: flex; align-items: center; gap: 14px; font-size: var(--fs-lead); line-height: 1.25; } .ct-who b { display: block; font-weight: 500; } .ct-av { display: block; width: 56px; height: 56px; overflow: hidden; flex: none; } .ct-av img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .ct-frame { width: 100%; min-height: 580px; } .ct-alt { justify-content: flex-start; padding: 14px 0 0; margin: 0; } .ct-alt i { font-style: normal; margin-right: 6px; } }
/* step two: Close lives in the sidebar with the way back, so nothing sits over the calendar */
.ct-two .ct-x { display: none; } .ct-alt { justify-content: space-between; } .ct-alt .ct-x2 { color: var(--muted); border-bottom-color: transparent; } .ct-alt .ct-x2:hover { color: var(--ink); border-bottom-color: currentColor; }
/* phones: the form comes first. The photograph is a slim band with the wordmark; the headline sits under it in ink at a modest size;
   the steps are left out; fields and gaps are tight enough that the button is on the first screen. */
@media (max-width: 900px) {
  .ct, .ct-two .ct { gap: 0; padding: 8px; grid-template-rows: auto auto 1fr; }
  .ct-l { display: contents; }
  .ct-l img, .ct-l::after { display: none; }
  .ct-l .ct-wm { display: flex; align-items: center; height: 56px; padding: 0 16px; width: auto; color: #fff; background: #121413 url(/home/assets/img/contact-motion-1200.webp) 50% 38% / cover; background-blend-mode: multiply; background-color: #8a8a86; }
  .ct-steps { display: none; }
  .ct-l h1 { margin: 0; padding: 22px 8px 4px; color: var(--ink); font-size: clamp(26px, 7.6vw, 36px); line-height: 1.05; }
  .ct-two .ct-l h1 { display: none; }
  .ct-r, .ct-two .ct-r { padding: 14px 8px 32px; }
  .ct-form { gap: 12px; } .ct-f label { margin-bottom: 6px; } .ct-f input, .ct-f select, .ct-go button { height: 50px; }
  .ct-m { min-height: 0; margin-top: 0; } .ct-m:not(:empty) { margin-top: 4px; }
  .ct-go { margin-top: 2px; padding-top: 16px; }
}
@media (max-width: 900px) { .ct-in, .ct-two .ct-in { width: 100%; } .ct-r { justify-content: flex-start; } }
