/* Chu Lab — component styles layered on css/style.css.
   Tokens (--c-plum, --c-purple, --cat-*, surfaces) come from style.css. */

/* ── hero ─────────────────────────────────────────── */
.hero-banner{padding:44px 0 40px}
.hero-split{display:grid;grid-template-columns:1fr 300px;gap:52px;align-items:center}
.hero-eyebrow{font-size:.936rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--c-purple);margin-bottom:14px}
.hero-banner h1{font-size:clamp(1.85rem,3.1vw,2.65rem);font-weight:800;line-height:1.14;color:var(--text);margin-bottom:18px;letter-spacing:-.022em;text-wrap:pretty;max-width:805px}
.hero-lede{font-size:1.2rem;line-height:1.75;color:var(--text-2);margin-bottom:24px;max-width:760px;text-wrap:pretty}
.hero-ctas{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.hero-concept-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:26px}
.hero-concept-tags span{border:1px solid var(--border);border-radius:99px;padding:4px 13px;font-size:.9rem;font-weight:500;color:var(--text-2);background:var(--surface)}
.pub-stack-wrap{justify-self:end;width:100%;max-width:290px}
.pub-stack{position:relative;height:328px}
.pub-stack-card{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;text-decoration:none;box-shadow:0 14px 34px -20px rgba(40,22,66,.5);transform-origin:50% 92%;transform:translate3d(calc(var(--d)*11px),calc(var(--d)*-9px),0) rotate(calc((var(--d) - 1)*-2.2deg)) scale(calc(1 - var(--d)*.035));opacity:calc(1 - var(--d)*.16);transition:transform .55s cubic-bezier(.22,.72,.2,1),opacity .34s ease,box-shadow .3s ease}
.pub-stack-card.is-front{box-shadow:0 20px 42px -22px rgba(40,22,66,.55)}
.pub-stack-card.is-front:hover{box-shadow:0 26px 50px -20px rgba(40,22,66,.6)}
.pub-stack-card.is-flying{transform:translate3d(-62px,-24px,0) rotate(-13deg) scale(.97);opacity:0}
.pub-stack-img{flex:1;min-height:0;display:block;background:var(--surface-alt);border-bottom:1px solid var(--border)}
.pub-stack-img img{width:100%;height:100%;object-fit:contain;padding:9px;box-sizing:border-box}
.pub-stack-meta{display:flex;flex-direction:column;gap:5px;padding:12px 14px 14px}
.pub-stack-journal{font-size:.792rem;font-weight:700;letter-spacing:.075em;text-transform:uppercase;color:var(--c-purple)}
.pub-stack-title{font-size:.948rem;line-height:1.38;color:var(--text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pub-stack-hint{margin-top:16px;font-size:.9rem;text-align:right}
@media(prefers-reduced-motion:reduce){.pub-stack-card{transition:none}}
.hero-news{background:var(--surface-alt);border:1px solid var(--border);border-radius:18px;padding:20px 24px}
.hero-news-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:4px}
.hero-news-title{font-size:13.8px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--c-purple)}
.news-list-tight .news-item{padding:13px 0}
.news-list-tight .news-item:last-child{padding-bottom:0;border-bottom:none}
.news-list-tight .news-text{font-size:16.2px;line-height:1.62}

.page-sm{max-width:1200px}
.edu-head{display:grid;grid-template-columns:1fr 300px;gap:38px;align-items:start;margin-bottom:8px}
.edu-head .page-header{margin-bottom:0}
.speaking-fig img{max-height:340px;object-fit:cover;object-position:center 22%}
.award-fig img{width:100%;height:auto;display:block;border-radius:12px;border:1px solid var(--border)}
.award-fig figcaption{margin-top:10px;font-size:15.6px;line-height:1.55;color:var(--text-2)}
.award-fig .award-label{display:block;font-size:13.2px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--c-purple);margin-bottom:4px}
.award-fig figcaption strong{display:block;color:var(--text);font-weight:700}
@media(max-width:860px){.edu-head{grid-template-columns:1fr;gap:24px}.award-fig{max-width:340px}}

