/* ============================================================
   Poster companion pages (moml/, colm/): academic project-page layout
   ============================================================ */
:root{
  --bg:#FFFFFF;
  --ink:#111111;
  --ink-2:#383838;
  --muted:#6A6A6A;
  --rule:#D6D6D6;
  --rule-2:#EDEDED;
  --tint:#F6F6F4;
  --red:#A31F34;          /* MIT red */
  --red-2:#D2667A;
  --red-soft:#F8EBED;
  --gray-1:#9A9A9A;
  --gray-2:#D4D4D4;
  --btn:#111111;
  --btn-ink:#FFFFFF;
  --serif:'Source Serif 4',Georgia,serif;
  --sans:'Inter',-apple-system,system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  color-scheme:light;
}
html[data-theme="dark"]{
  --bg:#1B1C1F;
  --ink:#E6E3DE;
  --ink-2:#BFBBB4;
  --muted:#8F8C87;
  --rule:#3A3B40;
  --rule-2:#2A2B2F;
  --tint:#232428;
  --red:#E08A95;
  --red-2:#A8606B;
  --red-soft:#33242A;
  --gray-1:#6F6D6A;
  --gray-2:#45464B;
  --btn:#E6E3DE;
  --btn-ink:#1B1C1F;
  color-scheme:dark;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;font-optical-sizing:auto}
a{color:inherit}
p a,li a,.caption a{color:var(--red);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
sup{font-size:.62em;line-height:0}

.col{max-width:700px;margin:0 auto;padding:0 20px}
.wide{max-width:940px;margin:0 auto;padding:0 20px}

/* ---------- top line ---------- */
.topline{border-bottom:1px solid var(--rule-2)}
.topline .wide{display:flex;align-items:center;justify-content:space-between;height:52px;font-family:var(--sans);font-size:13px;color:var(--muted)}
.topline a{text-decoration:none}
.topline a:hover{color:var(--ink)}
.topline b{color:var(--ink);font-weight:600}
.theme{background:none;border:0;color:var(--muted);cursor:pointer;width:32px;height:32px;display:grid;place-items:center;border-radius:6px}
.theme:hover{color:var(--ink);background:var(--tint)}
.theme svg{width:16px;height:16px}
.theme .sun{display:none}
html[data-theme="dark"] .theme .sun{display:block}
html[data-theme="dark"] .theme .moon{display:none}

/* ---------- title block ---------- */
.title{text-align:center;padding:52px 20px 8px}
.venue{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--red)}
h1{font-weight:600;font-size:clamp(31px,5.6vw,50px);line-height:1.12;letter-spacing:-.018em;margin:16px auto 0;max-width:20ch;text-wrap:balance}
.authors{margin-top:26px;font-size:21px}
.authors a{text-decoration:none;border-bottom:1px solid var(--rule)}
.authors a:hover{border-color:var(--ink)}
.affils{margin-top:6px;font-family:var(--sans);font-size:14.5px;color:var(--muted);line-height:1.6}
.affils span{display:inline-block;margin:0 8px}
.affils a{text-decoration:none;border-bottom:1px solid var(--rule)}
.affils a:hover{color:var(--ink);border-color:var(--ink)}

/* "Work done at" logo, centred above the venue line */
.head-wrap{position:relative;max-width:940px;margin:0 auto}
.affil{display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:40px;margin-bottom:-22px;text-decoration:none}
.affil-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.affil img{width:140px;height:auto;display:block}
.affil .logo-d{display:none}
html[data-theme="dark"] .affil .logo-l{display:none}
html[data-theme="dark"] .affil .logo-d{display:block}
.also{margin-top:10px;font-family:var(--sans);font-size:13.5px;color:var(--muted)}

.links{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;background:var(--btn);color:var(--btn-ink);font-family:var(--sans);font-size:14.5px;font-weight:500;text-decoration:none;border:1px solid var(--btn);transition:opacity .15s}
.btn:hover{opacity:.85}
.btn svg{width:16px;height:16px}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule)}
.minor{margin-top:14px;font-family:var(--sans);font-size:13.5px;color:var(--muted);display:flex;justify-content:center;gap:8px}
.minor a{text-decoration:none;border-bottom:1px solid var(--rule)}
.minor a:hover{color:var(--ink);border-color:var(--ink)}

/* ---------- figures ---------- */
figure,figure.wide{margin-top:40px}
.caption{font-family:var(--sans);font-size:14px;line-height:1.55;color:var(--muted);margin-top:14px;max-width:700px}
.caption b{color:var(--ink);font-weight:600}

