@import 'https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400&family=Inter:wght@300;400;500;600&display=swap';:root{--teal:#3dd8c5;--teal-deep:#289386;--blue:#4a9eed;--violet:#9b7aed;--amber:#e8a44a;--bg:#fafaf7;--bg-soft:#f0efe9;--ink:#16181c;--ink-soft:#565a63;--rule:#d6d3c9;--font-serif:'Source Serif 4', Georgia, 'Times New Roman', serif;--font-sans:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;--max-width:90rem;--content-width:65rem;--pad-x:4rem;--pad-x-mobile:1.5rem}*,*::before,*::after{box-sizing:border-box}*{margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}img,svg,video{max-width:100%;display:block}a{color:inherit;text-decoration:none}::selection{background:var(--teal);color:var(--ink)}.nav-strip{background:var(--ink);color:rgba(250,250,247,.85);padding:.6rem var(--pad-x);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center;gap:1rem}.nav-strip .affiliation{color:rgba(255,255,255,.5)}.nav-strip .strip-dot{display:inline-block;width:6px;height:6px;background:var(--teal);border-radius:50%;margin:0 .75rem;vertical-align:middle}.site-nav{display:flex;justify-content:space-between;align-items:center;padding:1.5rem var(--pad-x);border-bottom:1px solid var(--rule);background:rgba(250,250,247,.92);backdrop-filter:blur(8px);position:sticky;top:0;z-index:50}.site-nav .brand{font-family:var(--font-serif);font-size:1.5rem;font-weight:400;letter-spacing:-.02em;color:var(--ink)}.site-nav .brand .accent{color:var(--teal-deep);font-weight:500}.site-nav .menu{display:flex;gap:2.5rem;font-size:.85rem;list-style:none}.site-nav .menu a{color:var(--ink-soft);font-weight:400;transition:color 200ms;position:relative;padding:4px 0}.site-nav .menu a::after{content:'';position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--teal);transition:width 220ms ease}.site-nav .menu a:hover{color:var(--ink)}.site-nav .menu a:hover::after,.site-nav .menu a.active::after{width:100%}.site-nav .menu a.active{color:var(--ink)}.site-nav .menu-toggle{display:none;background:0 0;border:1px solid var(--rule);padding:.5rem .75rem;font-size:.85rem;font-family:var(--font-sans);cursor:pointer;border-radius:4px}.hero-carousel{position:relative;width:100%;height:78vh;min-height:600px;overflow:hidden;background:#0d1f1c}.hero-slide{position:absolute;inset:0;background-size:cover;background-position:50%;opacity:0;transition:opacity 1500ms ease-in-out}.hero-slide.active{opacity:1}.hero-slide.placeholder-1{background-image:radial-gradient(ellipse at 30% 50%,rgba(61,216,197,.7) 0%,transparent 45%),radial-gradient(ellipse at 70% 40%,rgba(74,158,237,.5) 0%,transparent 40%),radial-gradient(circle at 50% 70%,rgba(155,122,237,.4) 0%,transparent 40%);background-color:#0d1f1c}.hero-slide.placeholder-2{background-image:radial-gradient(ellipse at 60% 50%,rgba(232,164,74,.5) 0%,transparent 40%),radial-gradient(ellipse at 30% 30%,rgba(155,122,237,.6) 0%,transparent 45%),radial-gradient(circle at 80% 80%,rgba(61,216,197,.4) 0%,transparent 35%);background-color:#14202a}.hero-slide.placeholder-3{background-image:radial-gradient(ellipse at 50% 50%,rgba(74,158,237,.6) 0%,transparent 45%),radial-gradient(ellipse at 20% 20%,rgba(61,216,197,.5) 0%,transparent 35%),radial-gradient(circle at 80% 30%,rgba(232,164,74,.3) 0%,transparent 30%);background-color:#0a1828}.hero-slide.placeholder-4{background-image:radial-gradient(ellipse at 45% 60%,rgba(155,122,237,.7) 0%,transparent 40%),radial-gradient(ellipse at 75% 25%,rgba(61,216,197,.5) 0%,transparent 35%),radial-gradient(circle at 25% 25%,rgba(74,158,237,.4) 0%,transparent 30%);background-color:#1a1428}.hero-slide::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient( 0,transparent,transparent 2px,rgba(0,0,0,4%) 2px,rgba(0,0,0,4%) 3px );mix-blend-mode:overlay;pointer-events:none}.slide-caption{position:absolute;bottom:2.5rem;left:3rem;color:rgba(255,255,255,.95);z-index:10;max-width:32rem}.slide-caption .label{font-family:var(--font-sans);font-size:.72rem;text-transform:uppercase;letter-spacing:.25em;color:rgba(255,255,255,.6);margin-bottom:.5rem;font-weight:500}.slide-caption .title{font-family:var(--font-serif);font-size:1.65rem;font-weight:400;line-height:1.25;letter-spacing:-.015em;margin-bottom:.5rem;text-shadow:0 2px 12px rgba(0,0,0,.4)}.slide-caption .title em{font-style:italic}.slide-caption .detail{font-family:var(--font-sans);font-size:.85rem;color:rgba(255,255,255,.7);line-height:1.5}.carousel-nav{position:absolute;bottom:2.5rem;right:3rem;display:flex;align-items:center;gap:1.5rem;z-index:10}.carousel-counter{color:rgba(255,255,255,.8);font-family:var(--font-sans);font-size:.85rem;font-feature-settings:"tnum";letter-spacing:.05em}.carousel-counter .current{color:#fff;font-weight:500}.carousel-counter .sep{margin:0 .4rem;color:rgba(255,255,255,.4)}.carousel-dots{display:flex;gap:.5rem}.carousel-dot{width:28px;height:2px;background:rgba(255,255,255,.3);border:none;cursor:pointer;padding:0;transition:background 200ms}.carousel-dot.active{background:var(--teal)}.carousel-dot:hover{background:rgba(255,255,255,.6)}.carousel-arrow{width:36px;height:36px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3);color:#fff;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background 200ms;font-size:1rem}.carousel-arrow:hover{background:rgba(255,255,255,.2)}.introduction{max-width:50rem;margin:0 auto;padding:6rem 3rem 4rem}.introduction .eyebrow{font-family:var(--font-sans);font-size:.72rem;text-transform:uppercase;letter-spacing:.25em;color:var(--teal-deep);margin-bottom:1.5rem;font-weight:500;padding-left:1rem;border-left:2px solid var(--teal)}.introduction h1{font-family:var(--font-serif);font-size:clamp(2rem,3.5vw,2.75rem);font-weight:400;line-height:1.2;letter-spacing:-.02em;margin-bottom:2rem;color:var(--ink)}.introduction h1 em{font-style:italic}.introduction p{font-family:var(--font-serif);font-size:1.2rem;line-height:1.65;color:var(--ink);margin-bottom:1.25rem}.introduction p.lede{font-size:1.35rem}.introduction p:last-child{color:var(--ink-soft)}.introduction a{color:var(--teal-deep);border-bottom:1px solid rgba(40,147,134,.3);transition:border-color 200ms}.introduction a:hover{border-bottom-color:var(--teal-deep)}.introduction em{font-style:italic}.featured-work{border-top:1px solid var(--rule);padding:5rem 3rem 6rem;max-width:76rem;margin:0 auto}.featured-work .section-label{font-family:var(--font-sans);font-size:.72rem;text-transform:uppercase;letter-spacing:.25em;color:var(--ink-soft);margin-bottom:3rem;font-weight:500;text-align:center}.toc-entries{display:flex;flex-direction:column}.toc-entry{display:grid;grid-template-columns:6rem 1fr 18rem;gap:3rem;padding:2.5rem 0;border-bottom:1px solid var(--rule);align-items:center;color:var(--ink);transition:padding 250ms ease}.toc-entry:first-child{padding-top:0}.toc-entry:last-child{border-bottom:none;padding-bottom:0}.toc-entry:hover{padding-left:1rem}.toc-meta{font-family:var(--font-sans);font-size:.72rem;text-transform:uppercase;letter-spacing:.2em;color:var(--ink-soft);font-feature-settings:"tnum"}.toc-meta .num{display:block;font-family:var(--font-serif);font-size:2rem;font-weight:400;color:var(--teal-deep);margin-bottom:.25rem;letter-spacing:-.02em}.toc-body h3{font-family:var(--font-serif);font-size:1.75rem;font-weight:400;letter-spacing:-.015em;margin-bottom:.4rem;color:var(--ink);line-height:1.2}.toc-body h3 em{font-style:italic}.toc-body .description{font-size:.95rem;line-height:1.55;color:var(--ink-soft);margin-bottom:.6rem;max-width:50ch}.toc-body .meta-line{font-family:var(--font-sans);font-size:.78rem;color:var(--ink-soft);letter-spacing:.05em}.toc-body .meta-line .tag-dot{color:var(--teal-deep);margin:0 .5rem}.toc-thumbnail{height:8rem;border-radius:2px;background-size:cover;background-position:50%}.toc-thumbnail.placeholder-1{background-image:radial-gradient(ellipse at 40% 50%,rgba(61,216,197,.7) 0%,transparent 50%),radial-gradient(ellipse at 70% 30%,rgba(74,158,237,.5) 0%,transparent 40%);background-color:#0d1f1c}.toc-thumbnail.placeholder-2{background-image:radial-gradient(ellipse at 60% 40%,rgba(232,164,74,.6) 0%,transparent 45%),radial-gradient(ellipse at 30% 70%,rgba(155,122,237,.4) 0%,transparent 35%);background-color:#14202a}.toc-thumbnail.placeholder-3{background-image:radial-gradient(ellipse at 50% 50%,rgba(74,158,237,.6) 0%,transparent 45%);background-color:#0a1828}.toc-thumbnail.placeholder-4{background-image:radial-gradient(ellipse at 45% 60%,rgba(155,122,237,.6) 0%,transparent 40%),radial-gradient(circle at 75% 25%,rgba(61,216,197,.4) 0%,transparent 30%);background-color:#1a1428}.more-link{display:block;text-align:center;margin-top:3rem;color:var(--ink-soft);font-family:var(--font-sans);font-size:.85rem;letter-spacing:.05em}.more-link strong{color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:2px;font-weight:500}.more-link:hover strong{border-bottom-color:var(--teal);color:var(--teal-deep)}.page-header{padding:4rem var(--pad-x)2rem;max-width:var(--max-width);margin:0 auto;border-bottom:1px solid var(--rule)}.page-header .eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.25em;color:var(--teal-deep);margin-bottom:1rem;font-weight:500}.page-header h1{font-family:var(--font-serif);font-size:clamp(2rem,3.5vw,2.75rem);font-weight:400;letter-spacing:-.02em;margin-bottom:.75rem}.page-header .lede{font-size:1.1rem;line-height:1.6;color:var(--ink-soft);max-width:50ch}.entry-list{max-width:var(--max-width);margin:0 auto;padding:0 var(--pad-x)}.entry{display:grid;grid-template-columns:8rem 1fr auto;gap:2rem;padding:2rem 0;border-bottom:1px solid var(--rule);align-items:baseline;transition:padding 200ms;color:var(--ink)}.entry:hover{padding-left:1rem}.entry-date{font-size:.8rem;color:var(--ink-soft);letter-spacing:.05em;font-feature-settings:"tnum"}.entry-body h2{font-family:var(--font-serif);font-size:1.4rem;font-weight:400;letter-spacing:-.015em;margin-bottom:.35rem;color:var(--ink)}.entry-body .desc{font-size:.95rem;line-height:1.5;color:var(--ink-soft)}.entry-body .tags{margin-top:.5rem;font-size:.75rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.15em}.entry-arrow{font-size:1.2rem;color:var(--teal-deep);align-self:center}.tools-grid{max-width:var(--max-width);margin:0 auto;padding:3rem var(--pad-x)6rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:2rem}.tool-card{border:1px solid var(--rule);border-radius:4px;background:var(--bg);color:var(--ink);overflow:hidden;transition:transform 250ms ease,box-shadow 250ms ease,border-color 250ms ease;display:flex;flex-direction:column}.tool-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px rgba(0,0,0,8%);border-color:var(--teal)}.tool-card .tool-image{height:12rem;background-color:#14202a;background-size:cover;background-position:50%;border-bottom:1px solid var(--rule)}.tool-card .tool-image.placeholder{background-image:radial-gradient(ellipse at 40% 50%,rgba(61,216,197,.5) 0%,transparent 50%),radial-gradient(ellipse at 70% 30%,rgba(74,158,237,.4) 0%,transparent 40%)}.tool-card .tool-body{padding:1.5rem;flex:1;display:flex;flex-direction:column}.tool-card h3{font-family:var(--font-serif);font-size:1.35rem;font-weight:400;letter-spacing:-.015em;margin-bottom:.5rem;color:var(--ink)}.tool-card .tool-summary{font-size:.95rem;line-height:1.55;color:var(--ink-soft);flex:1;margin-bottom:1rem}.tool-card .tool-meta{font-family:var(--font-sans);font-size:.75rem;text-transform:uppercase;letter-spacing:.15em;color:var(--ink-soft);padding-top:1rem;border-top:1px solid var(--rule)}.tool-card .tool-meta .status{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--teal);margin-right:.5rem;vertical-align:middle}.tool-card .tool-meta .status.in-progress{background:var(--amber)}.tool-card .tool-meta .status.planned{background:var(--violet)}.article{max-width:var(--content-width);margin:0 auto;padding:4rem var(--pad-x)6rem}.article-header{margin-bottom:3rem}.article-header .eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.25em;color:var(--teal-deep);margin-bottom:1rem;font-weight:500}.article-header h1{font-family:var(--font-serif);font-size:clamp(2rem,3.6vw,2.75rem);font-weight:400;line-height:1.2;letter-spacing:-.02em;margin-bottom:1rem;color:var(--ink)}.article-meta{display:flex;gap:1.25rem;font-size:.85rem;color:var(--ink-soft);padding-top:1rem;border-top:1px solid var(--rule);font-feature-settings:"tnum"}.article-body{font-size:1.05rem;line-height:1.75;color:var(--ink)}.article-body>*+*{margin-top:1.25em}.article-body h2{font-family:var(--font-serif);font-size:1.6rem;font-weight:500;letter-spacing:-.015em;margin-top:2.5em;margin-bottom:.5em}.article-body h3{font-family:var(--font-serif);font-size:1.25rem;font-weight:500;letter-spacing:-.01em;margin-top:2em;margin-bottom:.4em}.article-body em{font-style:italic}.article-body a{color:var(--teal-deep);border-bottom:1px solid rgba(40,147,134,.3);transition:border-color 200ms}.article-body a:hover{border-bottom-color:var(--teal-deep)}.article-body ul,.article-body ol{padding-left:1.5rem}.article-body li{margin:.4em 0}.article-body blockquote{border-left:3px solid var(--teal);padding:.5rem 0 .5rem 1.5rem;margin:1.5rem 0;color:var(--ink-soft);font-family:var(--font-serif);font-style:italic;font-size:1.1rem}.article-body img{margin:2rem 0;border-radius:4px}.article-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem}.article-body table th,.article-body table td{padding:.6rem .8rem;border-bottom:1px solid var(--rule);text-align:left}.article-body table th{font-weight:500;color:var(--ink);background:var(--bg-soft);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.article-body code:not(pre code){background:var(--bg-soft);color:var(--teal-deep);padding:.15em .4em;border-radius:3px;font-size:.88em;font-family:sf mono,Menlo,Monaco,Consolas,monospace}.article-body pre{background:var(--ink);color:#e0ddd5;padding:1.25rem 1.5rem;border-radius:6px;overflow-x:auto;margin:1.5rem 0;font-size:.88rem;line-height:1.55}.article-body pre code{background:0 0;color:inherit;padding:0;font-family:sf mono,Menlo,Monaco,Consolas,monospace}.article-body hr{border:none;border-top:1px solid var(--rule);margin:2.5rem 0}.publications h2{font-family:var(--font-serif);font-size:1.5rem;font-weight:500;letter-spacing:-.015em;color:var(--ink);margin-top:2.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule)}.publications ul{list-style:none;padding:0}.publications li{padding:1.25rem 0;border-bottom:1px solid var(--rule)}.publications li:last-child{border-bottom:none}.publications .pub-title{font-weight:500;color:var(--ink);line-height:1.4;margin-bottom:.35rem}.publications .pub-authors{color:var(--ink-soft);font-size:.95rem;margin-bottom:.3rem}.publications .pub-venue{color:var(--ink-soft);font-size:.9rem;font-style:italic}.publications .pub-links{margin-top:.6rem;font-size:.85rem;display:flex;gap:1.25rem}.publications .pub-links a{color:var(--teal-deep);font-weight:500}.publications .pub-links a:hover{text-decoration:underline}.outreach-grid{max-width:var(--max-width);margin:0 auto;padding:3rem var(--pad-x)6rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(22rem,1fr));gap:2.5rem}.outreach-item{border-top:2px solid var(--teal);padding-top:1.5rem}.outreach-item:nth-child(2){border-top-color:var(--blue)}.outreach-item:nth-child(3){border-top-color:var(--violet)}.outreach-item:nth-child(4){border-top-color:var(--amber)}.outreach-item:nth-child(5){border-top-color:var(--teal)}.outreach-item:nth-child(6){border-top-color:var(--blue)}.outreach-item .date{font-family:var(--font-sans);font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:var(--ink-soft);margin-bottom:.6rem}.outreach-item h3{font-family:var(--font-serif);font-size:1.5rem;font-weight:400;letter-spacing:-.015em;color:var(--ink);margin-bottom:.5rem;line-height:1.25}.outreach-item .institution{font-style:italic;color:var(--ink-soft);font-size:.95rem;margin-bottom:.75rem}.outreach-item p{font-size:.95rem;line-height:1.55;color:var(--ink-soft)}.outreach-item a{color:var(--teal-deep);border-bottom:1px solid rgba(40,147,134,.3)}.outreach-item a:hover{border-bottom-color:var(--teal-deep)}.site-footer{background:var(--ink);color:rgba(250,250,247,.7);padding:3rem var(--pad-x)2rem;margin-top:0}.site-footer-inner{max-width:var(--max-width);margin:0 auto;display:grid;grid-template-columns:1fr auto;align-items:end;gap:2rem}.site-footer .footer-brand{font-family:var(--font-serif);font-size:1.4rem;color:#fafaf7;font-weight:400;margin-bottom:.5rem}.site-footer .footer-brand .accent{color:var(--teal)}.site-footer .footer-tagline{font-size:.85rem;color:rgba(255,255,255,.5);max-width:40ch}.site-footer .footer-links{display:flex;gap:1.5rem;list-style:none;font-size:.85rem}.site-footer .footer-links a{color:rgba(250,250,247,.7);transition:color 200ms}.site-footer .footer-links a:hover{color:var(--teal)}.site-footer .footer-bottom{margin-top:2rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.15em}.tag{display:inline-block;padding:.15rem .5rem;background:var(--bg-soft);color:var(--ink-soft);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;border-radius:3px;margin-right:.4rem}@media(max-width:980px){:root{--pad-x:2rem}.toc-entry{grid-template-columns:1fr;gap:1rem}.toc-thumbnail{order:-1;height:14rem}.slide-caption{left:1.5rem;right:1.5rem;bottom:5rem}.carousel-nav{right:1.5rem;bottom:1.5rem}.introduction{padding:4rem 1.5rem 3rem}.featured-work{padding:4rem 1.5rem}.nav-strip{font-size:.7rem;flex-direction:column;gap:.4rem;text-align:center}.entry{grid-template-columns:1fr;gap:.5rem}.entry-date{font-size:.75rem}.entry-arrow{display:none}}@media(max-width:640px){:root{--pad-x:1.5rem}.site-nav{padding:1rem 1.5rem;flex-wrap:wrap}.site-nav .menu{display:none;width:100%;flex-direction:column;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--rule)}.site-nav .menu.open{display:flex}.site-nav .menu-toggle{display:block}.site-footer-inner{grid-template-columns:1fr}.site-footer .footer-bottom{flex-direction:column;gap:.5rem;align-items:flex-start}}