.vcp-section-title{margin-top:46px}

.media-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.media-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s,box-shadow .2s}
.media-card:hover{border-color:var(--c-purple);box-shadow:0 8px 26px rgba(0,0,0,.07)}
.media-thumb{position:relative;display:block;width:100%;aspect-ratio:16/9;padding:0;border:none;background:#0d0a14;cursor:pointer;overflow:hidden}
.media-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease,opacity .2s}
.media-thumb:hover img{transform:scale(1.04);opacity:.85}
.media-play{position:absolute;inset:0;margin:auto;width:56px;height:56px;border-radius:99px;background:rgba(255,255,255,.94);display:flex;align-items:center;justify-content:center;color:var(--c-purple);box-shadow:0 6px 20px rgba(0,0,0,.28);transition:transform .2s}
.media-play svg{width:26px;height:26px;margin-left:2px}
.media-thumb:hover .media-play{transform:scale(1.08)}
.media-thumb-audio{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--surface-2,#f4f1f8);border-bottom:1px solid var(--border)}
.media-audio-label{font-size:14.4px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-2)}
.media-thumb-audio .media-play{position:static;margin:0}
.media-card iframe{width:100%;aspect-ratio:16/9;border:0;display:block}
.media-body{padding:16px 18px 18px}
.media-kicker{display:flex;align-items:center;gap:8px;font-size:13.2px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:8px}
.media-kind{color:var(--c-purple);border:1px solid var(--border);border-radius:99px;padding:3px 8px;letter-spacing:.05em}
.media-title{font-size:19.2px;line-height:1.35;font-weight:700;margin:0}
.media-sub{font-size:15.6px;line-height:1.6;color:var(--text-2);margin:8px 0 0}

.quote-rotator{margin-bottom:6px}
.quote-stack{display:grid}
.quote-stack .student-quote{grid-area:1/1;opacity:0;visibility:hidden;transition:opacity .45s ease}
.quote-stack .student-quote.is-active{opacity:1;visibility:visible}
.quote-dots{display:flex;gap:8px;justify-content:center;margin-top:14px}
.quote-dot{width:9px;height:9px;border-radius:99px;border:none;padding:0;cursor:pointer;background:var(--border);transition:background .2s,transform .2s}
.quote-dot:hover{background:var(--text-3)}
.quote-dot.is-active{background:var(--c-purple);transform:scale(1.25)}

/* ── bands ────────────────────────────────────────── */
.band{padding:38px 0;border-top:1px solid var(--border)}
.band:first-of-type{border-top:none}
.band-tint{background:var(--surface-alt);border-radius:18px;padding:32px 30px;margin:24px 0;border-top:none}
.band-head{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.band-head>.chip-row{margin-left:auto}
.src-note{font-size:15px;color:var(--text-3);line-height:1.6;margin-top:14px}
.prose{color:var(--text-2);line-height:1.78;margin-bottom:14px;max-width:70ch;text-wrap:pretty}
.sub-head{font-size:15.6px;font-weight:700;color:var(--text-3);margin-bottom:12px;text-transform:uppercase;letter-spacing:.05em}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* ── roles ────────────────────────────────────────── */
.roles-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 40px}
.role-group+.roles-grid,.role-group+.role-group{margin-top:26px}
.role-group .sub-head{margin-bottom:10px}
.roles-grid .role-group{margin-top:0}
.role-list{list-style:none;display:flex;flex-direction:column;gap:12px}
.role-list-wide{max-width:820px}
.role-row{display:grid;grid-template-columns:132px 1fr;gap:14px;align-items:baseline}
.role-period{font-size:14.4px;font-weight:700;color:var(--c-purple);letter-spacing:.03em;padding-top:2px}
.role-what{display:flex;flex-direction:column;gap:2px}
.role-what strong{font-size:17.4px;font-weight:600;color:var(--text);line-height:1.45}
.role-what em{font-style:normal;font-size:15.6px;color:var(--text-3)}