/* teaser */
.teaser{border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);padding:26px 0 24px}
.teaser-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px 16px;flex-wrap:wrap;font-family:var(--sans)}
.teaser-head .q{font-size:15px;font-weight:600;color:var(--ink)}
.teaser-head .u{font-size:13px;color:var(--muted)}
.hbars{margin-top:22px;position:relative}
.hrow{display:grid;grid-template-columns:118px 1fr;align-items:center;gap:14px;margin-top:12px}
.hrow .nm{font-family:var(--sans);font-size:14px;color:var(--muted);text-align:right;line-height:1.25}
.hrow .nm b{display:block;font-weight:600;color:var(--ink)}
.hbar-track{position:relative;height:44px}
.hbar{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:0 4px 4px 0;transition:width 1.2s cubic-bezier(.2,.75,.2,1)}
.hbar.a{background:var(--gray-1)}
.hbar.b{background:var(--red)}
.hval{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--sans);font-weight:600;font-size:17px;white-space:nowrap;padding-left:10px;opacity:0;transition:opacity .4s .9s;font-variant-numeric:tabular-nums}
.hval.in{opacity:1}
.hval.inside{transform:translate(-100%,-50%);padding:0 12px 0 0;color:#fff}
html[data-theme="dark"] .hval.inside{color:#111}
.haxis{display:grid;grid-template-columns:118px 1fr;gap:14px;margin-top:8px}
.haxis .t{position:relative;height:18px;border-top:1px solid var(--rule);font-family:var(--sans);font-size:12px;color:var(--muted)}
.haxis .t span{position:absolute;top:4px;transform:translateX(-50%);white-space:nowrap}
.haxis .t span:first-child{transform:none}
.speed-tag{font-family:var(--sans);margin-bottom:10px;display:flex;align-items:baseline;gap:10px}
.speed-tag b{font-family:var(--serif);font-size:44px;font-weight:600;line-height:1;color:var(--red);letter-spacing:-.02em}
.speed-tag span{font-size:12.5px;color:var(--muted)}
@media(max-width:560px){
  .hrow,.haxis{grid-template-columns:84px 1fr;gap:10px}
  .hrow .nm{font-size:12.5px}
  .speed-tag b{font-size:38px}
  .haxis .t span.odd{display:none}
}

/* key numbers */
.nums{display:grid;grid-template-columns:repeat(2,1fr);margin-top:40px;border-top:1px solid var(--rule)}
@media(min-width:760px){.nums{grid-template-columns:repeat(4,1fr)}}
.num{padding:18px 16px 18px 0;border-bottom:1px solid var(--rule)}
@media(min-width:760px){.num{border-bottom:0}.num+.num{padding-left:18px;border-left:1px solid var(--rule)}}
@media(max-width:759px){.num:nth-child(even){padding-left:16px;border-left:1px solid var(--rule)}}
.num b{display:block;font-size:clamp(30px,5vw,40px);font-weight:600;line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.num b small{font-size:.55em;font-weight:500}
.num span{display:block;font-family:var(--sans);font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.4}

/* ---------- body text ---------- */
section{margin-top:64px}
h2{font-family:var(--serif);font-weight:600;font-size:28px;line-height:1.2;letter-spacing:-.01em;display:flex;gap:14px;align-items:baseline}
h2 .n{font-family:var(--sans);font-size:15px;font-weight:600;color:var(--red);min-width:18px}
.abstract-label{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:center}
.abstract{margin-top:14px}
p+p{margin-top:16px}
h2+p{margin-top:16px}
.body p{color:var(--ink-2)}
.body p strong{color:var(--ink);font-weight:600}
.after{margin-top:24px}
code{font-family:var(--mono);font-size:.84em;background:var(--tint);padding:1px 5px;border-radius:4px}

/* stacked profile bar */
.stack{display:flex;height:52px;gap:2px}
.seg{height:100%;display:flex;align-items:center;padding-left:10px;font-family:var(--sans);font-size:14px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;min-width:0}
.seg:first-child{border-radius:4px 0 0 4px}
.seg:last-child{border-radius:0 4px 4px 0}
.seg.s1{background:var(--red)}
.seg.s2{background:var(--red-2)}
.seg.s3{background:var(--gray-1)}
.seg.s4{background:var(--gray-2);color:var(--ink-2)}
html[data-theme="dark"] .seg.s1{color:#1A0A0D}
@media(max-width:560px){.seg{font-size:12px;padding-left:6px}}
.brace{display:flex;margin-top:8px;font-family:var(--sans);font-size:13px;line-height:1.35}
.brace div{border-top:2px solid var(--red);padding-top:6px;color:var(--red);font-weight:600}
.legend{list-style:none;margin-top:20px;font-family:var(--sans);font-size:14.5px}
.legend li{display:grid;grid-template-columns:14px 1fr auto;gap:12px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--rule-2)}
.legend i{width:12px;height:12px;border-radius:2px;display:inline-block;transform:translateY(1px)}
.legend .v{font-weight:600;font-variant-numeric:tabular-nums}
.legend .d{color:var(--muted);font-size:13px}

/* fusion schematic */
.schem{border:1px solid var(--rule);border-radius:6px;padding:22px 18px;font-family:var(--sans)}
.lane{display:grid;gap:0}
.lane+.lane{margin-top:26px;padding-top:24px;border-top:1px dashed var(--rule)}
.lane-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:14px;margin-bottom:12px}
.lane-h b{font-weight:600}
.lane-h span{color:var(--muted);font-size:13px}
.kern,.kw,.fk-tiles{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}
.k{height:34px;border:1.5px solid var(--gray-1);border-radius:4px;display:grid;place-items:center;font-size:11.5px;color:var(--ink-2);background:var(--bg)}
.kw div,.onew{height:28px;position:relative}
.kw div::before,.onew::before{content:"";position:absolute;left:50%;top:3px;bottom:3px;border-left:1.5px solid var(--gray-1)}
.kw div::after,.onew::after{content:"";position:absolute;left:calc(50% - 3.5px);bottom:3px;border:4px solid transparent;border-top-color:var(--gray-1);border-bottom:0}
.onew::before{border-left-color:var(--red)}
.onew::after{border-top-color:var(--red)}
.hbm{height:30px;border-radius:4px;background:var(--tint);border:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;padding:0 10px;font-size:12.5px;color:var(--muted)}
.hbm b{color:var(--ink);font-weight:600}
.fk{border:1.5px solid var(--red);border-radius:4px;padding:10px;background:var(--red-soft)}
.fk-t{text-align:center;font-size:12.5px;font-weight:600;color:var(--red)}
.fk-tiles{margin-top:8px}
.fk-tiles div{height:16px;border-radius:3px;background:var(--red);opacity:.8}
.fk-s{text-align:center;font-size:12px;color:var(--muted);margin-top:8px}
@media(max-width:560px){.k{font-size:10px}.kern,.kw,.fk-tiles{gap:4px}}

/* tables (booktabs) */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:14.5px;font-variant-numeric:tabular-nums}
thead th{font-weight:600;text-align:right;padding:9px 10px;border-top:2px solid var(--ink);border-bottom:1px solid var(--ink);white-space:nowrap}
tbody td{text-align:right;padding:9px 10px;border-bottom:1px solid var(--rule-2)}
th:first-child,td:first-child{text-align:left;padding-left:0}
tbody tr:last-child td{border-bottom:2px solid var(--ink)}
tr.gm td{font-weight:700;border-top:1px solid var(--ink)}
td.h{position:relative;white-space:nowrap}
td.h span{position:relative;z-index:1}
td.h::before{content:"";position:absolute;inset:3px 2px;border-radius:3px;background:var(--red);opacity:var(--o,0)}
td.h.hi{color:#fff;font-weight:600}
html[data-theme="dark"] td.h.hi{color:#1A0A0D}
td.best{font-weight:700;color:var(--red)}
@media(max-width:560px){table{font-size:13px}thead th,tbody td{padding:8px 6px}}

/* accuracy */
.acc{margin-top:18px;border-top:2px solid var(--ink)}
.acc div{display:grid;grid-template-columns:1fr auto;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule-2);font-family:var(--sans);font-size:15px;align-items:baseline}
.acc div:last-child{border-bottom:2px solid var(--ink)}
.acc span{color:var(--ink-2)}
.acc b{font-weight:600;white-space:nowrap}

/* limits */
.limits{list-style:none;counter-reset:l;margin-top:6px}
.limits li{counter-increment:l;position:relative;padding:0 0 0 38px;margin-top:14px;color:var(--ink-2)}
.limits li::before{content:counter(l);position:absolute;left:0;top:3px;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--red);color:var(--red);font-family:var(--sans);font-size:12.5px;font-weight:600;display:grid;place-items:center}
.limits strong{color:var(--ink);font-weight:600}

/* bibtex */
.bib{position:relative;margin-top:16px;background:var(--tint);border:1px solid var(--rule);border-radius:6px;padding:18px;overflow-x:auto}
.bib pre{font-family:var(--mono);font-size:13px;line-height:1.6;color:var(--ink)}
@media(max-width:560px){.bib{padding-top:44px}.bib pre{font-size:11.5px;white-space:pre-wrap;word-break:break-word}}
.copy{position:absolute;top:10px;right:10px;font-family:var(--sans);font-size:12.5px;padding:5px 10px;border-radius:5px;border:1px solid var(--rule);background:var(--bg);color:var(--ink-2);cursor:pointer}
.copy:hover{color:var(--ink);border-color:var(--ink)}

.pubs{list-style:none;margin-top:18px;border-top:2px solid var(--ink)}
.pubs li{border-bottom:1px solid var(--rule-2)}
.pubs a{display:grid;grid-template-columns:104px 1fr;gap:16px;padding:13px 0;text-decoration:none;align-items:baseline}
.pubs a:hover .pt{color:var(--red)}
.pv{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--red);white-space:nowrap}
.pt{font-size:16.5px;line-height:1.4;color:var(--ink);transition:color .15s}
@media(max-width:560px){.pubs a{grid-template-columns:1fr;gap:2px}}

