/* ===== Portfolio update: Home intro, PhD announcement, photo highlights, Members ===== */
.home-intro{padding:0 0 3rem}
.home-wrap{max-width:80rem;margin:0 auto;padding:2.5rem 1rem 0}
@media(min-width:640px){.home-wrap{padding:3rem 1.5rem 0}}
@media(min-width:1024px){.home-wrap{padding:3.5rem 2rem 0}}

/* announcement bar */
.ann-bar{background:linear-gradient(100deg,#4c1d95,#7c3aed 55%,#be185d);color:#fff;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.18)}
.ann-track{display:flex;width:max-content;animation:annScroll 28s linear infinite}
.ann-bar:hover .ann-track,.ann-bar:focus-within .ann-track{animation-play-state:paused}
.ann-item{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;padding:.6rem 3rem;font-size:.9rem;font-weight:600;letter-spacing:.01em}
.ann-apply{display:inline-block;margin-left:.35rem;padding:.2rem .8rem;border-radius:999px;background:#fff;color:#5b21b6;font-weight:700;text-decoration:none;box-shadow:0 2px 8px rgba(0,0,0,.18);transition:transform .15s,background .15s}
.ann-apply:hover{background:#f5f3ff;transform:translateY(-1px)}
.ann-apply:focus-visible{outline:3px solid #fde68a;outline-offset:2px}
@keyframes annScroll{to{transform:translateX(-16.6667%)}}
@media(prefers-reduced-motion:reduce){
  .ann-track{animation:none!important;width:100%;justify-content:center}
  .ann-item[aria-hidden="true"]{display:none}
  .ann-item{white-space:normal;flex-wrap:wrap;justify-content:center;text-align:center;padding:.6rem 1rem}
}

/* intro */
.home-lead{max-width:56rem}
.home-eyebrow{display:inline-block;padding:.35rem .9rem;border-radius:999px;background:#ede9fe;border:1px solid #ddd6fe;color:#5b21b6;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.home-title{margin:1rem 0 1.25rem;font-size:clamp(1.9rem,4.6vw,3.1rem);line-height:1.15;font-weight:800;letter-spacing:-.02em;color:#1e1b4b;
  background-image:linear-gradient(100deg,#4c1d95,#7c3aed 40%,#db2777 75%,#0284c7);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.home-p{color:#475569;font-size:1.02rem;line-height:1.75;margin:0 0 1rem}
.home-block{margin-top:2.75rem}
.home-h2{font-size:1.6rem;font-weight:800;letter-spacing:-.01em;margin:0 0 1.4rem}

/* key research interests */
.ri-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:.75rem}
@media(min-width:700px){.ri-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.ri-grid{grid-template-columns:repeat(3,1fr)}}
.ri-item{display:flex;align-items:flex-start;gap:.8rem;padding:.9rem 1rem;border-radius:1rem;background:#fff;border:1px solid #e2e8f0;box-shadow:0 1px 2px rgba(15,23,42,.04);color:#1e293b;font-weight:600;font-size:.95rem;line-height:1.4;transition:border-color .2s,box-shadow .2s}
.ri-item:hover{border-color:#c4b5fd;box-shadow:0 6px 18px -8px rgba(124,58,237,.35)}
.ri-num{flex:none;min-width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border-radius:.6rem;background:#ede9fe;color:#6d28d9;font:600 .75rem "JetBrains Mono",monospace}

/* photo highlights */
.ph-grid{display:grid;grid-template-columns:1fr;gap:1.25rem}
@media(min-width:768px){.ph-grid{grid-template-columns:1fr 1fr;gap:1.5rem}}
.ph-fig{margin:0;border-radius:1.1rem;overflow:hidden;border:1px solid #e2e8f0;background:#e2e8f0;box-shadow:0 10px 30px -14px rgba(30,27,75,.35)}
.ph-img{display:block;width:100%;height:auto;aspect-ratio:6/5;object-fit:cover}

/* members */
.mem-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1.5rem;justify-content:center}
.mem-card{background:#fff;border:1px solid #e2e8f0;border-radius:1.5rem;padding:1rem 1rem 1.4rem;text-align:center;box-shadow:0 1px 3px rgba(15,23,42,.05);transition:transform .2s,box-shadow .2s,border-color .2s}
.mem-card:hover{transform:translateY(-3px);border-color:#c4b5fd;box-shadow:0 14px 30px -14px rgba(124,58,237,.4)}
.mem-photo{aspect-ratio:1;border-radius:1rem;overflow:hidden;background:#fff;border:1px solid #f1f5f9}
.mem-photo img{display:block;width:100%;height:100%;object-fit:contain}
.mem-name{margin:1rem 0 0;font-size:1.15rem;font-weight:700;color:#0f172a}
@media(max-width:480px){.mem-grid{grid-template-columns:minmax(0,18rem)}}

/* dark theme */
html[data-theme="dark"] .home-eyebrow{background:rgba(139,92,246,.18);border-color:rgba(165,180,252,.3);color:#c4b5fd}
html[data-theme="dark"] .home-title{background-image:linear-gradient(100deg,#c4b5fd,#f472b6 55%,#22d3ee)}
html[data-theme="dark"] .home-p{color:#cbd5f5}
html[data-theme="dark"] .ri-item,html[data-theme="dark"] .mem-card{background:rgba(18,22,48,.62);border-color:rgba(165,180,252,.16);color:#e2e8ff}
html[data-theme="dark"] .ri-num{background:rgba(139,92,246,.22);color:#c4b5fd}
html[data-theme="dark"] .ph-fig{border-color:rgba(165,180,252,.2);box-shadow:0 12px 34px -14px rgba(0,0,0,.7)}
html[data-theme="dark"] .mem-name{color:#f1f5ff}
html[data-theme="dark"] .mem-photo{border-color:rgba(165,180,252,.16)}

/* ===== Home hero: two-column layout + "Research Focus" ecosystem panel ===== */
.home-top{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.home-top .home-lead{max-width:none}
.rf-panel{margin-top:2.25rem;position:relative;border-radius:1.5rem;padding:1.1rem 1.1rem 1.25rem;border:1px solid #e4dcf8;
  background:radial-gradient(120% 80% at 50% 45%,rgba(167,139,250,.14),transparent 62%),linear-gradient(160deg,#faf7ff,#fff 48%,#f1f8ff);
  box-shadow:0 18px 40px -22px rgba(76,29,149,.35),0 1px 2px rgba(15,23,42,.04)}
.rf-head{display:flex;align-items:center;gap:.8rem;margin:0 .25rem 1rem}
.rf-title{margin:0;font-size:.74rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#5b21b6;white-space:nowrap}
.rf-rule{flex:1;height:1px;background:linear-gradient(90deg,#c4b5fd,rgba(244,114,182,.45),rgba(56,189,248,.0))}
.rf-stage{position:relative;width:100%;max-width:30rem;margin:0 auto;aspect-ratio:100/110;container-type:inline-size}
.rf-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.rf-orbit{fill:none;stroke:#c4b5fd;stroke-width:.25;stroke-dasharray:.8 1.6;opacity:.7}
.rf-orbit2{opacity:.4}
.rf-link{fill:none;stroke:url(#rfg);stroke-width:.6;stroke-linecap:round;stroke-dasharray:1.6 1.6;opacity:1;animation:rfFlow 40s linear infinite}
@keyframes rfFlow{to{stroke-dashoffset:-60}}

.rf-core{position:absolute;left:50%;top:50%;width:38%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;padding:4%;
  background:linear-gradient(135deg,#a78bfa,#f472b6 55%,#38bdf8);box-shadow:0 14px 34px -10px rgba(109,40,217,.55);z-index:2}
.rf-halo{position:absolute;inset:-14%;border-radius:50%;background:radial-gradient(circle,rgba(167,139,250,.45),rgba(244,114,182,.16) 55%,transparent 72%);z-index:-1;animation:rfPulse 6s ease-in-out infinite}
@keyframes rfPulse{0%,100%{transform:scale(.96);opacity:.7}50%{transform:scale(1.06);opacity:1}}
.rf-core-in{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;text-align:center;
  background:radial-gradient(circle at 30% 25%,#8b5cf6,#5b21b6 62%,#3b0f8c);box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),inset 0 -10px 24px rgba(30,10,80,.35)}
.rf-core-t{display:flex;flex-direction:column;gap:.12em;color:#fff;font-weight:800;letter-spacing:.05em;line-height:1.18;font-size:clamp(.7rem,3.2cqw,.92rem)}
.rf-core-tag{position:absolute;left:50%;bottom:-.7rem;transform:translateX(-50%);white-space:nowrap;padding:.22rem .65rem;border-radius:999px;background:#fff;border:1px solid #ddd6fe;
  color:#6d28d9;font-size:.64rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;box-shadow:0 4px 12px -4px rgba(91,33,182,.35)}

.rf-nodes{list-style:none;margin:0;padding:0}
.rf-node{position:absolute;left:var(--x);top:var(--y);width:34%;transform:translate(-50%,-50%);z-index:3}
.rf-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;text-align:center;padding:.65rem .35rem .7rem;min-height:5.3rem;justify-content:center;border-radius:1rem;background:rgba(255,255,255,.94);
  border:1px solid #e4dcf8;box-shadow:0 8px 22px -12px rgba(76,29,149,.35);animation:rfFloat 8s ease-in-out infinite;animation-delay:var(--d,0s);
  transition:border-color .25s,box-shadow .25s,background .25s}
@keyframes rfFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.rf-ico{display:inline-flex;align-items:center;justify-content:center;width:2.15rem;height:2.15rem;border-radius:.7rem;color:var(--a,#6d28d9);
  background:#f3eeff;background:color-mix(in srgb,var(--a,#6d28d9) 11%,#fff);border:1px solid #e9e1fb;border:1px solid color-mix(in srgb,var(--a,#6d28d9) 22%,#fff);transition:transform .25s}
.rf-ic{width:1.2rem;height:1.2rem}
.rf-label{font-size:clamp(.7rem,2.8cqw,.84rem);font-weight:650;line-height:1.25;color:#1e1b4b;text-wrap:balance;overflow-wrap:break-word;hyphens:manual}
.rf-card:hover{border-color:#a78bfa;box-shadow:0 14px 28px -12px rgba(124,58,237,.5),0 0 0 3px rgba(167,139,250,.16)}
.rf-card:hover .rf-ico{transform:scale(1.08)}

@media(min-width:1200px){
  .home-top{grid-template-columns:minmax(0,3fr) minmax(0,2fr);column-gap:2.75rem;grid-template-areas:"lead focus" "interests focus";grid-template-rows:auto 1fr}
  .home-top .home-lead{grid-area:lead}
  .home-top .home-interests{grid-area:interests}
  .home-top .rf-panel{grid-area:focus;align-self:start}
  .home-top .ri-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1500px){.home-top .ri-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1199px){.rf-panel{margin-top:1.75rem}}

/* small screens: nodes reflow into a clean 2-column grid under the core */
@media(max-width:559px){
  .rf-panel{padding:1rem .85rem 1.1rem}
  .rf-stage{aspect-ratio:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;container-type:normal}
  .rf-lines{display:none}
  .rf-core{position:relative;left:auto;top:auto;transform:none;grid-column:1/-1;width:min(64%,13rem);justify-self:center;margin-bottom:1.1rem}
  .rf-core-t{font-size:clamp(.85rem,4.4vw,1.05rem)}
  .rf-nodes{display:contents}
  .rf-node{position:static;transform:none;width:auto;display:flex}
  .rf-card{width:100%;flex-direction:row;text-align:left;gap:.55rem;padding:.6rem .6rem;animation:none}
  .rf-label{font-size:.82rem}
  .rf-ico{flex:none}
}
@media(max-width:340px){.rf-stage{grid-template-columns:minmax(0,1fr)}}

@media(prefers-reduced-motion:reduce){.rf-link,.rf-halo,.rf-card{animation:none!important}.rf-card,.rf-ico{transition:none}}

/* dark theme */
html[data-theme="dark"] .rf-panel{border-color:rgba(165,180,252,.2);background:radial-gradient(120% 80% at 50% 45%,rgba(139,92,246,.2),transparent 62%),rgba(18,22,48,.55);box-shadow:0 18px 40px -22px rgba(0,0,0,.7)}
html[data-theme="dark"] .rf-title{color:#c4b5fd}
html[data-theme="dark"] .rf-card{background:rgba(24,28,62,.85);border-color:rgba(165,180,252,.2);box-shadow:0 8px 22px -12px rgba(0,0,0,.7)}
html[data-theme="dark"] .rf-card:hover{border-color:#a78bfa;box-shadow:0 14px 28px -12px rgba(139,92,246,.55),0 0 0 3px rgba(167,139,250,.18)}
html[data-theme="dark"] .rf-label{color:#e2e8ff}
html[data-theme="dark"] .rf-ico{background:rgba(139,92,246,.2);border-color:rgba(165,180,252,.25);color:#c4b5fd}
html[data-theme="dark"] .rf-core-tag{background:#1b1f45;border-color:rgba(165,180,252,.35);color:#c4b5fd}
html[data-theme="dark"] .rf-orbit{stroke:#8b8fe8}

/* ===== Members (PH.D / B.TECH) + Startup (Nova Defix team) ===== */
.mem-group{margin:0 0 2.75rem}
.mem-group-h{margin:0 0 1.25rem;text-align:center;font-size:.95rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#6d28d9}
.mem-teams-h{margin:.6rem 0 0}
.mem-soon{margin:0 auto;max-width:22rem;padding:1.1rem 1.25rem;text-align:center;border:1px dashed #c4b5fd;border-radius:1.1rem;background:#faf7ff;color:#5b21b6;font-weight:600}
.mem-person{width:100%;max-width:18rem;margin:0 auto}
.mem-person.mem-card,.mem-group .mem-grid{justify-content:center}
.mem-group .mem-grid{grid-template-columns:minmax(0,18rem)}
.mem-photo-portrait{aspect-ratio:4/5;background:#e2e8f0}
.mem-photo-portrait img{object-fit:cover;object-position:50% 12%}
.mem-role{margin:.35rem 0 0;font-size:.9rem;font-weight:600;color:#6d28d9}
.mem-mail{display:inline-block;margin-top:.45rem;font-size:.82rem;color:#475569;word-break:break-all;text-decoration:none}
.mem-mail:hover{color:#6d28d9;text-decoration:underline}
#startup .mem-grid{grid-template-columns:minmax(0,15rem)}
.nova-logo-card{padding:0}
.nova-logo-btn{display:block;width:100%;padding:1rem 1rem 1.2rem;background:none;border:0;border-radius:1.5rem;cursor:pointer;font:inherit;color:inherit;text-align:center}
.nova-logo-btn:focus-visible{outline:3px solid #8b5cf6;outline-offset:2px}
.nova-logo-btn .mem-photo{display:block}
.nova-logo-btn .mem-name{display:block}
.nova-hint{display:block;margin-top:.35rem;font-size:.8rem;font-weight:600;color:#6d28d9}
.nova-team{margin-top:2.75rem;animation:novaIn .35s ease both}
@keyframes novaIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.nova-team{animation:none}}
.nova-team-h{margin:0 0 1.5rem;text-align:center;font-size:1.5rem;font-weight:800;color:#0f172a}
.nova-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:1.5rem}
@media(min-width:560px){.nova-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:900px){.nova-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.nova-grid>li{grid-column:span 2}.nova-grid>li:nth-child(4){grid-column:2/span 2}.nova-grid>li:nth-child(5){grid-column:4/span 2}}
@media(max-width:559px){.nova-grid>li{max-width:20rem;width:100%;margin:0 auto}}
@media(min-width:560px) and (max-width:899px){.nova-grid>li:last-child{grid-column:1/-1;justify-self:center;width:calc(50% - .75rem)}}
.nova-card{display:flex;flex-direction:column;height:100%}
.nova-card .mem-name{font-size:1.05rem}
.nova-proj{margin-top:.9rem;padding-top:.8rem;border-top:1px solid #eef2f7;text-align:left}
.nova-proj-h{display:block;margin-bottom:.35rem;font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#64748b}
.nova-proj ul{margin:0;padding:0;list-style:none}
.nova-proj li{position:relative;padding-left:1rem;margin:.2rem 0;font-size:.82rem;line-height:1.35;color:#334155}
.nova-proj li:before{content:"";position:absolute;left:0;top:.5em;width:.4rem;height:.4rem;border-radius:50%;background:#8b5cf6}
html[data-theme="dark"] .mem-group-h,html[data-theme="dark"] .mem-role,html[data-theme="dark"] .nova-hint{color:#c4b5fd}
html[data-theme="dark"] .mem-soon{background:rgba(139,92,246,.12);border-color:rgba(165,180,252,.35);color:#ddd6fe}
html[data-theme="dark"] .mem-mail{color:#cbd5f5}
html[data-theme="dark"] .nova-team-h{color:#f1f5ff}
html[data-theme="dark"] .nova-proj{border-color:rgba(165,180,252,.16)}
html[data-theme="dark"] .nova-proj-h{color:#a5b4fc}
html[data-theme="dark"] .nova-proj li{color:#dbe4ff}
html[data-theme="dark"] .mem-photo-portrait{background:rgba(18,22,48,.62)}

/* ---- Research & Outreach Highlights: continuous right-to-left marquee ---- */
.ph-marquee{overflow:hidden;width:100%;padding:.5rem 0 1rem;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.ph-track{display:flex;width:max-content;gap:1.25rem;padding-right:1.25rem;animation:ph-scroll 36s linear infinite;will-change:transform}
.ph-marquee:hover .ph-track{animation-play-state:paused}
.ph-slide{flex:0 0 auto;width:min(26rem,78vw)}
.ph-slide .ph-img{height:100%;aspect-ratio:4/3;object-fit:contain;background:#0f172a}
@keyframes ph-scroll{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
@media(min-width:768px){.ph-track{gap:1.5rem;padding-right:1.5rem}.ph-slide{width:22rem}}
@media(min-width:1100px){.ph-slide{width:26rem}}
@media(prefers-reduced-motion:reduce){.ph-track{animation-duration:120s}}

/* Desktop header: logo left, navigation centred (3-column grid keeps nav centred at any width) */
@media (min-width:1024px){
  header .hdr-centered{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}
  header .hdr-centered > nav{grid-column:2;justify-self:center}
  header .hdr-centered > button:first-child{grid-column:1;justify-self:start}
}