/* ── flagships ────────────────────────────────────── */
.flagship-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.flagship,.duo-card{display:flex;flex-direction:column;gap:10px;padding:24px 22px 20px;background:var(--surface);border:1px solid var(--border);border-radius:16px;text-decoration:none;box-shadow:var(--shadow);transition:transform var(--tr),box-shadow var(--tr),border-color var(--tr)}
.flagship:hover,.duo-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--c-purple)}
.flagship-kicker,.duo-kicker{font-size:13.2px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--c-purple)}
.flagship h3,.duo-card h3{font-size:1.02rem;font-weight:700;color:var(--text);line-height:1.35;text-wrap:pretty}
.flagship p,.duo-card p{font-size:16.2px;color:var(--text-2);line-height:1.68;flex:1;text-wrap:pretty}
.flagship-more{font-size:15px;font-weight:700;color:var(--c-purple)}
.duo-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.duo-card-accent{border-color:var(--c-purple)}

/* ── metrics ──────────────────────────────────────── */
.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.metric-grid-tight{max-width:900px}
.metric{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px 18px}
.metric-value{font-size:1.65rem;font-weight:800;color:var(--c-plum);letter-spacing:-.02em;line-height:1.1}
[data-theme="dark"] .metric-value{color:var(--c-purple)}
.metric-label{font-size:15px;color:var(--text-2);line-height:1.5;margin-top:6px}
.metric-note{font-size:13.2px;color:var(--text-3);margin-top:6px}

/* ── funding ──────────────────────────────────────── */
.fund-grid{display:grid;grid-template-columns:1fr;gap:14px}
.fund-card{display:grid;grid-template-columns:1fr auto;gap:22px;align-items:center;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--cat-bio);border-radius:14px;padding:22px 24px}
.fund-agency{font-size:13.8px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--cat-bio);margin-bottom:8px}
.fund-title{font-size:1.2rem;font-weight:700;color:var(--text);line-height:1.42;margin-bottom:6px;text-wrap:pretty}
.fund-role{font-size:15px;color:var(--text-3)}
.fund-status{color:var(--cat-edu);font-weight:700}
.fund-summary{font-size:16.2px;color:var(--text-2);line-height:1.68;margin-top:10px;max-width:68ch}
.fund-sig{font-size:15.6px;color:var(--text-2);line-height:1.65;margin-top:10px;max-width:68ch}
.fund-sig span,.person-aside span{display:block;font-size:13.2px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:3px}
.fund-logo{display:flex;align-items:center;justify-content:center;width:150px;height:92px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:9px}
.fund-logo img{max-width:100%;max-height:100%;object-fit:contain}
.project-img-wrap img[src*="assets/logos/"]{background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px;box-sizing:border-box}
.logo-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.logo-track{display:flex;gap:14px;width:max-content;animation:logo-scroll 46s linear infinite}
.logo-marquee:hover .logo-track{animation-play-state:paused}
.logo-track .fund-logo{flex:0 0 auto;width:172px;height:100px;padding:14px}
@keyframes logo-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.logo-track{animation:none;flex-wrap:wrap;width:100%}.logo-track .fund-logo[aria-hidden="true"]{display:none}}

/* ── research pillars ─────────────────────────────── */
.overview-fig{margin:28px 0 34px}
.overview-link{display:block;position:relative;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow);transition:border-color var(--tr),box-shadow var(--tr)}
.overview-link:hover{border-color:var(--c-purple);box-shadow:var(--shadow-lg)}
.overview-link img{display:block;width:100%;height:auto}
.overview-zoom{position:absolute;right:12px;bottom:12px;background:rgba(57,38,76,.88);color:#fff;font-size:13.8px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:6px 12px;border-radius:99px;opacity:0;transition:opacity var(--tr)}
.overview-link:hover .overview-zoom,.overview-link:focus-visible .overview-zoom{opacity:1}
.overview-fig figcaption{font-size:15px;color:var(--text-3);line-height:1.6;margin-top:10px;text-align:center}
.pillar-jump{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:34px;padding:14px 16px;background:var(--surface-alt);border:1px solid var(--border);border-radius:12px}
.pillar-jump a{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text-2);text-decoration:none;padding:5px 12px;border-radius:99px;background:var(--surface);border:1px solid var(--border)}
.pillar-jump a:hover{border-color:var(--c-purple);color:var(--c-purple)}
.pillar-jump .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.pillar-overview{font-size:16.8px;color:var(--text-2);line-height:1.72;max-width:74ch;margin-bottom:20px;text-wrap:pretty}