/* contact */
.contact{margin-top:64px;padding:30px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule)}
.contact h3{font-weight:600;font-size:24px;line-height:1.25;letter-spacing:-.01em}
.contact p{color:var(--ink-2);margin-top:8px}
.contact .links{justify-content:flex-start;margin-top:20px}

footer{padding:28px 0 56px;font-family:var(--sans);font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px}
footer nav{display:flex;gap:18px}
footer a{text-decoration:none}
footer a:hover{color:var(--ink)}

@media(prefers-reduced-motion:reduce){.hbar,.hval{transition:none}}

/* subtitle under a two-part paper title */
.subtitle{font-size:clamp(19px,2.8vw,24px);line-height:1.3;color:var(--ink-2);margin:12px auto 0;max-width:40ch;text-wrap:balance}

/* pull quote */
.callout{margin:22px 0;padding:4px 0 4px 20px;border-left:3px solid var(--red);font-size:19px;line-height:1.55;color:var(--ink);font-style:italic}

/* table niceties */
tbody td:not(:first-child){white-space:nowrap}
td small.sub{display:block;font-size:12px;color:var(--muted);margin-top:1px}

/* poster tagline under the byline */
.tagline{margin-top:14px;font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}

/* opening quote + lead line */
.callout.quote{font-size:21px;margin-top:0}
.callout cite{display:block;margin-top:6px;font-family:var(--sans);font-style:normal;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.callout b{font-style:normal;color:var(--red)}
.body p.lead{font-size:clamp(24px,4vw,30px);line-height:1.25;letter-spacing:-.01em;color:var(--ink);margin-top:18px}
.body p.lead strong{color:var(--red)}

/* teaser threshold marker (e.g. a 50 ms window) */
.rows{position:relative}
.mark-layer{position:absolute;top:0;bottom:0;left:132px;right:0;pointer-events:none}
.hmark{position:absolute;top:-8px;bottom:-4px;border-left:1.5px dashed var(--ink)}
.hmark span{position:absolute;bottom:-22px;left:6px;font-family:var(--sans);font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--ink)}
.hbars:has(.mark-layer){padding-bottom:20px}
@media(max-width:560px){.mark-layer{left:94px}.hval{font-size:14px}}

