/* FastPathLabs website: all styles. Every color and typeface is named in the first block. */
:root{
  --serif:'Source Serif 4','Source Serif Pro',Georgia,'Times New Roman',serif;
  --sans:'Source Sans 3','Source Sans Pro',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'Source Code Pro',ui-monospace,'SF Mono',Menlo,Consolas,monospace;

  --paper:#FFFFFF;       /* page */
  --ink:#10161D;         /* text and strong rules */
  --ink-2:#414B57;       /* secondary text */
  --ink-3:#66717E;       /* captions, dates */
  --rule:#D8DCE2;        /* hairlines */
  --rule-2:#AEB5BF;      /* box outlines, form fields */
  --wash:#F5F6F8;        /* quiet fills */
  --navy:#12305A;        /* the accent: links, scope of our work, highlights */
  --navy-2:#0A2040;
  --navy-tint:#EEF2F8;
  --navy-line:#B9C6DA;
  --brass:#8A6418;       /* numerals and small marks only */
  --error:#A4262C;
  color-scheme:light;

  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}

*,*::before,*::after{box-sizing:inherit}
[hidden]{display:none !important}
html{height:100%;scroll-padding-top:calc(env(safe-area-inset-top,0px) + 24px);-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{display:flex;flex-direction:column;min-height:100%;margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.62;font-optical-sizing:auto;font-variant-numeric:oldstyle-nums proportional-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
main{flex:1 0 auto}
h1,h2,h3,h4{margin:0;color:var(--ink);font-family:var(--serif);font-weight:600;line-height:1.2;text-wrap:balance}
p{margin:0;text-wrap:pretty}
a{color:var(--navy);text-decoration:underline;text-decoration-color:var(--navy-line);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--navy-2);text-decoration-color:var(--navy)}
svg{max-width:100%}
figure{margin:0}
strong,b{font-weight:600}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:1px}
h1:focus{outline:none}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.wrap{max-width:1140px;margin-inline:auto;padding-inline:clamp(20px,4.5vw,48px)}
.label{font-family:var(--sans);font-size:15px;font-weight:600;font-variant-caps:all-small-caps;font-variant-numeric:lining-nums;letter-spacing:.07em;color:var(--ink-2)}
.sans{font-family:var(--sans);font-variant-numeric:lining-nums}
code{font-family:var(--mono);font-size:.82em;font-variant-numeric:lining-nums;padding:1px 4px;border:1px solid var(--rule);border-radius:2px;background:var(--wash);white-space:nowrap}
sub,sup{font-size:.72em;line-height:0;font-variant-numeric:lining-nums}