/* ── AI education ─────────────────────────────────── */
.need-list{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:34px;max-width:78ch}
.need-list li{position:relative;padding-left:22px;font-size:17.4px;color:var(--text-2);line-height:1.7}
.need-list li::before{content:"";position:absolute;left:2px;top:.62em;width:8px;height:8px;border-radius:50%;background:var(--c-purple);opacity:.55}
.module-list{list-style:none;counter-reset:m;display:flex;flex-direction:column;gap:12px;margin-bottom:38px}
.module{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px 22px}
.module-num{font-size:1.35rem;font-weight:800;color:var(--c-purple);opacity:.5;line-height:1;letter-spacing:-.02em}
.module h3{font-size:1.2rem;font-weight:700;color:var(--text);margin-bottom:6px;line-height:1.35}
.module p{font-size:16.2px;color:var(--text-2);line-height:1.7;text-wrap:pretty}
.chip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:38px}
.chip-card{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:13px 16px;font-size:15.6px;color:var(--text-2);line-height:1.5}
.table-wrap{overflow-x:auto;margin-bottom:38px;border:1px solid var(--border);border-radius:14px}
.course-table{width:100%;border-collapse:collapse;font-size:15.6px;background:var(--surface)}
.course-table caption{caption-side:bottom;text-align:left;font-size:13.8px;color:var(--text-3);padding:12px 16px;line-height:1.6}
.course-table th,.course-table td{text-align:left;padding:11px 16px;border-bottom:1px solid var(--border);vertical-align:top}
.course-table thead th{font-size:13.2px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);background:var(--surface-alt)}
.course-table tbody th{font-weight:700;color:var(--c-purple);white-space:nowrap;width:64px}
.course-table td{color:var(--text-2);line-height:1.6}
.course-table tbody tr:last-child th,.course-table tbody tr:last-child td{border-bottom:none}
.quote-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:34px}
.student-quote{background:var(--surface-alt);border:1px solid var(--border);border-radius:14px;padding:20px 22px}
.student-quote p{font-size:16.2px;color:var(--text);line-height:1.72;font-style:italic;margin-bottom:10px;text-wrap:pretty}
.student-quote cite{font-size:13.8px;color:var(--text-3);font-style:normal;font-weight:600}

/* ── VetClinPathGPT ───────────────────────────────── */
.vcp-hero{display:flex;flex-direction:column;gap:20px;margin-bottom:26px}
.callout{border-radius:13px;padding:16px 20px;font-size:16.2px;line-height:1.7;margin-bottom:34px;max-width:80ch}
.callout strong{display:block;margin-bottom:4px;font-size:15px;letter-spacing:.03em}
.callout-warn{background:var(--surface-alt);border:1px solid var(--border);border-left:4px solid var(--cat-ml);color:var(--text-2)}
.vcp-block{margin-bottom:32px}
.vcp-block h2{font-size:1.12rem;font-weight:700;color:var(--text);margin-bottom:10px}
.vcp-block>p{font-size:17.4px;color:var(--text-2);line-height:1.75;max-width:76ch;text-wrap:pretty}

