/*
 * Research directorate pages: research groups, consultancy, community outreach, IRB, directorate news.
 * Static CSS (CSP style-src 'self'); no inline styles. Prefix .rs-. Motion is decorative only and is
 * switched off by prefers-reduced-motion.
 */
.rs {
  --rs-navy: var(--color-brand-navy, #001832);
  --rs-deep: var(--color-brand-deep, #003861);
  --rs-ocean: var(--color-brand-ocean, #0B6399);
  --rs-magenta: var(--color-brand-magenta, #C30080);
  --rs-yellow: var(--color-brand-yellow, #F1EA20);
  --rs-cyan: var(--color-brand-cyan, #5EE1FF);
  --rs-mist: var(--color-brand-mist, #F3F7FB);
  --rs-ink: var(--color-brand-ink, #0F1E33);
  --rs-line: #e2e8f0; --rs-muted: #64748b;
  color: var(--rs-ink);
}
.rs *, .rs *::before, .rs *::after { box-sizing: border-box; }
.rs [hidden] { display: none !important; }
:where(.rs a) { color: inherit; }
.rs-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.rs-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; font-size: .82rem; color: var(--rs-muted); }
.rs-crumbs a { text-decoration: none; } .rs-crumbs a:hover { color: var(--rs-ocean); text-decoration: underline; }

/* ---------- hero ---------- */
.rs-hero { position: relative; isolation: isolate; overflow: hidden; margin-top: 1rem; border-radius: 1.5rem; color: #fff; background: linear-gradient(135deg, var(--rs-navy), var(--rs-deep) 55%, #12305f); }
.rs-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; z-index: -2; }
.rs-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background:
    radial-gradient(circle at 85% 10%, rgba(195, 0, 128, .55), transparent 40%),
    radial-gradient(circle at 5% 100%, rgba(94, 225, 255, .35), transparent 45%),
    linear-gradient(to right, rgba(255,255,255,.05) 1px, transparent 1px) 0 0 / 46px 46px,
    linear-gradient(to bottom, rgba(255,255,255,.05) 1px, transparent 1px) 0 0 / 46px 46px; }
.rs-orb { position: absolute; border-radius: 50%; filter: blur(34px); opacity: .55; z-index: -1; animation: rs-float 14s ease-in-out infinite; }
.rs-orb--a { width: 16rem; height: 16rem; right: -4rem; top: -5rem; background: var(--rs-magenta); }
.rs-orb--b { width: 12rem; height: 12rem; left: 30%; bottom: -6rem; background: var(--rs-cyan); animation-delay: -5s; }
.rs-orb--c { width: 9rem; height: 9rem; right: 22%; bottom: 1rem; background: var(--rs-yellow); opacity: .28; animation-delay: -9s; }
@keyframes rs-float { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(-1.6rem, 1.4rem) scale(1.1); } }
.rs-hero__in { position: relative; padding: 3rem 1.4rem 3.4rem; max-width: 60rem; }
.rs-eyebrow { display: inline-flex; align-items: center; gap: .5rem; padding: .35rem .9rem; border-radius: 999px; font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--rs-yellow); background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.22); backdrop-filter: blur(6px); }
.rs-hero h1 { margin: 1rem 0 0; font-size: clamp(2rem, 5.4vw, 3.6rem); line-height: 1.05; font-weight: 800; letter-spacing: -.025em; }
.rs-hero h1 em { font-style: normal; background: linear-gradient(90deg, var(--rs-cyan), var(--rs-yellow)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.rs-lead { margin: 1.1rem 0 0; max-width: 42rem; font-size: 1.08rem; line-height: 1.65; color: rgba(255,255,255,.86); }
.rs-chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.4rem; }
.rs-chip { padding: .35rem .85rem; border-radius: 999px; font-size: .8rem; font-weight: 600; color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.25); }
.rs-btns { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.6rem; }
.rs-btn { display: inline-flex; align-items: center; gap: .5rem; padding: .8rem 1.4rem; border-radius: 999px; font-size: .9rem; font-weight: 700; text-decoration: none; border: 2px solid transparent; transition: transform .2s, box-shadow .2s, background .2s; }
.rs-btn:hover, .rs-btn:focus-visible { transform: translateY(-2px); }
.rs-btn--yellow { background: var(--rs-yellow); color: var(--rs-navy); box-shadow: 0 10px 22px -10px rgba(241,234,32,.9); }
.rs-btn--ghost { color: #fff; border-color: rgba(255,255,255,.45); background: rgba(255,255,255,.07); }
.rs-btn--solid { background: var(--rs-deep); color: #fff; } .rs-btn--solid:hover { background: var(--rs-ocean); }
.rs-btn--outline { color: var(--rs-deep); border-color: rgba(0,56,97,.25); background: #fff; } .rs-btn--outline:hover { border-color: var(--rs-ocean); color: var(--rs-ocean); }

/* ---------- sticky subnav ---------- */
.rs-subnav { position: sticky; top: 0; z-index: 5; display: flex; gap: .35rem; overflow-x: auto; margin-top: 1rem; padding: .5rem .6rem; border: 1px solid var(--rs-line); border-radius: 999px; background: rgba(255,255,255,.94); backdrop-filter: blur(6px); scrollbar-width: thin; }
.rs-subnav a { flex: none; padding: .4rem .85rem; border-radius: 999px; font-size: .84rem; font-weight: 600; text-decoration: none; color: var(--rs-deep); }
.rs-subnav a:hover, .rs-subnav a:focus-visible { background: var(--rs-mist); color: var(--rs-ocean); }

/* ---------- sections ---------- */
.rs-sec { margin-top: 3.4rem; scroll-margin-top: 4.6rem; }
.rs-sec > header { margin-bottom: 1.4rem; }
.rs-kicker { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--rs-magenta); }
.rs-sec h2 { margin: .3rem 0 0; font-size: clamp(1.5rem, 3vw, 2.1rem); font-weight: 800; letter-spacing: -.015em; color: var(--rs-navy); }
.rs-sub { margin: .5rem 0 0; max-width: 44rem; color: #475569; line-height: 1.65; }
.rs-prose { font-size: 1.02rem; line-height: 1.8; color: #334155; max-width: 48rem; }
.rs-prose p { margin: 0 0 1rem; } .rs-prose a { color: var(--rs-ocean); text-decoration: underline; }
.rs-note { margin: 0; padding: .85rem 1rem; border-left: 4px solid var(--rs-yellow); border-radius: .25rem .7rem .7rem .25rem; background: var(--rs-mist); font-size: .9rem; color: #334155; }
.rs-badge { display: inline-block; padding: .15rem .6rem; border-radius: 999px; font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #92400e; background: #fef3c7; }
.rs-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.1rem; }

/* ---------- stat strip ---------- */
.rs-stats { list-style: none; margin: -1.6rem 1rem 0; padding: 0; position: relative; z-index: 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.rs-stat { padding: 1.1rem 1rem; text-align: center; border-radius: 1.1rem; background: #fff; border: 1px solid var(--rs-line); box-shadow: 0 16px 30px -18px rgba(0,24,50,.45); }
.rs-stat strong { display: block; font-size: 2.1rem; line-height: 1; font-weight: 800; background: linear-gradient(120deg, var(--rs-magenta), var(--rs-ocean)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.rs-stat span { display: block; margin-top: .4rem; font-size: .78rem; font-weight: 600; color: var(--rs-muted); }

/* ---------- cards ---------- */
.rs-card { position: relative; display: flex; flex-direction: column; gap: .5rem; height: 100%; padding: 1.4rem; border: 1px solid var(--rs-line); border-radius: 1.2rem; background: #fff; text-decoration: none; color: inherit; overflow: hidden; transition: transform .25s, box-shadow .25s, border-color .25s; }
a.rs-card:hover, a.rs-card:focus-visible { transform: translateY(-5px); border-color: rgba(11,99,153,.4); box-shadow: 0 20px 36px -18px rgba(0,24,50,.45); }
.rs-card::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--rs-magenta), var(--rs-ocean), var(--rs-cyan)); }
.rs-card h3 { margin: .2rem 0 0; font-size: 1.1rem; font-weight: 800; line-height: 1.3; color: var(--rs-navy); }
.rs-card p { margin: 0; font-size: .93rem; line-height: 1.6; color: #475569; }
.rs-card__go { margin-top: auto; padding-top: .6rem; font-size: .84rem; font-weight: 700; color: var(--rs-magenta); }
.rs-ico { display: inline-flex; align-items: center; justify-content: center; width: 2.8rem; height: 2.8rem; border-radius: .9rem; color: #fff; background: linear-gradient(135deg, var(--rs-magenta), var(--rs-ocean)); }
.rs-ico svg { width: 1.4rem; height: 1.4rem; }

/* big group cards */
.rs-gcard { display: flex; flex-direction: column; height: 100%; border-radius: 1.4rem; overflow: hidden; background: #fff; border: 1px solid var(--rs-line); text-decoration: none; color: inherit; transition: transform .25s, box-shadow .25s; }
.rs-gcard:hover, .rs-gcard:focus-visible { transform: translateY(-6px); box-shadow: 0 28px 44px -22px rgba(0,24,50,.55); }
.rs-gcard__top { position: relative; padding: 2rem 1.5rem 1.6rem; color: #fff; background: radial-gradient(circle at 90% 0, rgba(195,0,128,.6), transparent 50%), linear-gradient(135deg, var(--rs-navy), var(--rs-deep) 60%, var(--rs-ocean)); }
.rs-gcard__abbr { font-size: clamp(2.2rem, 5vw, 3rem); font-weight: 800; letter-spacing: -.02em; line-height: 1; }
.rs-gcard__name { margin: .5rem 0 0; font-size: 1rem; font-weight: 600; color: rgba(255,255,255,.85); }
.rs-gcard__body { display: flex; flex-direction: column; gap: .8rem; flex: 1; padding: 1.3rem 1.5rem 1.5rem; }
.rs-gcard__body p { margin: 0; font-size: .95rem; line-height: 1.65; color: #475569; }
.rs-gcard__meta { display: flex; flex-wrap: wrap; gap: .4rem 1rem; margin-top: auto; padding-top: .8rem; border-top: 1px solid var(--rs-line); font-size: .82rem; font-weight: 600; color: var(--rs-deep); }
.rs-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
.rs-tag { padding: .2rem .7rem; border-radius: 999px; font-size: .76rem; font-weight: 600; color: var(--rs-deep); background: var(--rs-mist); border: 1px solid var(--rs-line); }

/* ---------- people ---------- */
.rs-leader { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.4rem; align-items: center; padding: 1.6rem; border-radius: 1.4rem; color: #fff; background: radial-gradient(circle at 95% 0, rgba(195,0,128,.5), transparent 45%), linear-gradient(135deg, var(--rs-navy), var(--rs-deep)); }
.rs-leader__photo { width: 8rem; height: 8rem; border-radius: 50%; object-fit: cover; border: 5px solid rgba(255,255,255,.9); }
.rs-leader__photo--blank { display: flex; align-items: center; justify-content: center; font-size: 2.2rem; font-weight: 800; color: var(--rs-ocean); background: #e2e8f0; }
.rs-leader .rs-kicker { color: var(--rs-yellow); }
.rs-leader h3 { margin: .3rem 0 0; font-size: 1.5rem; font-weight: 800; }
.rs-leader a.rs-link { color: var(--rs-cyan); }
.rs-link { font-size: .88rem; font-weight: 700; text-decoration: none; }
.rs-link:hover { text-decoration: underline; }
.rs-people { list-style: none; margin: 1.2rem 0 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: .9rem; }
.rs-person { display: flex; align-items: center; gap: .9rem; height: 100%; padding: .9rem 1rem; border: 1px solid var(--rs-line); border-radius: 1rem; background: #fff; text-decoration: none; color: inherit; transition: transform .2s, border-color .2s, box-shadow .2s; }
a.rs-person:hover, a.rs-person:focus-visible { transform: translateY(-3px); border-color: rgba(11,99,153,.4); box-shadow: 0 12px 24px -14px rgba(0,24,50,.4); }
.rs-person__ph { flex: none; width: 3.6rem; height: 3.6rem; border-radius: 50%; object-fit: cover; }
.rs-person__ph--blank { display: flex; align-items: center; justify-content: center; font-weight: 800; color: var(--rs-ocean); background: linear-gradient(135deg, rgba(11,99,153,.15), rgba(195,0,128,.1)); }
.rs-person strong { display: block; font-size: .98rem; line-height: 1.3; color: var(--rs-navy); }
.rs-person > span:not(.rs-person__ph) { display: block; font-size: .8rem; color: var(--rs-muted); }
.rs-ph { border-style: dashed; }
.rs-ph .rs-person__ph--blank { color: #94a3b8; background: #e2e8f0; }

/* objectives */
.rs-objs { list-style: none; margin: 0; padding: 0; display: grid; gap: .8rem; counter-reset: o; }
.rs-obj { position: relative; padding: 1rem 1rem 1rem 4rem; border-radius: 1rem; background: #fff; border: 1px solid var(--rs-line); line-height: 1.6; color: #334155; counter-increment: o; }
.rs-obj::before { content: counter(o); position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); width: 2.3rem; height: 2.3rem; display: flex; align-items: center; justify-content: center; border-radius: 50%; font-weight: 800; color: #fff; background: linear-gradient(135deg, var(--rs-magenta), var(--rs-ocean)); }
.rs-obj.rs-ph { border-style: dashed; color: #64748b; font-style: italic; }

/* documents */
.rs-docs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: .8rem; }
.rs-doc { display: flex; align-items: center; gap: .9rem; height: 100%; padding: 1rem 1.1rem; border: 1px solid var(--rs-line); border-radius: 1rem; background: #fff; text-decoration: none; color: inherit; transition: transform .2s, border-color .2s, box-shadow .2s; }
.rs-doc:hover, .rs-doc:focus-visible { transform: translateY(-3px); border-color: rgba(195,0,128,.4); box-shadow: 0 12px 24px -14px rgba(0,24,50,.4); }
.rs-doc__ic { flex: none; display: flex; align-items: center; justify-content: center; width: 2.9rem; height: 3.2rem; border-radius: .6rem; font-size: .68rem; font-weight: 800; color: #fff; background: linear-gradient(160deg, var(--rs-magenta), #8c0060); }
.rs-doc strong { display: block; font-size: .96rem; line-height: 1.35; color: var(--rs-navy); }
.rs-doc span { font-size: .8rem; color: var(--rs-muted); }

/* ---------- timeline (outreach, IRB) ---------- */
.rs-filter { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.2rem; }
.rs-filter button { padding: .45rem 1rem; border-radius: 999px; font: inherit; font-size: .84rem; font-weight: 700; cursor: pointer; color: var(--rs-deep); background: #fff; border: 1px solid var(--rs-line); }
.rs-filter button[aria-pressed="true"] { color: #fff; background: var(--rs-deep); border-color: var(--rs-deep); }
.rs-tl { list-style: none; margin: 0; padding: 0 0 0 1.6rem; position: relative; display: grid; gap: 1.1rem; }
.rs-tl::before { content: ""; position: absolute; left: .45rem; top: .6rem; bottom: .6rem; width: 3px; border-radius: 3px; background: linear-gradient(var(--rs-magenta), var(--rs-ocean), var(--rs-cyan)); }
.rs-tl > li { position: relative; }
.rs-tl > li::before { content: ""; position: absolute; left: -1.62rem; top: 1.3rem; width: 1rem; height: 1rem; border-radius: 50%; background: #fff; border: 4px solid var(--rs-magenta); }
.rs-act { padding: 1.2rem 1.3rem; border: 1px solid var(--rs-line); border-radius: 1.1rem; background: #fff; }
.rs-act__top { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .8rem; }
.rs-year { padding: .2rem .7rem; border-radius: .5rem; font-size: .8rem; font-weight: 800; color: #fff; background: linear-gradient(135deg, var(--rs-magenta), var(--rs-ocean)); }
.rs-status { padding: .2rem .7rem; border-radius: 999px; font-size: .72rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.rs-status--done { color: #065f46; background: #d1fae5; } .rs-status--live { color: #92400e; background: #fef3c7; }
.rs-act h3 { margin: .6rem 0 .5rem; font-size: 1.08rem; font-weight: 800; line-height: 1.35; color: var(--rs-navy); }
.rs-act dl { display: grid; grid-template-columns: minmax(0, 1fr); gap: .5rem .5rem; margin: 0; font-size: .88rem; }
.rs-act dt { font-size: .68rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--rs-muted); }
.rs-act dd { margin: 0; color: #334155; }

/* ---------- news ---------- */
.rs-feat { display: grid; grid-template-columns: minmax(0, 1fr); border-radius: 1.5rem; overflow: hidden; background: #fff; border: 1px solid var(--rs-line); text-decoration: none; color: inherit; box-shadow: 0 24px 44px -26px rgba(0,24,50,.5); }
.rs-feat__media, .rs-ncard__media { position: relative; min-height: 14rem; background: radial-gradient(circle at 85% 10%, rgba(195,0,128,.6), transparent 45%), linear-gradient(135deg, var(--rs-navy), var(--rs-deep) 60%, var(--rs-ocean)); display: flex; align-items: flex-end; padding: 1.2rem; color: #fff; }
.rs-feat__media img, .rs-ncard__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rs-date-tile { position: relative; padding: .5rem .8rem; border-radius: .8rem; text-align: center; font-weight: 800; line-height: 1.1; background: rgba(0,24,50,.65); backdrop-filter: blur(6px); }
.rs-date-tile small { display: block; font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--rs-yellow); }
.rs-feat__body { padding: 1.6rem; }
.rs-feat__body h2 { margin: .5rem 0 .7rem; font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800; line-height: 1.2; color: var(--rs-navy); }
.rs-feat__body p { margin: 0; line-height: 1.7; color: #475569; }
.rs-ncard { display: flex; flex-direction: column; height: 100%; border-radius: 1.2rem; overflow: hidden; background: #fff; border: 1px solid var(--rs-line); text-decoration: none; color: inherit; transition: transform .25s, box-shadow .25s; }
.rs-ncard:hover, .rs-ncard:focus-visible { transform: translateY(-5px); box-shadow: 0 22px 38px -20px rgba(0,24,50,.5); }
.rs-ncard__media { min-height: 10rem; }
.rs-ncard__body { display: flex; flex-direction: column; gap: .5rem; flex: 1; padding: 1.1rem 1.2rem 1.3rem; }
.rs-ncard__body h3 { margin: 0; font-size: 1.02rem; font-weight: 800; line-height: 1.35; color: var(--rs-navy); }
.rs-ncard__body p { margin: 0; font-size: .9rem; line-height: 1.6; color: #475569; }
.rs-years { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.2rem; }
.rs-years a { padding: .4rem .95rem; border-radius: 999px; font-size: .84rem; font-weight: 700; text-decoration: none; color: var(--rs-deep); background: #fff; border: 1px solid var(--rs-line); }
.rs-years a[aria-current="true"] { color: #fff; background: var(--rs-deep); border-color: var(--rs-deep); }

/* cta */
.rs-cta { position: relative; overflow: hidden; margin-top: 3.4rem; padding: 2rem 1.5rem; border-radius: 1.5rem; color: #fff; background: radial-gradient(circle at 92% 8%, rgba(195,0,128,.55), transparent 45%), linear-gradient(130deg, var(--rs-navy), var(--rs-deep) 60%, var(--rs-ocean)); }
.rs-cta h2 { margin: 0; font-size: 1.6rem; font-weight: 800; } .rs-cta p { margin: .6rem 0 0; max-width: 34rem; color: rgba(255,255,255,.85); line-height: 1.6; }
.rs-cta .rs-btns { margin-top: 1.2rem; }

@media (min-width: 40rem) {
  .rs-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-inline: 2rem; }
  .rs-grid--2, .rs-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rs-people { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rs-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rs-act dl { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rs-hero__in { padding: 4rem 3rem 4.2rem; }
}
@media (min-width: 52rem) {
  .rs-leader { grid-template-columns: auto minmax(0, 1fr); gap: 2rem; padding: 2rem 2.4rem; }
  .rs-feat { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
  .rs-feat__media { min-height: 22rem; }
}
@media (min-width: 64rem) { .rs-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .rs-people { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (prefers-reduced-motion: reduce) { .rs-orb { animation: none; } .rs-card, .rs-gcard, .rs-ncard, .rs-person, .rs-doc, .rs-btn { transition: none; } a.rs-card:hover, .rs-gcard:hover, .rs-ncard:hover, a.rs-person:hover, .rs-doc:hover, .rs-btn:hover { transform: none; } }
@media print { .rs-subnav, .rs-orb, .rs-filter { display: none; } .rs-hero { color: #000; background: none; } }