.skip{position:absolute;left:-9999px;top:0;z-index:50;padding:10px 16px;background:var(--navy);color:#FFFFFF;font-family:var(--sans);font-size:16px;font-weight:600;text-decoration:none}
.skip:focus{left:8px;top:8px;color:#FFFFFF}
main:focus{outline:none}

/* ---------- Masthead ---------- */
.masthead{border-top:4px solid var(--ink);background:var(--paper)}
.masthead-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 36px;padding-block:18px;border-bottom:1px solid var(--rule)}
.brand{display:inline-flex;align-items:center;gap:12px;min-height:44px;color:var(--ink);text-decoration:none}
.brand:hover{color:var(--ink)}
.brand svg{width:32px;height:32px;flex:none;display:block}
.brand-name{font-family:var(--serif);font-size:24px;font-weight:600;line-height:1;letter-spacing:-0.012em}
.brand-tag{margin-left:6px;padding-left:16px;border-left:1px solid var(--rule-2);color:var(--ink-2);font-family:var(--sans);font-size:14.5px;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.08em;line-height:1.25;white-space:nowrap}
@media (max-width:1000px){.brand-tag{display:none}}
.nav ul{display:flex;flex-wrap:wrap;gap:0 30px;list-style:none;margin:0;padding:0}
.nav a{display:inline-flex;align-items:center;min-height:44px;border-bottom:2px solid transparent;color:var(--ink-2);font-family:var(--sans);font-size:16px;font-weight:500;text-decoration:none}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{border-bottom-color:var(--navy);color:var(--ink)}
@media (max-width:760px){
  .nav{width:100%}
  .nav ul{gap:0 20px}
  .nav a{font-size:15.5px}
}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 22px;border:1px solid var(--ink);border-radius:2px;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;font-weight:600;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--wash);color:var(--ink)}
.btn.primary{border-color:var(--navy);background:var(--navy);color:#FFFFFF}
.btn.primary:hover{border-color:var(--navy-2);background:var(--navy-2);color:#FFFFFF}
.btn[disabled]{opacity:.55;cursor:default}
.actions{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- Home: opening ---------- */
.opening{padding-block:clamp(48px,7vw,96px) clamp(44px,6vw,80px)}
.opening h1{max-width:17.5em;font-size:clamp(34px,4.7vw,58px);font-weight:400;line-height:1.1;letter-spacing:-0.018em}
.opening-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(32px,6vw,88px);align-items:start;margin-top:clamp(28px,4vw,48px)}
.opening .lead{font-size:clamp(19px,1.75vw,22px);line-height:1.55}
.opening .actions{margin-top:28px}
.facts{margin:0;border-top:1.5px solid var(--ink)}
.facts div{display:grid;grid-template-columns:118px minmax(0,1fr);gap:16px;padding:11px 0;border-bottom:1px solid var(--rule)}
.facts dt{font-family:var(--sans);font-size:15px;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.07em;color:var(--ink-2);padding-top:2px}
.facts dd{margin:0;font-family:var(--sans);font-size:16px;line-height:1.45;font-variant-numeric:lining-nums}
@media (max-width:880px){.opening-grid{grid-template-columns:minmax(0,1fr)}}

/* ---------- Home: sections with a margin heading ---------- */
.sec{border-top:1px solid var(--rule)}
.sec-grid{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px clamp(32px,5vw,72px);padding-block:clamp(44px,6vw,76px)}
.sec-head h2{font-size:25px;font-weight:600;line-height:1.2;letter-spacing:-0.008em}
.sec-head p{margin-top:10px;color:var(--ink-2);font-family:var(--sans);font-size:15.5px;line-height:1.45;font-variant-numeric:lining-nums}
.sec-body > p{max-width:42em}
.sec-body > p + p{margin-top:14px}
.more{margin-top:22px;font-family:var(--sans);font-size:16.5px;font-weight:500}
.sec-wide .sec-head,.sec-wide .sec-body{grid-column:1 / -1}
.sec-wide .sec-head p{max-width:34em}
@media (max-width:880px){.sec-grid{grid-template-columns:minmax(0,1fr)}}

/* ---------- Tables (rules above and below, none between columns) ---------- */
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:16px;line-height:1.45;font-variant-numeric:lining-nums tabular-nums}
caption{caption-side:top;padding-bottom:10px;color:var(--ink-2);font-family:var(--sans);font-size:15.5px;line-height:1.45;text-align:left}
caption b{color:var(--ink)}
th,td{padding:10px 22px 10px 0;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;font-weight:400}
th:last-child,td:last-child{padding-right:0}
thead th{border-top:1.5px solid var(--ink);border-bottom:1px solid var(--ink);font-weight:600}
tbody tr:last-child > *{border-bottom:1.5px solid var(--ink)}
table.kv tbody tr:first-child > *{border-top:1.5px solid var(--ink)}
table.kv th{width:32%;min-width:130px;font-weight:600}
tbody th{font-weight:600}
th.num,td.num{text-align:right;white-space:nowrap}
table.wide{min-width:600px}
table.wrap-head thead th{white-space:normal;vertical-align:bottom}
table.wrap-head thead th.num{min-width:5.5em}
.table-note{margin-top:10px;color:var(--ink-3);font-family:var(--sans);font-size:14.5px;line-height:1.45;font-variant-numeric:lining-nums}

/* programme table on the home page */
.programme td:first-child{width:3.2em;color:var(--brass);font-weight:600}
.programme .subject a{color:var(--ink);font-family:var(--serif);font-size:19px;font-weight:600;line-height:1.3;text-decoration:none;font-variant-numeric:oldstyle-nums proportional-nums}
.programme .subject a:hover{color:var(--navy);text-decoration:underline;text-decoration-color:var(--navy-line)}
.programme .lyr{color:var(--ink-2);white-space:nowrap}
.programme{min-width:640px}
@media (max-width:720px){
  .programme{min-width:0}
  .programme thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .programme tbody tr{display:grid;grid-template-columns:2.2em minmax(0,1fr);gap:2px 0;padding:14px 0;border-bottom:1px solid var(--rule)}
  .programme tbody tr:first-child{border-top:1.5px solid var(--ink)}
  .programme tbody tr:last-child{border-bottom:1.5px solid var(--ink)}
  .programme tbody td,.programme tbody tr:last-child > td{padding:0;border:0}
  .programme td:first-child{width:auto}
  .programme tbody td:nth-child(n+3){grid-column:2}
  .programme .lyr{font-size:15px}
}

/* findings */
.findings{margin:0;padding:0;list-style:none;counter-reset:f}
.findings li{display:grid;grid-template-columns:2.4em minmax(0,1fr);padding:18px 0;border-top:1px solid var(--rule);counter-increment:f}
.findings li:first-child{border-top:1.5px solid var(--ink)}
.findings li:last-child{border-bottom:1.5px solid var(--ink)}
.findings li::before{content:counter(f,lower-roman) ".";color:var(--brass);font-family:var(--serif);font-style:italic;font-size:18px}
.findings h3{font-size:20px;line-height:1.3}
.findings p{max-width:40em;margin-top:6px;color:var(--ink-2)}
.findings .src{margin-top:6px;font-family:var(--sans);font-size:15.5px;font-variant-numeric:lining-nums}

/* list of technical notes on the home page */
.toc{columns:2;column-gap:56px;margin:0;padding:0;list-style:none;counter-reset:t;border-top:1.5px solid var(--ink)}
.toc li{break-inside:avoid;display:grid;grid-template-columns:2.2em minmax(0,1fr);padding:10px 0;border-bottom:1px solid var(--rule);counter-increment:t;font-size:17.5px;line-height:1.35}
.toc li::before{content:counter(t);color:var(--brass);font-family:var(--sans);font-weight:600;font-variant-numeric:lining-nums tabular-nums}
.toc a{color:var(--ink);text-decoration:none}
.toc a:hover{color:var(--navy);text-decoration:underline;text-decoration-color:var(--navy-line)}
@media (max-width:700px){.toc{columns:1}}

/* ---------- Figure 1: the inference stack ---------- */
.stack{display:grid;grid-template-columns:74px minmax(0,1fr) 74px;gap:0 6px}
.rail{position:relative;color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:600;text-align:center}
.rail span{position:absolute;left:0;right:0}
.rail::before{content:"";position:absolute;left:calc(50% - .5px);border-left:1px solid var(--ink)}
.rail::after{content:"";position:absolute;left:50%;transform:translateX(-50%);border:5px solid transparent}
.rail-down span{top:0}
.rail-down::before{top:28px;bottom:8px}
.rail-down::after{bottom:0;border-top:9px solid var(--ink);border-bottom:0}
.rail-up span{bottom:0}
.rail-up::before{top:8px;bottom:28px}
.rail-up::after{top:0;border-bottom:9px solid var(--ink);border-top:0}
.layers{display:flex;flex-direction:column;gap:8px}
.layer{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:8px 32px;padding:14px 20px;border:1px solid var(--rule-2);border-radius:2px;background:var(--paper)}
.layer h3{font-size:19px;line-height:1.25}
.layer p{margin-top:3px;color:var(--ink-2);font-family:var(--sans);font-size:15px;line-height:1.45}
.parts{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:0;padding:0;list-style:none}
.chip{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;border:1px solid var(--rule-2);border-radius:2px;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;font-weight:500;white-space:nowrap}
.flow{display:inline-flex;align-items:center}
.to{position:relative;width:18px;height:1px;margin-inline:3px 5px;background:var(--ink)}
.to::after{content:"";position:absolute;right:-3px;top:50%;transform:translateY(-50%);border:3.5px solid transparent;border-left:6px solid var(--ink);border-right:0}
.scope{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;border:1.5px solid var(--navy);border-radius:2px;background:var(--navy-tint)}
.scope-label{padding:0 8px;color:var(--navy);font-family:var(--sans);font-size:15px;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.07em}
.scope .layer,.scope .chip{border-color:var(--navy-line)}
@media (max-width:900px){
  .stack{grid-template-columns:1fr}
  .rail{display:none}
  .layer{grid-template-columns:1fr;padding:14px 14px}
}
@media (max-width:480px){
  .scope{padding:10px 8px 8px}
  .layer{padding:12px 11px}
  .chip{padding:0 8px}
  .to{width:11px;margin-inline:2px 4px}
}

/* ---------- Figures and diagrams ---------- */
.fig{margin-top:30px}
.fig + p{margin-top:26px}
figcaption{margin-top:12px;color:var(--ink-2);font-family:var(--sans);font-size:15.5px;line-height:1.45;font-variant-numeric:lining-nums}
figcaption b{color:var(--ink)}
.diagram{overflow-x:auto}
.diagram svg{display:block;width:100%;min-width:640px;height:auto}
.dg-box{fill:#FFFFFF;stroke:#10161D;stroke-width:1}
.dg-box.hi{fill:var(--navy-tint);stroke:var(--navy);stroke-width:1.5}
.dg-box.soft{stroke:var(--navy-line)}
.dg-line{fill:none;stroke:#10161D;stroke-width:1}
.dg-line.hi{stroke:var(--navy);stroke-width:1.75}
.dg-dash{fill:none;stroke:#10161D;stroke-width:1;stroke-dasharray:5 4}
.dg-head{fill:#10161D}
.dg-head.hi{fill:var(--navy)}
.dg-t{fill:#10161D;font:600 14.5px var(--sans);text-anchor:middle}
.dg-s{fill:#414B57;font:400 13px var(--sans);text-anchor:middle}
.dg-l{fill:#414B57;font:400 13px var(--sans);text-anchor:middle;paint-order:stroke;stroke:#FFFFFF;stroke-width:6px;stroke-linejoin:round}
.dg-h{fill:#10161D;font:600 14px var(--sans);text-anchor:start}
.dg-r{fill:#414B57;font:400 13.5px var(--sans);text-anchor:start}
.dg-r.hi{fill:var(--navy);font-weight:600}
.dg-life line{stroke:#AEB5BF;stroke-width:1;stroke-dasharray:3 5}
.dg-brace{fill:none;stroke:var(--navy);stroke-width:1.75}
.dg-b{fill:var(--navy);font:600 13.5px var(--sans);text-anchor:end}
.dg-loop{fill:none;stroke:#8D96A3;stroke-width:1}
.dg-lt{fill:#414B57;font:600 13.5px var(--sans);text-anchor:start;paint-order:stroke;stroke:#FFFFFF;stroke-width:6px;stroke-linejoin:round}
.dg-cell{fill:#FFFFFF;stroke:#10161D;stroke-width:1}
.dg-cell.q{fill:var(--navy)}
.dg-tick{stroke:var(--navy);stroke-width:1.75}

/* bar figures */
.bars{display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:10px 16px;padding:16px 0;border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);font-family:var(--sans);font-variant-numeric:lining-nums tabular-nums}
.bars .grp{grid-column:1 / -1;margin-top:6px;color:var(--ink-2);font-size:15px;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.07em}
.bars .grp:first-child{margin-top:0}
.bars .lbl{font-size:15.5px}
.bars .track{height:16px}
.bars .bar{display:block;height:100%;min-width:2px;background:#B8BFC9}
.bars .bar.hi{background:var(--navy)}
.bars .val{font-size:15.5px;font-weight:600;text-align:right}

/* equations */
.eq{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin:12px 0;padding:10px 0;font-family:var(--serif);font-size:21px;line-height:1.3;font-variant-numeric:lining-nums;overflow-x:auto;overflow-y:hidden}
.eq > .f{grid-column:2;display:inline-block;padding:4px 0;white-space:nowrap;font-style:normal;word-spacing:.08em}
.eq > .n{grid-column:3;justify-self:end;padding-left:16px;color:var(--ink-3);font-family:var(--sans);font-size:15.5px}
.eq .rm,.rm{font-style:normal}
.frac{display:inline-flex;flex-direction:column;align-items:center;margin:0 .14em;line-height:1.2;vertical-align:middle}
.frac > span:first-child{padding:0 .35em .1em;border-bottom:1px solid currentColor}
.frac > span:last-child{padding:.1em .35em 0}
var{font-family:var(--serif);font-style:italic}
@media (max-width:560px){.eq{font-size:18px}}

/* ---------- Page headers ---------- */
.page{padding-block:clamp(40px,6vw,80px) clamp(64px,8vw,112px)}
.page-head{padding-bottom:clamp(24px,3.5vw,40px)}
.page-head h1{max-width:18em;font-size:clamp(34px,4.5vw,54px);font-weight:400;line-height:1.08;letter-spacing:-0.018em}
.page-head .lead{max-width:38em;margin-top:18px;color:var(--ink);font-size:clamp(19px,1.7vw,21.5px);line-height:1.55}

/* ---------- Experiments: list of research notes ---------- */
.notes{margin:0;padding:0;list-style:none;border-top:1.5px solid var(--ink)}
.notes li{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px clamp(24px,4vw,56px);padding:30px 0;border-bottom:1px solid var(--rule)}
.notes li:last-child{border-bottom:1.5px solid var(--ink)}
.note-no{color:var(--brass);font-family:var(--sans);font-size:15px;font-weight:600;font-variant-caps:all-small-caps;font-variant-numeric:lining-nums;letter-spacing:.07em}
.note-date{margin-top:4px;color:var(--ink-3);font-family:var(--sans);font-size:15.5px;font-variant-numeric:lining-nums}
.notes h2{font-size:clamp(23px,2.4vw,28px);font-weight:600;line-height:1.2;letter-spacing:-0.01em}
.notes h2 a{color:var(--ink);text-decoration:none}
.notes h2 a:hover{color:var(--navy);text-decoration:underline;text-decoration-color:var(--navy-line)}
.notes .sum{max-width:41em;margin-top:10px;color:var(--ink-2)}
.notes .specs{display:flex;flex-wrap:wrap;gap:4px 26px;margin:14px 0 0;font-family:var(--sans);font-size:15.5px;font-variant-numeric:lining-nums}
.notes .specs div{display:flex;gap:8px}
.notes .specs dt{color:var(--ink-3)}
.notes .specs dd{margin:0}
@media (max-width:720px){.notes li{grid-template-columns:minmax(0,1fr)}}

/* ---------- A research note ---------- */
.note .wrap{max-width:860px}
.back{display:inline-flex;align-items:center;min-height:44px;font-family:var(--sans);font-size:16px;font-weight:500}
.note-kicker{margin-top:14px;color:var(--brass);font-family:var(--sans);font-size:15.5px;font-weight:600;font-variant-caps:all-small-caps;font-variant-numeric:lining-nums;letter-spacing:.07em}
.note h1{margin-top:8px;font-size:clamp(32px,4.3vw,50px);font-weight:400;line-height:1.1;letter-spacing:-0.016em}
.meta{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:7px 28px;margin:30px 0 0;padding:14px 0;border-top:1.5px solid var(--ink);border-bottom:1px solid var(--rule);font-family:var(--sans);font-size:16px;line-height:1.45;font-variant-numeric:lining-nums}
.meta dt{color:var(--ink-2);font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.07em;font-size:15px;padding-top:1px}
.meta dd{margin:0}
.abstract{margin-top:30px}
.abstract p{margin-top:6px;font-size:20px;line-height:1.55}
.body{counter-reset:s}
.body h2{margin-top:52px;font-size:27px;line-height:1.2;letter-spacing:-0.008em;counter-increment:s}
.body h2::before{content:counter(s) ".";display:inline-block;min-width:1.5em;color:var(--brass);font-weight:400;font-variant-numeric:lining-nums}
.body h3{margin-top:30px;font-size:20.5px;line-height:1.3}
.body p{margin-top:16px}
.body h2 + p,.body h3 + p{margin-top:12px}
.body ul,.body ol.plain{margin:14px 0 0;padding-left:24px}
.body li{margin-top:7px}
.body .table-scroll{margin-top:26px}
.body .table-scroll + p{margin-top:24px}
.body .bars{margin-top:8px}
.body h2.refs-title{margin-top:56px;padding-top:22px;border-top:1.5px solid var(--ink);font-size:21px;letter-spacing:0;counter-increment:none}
.body h2.refs-title::before{content:none}
.refs{margin:12px 0 0;padding-left:2.4em;font-family:var(--sans);font-size:16px;line-height:1.5;font-variant-numeric:lining-nums}
.refs li{margin-top:9px;padding-left:4px}
.refs li::marker{color:var(--ink-3);content:"[" counter(list-item) "]\2002"}
.refs i{font-style:italic}
.cite{font-family:var(--sans);font-size:.86em;font-variant-numeric:lining-nums;white-space:nowrap}
.cite a{text-decoration:none}
.cite a:hover{text-decoration:underline}
.note-foot{margin-top:40px;font-family:var(--sans);font-size:16.5px}

/* ---------- Technical notes ---------- */
.tn-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:24px clamp(32px,5vw,72px);align-items:start}
.tn-index{position:sticky;top:24px;margin:0;padding:0;list-style:none;counter-reset:t;border-top:1.5px solid var(--ink);font-family:var(--sans);font-size:15.5px;line-height:1.35;font-variant-numeric:lining-nums}
.tn-index li{display:grid;grid-template-columns:1.9em minmax(0,1fr);padding:8px 0;border-bottom:1px solid var(--rule);counter-increment:t}
.tn-index li::before{content:counter(t);color:var(--brass);font-weight:600}
.tn-index a{color:var(--ink-2);text-decoration:none}
.tn-index a:hover{color:var(--navy);text-decoration:underline;text-decoration-color:var(--navy-line)}
.tn-list{max-width:760px;counter-reset:n}
.tn{padding:36px 0;border-top:1px solid var(--rule);counter-increment:n}
.tn:first-child{padding-top:0;border-top:0}
.tn h2{font-size:27px;line-height:1.2;letter-spacing:-0.008em}
.tn h2::before{content:counter(n) ".";display:inline-block;min-width:1.5em;color:var(--brass);font-weight:400;font-variant-numeric:lining-nums}
.tn p{margin-top:14px}
.tn .table-scroll{margin-top:22px}
.tn .table-scroll + p{margin-top:22px}
.tn .see{margin-top:16px;color:var(--ink-2);font-family:var(--sans);font-size:16px;font-variant-numeric:lining-nums}
@media (max-width:920px){
  .tn-layout{grid-template-columns:minmax(0,1fr)}
  .tn-index{position:static;columns:2;column-gap:32px}
  .tn-index li{break-inside:avoid}
}
@media (max-width:560px){.tn-index{columns:1}}

/* ---------- Papers ---------- */
.papers .wrap > *{max-width:860px}
.papers h2{margin-top:52px;padding-top:20px;border-top:1.5px solid var(--ink);font-size:27px;letter-spacing:-0.008em}
.papers h2:first-of-type{margin-top:8px}
.papers h3{margin-top:34px;color:var(--ink-2);font-family:var(--sans);font-size:16px;font-weight:600;font-variant-caps:all-small-caps;letter-spacing:.07em}
.papers > .wrap > p{max-width:42em;margin-top:12px}
.bib{margin:8px 0 0;padding:0;list-style:none}
.bib li{padding:14px 0;border-bottom:1px solid var(--rule)}
.bib .t{font-size:19px;font-weight:600;line-height:1.35}
.bib .t a{color:var(--navy);text-decoration:none}
.bib .t a:hover{color:var(--navy-2);text-decoration:underline;text-decoration-color:var(--navy)}
.bib .a{margin-top:3px;color:var(--ink-2);font-family:var(--sans);font-size:16px;line-height:1.45;font-variant-numeric:lining-nums}
.bib .w{margin-top:4px;color:var(--ink-2);font-size:17px;line-height:1.5}

/* ---------- Team, contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,6vw,88px);align-items:start}
.contact-side h2{margin-top:34px;font-size:20px}
.contact-side ul{margin:10px 0 0;padding-left:22px;color:var(--ink-2)}
.contact-side li{margin-top:6px}
.form-card{padding:clamp(20px,3.2vw,34px);border:1px solid var(--rule-2);border-radius:2px;background:var(--paper);font-family:var(--sans);font-variant-numeric:lining-nums}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}
.field label,.chips legend{color:var(--ink);font-size:16px;font-weight:600}
.opt{color:var(--ink-3);font-weight:400}
.field input,.field textarea{width:100%;padding:11px 12px;border:1px solid var(--rule-2);border-radius:2px;background:var(--paper);color:var(--ink);font:400 17px/1.4 var(--sans)}
.field input,.field textarea{border-color:#8D96A3}
.field textarea{min-height:160px;resize:vertical}
.field input:focus-visible,.field textarea:focus-visible{outline:2px solid var(--navy);outline-offset:1px;border-color:var(--navy)}
.field [aria-invalid="true"]{border-color:var(--error)}
.hint{color:var(--ink-3);font-size:15px}
.err{color:var(--error);font-size:15px}
.chips{margin:0 0 20px;padding:0;border:0}
.chips legend{padding:0;margin-bottom:8px}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.pick{position:relative;display:inline-flex}
.pick input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.pick span{display:inline-flex;align-items:center;min-height:38px;padding:0 13px;border:1px solid #8D96A3;border-radius:2px;background:var(--paper);color:var(--ink);font-size:15.5px;font-weight:500}
.pick input:checked + span{border-color:var(--navy);background:var(--navy);color:#FFFFFF}
.pick input:focus-visible + span{outline:2px solid var(--navy);outline-offset:2px}
.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}
.status{font-size:16px;font-weight:500}
.status.bad{color:var(--error)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
@media (max-width:860px){.contact-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.form-row{grid-template-columns:1fr}}

/* ---------- Footer ---------- */
.colophon{margin-top:0;border-top:1px solid var(--rule);font-family:var(--sans);font-size:15.5px;font-variant-numeric:lining-nums;color:var(--ink-2)}
.colophon-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 32px;padding-block:28px 34px}
.colophon ul{display:flex;flex-wrap:wrap;gap:4px 24px;list-style:none;margin:0;padding:0}
.colophon a{display:inline-flex;align-items:center;min-height:32px;color:var(--ink-2);text-decoration:none}
.colophon a:hover{color:var(--ink);text-decoration:underline}