/* ── speaking ─────────────────────────────────────── */
.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin-bottom:44px}
.topic-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--c-purple);border-radius:11px;padding:14px 16px;font-size:16.2px;font-weight:600;color:var(--text);line-height:1.5}
.item-card-split{display:flex;align-items:start;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* ── team + about ─────────────────────────────────── */
.bio-stack{display:flex;flex-direction:column;gap:16px}
.bio-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden}
.bio-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;background:var(--surface-alt);border-bottom:1px solid var(--border)}
.bio-card-label{font-size:13.8px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--c-purple)}
.bio-card-count{font-size:13.8px;color:var(--text-3);margin-top:2px}
.bio-copy{font-size:14.4px;padding:6px 14px;flex-shrink:0;min-width:92px;justify-content:center}
.bio-copy.is-copied{border-color:var(--cat-edu);color:var(--cat-edu)}
.bio-card-body{padding:20px 22px}
.bio-card-body p{color:var(--text-2);line-height:1.78;max-width:72ch;text-wrap:pretty}
.bio-card-body p+p{margin-top:12px}
.pi-card{display:grid;grid-template-columns:180px 1fr;max-width:560px;background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.pi-photo{overflow:hidden;min-height:230px}
.pi-photo img{width:100%;height:100%;object-fit:cover;object-position:top}
.person-contact{font-size:15.6px}
.person-aside{margin-top:8px;font-size:15px;color:var(--text-3);line-height:1.6}
.person-photo-empty{display:flex;align-items:center;justify-content:center;background:var(--surface-alt);color:var(--c-purple);font-size:1.5rem;font-weight:800;letter-spacing:.04em}
.about-head{display:grid;grid-template-columns:auto 1fr;gap:32px;align-items:start;margin-bottom:40px}
.about-photo{width:150px;height:150px;border-radius:14px;object-fit:cover;border:3px solid var(--border);flex-shrink:0}
.about-cred{font-size:1.2rem;color:var(--text-2);margin-top:6px}
.about-affil{font-size:16.2px;color:var(--text-3);line-height:1.6;margin-top:4px}
.cta-panel{background:var(--surface-alt);border:1px solid var(--border);border-radius:16px;padding:30px 32px;margin-top:8px}
.cta-panel h2{font-size:1.22rem;margin-bottom:8px}
.cta-panel p{color:var(--text-2);max-width:64ch;margin-bottom:18px;line-height:1.7}
.cta-panel-lead{margin-bottom:40px;margin-top:0}
.contact-band{background:var(--surface-alt);border:1px solid var(--border);border-radius:18px;padding:34px 32px;margin-top:24px;border-top:none}
.contact-band h2{font-size:1.3rem;margin-bottom:8px}
.contact-band p{color:var(--text-2);max-width:62ch;margin-bottom:20px;line-height:1.7}

/* ── publications ─────────────────────────────────── */
.filter-bar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.filter-bar-years{margin-bottom:30px}
.filter-label{font-size:13.8px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}
.filter-chip{cursor:pointer;font-family:inherit;border:1px solid transparent}
.filter-chip.is-on{outline:2px solid var(--c-purple);outline-offset:1px}
.filter-empty{font-size:16.8px;color:var(--text-3);padding:22px 0}
.pub-card .pub-thumb[src*="pub_cvsm2026"],.pub-card .pub-thumb[src*="pub_vetpath2026"]{width:250px!important;height:auto!important;object-fit:contain;background:#fff;padding:8px}
.pub-card .pub-thumb[src*="pub_ddx"]{height:auto!important;object-fit:contain;background:#fff;padding:12px}
.scholar-btn{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:14.4px;padding:6px 12px;margin:-10px 0 22px}
.year-head{font-size:18px;font-weight:800;color:var(--c-purple);letter-spacing:.06em;text-transform:uppercase;margin-bottom:16px;padding-top:8px}
.year-head-muted{color:var(--text-3)}
.pub-year{margin-bottom:40px}
.pub-summary{font-size:15.6px;color:var(--text-2);margin-bottom:12px;line-height:1.6}

/* ── links ────────────────────────────────────────── */
a{color:var(--c-purple)}
a:hover{color:var(--c-plum)}
[data-theme="dark"] a:hover{color:var(--c-blue)}
.nav-links a,.nav-drawer a,.btn,.flagship,.duo-card,.pillar-jump a{color:inherit}
.nav-links a[aria-current="page"]{color:var(--c-purple);font-weight:700}

/* ── responsive ───────────────────────────────────── */
/* Nav breakpoint. style.css hides .nav-links below 900px, which was tuned for the
   old short labels. The current 8 labels measure 662px plus 28px of gaps, and with
   the 210px brand block, 80px controls and 48px padding the desktop nav needs
   more room after the 20% small-text increase. Anything below that clipped
   "About" and pushed the theme toggle off-screen, causing sideways page scroll.
   Switch to the drawer at 1240px — it
   already holds all 8 links. Re-measure this if a nav label is added or renamed. */
@media(max-width:1240px){
  .nav-links{display:none}
  .nav-hamburger{display:flex}
}
@media(max-width:900px){
  .flagship-grid{grid-template-columns:1fr}
  .roles-grid,.duo-grid{grid-template-columns:1fr}
  .roles-grid .role-group+.role-group{margin-top:26px}
  .fund-card{grid-template-columns:1fr;gap:16px}
  .fund-logo{width:132px;height:78px}
}
@media(max-width:860px){
  .hero-banner{padding:28px 0 24px}
  .hero-split{grid-template-columns:1fr;gap:26px}
  .pub-stack-wrap{justify-self:start;max-width:260px}
  .pub-stack{height:300px}
  .pub-stack-hint{text-align:left}
  .band-tint{padding:26px 22px}
}
@media(max-width:640px){
  .bio-card-head{flex-direction:column;align-items:flex-start;gap:10px}
  .bio-copy{width:100%}
  .about-head{grid-template-columns:1fr;gap:20px}
  .about-photo{width:104px;height:104px}
  .pi-card{grid-template-columns:1fr}
  .pi-photo{min-height:220px;max-height:260px}
  .role-row{grid-template-columns:1fr;gap:2px}
  .module{grid-template-columns:1fr;gap:8px}
  .scholar-btn{margin-left:0}
}
@media(max-width:400px){
  .pub-stack-wrap{max-width:250px}
}

/* ── backstage (private ops page) ──────────────────── */
.bs-status{display:flex;align-items:center;gap:12px;background:var(--surface-alt);border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:8px}
.bs-dot{width:10px;height:10px;border-radius:50%;background:var(--text-3);flex-shrink:0}
.bs-dot.is-on{background:#3fa46a;box-shadow:0 0 0 4px rgba(63,164,106,.16)}
.bs-status-label{font-size:.816rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.bs-status-value{font-size:1.14rem;font-weight:600;color:var(--text)}
.bs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.bs-card{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;text-decoration:none;transition:border-color .2s ease,transform .2s ease}
.bs-card:hover{border-color:var(--c-purple);transform:translateY(-2px)}
.bs-card-label{font-size:1.14rem;font-weight:700;color:var(--text)}
.bs-card-note{font-size:.96rem;line-height:1.55;color:var(--text-2)}
.bs-frame{width:100%;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.bs-steps{margin:0 0 18px 20px;display:flex;flex-direction:column;gap:9px;font-size:1.08rem;line-height:1.6;color:var(--text-2)}
.bs-steps code{font-size:.984em;background:var(--surface-alt);border:1px solid var(--border);border-radius:5px;padding:1px 5px}

/* ── phones: comfortable touch targets, no sub-12px text ──── */
@media(max-width:640px){
  .btn{min-height:44px;padding-top:11px;padding-bottom:11px;font-size:15.6px}
  .theme-toggle,.nav-hamburger{width:44px;height:44px}
  .nav-drawer a{min-height:44px;display:flex;align-items:center}
  .filter-chip{min-height:38px;display:inline-flex;align-items:center;font-size:14.4px}
  .filter-label{font-size:14.4px}
  .tag{font-size:14.4px}
  .pi-badge{font-size:13.2px}
  .pub-stack-journal{font-size:14.4px}
  .pub-stack-title{font-size:15.6px}
  .quote-dot{width:14px;height:14px}
}
