@font-face{font-family:"Source Serif 4";src:url("fonts/source-serif-400.woff") format("woff");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/plex-sans-400.woff") format("woff");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/plex-sans-600.woff") format("woff");font-style:normal;font-weight:600 700;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/plex-mono-400.woff") format("woff");font-style:normal;font-weight:400;font-display:swap}
:root{--paper:#f7f7f4;--ink:#20252b;--accent:#536e7a;--divider:#d9ddde;--secondary:#4f5962;--code-paper:#efefeb;--serif:"Source Serif 4",Georgia,serif;--sans:"IBM Plex Sans",Arial,sans-serif;--mono:"IBM Plex Mono",Consolas,monospace;--page-width:1160px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.75 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-underline-offset:.25em}a:hover{color:var(--accent)}a:focus-visible,pre:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:#dbe3e7;color:var(--ink)}.page-width{width:calc(100% - 80px);max-width:var(--page-width);margin-inline:auto}h1,h2,h3,p,figure{margin-top:0}h1,h2,h3{font-weight:400}h1,h2{font-family:var(--serif)}h1{font-size:clamp(3.1rem,4.8vw,4.15rem);line-height:1.12;letter-spacing:-.038em}h2{font-size:2.35rem;line-height:1.23;letter-spacing:-.025em}p{margin-bottom:1rem}.skip-link{position:absolute;left:1rem;top:-5rem;padding:.6rem 1rem;background:var(--ink);color:var(--paper);z-index:2}.skip-link:focus{top:1rem;color:var(--paper)}.site-header{display:flex;align-items:center;justify-content:space-between;gap:2rem;min-height:106px;border-bottom:1px solid var(--divider)}.wordmark{font-family:var(--serif);font-size:1.6rem;letter-spacing:-.04em;text-decoration:none;white-space:nowrap}.wordmark-to{font-style:italic}.wordmark-period{color:var(--accent)}.site-header nav{display:flex;align-items:center;gap:2rem}.site-header nav a{text-decoration:none;font-size:.875rem;min-height:44px;display:flex;align-items:center}.external-link{gap:.4rem}.eyebrow{font:400 .65rem/1.7 var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-bottom:1.3rem}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:4.5rem;align-items:start;padding:5rem 0 4.75rem}.hero-copy .eyebrow{max-width:38em;font-size:.62rem;line-height:1.9;letter-spacing:.07em}.hero h1{max-width:17ch;margin-bottom:1.75rem}.hero-description{max-width:32em;font-size:1.05rem;line-height:1.8;color:var(--secondary);margin-bottom:2rem}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1.75rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:1.4rem;min-height:46px;padding:.65rem 1.1rem;background:var(--ink);border:1px solid var(--ink);border-radius:2px;color:var(--paper);text-decoration:none;font-size:.85rem;font-weight:600}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}.quiet-link{display:inline-flex;align-items:center;gap:.8rem;min-height:44px;font-size:.85rem;color:var(--ink);text-decoration:none}.quiet-link:hover{text-decoration:underline}.hero-note{font-size:.71rem;line-height:1.8;color:var(--accent);margin-top:1.6rem;margin-bottom:0}.model-figure{border:1px solid var(--divider);padding:1.6rem 1.65rem 1.35rem;margin:0;min-width:0}.figure-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.figure-heading .eyebrow{font-size:.64rem;letter-spacing:.07em;margin:0}.figure-index{font:400 .62rem var(--mono);color:var(--accent);white-space:nowrap}.model-name{font-size:.78rem;line-height:1.65;margin:.65rem 0 0;color:var(--secondary)}.governing-equation{padding:1.55rem 0 1.4rem;overflow-x:auto}.governing-equation math{font-size:2rem;margin:0;line-height:1.4;color:var(--ink)}.model-assumptions{font-size:.74rem;color:var(--secondary);line-height:1.7;margin-bottom:1.15rem}.model-symbols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;border-top:1px solid var(--divider);padding:1rem 0 0;margin:0 0 1.15rem}.model-symbols>div{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:.45rem}.model-symbols dt{font:400 1.15rem var(--serif)}.model-symbols dd{font-size:.66rem;margin:0;line-height:1.7}.model-symbols dd>span{display:block;font:400 .58rem/1.8 var(--mono);color:var(--accent)}.translation-label{display:flex;justify-content:space-between;gap:1rem;align-items:center;border-top:1px solid var(--divider);padding-top:1rem;margin-bottom:.9rem;font-size:.72rem;color:var(--secondary)}.translation-label>span:last-child{color:var(--accent);font-size:1rem}.code-heading{display:flex;justify-content:space-between;gap:.5rem;font:400 .56rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.02em;color:var(--accent);margin-bottom:.6rem}.model-figure pre{padding:1rem .95rem;margin:0 0 .95rem;background:var(--code-paper);overflow-x:auto;line-height:1.9;max-width:100%;tab-size:4}.model-figure code{font:400 .72rem/1.95 var(--mono)}.model-figure figcaption{font-size:.7rem;line-height:1.8;color:var(--secondary)}.model-figure var{font-family:var(--serif);font-size:1.07em}.section-heading h2{margin:0}.method-section{border-top:1px solid var(--divider);padding:3.75rem 0 3.5rem}.method-grid{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1.5rem;padding:0;margin:2.5rem 0 1.7rem}.method-grid>li{border-top:1px solid var(--divider);padding-top:1rem;min-width:0}.stage-number{font:400 .68rem var(--mono);color:var(--accent)}.method-grid h3{font:600 .875rem/1.5 var(--sans);margin:.9rem 0 .75rem}.method-grid p{font-size:.81rem;line-height:1.85;color:var(--secondary);margin:0}.method-note{max-width:76em;font-size:.75rem;line-height:1.85;color:var(--accent);margin:0}.projects-section{padding:3.75rem 0;border-top:1px solid var(--divider)}.section-heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:3rem}.section-description{font-size:.81rem;line-height:1.8;color:var(--secondary);margin:0 0 .2rem}.publication-note{color:var(--secondary);font-size:.875rem;max-width:50em;margin:2rem 0 0;padding-left:1.1rem;border-left:1px solid var(--accent);line-height:1.85}.project-list{margin-top:2.5rem}.project-entry{display:grid;grid-template-columns:1fr 1.4fr;gap:3rem;padding:1.75rem 0;border-top:1px solid var(--divider)}.publication-label{font:400 .6rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.project-title h3{font:400 1.65rem/1.3 var(--serif);letter-spacing:-.02em;margin:.75rem 0}.topics{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.25rem .7rem}.topics li{font-size:.65rem;color:var(--accent)}.project-detail>p{font-size:.88rem;line-height:1.9;margin-bottom:1rem;color:var(--secondary)}.project-links{display:flex;flex-wrap:wrap;gap:1.5rem}.project-links a{font-size:.78rem;text-decoration:none}.project-links a:hover{text-decoration:underline}.areas-section{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;padding:3.75rem 0;border-top:1px solid var(--divider)}.areas-section h2{font-size:1.9rem;margin-bottom:1rem}.areas-section>div>p:last-child{font-size:.81rem;line-height:1.8;color:var(--secondary);margin:0}.areas-section ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:0 2rem;align-content:center}.areas-section li{font-size:.85rem;padding:1.15rem 0;border-bottom:1px solid var(--divider);line-height:1.65}.areas-section li:nth-child(-n+2){border-top:1px solid var(--divider)}.about-section{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;padding:3.75rem 0 4rem;border-top:1px solid var(--divider)}.about-section h2{font-size:2rem}.about-copy>p:first-child{font-size:1.08rem;line-height:1.85;margin-bottom:1.1rem}.about-copy .about-secondary{font-size:.85rem;line-height:1.9;color:var(--secondary);margin-bottom:1rem}.site-footer{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;border-top:1px solid var(--divider);padding-block:1.6rem;font-size:.71rem;color:var(--secondary)}.site-footer>span:first-child{font-family:var(--serif);font-size:.95rem;color:var(--ink)}
@media(max-width:1050px){.hero{gap:2.5rem;padding-block:4rem}.hero h1{font-size:3.25rem}.model-figure{padding:1.3rem}.method-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.75rem}.method-grid>li{padding-top:.9rem}.method-grid h3{margin-top:.65rem}.areas-section,.about-section{gap:2.5rem}}
@media(max-width:767px){.page-width{width:calc(100% - 40px)}.site-header{min-height:90px;gap:1rem}.wordmark{font-size:1.4rem}.site-header nav{gap:1.1rem}.site-header nav a{font-size:.78rem}.hero{grid-template-columns:1fr;gap:2.5rem;padding:3.25rem 0}.hero h1{font-size:clamp(2.75rem,7vw,3.75rem);max-width:17ch;margin-bottom:1.5rem}.hero-copy .eyebrow{font-size:.57rem;max-width:42em;margin-bottom:1.25rem}.hero-description{font-size:1rem;max-width:37em;margin-bottom:1.5rem}.hero-note{font-size:.67rem}.model-figure{padding:1.5rem;max-width:560px;width:100%}.model-figure code{font-size:.73rem}.figure-heading .eyebrow{font-size:.61rem}.model-name{font-size:.8rem}.model-assumptions{font-size:.8rem}.model-symbols dd{font-size:.72rem}.model-symbols dd>span{font-size:.63rem}.translation-label{font-size:.78rem}.code-heading{font-size:.6rem}.model-figure figcaption{font-size:.7rem}.method-section,.projects-section,.areas-section,.about-section{padding-block:2.75rem}h2{font-size:2rem}.method-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin-top:2rem}.method-grid p{font-size:.83rem}.method-grid h3{font-size:.9rem}.method-note{font-size:.75rem}.section-heading-row{display:block}.section-description{margin-top:1rem;font-size:.85rem}.section-description br{display:none}.publication-note{font-size:.85rem;margin-top:1.5rem}.project-entry{grid-template-columns:1fr;gap:1.1rem}.areas-section,.about-section{grid-template-columns:1fr;gap:1.75rem}.areas-section ul{gap:0 1.5rem}.areas-section li{font-size:.84rem}.wide-break{display:none}.about-copy>p:first-child{font-size:1rem}.about-copy .about-secondary{font-size:.85rem}.site-footer{font-size:.66rem;padding-block:1.25rem;gap:.5rem 1rem}}
@media(max-width:479px){.site-header{padding-block:1.1rem;flex-wrap:wrap;gap:.3rem}.wordmark{width:100%;font-size:1.5rem}.site-header nav{gap:1.7rem;flex-wrap:wrap}.site-header nav a{font-size:.81rem;min-height:38px}.hero{padding-top:2.5rem;gap:2rem}.hero h1{font-size:2.8rem;line-height:1.12;letter-spacing:-.045em}.hero-description{font-size:.93rem;line-height:1.85}.hero-actions{gap:1.5rem}.hero-note{max-width:29em;font-size:.65rem}.button{font-size:.78rem;padding:.65rem .9rem;gap:.75rem}.quiet-link{font-size:.78rem}.model-figure{padding:1.1rem}.figure-heading .eyebrow{font-size:.6rem;letter-spacing:.04em}.figure-index{font-size:.55rem}.model-name{font-size:.73rem}.governing-equation{padding-block:1.4rem}.governing-equation math{font-size:1.9rem}.model-assumptions{font-size:.72rem}.model-symbols{gap:.5rem}.model-symbols dd{font-size:.62rem}.model-symbols dd>span{font-size:.55rem}.translation-label{font-size:.7rem}.code-heading{font-size:.6rem}.model-figure pre{padding:.75rem .65rem}.model-figure code{font-size:.72rem}.model-figure figcaption{font-size:.7rem}h2,.areas-section h2,.about-section h2{font-size:1.85rem}.method-grid{display:block;margin-top:1.75rem}.method-grid>li{display:grid;grid-template-columns:2rem 1fr;column-gap:.65rem;padding:1.25rem 0;border-top:1px solid var(--divider)}.stage-number{padding-top:.1rem}.method-grid h3{grid-column:2;margin:0 0 .5rem;font-size:.9rem}.method-grid p{grid-column:2;font-size:.83rem}.method-note{font-size:.73rem}.areas-section ul{grid-template-columns:1fr}.areas-section li:nth-child(2){border-top:0}.areas-section li{padding-block:.9rem}.site-footer{flex-direction:column;align-items:flex-start;gap:.4rem}}
@media(max-width:359px){.hero h1{font-size:2.5rem}.model-figure{padding:.95rem}.figure-heading{gap:.5rem}.figure-heading .eyebrow{font-size:.6rem}.model-figure code{font-size:.72rem}.hero-actions{gap:1rem}.button{font-size:.75rem}.quiet-link{font-size:.75rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
