/* Nikolaus Correll — personal site. Layout mirrors the PAIR site; palette is its own:
   Notre Dame navy anchor + electric-indigo and warm-gold accents. */
:root{
  --navy:#0b1430; --navy-2:#141d45; --navy-3:#080f26;
  --indigo:#5b52e6; --indigo-2:#4a41cc; --indigo-lt:#8f89f5;
  --gold:#e0a324; --gold-2:#b97f0d; --gold-lt:#f3c95b;
  --teal:#1fb6a6;
  --ink:#161a2e; --body:#3c4257; --muted:#6b7183;
  --paper:#ffffff; --mist:#f4f5fb; --line:#e6e7f2;
  --maxw:1140px; --r:14px;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme: dark){
  :root{ --ink:#eef0fa; --body:#c3c8db; --muted:#8b91a6; --indigo:#8f89f5; --indigo-2:#a49ef7;
    --gold:#f3c95b; --gold-2:#e0a324; --paper:#0c1124; --mist:#111733; --line:#20284a; }
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--sans);color:var(--body);background:var(--paper);line-height:1.62;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);color:var(--ink);line-height:1.15;margin:0 0 .4em;font-weight:600}
a{color:var(--indigo-2);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.16em;font-size:12px;font-weight:700;color:var(--gold-2)}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:30;background:rgba(11,20,48,.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.08)}
.nav .wrap{display:flex;align-items:center;gap:24px;height:64px}
.brand{font-family:var(--serif);font-size:17px;font-weight:600;color:#fff;white-space:nowrap;display:inline-flex;align-items:center;gap:9px}
.brand .dot{width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,var(--gold-lt),var(--indigo-lt));flex:none}
.nav nav{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.nav nav a{color:#dfe2f1;font-size:14.5px;padding:8px 14px;border-radius:999px;transition:.2s}
.nav nav a:hover{background:rgba(255,255,255,.10);text-decoration:none;color:#fff}
.nav nav a.active{color:var(--navy);background:var(--gold-lt);font-weight:600}
.navtoggle{display:none}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;background:linear-gradient(155deg,#080f26,#141d45 45%,#2a2270);color:#eef1fb}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;filter:blur(64px);opacity:.55;z-index:0}
.hero::before{width:520px;height:520px;background:radial-gradient(circle,#e0a324aa,transparent 70%);top:-160px;right:-110px;animation:float1 16s ease-in-out infinite}
.hero::after{width:480px;height:480px;background:radial-gradient(circle,#5b52e6bb,transparent 70%);bottom:-190px;left:-120px;animation:float2 20s ease-in-out infinite}
.hero .wrap{position:relative;z-index:5;padding:92px 24px 84px}

/* hero with a cross-fading rotation of full-bleed lab photos (home only) */
.hero.reveal-hero{background:linear-gradient(155deg,#080f26,#121a44)}
.hero.reveal-hero::before,.hero.reveal-hero::after{display:none}
.hero .reveal{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--navy-3)}
.hero .rlayer{position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transition:opacity 1.4s ease}
.hero .rlayer.on{opacity:1}
.hero .reveal-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(100deg, rgba(8,14,34,.92) 0%, rgba(11,20,48,.8) 32%, rgba(14,20,52,.46) 62%, rgba(22,28,78,.28) 100%),
             linear-gradient(180deg, rgba(8,14,34,.2) 0%, transparent 26%, transparent 64%, rgba(8,14,34,.5) 100%)}
@media(max-width:640px){.hero .reveal-scrim{background:linear-gradient(175deg, rgba(8,14,34,.86), rgba(11,20,48,.78))}}
.hero .eyebrow{color:var(--gold-lt)}
.hero h1{color:#fff;font-size:clamp(34px,5.6vw,58px);letter-spacing:.3px;margin-bottom:.15em}
.hero .role{font-size:clamp(16px,2vw,20px);color:#cfd6ec;max-width:52ch;margin-top:8px}
.hero .role b{color:#fff;font-weight:600}
.hero .cta{margin-top:30px;display:flex;gap:13px;flex-wrap:wrap}
.btn{display:inline-block;padding:12px 22px;border-radius:999px;font-weight:600;font-size:15px;transition:.2s;border:1.5px solid transparent;cursor:pointer}
.btn.gold{background:var(--gold);color:#2a1e00}
.btn.gold:hover{background:var(--gold-lt);text-decoration:none;transform:translateY(-2px)}
.btn.ghost{border-color:rgba(255,255,255,.4);color:#fff}
.btn.ghost:hover{background:rgba(255,255,255,.10);text-decoration:none;transform:translateY(-2px)}
.btn.solid{background:var(--indigo);color:#fff}
.btn.solid:hover{background:var(--indigo-2);text-decoration:none;transform:translateY(-2px)}

/* page hero (subpages) — compact */
.hero.sub .wrap{padding:64px 24px 46px}

/* ---------- sections ---------- */
section{padding:64px 0}
.section-head{max-width:66ch;margin-bottom:26px}
.section-head h2{font-size:clamp(25px,3.4vw,36px)}
.section-head p{color:var(--muted);font-size:16px}
.lead{font-size:17px;color:var(--body);max-width:74ch}
.mist{background:var(--mist);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}

.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:22px;transition:transform .22s,box-shadow .22s,border-color .22s}
.card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(20,29,69,.14);border-color:#d3d5ea}
.card h3{font-size:19px}
.card p{margin:.2em 0 0;font-size:14.5px;color:var(--body)}
.card .go{display:inline-block;margin-top:12px;font-weight:600;font-size:14px}
.card .go::after{content:" →";transition:.2s}
.card:hover .go::after{margin-left:4px}

/* recent-pub card with thumbnail */
.pubcard{display:flex;flex-direction:column;overflow:hidden;padding:0}
.pubcard .thumb{aspect-ratio:16/10;background:var(--mist) center/cover no-repeat;border-bottom:1px solid var(--line)}
.pubcard .body{padding:16px 18px}
.pubcard .yr{font-size:12px;font-weight:700;color:var(--gold-2);letter-spacing:.04em}
.pubcard h3{font-size:16px;margin:5px 0 0;line-height:1.3}
.pubcard .m{font-size:12.5px;color:var(--muted);margin-top:7px}

/* ---------- publications list ---------- */
.pubbar{position:sticky;top:64px;z-index:20;background:var(--paper);border-bottom:1px solid var(--line);padding:14px 0}
.pubbar .wrap{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.pubbar input{flex:1;min-width:220px;padding:10px 15px;border:1px solid var(--line);border-radius:999px;font-size:14px;background:var(--paper);color:var(--ink)}
.yearchips{display:flex;gap:6px;flex-wrap:wrap}
.yearchips a{font-size:13px;padding:5px 11px;border-radius:999px;background:var(--mist);color:var(--ink);border:1px solid var(--line)}
.yearchips a:hover{background:#efe7ff;text-decoration:none}
.yeargroup{padding:24px 0;border-bottom:1px solid var(--line)}
.yeargroup h2{font-size:28px;display:flex;align-items:baseline;gap:12px;scroll-margin-top:130px}
.yeargroup h2 .c{font-family:var(--sans);font-size:13px;color:var(--muted);font-weight:600}
.pub{display:flex;gap:16px;padding:14px 0;border-bottom:1px dashed var(--line)}
.pub:last-child{border-bottom:none}
.pub .pthumb{flex:none;width:88px;height:88px;border-radius:10px;object-fit:cover;background:var(--mist);border:1px solid var(--line)}
.pub .pthumb.ph{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:26px;color:var(--indigo-lt);background:linear-gradient(150deg,var(--mist),#eae8fb)}
.pub .meta{min-width:0}
.pub .t{font-weight:600;color:var(--ink)}
.pub .teaser{font-size:13.5px;color:var(--body);margin-top:4px;max-width:70ch}
.pub .m{font-size:13px;color:var(--muted);margin-top:3px}
.pub .au{color:var(--gold-2);font-weight:600}
.pub .more{color:var(--muted);font-style:italic}
@media(max-width:560px){.pub .pthumb{width:64px;height:64px}}

/* ---------- people ---------- */
.pi{display:flex;gap:24px;align-items:flex-start;background:var(--mist);border:1px solid var(--line);border-radius:16px;padding:24px}
.pi .avatar{width:132px;height:132px;border-radius:50%;object-fit:cover;flex:none;border:3px solid var(--gold-lt);background:var(--paper)}
.pi .nm{font-family:var(--serif);font-size:23px;color:var(--ink);font-weight:600}
.pi .role{color:var(--gold-2);font-weight:600;font-size:14px;margin:3px 0 8px}
@media(max-width:560px){.pi{flex-direction:column;align-items:center;text-align:center}}
/* avatar-card grid for current members */
.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px 18px;margin-top:8px}
@media(max-width:820px){.pgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.pgrid{grid-template-columns:repeat(2,1fr)}}
.pcard{text-align:center}
.pcard .ph{width:108px;height:108px;border-radius:50%;object-fit:cover;margin:0 auto;display:block;border:3px solid var(--gold-lt);background:var(--mist)}
.pcard .ph.mono{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:34px;color:#fff;background:linear-gradient(150deg,var(--indigo),var(--navy-2));border-color:var(--indigo-lt)}
.pcard .n{font-family:var(--serif);font-weight:600;color:var(--ink);margin-top:12px;font-size:16px}
.pcard .r{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4}
.rostergrp{margin-top:30px}
.rostergrp h2{font-size:22px;display:flex;align-items:center;gap:10px}
.roster{display:grid;grid-template-columns:repeat(3,1fr);gap:0 28px;margin-top:6px}
@media(max-width:900px){.roster{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.roster{grid-template-columns:1fr}}
.rperson{padding:9px 0;border-bottom:1px solid var(--line)}
.rperson .rn{font-weight:600;color:var(--ink);font-size:15px}
.rperson .rm{font-size:12.5px;color:var(--muted);margin-top:1px;line-height:1.4}
details.group{border-top:1px solid var(--line);margin-top:26px}
details.group>summary{cursor:pointer;list-style:none;font-family:var(--serif);font-size:21px;color:var(--ink);font-weight:600;padding:16px 2px;display:flex;align-items:center;gap:11px}
details.group>summary::-webkit-details-marker{display:none}
details.group>summary::before{content:"▸";color:var(--indigo);font-size:14px;transition:.2s}
details.group[open]>summary::before{transform:rotate(90deg)}
.cnt{font-family:var(--sans);font-size:12.5px;font-weight:700;color:var(--indigo-2);background:#eae8fb;border:1px solid var(--line);border-radius:999px;padding:2px 10px}

/* ---------- art ---------- */
.art-item{padding:30px 0;border-bottom:1px solid var(--line)}
.art-item h3{font-size:22px}
.art-item h3 .yr{font-family:var(--sans);font-size:13px;color:var(--muted);font-weight:400;margin-left:8px}
.art-item p{font-size:15.5px;max-width:75ch}
.art-item .art-img{display:block;max-width:720px;width:100%;border-radius:12px;border:1px solid var(--line);margin:16px 0 4px}
.art-item .ref{font-size:12.5px;color:var(--muted);margin-top:10px;max-width:75ch}
.embed{position:relative;width:100%;max-width:720px;aspect-ratio:16/9;margin:16px 0 4px;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#000}
.embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* video card (home page grid) */
.vidcard{padding:0;overflow:hidden;display:flex;flex-direction:column}
.vidcard .embed{margin:0;max-width:none;border:0;border-radius:0;border-bottom:1px solid var(--line)}
.vidcard .body{padding:15px 17px}
.vidcard h3{font-size:15px;line-height:1.3;margin:0}
.vidcard .m{font-size:12.5px;color:var(--muted);margin-top:6px}

/* ---------- footer ---------- */
footer.site{background:var(--navy-3);color:#b9c1d8;padding:44px 0 40px;margin-top:20px;font-size:14px}
footer.site .wrap{display:flex;gap:26px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start}
footer.site a{color:#dbe0f2}
footer.site .brand{color:#fff;font-size:17px}
footer.site small{color:#8590ab;font-size:12.5px}

@keyframes float1{0%,100%{transform:translate(0,0)}50%{transform:translate(-30px,26px)}}
@keyframes float2{0%,100%{transform:translate(0,0)}50%{transform:translate(28px,-22px)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:720px){
  .nav nav{display:none;position:absolute;top:64px;left:0;right:0;flex-direction:column;background:var(--navy);padding:10px 24px 18px;gap:2px}
  .nav nav.open{display:flex}
  .navtoggle{display:block;margin-left:auto;background:none;border:0;color:#fff;font-size:24px;cursor:pointer}
}