/* tables whose text columns should wrap */
table.wrap-all td{white-space:normal;text-align:left;vertical-align:top}
table.wrap-all th{text-align:left}
td b.big{font-family:var(--serif);font-size:22px;font-weight:600;color:var(--red);display:block;line-height:1.1;white-space:nowrap}

/* 1 · 2 · 0 row, gate marks */
.acc.three{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.acc.three div{display:block;padding:14px 12px 14px 0;border-bottom:2px solid var(--ink)}
.acc.three div+div{padding-left:14px;border-left:1px solid var(--rule)}
.acc b.big{display:block;font-family:var(--serif);font-size:44px;line-height:1;font-weight:600}
.acc.three span{display:block;margin-top:6px;font-size:13.5px;color:var(--muted)}
.acc b.ok{color:var(--teal-ok,#1E7A3C)}
.acc b.no{color:var(--red)}
html[data-theme="dark"] .acc b.ok{color:#9CC98A}

/* 07: two numbers, not equal */
.vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin:22px 0;padding:22px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);text-align:center;font-family:var(--sans)}
.vs b{display:block;font-family:var(--serif);font-size:clamp(40px,8vw,60px);font-weight:600;line-height:1;letter-spacing:-.02em}
.vs b.g{color:#3E7A1E}
.vs b.r{color:var(--red)}
html[data-theme="dark"] .vs b.g{color:#9CC98A}
.vs span{display:block;margin-top:6px;font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.vs .ne{font-family:var(--serif);font-size:36px;line-height:1;color:var(--ink)}
.vs .ne span{font-size:10.5px}
h2{text-wrap:balance}
@media(max-width:560px){table.drop3 th:nth-child(3),table.drop3 td:nth-child(3){display:none}}
@media(max-width:560px){
  table.fit{font-size:12px}
  table.fit th,table.fit td{white-space:normal;padding:8px 4px}
  table.fit td small.sub{font-size:11px}
}
