/* ===== design tokens ===== */
:root{
  --navy:#0F1B33; --navy-deep:#0A1226; --paper:#FFFFFF; --rose:#F48FB1; --rose-deep:#C44A78;
  --rose-soft:#FBD9E4; --lav:#CBB6E5; --butter:#FBE3A2; --mint:#B8E0D0;
  --blue:#8FC3E8; --blue-deep:#2B6CB0;
  --ink:#1E2433; --ink-soft:#5B6577; --dot:#EDEFF4;
}
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; overflow-x:hidden; }
body{
  margin:0; font-family:'Nunito', system-ui, sans-serif; color:var(--ink);
  background-color:#FFFFFF;
  background-image:
    radial-gradient(58% 48% at 10% 6%, rgba(120,190,235,0.62) 0%, rgba(120,190,235,0) 74%),
    radial-gradient(52% 44% at 92% 4%, rgba(205,185,235,0.48) 0%, rgba(205,185,235,0) 74%),
    radial-gradient(68% 52% at 12% 102%, rgba(140,200,230,0.45) 0%, rgba(140,200,230,0) 74%),
    linear-gradient(#FFFFFF, #FFFFFF);
  background-attachment:fixed;
  line-height:1.65; -webkit-font-smoothing:antialiased;
}
.wrap{ max-width:880px; margin:0 auto; padding:0 24px 56px; position:relative; z-index:2; }
@media (min-width:1200px){ .wrap{ max-width:980px; } .topnav-inner{ max-width:980px; } }

/* ===== nav ===== */
.topnav{
  position:sticky; top:0; z-index:20; display:flex; justify-content:center;
  background:var(--navy); border-bottom:1px solid rgba(255,255,255,0.08);
}
.topnav-inner{ width:100%; max-width:880px; padding:24px 24px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.brand-mark{ display:inline-flex; align-items:baseline; font-family:'Fraunces', serif; font-weight:700; line-height:1; text-decoration:none; flex:0 0 auto; }
.brand-mark .bm-l, .brand-mark .bm-p{ font-size:27px; color:#fff; letter-spacing:-1px; text-shadow:0 0 16px rgba(255,255,255,0.6), 0 2px 8px rgba(0,0,0,0.45); transition:text-shadow .2s ease; }
.brand-mark .bm-p{ margin-left:2px; }
.brand-mark:hover .bm-l, .brand-mark:hover .bm-p{ text-shadow:0 0 22px rgba(255,255,255,0.9), 0 2px 8px rgba(0,0,0,0.45); }
.navlinks{ display:flex; gap:26px; }
.navlinks a{ color:rgba(255,255,255,0.82); text-decoration:none; font-weight:700; font-size:13.5px; letter-spacing:0.3px; text-transform:uppercase; transition:color .18s ease; }
.navlinks a:hover{ color:#fff; }
@media (max-width:560px){ .navlinks{ gap:14px; } .navlinks a{ font-size:11px; } .topnav-inner{ padding:12px 16px; } }

/* ===== hero ===== */
.hero{
  position:relative; width:100vw; margin-left:calc(50% - 50vw);
  min-height:400px; display:flex; align-items:center; justify-content:center;
  padding:76px 24px 56px; text-align:center; box-sizing:border-box;
  background:
    radial-gradient(120% 140% at 50% 0%, rgba(10,18,36,0.15) 0%, rgba(6,12,26,0.72) 65%, rgba(6,12,26,0.88) 100%),
    url('images/hero-banner-3.png');
  background-size:cover; background-position:center; background-repeat:no-repeat;
}
.hero-body{ position:relative; z-index:1; max-width:90vw; margin:0 auto; }
.name{ font-family:'Fraunces', serif; font-weight:700; font-size:clamp(26px, 6.4vw, 76px); line-height:1.02; margin:0; letter-spacing:0.5px; color:#fff; text-transform:uppercase; text-align:center; text-shadow:0 4px 30px rgba(0,0,0,0.35); white-space:nowrap; }
.name .dot-accent{ color:var(--rose); }
.tagline{ margin:20px auto 0; max-width:640px; font-weight:700; font-size:15.5px; letter-spacing:0.5px; color:rgba(255,255,255,0.82); text-transform:uppercase; }
.tagline .sep{ color:var(--rose); font-weight:400; margin:0 10px; }
@media (max-width:640px){ .hero{ min-height:340px; padding:68px 20px 44px; } .tagline{ font-size:12px; letter-spacing:0.3px; } .tagline .sep{ margin:0 6px; } }
.intro{ max-width:600px; margin:16px auto 0; text-align:center; font-size:17px; }
.intro .u{ text-decoration-line:underline; text-decoration-thickness:3px; text-underline-offset:4px; text-decoration-skip-ink:none; font-weight:600; }
.u-mint{ text-decoration-color:#7FD0AE; } .u-rose{ text-decoration-color:#F49CBE; } .u-lav{ text-decoration-color:#B79CE6; } .u-butter{ text-decoration-color:#EFC24F; }

.hero-socials{ display:flex; justify-content:center; gap:11px; margin-top:26px; position:relative; z-index:1; }
.hero-socials a{ display:grid; place-items:center; width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,0.12); border:1.5px solid rgba(255,255,255,0.4); color:#fff; backdrop-filter:blur(6px); transition:transform .18s ease, background .18s ease, color .18s ease; text-decoration:none; }
.hero-socials a svg{ width:18px; height:18px; }
.hero-socials a:hover{ transform:translateY(-3px) scale(1.05); background:#fff; color:var(--navy); border-color:#fff; }

/* ===== sections ===== */
.section{ position:relative; margin-top:80px; }
.panel{ background:#FFFFFF; border:1px solid #EDEFF4; border-radius:20px; padding:36px 30px 32px; box-shadow:0 12px 32px rgba(15,27,51,0.06); }
@media (max-width:640px){ .panel{ padding:28px 16px 24px; border-radius:16px; } }

.section-head{ display:flex; align-items:center; justify-content:center; text-align:center; flex-direction:column; gap:12px; margin-bottom:26px; }
.section-title{ font-family:'Fraunces', serif; font-weight:600; font-size:40px; margin:0; letter-spacing:-0.5px; }
.section-title.ul{ text-decoration-line:underline; text-decoration-thickness:4px; text-underline-offset:8px; text-decoration-skip-ink:none; }
.ul-rose, .ul-mint, .ul-lav, .ul-butter, .ul-sky{ text-decoration-color:var(--blue); }

/* ===== hero highlight gallery ===== */
.hero-gallery{ margin-top:40px; }
.gallery-carousel{ position:relative; width:100vw; margin-left:calc(50% - 50vw); }
.gallery-track{ display:flex; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; padding:6px 24px 10px 24px; scrollbar-width:none; -ms-overflow-style:none; }
.gallery-track::-webkit-scrollbar{ display:none; }
.gallery-item{ flex:0 0 auto; width:270px; height:360px; border-radius:0; overflow:hidden; border:4px solid #fff; padding:0; cursor:pointer; scroll-snap-align:start; box-shadow:0 0 0 1.5px var(--blue), 0 14px 30px rgba(15,27,51,0.12); transition:transform .18s ease; }
.gallery-item:hover{ transform:translateY(-4px) scale(1.02); }
.gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; }
@media (max-width:560px){ .gallery-item{ width:210px; height:280px; } }

/* ===== experience carousel ===== */
.exp-nav{ display:flex; gap:16px; justify-content:flex-end; margin:-8px 0 10px; }
.exp-arrow{ border:none; padding:0; cursor:pointer; transition:transform .18s ease; width:52px; height:52px; border-radius:12px; display:grid; place-items:center; background:var(--navy); color:#fff; box-shadow:0 8px 18px rgba(15,27,51,0.28); }
.exp-arrow svg{ width:22px; height:22px; }
.exp-arrow:hover{ transform:scale(1.08) translateY(-2px); }
.exp-arrow:active{ transform:scale(0.96); }
.exp-carousel{ position:relative; margin-top:6px; width:100vw; margin-left:calc(50% - 50vw); }
.exp-track{ display:flex; align-items:stretch; gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; padding:10px 24px 20px; scroll-padding-left:24px; scrollbar-width:none; -ms-overflow-style:none; }
.exp-track::-webkit-scrollbar{ display:none; }
.exp-track .entry{ display:flex; flex-direction:column; flex:0 0 460px; width:460px; min-width:0; max-width:86vw; scroll-snap-align:start; border:1px solid #EDEFF4; border-radius:26px; background:#FFFFFF; padding:32px 30px; box-shadow:0 16px 34px rgba(15,27,51,0.08); }
@media (max-width:560px){ .exp-track .entry{ flex-basis:88vw; padding:26px 22px; } .exp-arrow{ width:46px; height:46px; } .exp-arrow svg{ width:18px; height:18px; } }

.entry-head{ display:flex; align-items:flex-start; gap:14px; }
.entry-head-text{ flex:1 1 auto; min-width:0; }
.logo{ flex:0 0 auto; width:60px; height:60px; border-radius:14px; background:#fff; border:1.5px solid #E5E9F0; color:var(--navy); display:grid; place-items:center; font-size:13px; font-weight:800; letter-spacing:0.2px; overflow:hidden; }
.logo img{ width:92%; height:92%; object-fit:contain; display:block; }
.logo-fill img{ width:var(--fill, 118%); height:var(--fill, 118%); object-fit:cover; }
.entry-role{ font-weight:800; font-size:18.5px; }
.entry-org{ font-size:14.5px; color:var(--ink-soft); font-weight:600; margin-top:3px; }
.org-link{ color:var(--rose-deep); font-weight:700; text-decoration:underline; text-decoration-color:var(--rose-soft); text-underline-offset:2px; }
.entry-meta{ font-weight:600; font-size:13px; letter-spacing:0.2px; color:var(--ink-soft); margin-top:5px; }
.entry-desc{ margin-top:14px; font-size:15px; }
.entry a{ color:var(--rose-deep); text-decoration:none; border-bottom:2px solid var(--rose-soft); }
.entry a:hover{ border-color:var(--rose); }
.bullets{ margin:12px 0 0; padding:0; list-style:none; }
.bullets li{ position:relative; padding-left:18px; margin-top:8px; font-size:14.5px; }
.bullets li:before{ content:""; position:absolute; left:2px; top:9px; width:6px; height:6px; border-radius:50%; background:var(--rose); }
.bullets.clamped{ max-height:130px; overflow:hidden; position:relative; }
.bullets.clamped::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:40px; background:linear-gradient(180deg, rgba(255,255,255,0), #FFFFFF 88%); pointer-events:none; }
.see-more-btn{ display:inline-flex; align-items:center; gap:3px; margin-top:8px; padding:0; border:none; background:none; color:#D6608A; font:inherit; font-size:13px; font-weight:700; cursor:pointer; text-decoration:underline; text-decoration-color:#F3B7CC; text-underline-offset:3px; }
.see-more-btn:hover{ color:#B84A72; }
.see-more-btn .chev{ display:inline-block; transition:transform .2s ease; }
.see-more-btn[aria-expanded="true"] .chev{ transform:rotate(180deg); }
.entry-photos{ display:flex; gap:10px; flex-wrap:wrap; margin-top:16px; }
.thumb{ position:relative; width:92px; height:92px; padding:0; border:1px solid #E5E9F0; border-radius:14px; overflow:hidden; cursor:pointer; transition:transform .15s ease; display:block; background:none; flex:0 0 auto; }
.thumb:hover{ transform:scale(1.05); }
.thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
@media (max-width:560px){ .thumb{ width:72px; height:72px; } }
.entry-links{ font-family:'Nunito', system-ui, sans-serif; font-weight:700; font-size:14px; margin-top:14px; }
.entry-links a{ display:inline-flex; align-items:center; gap:6px; }

/* ===== education ===== */
.edu-card{ padding:0 2px; }
.edu-header{ display:flex; align-items:center; gap:14px; }
.edu-logo{ width:52px; height:52px; object-fit:contain; border-radius:10px; box-shadow:0 0 0 1.5px #E5E9F0; flex:0 0 auto; }
.edu-card h3{ font-family:'Fraunces',serif; font-weight:700; font-size:30px; margin:0; }
.edu-meta{ font-weight:800; font-size:16px; color:var(--navy); margin-top:6px; }
.edu-card ul{ margin:16px 0 0; padding:0; list-style:none; }
.edu-card ul li{ position:relative; padding-left:18px; margin-top:9px; font-size:15px; }
.edu-card ul li:before{ content:""; position:absolute; left:2px; top:9px; width:6px; height:6px; border-radius:50%; background:var(--blue-deep); }
.edu-activities-label{ font-weight:800; font-size:12.5px; letter-spacing:0.5px; text-transform:uppercase; color:var(--ink-soft); margin:20px 0 0; }
.edu-photos{ justify-content:center; }
.edu-photos .thumb{ width:140px; height:140px; }
@media (max-width:560px){ .edu-photos .thumb{ width:100px; height:100px; } }

/* ===== honors ===== */
.honors-list{ display:flex; flex-direction:column; gap:14px; }
.honor-cat-title{ font-family:'Fraunces', serif; font-weight:700; font-size:21px; color:var(--navy); margin:38px 0 4px; text-align:left; }
.honors-list .honor-cat-title:first-child{ margin-top:6px; }
.honor-card{ border:1px solid #EDEFF4; border-radius:18px; background:#fff; padding:18px 20px; box-shadow:0 8px 20px rgba(15,27,51,0.05); }
.honor-main{ display:flex; align-items:center; gap:14px; }
.honor-logo{ width:46px; height:46px; font-size:11px; }
.honor-text{ flex:1 1 auto; min-width:0; }
.honor-name{ font-weight:800; font-size:15.5px; }
.honor-org{ font-size:13.5px; color:var(--ink-soft); margin-top:2px; }
.honor-year{ font-weight:700; font-size:13px; color:var(--rose-deep); white-space:nowrap; flex:0 0 auto; }
.honor-photos{ margin-top:14px; }
.honor-photos .thumb{ width:64px; height:64px; }
@media (max-width:560px){ .honor-main{ flex-wrap:wrap; } .honor-year{ order:1; margin-left:60px; } }

/* ===== press ===== */
.press-cols{ display:flex; gap:30px; align-items:flex-start; margin-top:26px; }
.press-col{ flex:1 1 0; min-width:0; }
.press-col h3{ font-family:'Fraunces',serif; font-size:16px; margin:0 0 6px; }
.press-list{ margin:0; display:flex; flex-direction:column; gap:2px; }
.press-item{ display:flex; align-items:baseline; gap:8px; padding:8px 4px; border-bottom:1px solid #EDEFF4; font-size:14px; }
.press-col .press-item:last-child{ border-bottom:none; }
.press-item .pdot{ color:var(--blue-deep); flex:0 0 auto; font-size:11px; }
.press-item a{ color:var(--blue-deep); font-weight:700; text-decoration:none; border-bottom:1.5px solid var(--blue); }
.press-item a:hover{ border-color:var(--blue-deep); }
@media (max-width:640px){ .press-cols{ flex-direction:column; gap:0; } }
.press-photos{ display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-top:32px; }
.press-photos .thumb{ width:140px; height:140px; }
@media (max-width:560px){ .press-photos .thumb{ width:100px; height:100px; } }

/* ===== connect + footer ===== */
.connect{ text-align:center; margin-top:72px; }
.connect-title{ font-family:'Fraunces', serif; font-weight:600; font-size:26px; color:var(--navy); margin:0 0 10px; letter-spacing:-0.3px; }
.connect-line{ color:var(--ink); opacity:0.8; max-width:470px; margin:0 auto 16px; line-height:1.55; }
.email-sym{ font-family:'Crafty Girls', cursive; color:var(--rose); font-size:1.3em; padding:0 3px; }
.socials{ display:flex; justify-content:center; gap:14px; margin-top:24px; }
.socials a{ display:grid; place-items:center; width:48px; height:48px; border-radius:50%; background:var(--paper); border:2px solid #E5E9F0; color:var(--navy); transition:transform .18s ease, background .18s ease, color .18s ease; text-decoration:none; }
.socials a svg{ width:20px; height:20px; }
.socials a:hover{ transform:translateY(-3px) scale(1.05); background:var(--navy); color:#fff; border-color:var(--navy); }
.copyright{ text-align:center; margin-top:30px; font-family:'Nunito', system-ui, sans-serif; font-weight:600; font-size:13px; color:var(--ink-soft); }

/* ===== lightbox ===== */
.lb{ position:fixed; inset:0; z-index:100; display:none; align-items:center; justify-content:center; background:rgba(10,18,38,0.85); backdrop-filter:blur(4px); padding:24px; }
.lb.open{ display:flex; }
.lb-content img{ max-width:92vw; max-height:86vh; border-radius:12px; display:block; box-shadow:0 20px 60px rgba(0,0,0,0.45); }
.lb-close{ position:absolute; top:18px; right:22px; width:42px; height:42px; border-radius:50%; border:none; background:rgba(255,255,255,0.92); color:var(--ink); font-size:22px; line-height:1; cursor:pointer; }
.lb-close:hover{ background:#fff; }
.lb-nav{ position:absolute; top:50%; transform:translateY(-50%); width:46px; height:46px; border:none; border-radius:50%; background:rgba(255,255,255,0.92); color:var(--ink); font-size:22px; cursor:pointer; display:grid; place-items:center; }
.lb-prev{ left:16px; } .lb-next{ right:16px; }
.lb-nav:hover{ background:#fff; }

/* ===== reveal on scroll ===== */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ *{ animation:none !important; transition:none !important; } .reveal{ opacity:1; transform:none; } html{ scroll-behavior:auto; } }
