:root{--brand-hue:215;--accent:hsl(var(--brand-hue), 62%, 38%);--accent-dark:hsl(var(--brand-hue), 60%, 24%);--accent-darker:hsl(var(--brand-hue), 58%, 17%);--accent-soft:hsl(var(--brand-hue), 55%, 94%);--accent-border:hsl(var(--brand-hue), 35%, 82%);--bg:hsl(var(--brand-hue), 30%, 99%);--surface:#fffff;--text:hsl(var(--brand-hue), 25%, 14%);--text-muted:hsl(var(--brand-hue), 10%, 42%);--on-accent:#ffffff;--radius:8px;--shadow:0 2px 5px hsla(var(--brand-hue), 40%, 20%, 0.10);--container:960px;--gradient-hero:linear-gradient(
    135deg,
    hsla(var(--brand-hue), 60%, 15%, 0.72),
    hsla(var(--brand-hue), 62%, 38%, 0.42),
    hsla(var(--brand-hue), 35%, 8%, 0.80)
  );--topbar-height:4.5rem;--topbar-anchor:0.05;--topbar-bg:transparent;--topbar-filter:none;--topbar-shadow:none}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,sans-serif;line-height:1.6;color:var(--text);background:var(--bg)}html{scroll-behavior:smooth}.site-shell{position:relative;min-height:100vh;display:flex;flex-direction:column;--hero-height-base:30vh;--hero-height:var(--hero-height-base);--topbar-float:calc(var(--hero-height-base) * var(--topbar-anchor))}.site-shell:has(.hero--compact){--hero-height-base:3vh}main{flex:1;padding-top:calc(var(--topbar-height) + 1rem)}img{max-width:100%}a{color:var(--accent)}a:hover{color:var(--accent-dark)}h1,h2,h3{line-height:1.25;color:var(--accent-darker)}.container{max-width:var(--container);margin:0 auto;padding:0 1.25rem}.hero{--hero-collapse:0.4;--hero-height-on:calc(var(--hero-height-base) * var(--hero-collapse));--hero-pad-top:3rem;--hero-pad-top-on:1.5rem;--hero-pad-bottom:1rem;--hero-pad-bottom-on:0.5rem;--logo-scale:0.6;--logo-height:min(
    calc(var(--hero-height) * var(--logo-scale)),
    calc(var(--hero-height) - var(--hero-pad-top) - var(--hero-pad-bottom) -
         var(--topbar-height)),
    /* The lockup is 2.21 of these wide (1 mark + 1.86 wordmark - 0.65 overlap),
       so this is the third clamp: on a phone the width runs out before the
       height does. Never binding on a desktop viewport. */
    38vw
  );--logo-height-on:8rem;--logo-fade-start:70%;--logo-fade-end:80%;position:relative;height:var(--hero-height);display:flex;flex-direction:column;justify-content:center;align-items:center;background:hsl(var(--brand-hue),35%,10%);overflow:hidden;transition:height 1e3ms ease}.hero--compact{--hero-collapse:0.4;--hero-pad-top:2.5rem}.hero__backdrop{position:absolute;inset:0;background-image:var(--hero-image,none);background-size:cover;background-position:50%;filter:blur(1.5px)brightness(.7)saturate(.7);transform:scale(1.1);overflow:hidden}.hero__video{display:block;width:100%;height:100%;object-fit:cover;overflow-x:scroll}.hero::before{content:"";position:absolute;inset:0;background:var(--gradient-hero)}.hero__content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--on-accent);padding:var(--hero-pad-top)1.5rem calc(var(--hero-pad-bottom) + var(--topbar-height));min-height:0;width:100%;max-width:var(--container);transition:padding 520ms ease}.hero__logo{font-size:var(--logo-height);display:flex;flex-direction:row;align-items:center;text-decoration:none;transition:opacity 600ms ease,transform 600ms ease,font-size 520ms ease}.hero__logo:hover{transform:scale(1.1)}.hero__wordmark{font-size:.15em;width:12.4em;color:var(--on-accent);line-height:1.2;font-weight:600;letter-spacing:.14em;text-transform:none;text-align:left;text-wrap:balance;opacity:.85;text-shadow:0 2px 18px hsla(var(--brand-hue),50%,8%,.55);transition:opacity 400ms ease}.hero__logo:hover .hero__wordmark{opacity:1}.hero__logo img{height:1em;flex:none;margin-left:-.65em;transform:translateY(-.12em);width:auto;opacity:.75;-webkit-mask-image:linear-gradient( to bottom,#000 var(--logo-fade-start),transparent var(--logo-fade-end) );mask-image:linear-gradient( to bottom,#000 var(--logo-fade-start),transparent var(--logo-fade-end) );transition:height 520ms ease,opacity 400ms ease}.hero__logo:hover img{opacity:.9}.hero__content h1{margin:.25rem 0 0;max-width:900px;font-size:clamp(1.6rem,2.4vw + .9rem,3.4rem);line-height:1.1;font-weight:600;letter-spacing:-.02em;color:var(--on-accent);text-shadow:0 2px 18px hsla(var(--brand-hue),50%,8%,.55);transition:opacity 500ms ease,transform 500ms ease,margin 500ms ease}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;width:100%;min-height:var(--topbar-height);margin-top:calc((var(--topbar-height) + var(--topbar-float)) * -1);margin-bottom:var(--topbar-float);padding:0 1.25rem;background:var(--topbar-bg);-webkit-backdrop-filter:var(--topbar-filter);backdrop-filter:var(--topbar-filter);box-shadow:var(--topbar-shadow);transition:background-color 260ms ease,box-shadow 260ms ease}.nav-links{display:flex;align-items:center;justify-content:center;gap:0;flex-wrap:nowrap;width:fit-content;min-width:min(70%,100%);margin:0 auto;padding:0}.nav-links a{color:#fff;text-decoration:none;font-size:clamp(.8rem,.5vw + .62rem,1.15rem);text-transform:uppercase;letter-spacing:.15em;white-space:nowrap;font-weight:500;opacity:.92;text-shadow:0 1px 10px hsla(var(--brand-hue),50%,8%,.6);display:inline-block;transform-origin:center;position:relative;transition:opacity 180ms ease,transform 300ms ease}.nav-links a:hover,.nav-links a:focus-visible{opacity:1;transform:scale(1.25)}.nav-links a.is-current{opacity:1}.nav-links a.is-current::after{content:"";position:absolute;top:100%;left:0;right:0;margin-top:.3em;height:2px;background:currentColor;opacity:.8}.nav-item{flex:1;display:inline-flex;align-items:center;justify-content:center}.nav-toggle{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.nav-title,.nav-burger{display:none}.nav-logo{position:absolute;left:1.25rem;top:50%;transform:translateY(-50%);height:calc(var(--topbar-height) - 1.2rem);display:flex;align-items:center;gap:.55rem;text-decoration:none;opacity:0;pointer-events:none;transition:opacity 400ms ease}.nav-logo img{align-self:flex-end;height:100%;width:auto;display:block}.nav-wordmark{max-width:11rem;color:#fff;font-size:.72rem;line-height:1.15;font-weight:500;letter-spacing:.1em;text-transform:uppercase;opacity:.9;text-shadow:0 1px 10px hsla(var(--brand-hue),50%,8%,.6)}.site-shell.is-scrolled{--topbar-bg:hsla(var(--brand-hue), 80%, 10%, 0.89);--topbar-filter:blur(8px);--topbar-shadow:0 8px 24px hsla(var(--brand-hue), 45%, 10%, 0.45)}.site-shell.is-scrolled .hero{--hero-height:var(--hero-height-on);--hero-pad-top:var(--hero-pad-top-on);--hero-pad-bottom:var(--hero-pad-bottom-on);--logo-height:var(--logo-height-on)}.site-shell.is-scrolled .nav-logo{opacity:1;pointer-events:auto}.site-shell.is-scrolled .hero__logo,.site-shell.is-scrolled .hero__content h1{opacity:0;transform:translateY(-8px);margin-top:0;margin-bottom:0;max-height:0;overflow:hidden;pointer-events:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero,.hero__content,.hero__logo,.hero__logo img,.hero__wordmark,.hero__content h1,.topbar,.nav-logo,.nav-links a{transition:none}}@media(max-width:960px){.hero__content{padding-left:1rem;padding-right:1rem}.topbar{padding:0 1rem;justify-content:space-between}.hero--compact .hero__logo{display:none}.nav-logo{position:static;transform:none;flex:none}.site-shell:has(.hero--compact) .nav-logo{opacity:1;pointer-events:auto}.nav-wordmark{display:none}.nav-title{display:block;position:absolute;left:50%;transform:translateX(-50%);max-width:calc(100% - 9rem);padding:0 .5rem;color:#fff;text-decoration:none;font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;font-weight:500;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 10px hsla(var(--brand-hue),50%,8%,.6);transition:opacity 180ms ease}.nav-title:hover,.nav-title:focus-visible{opacity:1;color:var(--accent-soft)}.nav-burger{display:block;position:relative;width:1.5rem;height:var(--topbar-height);flex:none;cursor:pointer}.nav-burger::before{content:"";position:absolute;top:50%;left:0;width:100%;height:2px;margin-top:-1px;background:#fff;box-shadow:0 -7px #fff,0 7px #fff}.nav-toggle:focus-visible~.nav-burger{outline:2px solid #fff;outline-offset:2px}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;width:auto;min-width:0;margin:0;padding:.5rem 0 .75rem;background:hsla(var(--brand-hue),80%,10%,.96);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px hsla(var(--brand-hue),45%,10%,.45)}.nav-toggle:checked~.nav-links{display:flex}.nav-item{display:block;flex:none}.nav-links a{display:block;padding:.75rem 1rem;letter-spacing:.06em;text-align:center;transition:color 180ms ease,background-color 180ms ease}.nav-links a.is-current::after{display:none}.nav-links a.is-current{background:hsla(var(--brand-hue),60%,30%,.55)}.nav-links a:hover,.nav-links a:focus-visible{transform:none;color:var(--accent-soft);background:hsla(var(--brand-hue),60%,40%,.25)}}.block{margin:2.5rem auto;scroll-margin-top:calc(var(--topbar-height) + 1.5rem)}.block>h2{margin-bottom:1rem}.section-menu{margin-top:1.5rem}.section-menu ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1px;margin:0;padding:0;list-style:none;background:var(--accent-border);border:1px solid var(--accent-border);border-radius:var(--radius);overflow:hidden}.section-menu a{display:block;padding:.5rem .75rem;font-size:.9rem;text-align:center;text-decoration:none;background:var(--bg)}.section-menu a:hover,.section-menu a:focus-visible{background:var(--accent-soft)}.media-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1.25rem;margin:1.5rem 0}.media-gallery--single{grid-template-columns:1fr}.media-gallery--carousel{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-color:var(--accent-border)transparent}.media-gallery--carousel .media-item{flex:0 0 min(80%,420px);scroll-snap-align:start}.media-item{margin:0}.media-item :is(img,video){width:100%;display:block;border-radius:var(--radius)}.media-item figcaption{font-size:.85rem;color:var(--text-muted);margin-top:.5rem}.item-list{display:grid;gap:1.5rem;margin:1.5rem 0}.item h3{margin:0 0 .25rem}.item p{margin:.25rem 0}.card-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1.25rem;margin:1.5rem 0 3rem}.card-list--stacked{grid-template-columns:1fr}.card{background:var(--surface);border:1px solid var(--accent-border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}.card-thumb{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}.card-body{padding:1rem 1.15rem 1.25rem}.card-body h3{margin:.25rem 0 .5rem}.card-body h3 a{text-decoration:none}.card-body p{margin:.25rem 0}.card-meta,.post-meta,.thesis-meta,.item-meta{font-size:.85rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.card-carousel{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:.25rem .25rem 1rem;scrollbar-color:var(--accent-border)transparent}.card-carousel .card{flex:0 0 300px;scroll-snap-align:start}.prose{margin-bottom:3rem}.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.5rem;margin:1.25rem 0 2.5rem}.person{background:var(--surface);border:1px transparen var(--accent-border);border-radius:var(--radius);padding:1.25rem;text-align:center;box-shadow:var(--shadow)}.person img{width:128px;height:128px;border-radius:50%;object-fit:cover;border:3px solid var(--accent-soft)}.person h3{margin:.75rem 0 .1rem;font-size:1.05rem}.person .role{color:var(--accent);font-weight:600;font-size:.9rem;margin:0 0 .5rem}.person .email{font-size:.85rem;margin:-.25rem 0 .5rem;overflow-wrap:anywhere}.person .bio{font-size:.9rem;color:var(--text-muted);margin:0}.person .thesis-title{font-size:.95rem;margin:0 0 .4rem}.person .thesis-title-pending{color:var(--text-muted);font-style:italic}.person .person-dates{font-size:.8rem;color:var(--text-muted);margin:0 0 .5rem}.people-past{border-top:2px solid var(--accent-border);margin-top:1rem;padding-top:1.5rem}.people-past+.people-past{border-top:0;margin-top:0;padding-top:0}.people-past h2{color:var(--text-muted)}.people-past .person{background:var(--bg)}.people-past .person img{filter:grayscale(45%);opacity:.9}.thesis{background:var(--surface);border:1px solid var(--accent-border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:1rem 1.25rem;margin:1rem 0}.thesis h3{margin:0 0 .25rem}.thesis p{margin:.35rem 0 0}.badge{display:inline-block;background:var(--accent-soft);color:var(--accent-dark);border-radius:999px;padding:.1rem .65rem;font-size:.78rem;font-weight:600}.site-footer{margin-top:5rem;padding:1.5rem 0;background:var(--accent-darker);color:var(--on-accent)}.footer-links a{color:inherit;text-decoration:underline}