/* Impact section: short cards for visitors; fuller detail lives in .sr-only text for crawlers/screen readers */
.impact { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 18px; margin-top: 8px; }
.imp { background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--c, var(--wcm-red)); border-radius: 4px; padding: 16px 18px 14px; display: flex; flex-direction: column; }
.imp small { font-size: 12px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase; color: var(--c, var(--wcm-red)); }
.imp h3 { font-family: "Source Serif 4", Georgia, serif; font-weight: 600; font-size: 19px; line-height: 1.3; margin: 4px 0 6px; }
.imp p { margin: 0 0 10px; font-size: 16px; line-height: 1.5; color: #333; }
.imp .src { margin-top: auto; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 14.5px; font-weight: 600; }
.imp .roles { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 8px; }
.imp .out { margin: 0 0 10px; font-size: 14px; line-height: 1.45; color: var(--muted); }
.imp .out b { font-size: 12px; letter-spacing: .8px; text-transform: uppercase; color: #555; margin-right: 6px; }

/* Research themes, study cards, applications (generated by tools/build_pages.py) */
.hero .kick { font-size: 14px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; opacity: .85; margin: 0 0 14px; }
.hero .who { margin: 18px 0 0; font-size: 18px; font-weight: 600; }
.hero .who a { color: #fff; border-bottom: 1px solid rgba(255,255,255,.5); }
.hero .who a:hover { text-decoration: none; border-color: #fff; }
.hero .cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.hero .cta .btn { margin: 0; }
.btn.ghost { background: transparent; border: 1px solid rgba(255,255,255,.7); color: #fff; }
.btn.ghost:hover { background: rgba(255,255,255,.12); }
.cards.themes { margin-top: 0; }
.card.theme { border-top-color: var(--c); display: flex; flex-direction: column; }
.card.theme small { font-size: 12px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase; color: var(--c); }
.card.theme h3 { font-family: "Source Serif 4", Georgia, serif; font-weight: 600; font-size: 20px; line-height: 1.3; margin: 6px 0 10px; }
.card.theme p { margin: 0 0 12px; }
.card.theme .tlinks { margin: auto 0 0; display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 15px; font-weight: 600; }
.impact.studies { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); }
.imp .contrib { font-size: 15.5px; background: #f6f5f3; border-left: 3px solid var(--c, var(--wcm-red)); padding: 8px 10px; }
.imp .contrib b { font-weight: 700; }
.imp .ms { font-size: 13px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: #555; }
.imp .src { margin-top: auto; }
.imp .det { margin-top: 10px; font-size: 14.5px; font-weight: 700; }
.sub-h { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 24px; margin: 44px 0 14px; }
.addl { list-style: none; padding: 0; margin: 0; font-size: 16px; }
.addl li { padding: 10px 0; border-bottom: 1px solid var(--rule); }
footer .flinks { display: flex; flex-direction: column; gap: 6px; font-size: 15px; }
.hero h1 { font-size: 52px; margin-bottom: 6px; }
.hero .kick { margin-bottom: 20px; }
@media (max-width: 900px) { .hero h1 { font-size: 40px; } }

/* v3: research areas, grouped study cards, applications strip */
.cards.themes { grid-template-columns: repeat(2, 1fr); }
.card.theme .tall { margin: 10px 0 0; font-size: 15px; font-weight: 700; }
#selected-research .sub-h { color: var(--c); font-size: 26px; margin: 48px 0 14px; padding-bottom: 6px; border-bottom: 2px solid var(--c); }
#selected-research .sub-h:first-of-type { margin-top: 8px; }
.grp { margin: 0 0 14px; max-width: 900px; }
.grp h4 { font-size: 17px; margin: 0 0 4px; }
.grp p { margin: 0; font-size: 16px; color: #444; }
.impact.studies + .grp { margin-top: 26px; }
.impact.studies + .impact.studies { margin-top: 18px; }
.imp small .tag { margin-left: 6px; padding: 0 6px; border: 1px solid currentColor; border-radius: 3px; font-size: 10.5px; }
.imp .src a.ev { color: var(--muted); font-weight: 600; }
.apps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.app { display: flex; flex-direction: column; gap: 4px; background: #fff; border: 1px solid var(--rule); border-left: 4px solid var(--wcm-red); padding: 14px 16px; color: var(--ink); }
.app:hover { text-decoration: none; box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.app small { font-size: 12px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase; color: var(--wcm-red); }
.app b { font-family: "Source Serif 4", Georgia, serif; font-size: 18px; font-weight: 600; line-height: 1.3; }
.app span { font-size: 15px; color: #444; line-height: 1.45; }
.open-h { margin: 28px 0 6px; font-size: 18px; }
@media (max-width: 900px) { .cards.themes, .apps { grid-template-columns: 1fr; } }

/* open-position notice and nav link */
.notice { background: #f3eef8; border-bottom: 1px solid #e2d8ee; font-size: 15px; }
.notice .wrap { padding-top: 8px; padding-bottom: 8px; }
.notice .nb { display: inline-block; background: #6a3d9a; color: #fff; font-size: 11.5px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; padding: 1px 8px; border-radius: 3px; margin-right: 8px; }
.notice a { font-weight: 700; }
.notice .nt { color: var(--muted); }
nav.main a.nav-open { color: #6a3d9a; }

/* open-position card at the top of the contact section */
.join { display: flex; align-items: center; justify-content: space-between; gap: 20px 32px; flex-wrap: wrap; background: #f3eef8; border: 1px solid #e2d8ee; border-left: 5px solid #6a3d9a; padding: 22px 26px; margin: 0 0 56px; scroll-margin-top: 100px; }
.join .nb { display: inline-block; background: #6a3d9a; color: #fff; font-size: 12px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; padding: 2px 9px; border-radius: 3px; }
.join h2 { font-size: 26px; margin: 10px 0 4px; padding: 0; }
.join h2::after { display: none; }
.join p { margin: 0; color: #444; }
.join .btn { background: #6a3d9a; margin: 0; white-space: nowrap; }
.join .btn:hover { background: #55307c; }

/* collaborations / ventures / contact */
.three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; }
.three .btn.ghost { background: #fff; color: var(--wcm-red); border: 1px solid var(--wcm-red); }
.three .btn.ghost:hover { background: var(--wcm-red); color: #fff; }
@media (max-width: 900px) { .three { grid-template-columns: 1fr; gap: 40px; } .join { padding: 18px; margin-bottom: 40px; } }

/* Oct 31 homepage: research items, selected work, publications and resources, ventures, contact (generated by tools/build_pages.py) */
.alias { display: block; position: relative; top: -90px; height: 0; }
.areas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 48px; }
.area { border-top: 3px solid var(--wcm-red); padding-top: 14px; }
.area h3 { font-family: "Source Serif 4", Georgia, serif; font-weight: 600; font-size: 22px; line-height: 1.3; margin: 0 0 8px; }
.area p { margin: 0; font-size: 17px; line-height: 1.6; color: #333; }
.works { display: flex; flex-direction: column; }
.work { padding: 26px 0; border-top: 1px solid var(--rule); max-width: 900px; overflow: hidden; }
.work:first-child { border-top: 0; padding-top: 0; }
.work .wcov { float: right; width: 96px; height: auto; margin: 4px 0 10px 24px; box-shadow: 0 2px 8px rgba(0,0,0,.15); }
.work h3 { font-family: "Source Serif 4", Georgia, serif; font-weight: 600; font-size: 23px; line-height: 1.3; margin: 0 0 4px; }
.work h3 a { color: var(--ink); }
.work h3 a:hover { color: var(--wcm-red); }
.work .wmeta { margin: 0 0 10px; font-size: 15px; color: var(--muted); }
.work p { margin: 0 0 10px; font-size: 17px; line-height: 1.6; color: #333; }
.work .wlink { margin: 0; font-size: 16px; font-weight: 600; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.pubres { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 48px; }
.pubres h3 { font-size: 18px; margin: 0 0 12px; }
.recent, .reslist { list-style: none; padding: 0; margin: 0 0 16px; }
.recent li, .reslist li { padding: 10px 0; border-bottom: 1px solid var(--rule); }
.recent li:first-child, .reslist li:first-child { padding-top: 0; }
.recent a, .reslist a { display: block; font-weight: 600; line-height: 1.35; }
.recent span, .reslist span { display: block; font-size: 15px; color: var(--muted); margin-top: 2px; }
.pubres .more { display: flex; flex-direction: column; gap: 6px; margin: 0; font-weight: 600; }
.ventures { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--rule); }
.ventures h3 { font-size: 18px; margin: 0 0 6px; }
.ventures p { margin: 0 0 8px; }
.two { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 48px; align-items: start; }
.two address { font-style: normal; line-height: 1.6; }
@media (max-width: 900px) { .areas, .pubres, .two { grid-template-columns: 1fr; gap: 32px; } .work .wcov { width: 72px; } }

/* Oct 31 follow-up: quiet contributions link under Selected work */
p.quiet { margin: 6px 0 0; font-size: 14px; }
p.quiet a { color: var(--muted); }