@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap');

:root {
  --rpsf-ink: oklch(21% 0.035 255);
  --rpsf-navy: oklch(29% 0.055 252);
  --rpsf-orange: oklch(72% 0.16 85);
  --rpsf-orange-hover: oklch(78% 0.145 75);
  --rpsf-orange-dark: oklch(53% 0.14 48);
  --rpsf-sky: oklch(93% 0.025 235);
  --rpsf-paper: oklch(97% 0.008 90);
  --rpsf-line: oklch(86% 0.02 250);
  --rpsf-white: oklch(99% 0 0);
  --rpsf-display: 'Barlow Condensed', Impact, sans-serif;
  --rpsf-body: 'Source Sans 3', system-ui, sans-serif;
}

html { scroll-behavior: smooth; }
body { background: var(--rpsf-paper); color: var(--rpsf-ink); font-family: var(--rpsf-body); font-size: 1.08rem; line-height: 1.6; overflow-x: hidden; }
body, p, li { font-family: var(--rpsf-body); }
h1, h2, h3, h4, h5, h6 { color: var(--rpsf-ink); font-family: var(--rpsf-display); font-weight: 700; letter-spacing: -.015em; text-transform: none; text-wrap: balance; }
a { color: var(--rpsf-orange-dark); transition: color .2s ease, background-color .2s ease, transform .2s ease; }
a:hover { color: var(--rpsf-navy); }
.container { max-width: 1180px; }

.site-header-wrap { position: relative; z-index: 20; background: var(--rpsf-white); }
.site-header__utility { background: var(--rpsf-navy); color: oklch(94% .02 235); font-size: .82rem; letter-spacing: .02em; }
.site-header__utility-inner { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 1rem; }
.site-header__utility a { color: var(--rpsf-white); text-decoration: none; }
.site-header__utility a:hover { color: oklch(82% .14 70); }
.site-header { background: var(--rpsf-white); border-bottom: 1px solid var(--rpsf-line); padding: 0; }
.site-header__inner { min-height: 94px; }
.site-brand { align-items: center; display: flex; gap: .72rem; padding: .45rem 0; text-decoration: none; }
.site-brand__mark { height: 70px; object-fit: contain; width: 112px; }
.site-brand__name { color: var(--rpsf-ink); display: grid; font-family: var(--rpsf-display); font-size: 1.06rem; line-height: .96; }
.site-brand__name strong { font-size: 1.48rem; letter-spacing: -.01em; }
.site-brand__name span { font-family: var(--rpsf-body); font-size: .72rem; font-weight: 600; letter-spacing: .08em; margin-top: .28rem; text-transform: uppercase; }
.site-header__nav .nav-link { color: var(--rpsf-ink); font-size: .96rem; font-weight: 600; padding: 1rem .9rem; text-decoration: none; }
.site-header__nav .nav-link:hover, .site-header__nav .nav-link:focus { color: var(--rpsf-orange-dark); }
.site-header__action .nav-link { background: var(--rpsf-orange); color: var(--rpsf-ink); margin-left: .7rem; padding: .72rem 1.05rem; }
.site-header__action .nav-link:hover, .site-header__action .nav-link:focus { background: var(--rpsf-orange-dark); color: var(--rpsf-white); }
.site-header__toggle { border: 1px solid var(--rpsf-line); padding: .65rem; }
.site-header__toggle span { background: var(--rpsf-navy); display: block; height: 2px; margin: 4px 0; width: 22px; }

/* Homepage: the film is the first viewport; the existing header becomes part of it. */
.rpsf-home .site-header-wrap { background: transparent; left: 0; position: absolute; right: 0; top: 0; z-index: 20; }
.rpsf-home .site-header { background: oklch(18% .05 250 / .4); border-bottom-color: oklch(100% 0 0 / .18); }
.rpsf-home .site-brand__name, .rpsf-home .site-brand__name strong, .rpsf-home .site-brand__name span { color: var(--rpsf-white); }
.rpsf-home .site-header__nav .nav-link { color: var(--rpsf-white); }
.rpsf-home .site-header__nav .nav-link:hover, .rpsf-home .site-header__nav .nav-link:focus { color: var(--rpsf-white); }
.rpsf-home .site-header__nav .nav-item:not(.site-header__action) > .nav-link { position: relative; }
.rpsf-home .site-header__nav .nav-item:not(.site-header__action) > .nav-link::before { background: oklch(82% .14 70); bottom: .58rem; content: ''; height: 2px; left: .9rem; position: absolute; transform: scaleX(0); transform-origin: left; transition: transform .25s cubic-bezier(.16, 1, .3, 1); width: calc(100% - 1.8rem); }
.rpsf-home .site-header__nav .nav-item:not(.site-header__action) > .nav-link:hover::before, .rpsf-home .site-header__nav .nav-item:not(.site-header__action) > .nav-link:focus-visible::before { transform: scaleX(1); }
.rpsf-home .site-header__nav .dropdown-menu { background: oklch(18% .05 250 / .96); border: 1px solid oklch(100% 0 0 / .18); }
.rpsf-home .site-header__nav .dropdown-item { color: var(--rpsf-white); }
.rpsf-home .site-header__nav .dropdown-item:hover, .rpsf-home .site-header__nav .dropdown-item:focus { background: oklch(82% .14 70); color: var(--rpsf-ink); }
.rpsf-home .site-header__toggle { border-color: oklch(100% 0 0 / .45); }
.rpsf-home .site-header__toggle span { background: var(--rpsf-white); }
.home-hero { background: var(--rpsf-navy); color: var(--rpsf-white); isolation: isolate; min-height: 100vh; min-height: 100dvh; overflow: hidden; position: relative; }
.home-video-embed { height: 100%; inset: 0; overflow: hidden; pointer-events: none; position: absolute; width: 100%; z-index: -1; }
.home-video-embed iframe { height: 100%; left: 50%; min-height: 100%; min-width: 100%; position: absolute; top: 50%; transform: translate(-50%, -50%) scale(1.12); width: 177.78vh; }
.home-video-embed .video-opacity { background: linear-gradient(90deg, oklch(16% .055 250 / .93) 0%, oklch(20% .05 250 / .72) 48%, oklch(16% .04 250 / .38) 100%); inset: 0; position: absolute; z-index: 1; }
.home-hero__content { display: flex; flex-direction: column; justify-content: flex-end; min-height: 100vh; min-height: 100dvh; padding-bottom: clamp(6rem, 12vh, 9rem); padding-top: clamp(13rem, 24vh, 17rem); position: relative; }
.home-hero__kicker { color: oklch(82% .14 70); font-size: .88rem; font-weight: 700; letter-spacing: .1em; margin-bottom: 1.25rem; text-transform: uppercase; }
.home-hero h1 { color: var(--rpsf-white); font-size: clamp(3.6rem, 7vw, 6rem); line-height: .88; max-width: 16ch; margin-bottom: 1.65rem; }
.home-hero h1 em { color: oklch(82% .14 70); font-style: normal; }
.home-hero__intro { color: oklch(94% .02 235); font-size: clamp(1.05rem, 1.8vw, 1.25rem); line-height: 1.45; margin-bottom: 2rem; max-width: 45ch; }
.home-hero__actions { align-items: center; display: flex; flex-wrap: wrap; gap: 1.4rem; }
.btn { border-radius: 0; font-family: var(--rpsf-body); font-size: .95rem; letter-spacing: .02em; padding: .9rem 1.25rem; text-transform: none; }
.btn-primary { background: var(--rpsf-orange); border-color: var(--rpsf-orange); color: var(--rpsf-ink); }
.btn-primary:hover, .btn-primary:focus { background: var(--rpsf-orange-hover); border-color: var(--rpsf-orange-hover); color: var(--rpsf-ink); transform: translateY(-2px); }
.home-hero__link { color: var(--rpsf-white); font-weight: 600; text-decoration: none; }
.home-hero__link:hover { color: oklch(82% .14 70); }
.home-hero__scroll { align-items: center; bottom: 2rem; color: oklch(84% .02 235); display: flex; font-size: .76rem; gap: .65rem; letter-spacing: .08em; position: absolute; right: max(1rem, calc((100vw - 1180px) / 2)); text-transform: uppercase; }
.home-hero__scroll span { border: 1px solid oklch(84% .02 235); border-radius: 50%; height: 24px; position: relative; width: 24px; }
.home-hero__scroll span::after { border-bottom: 1px solid currentColor; border-right: 1px solid currentColor; content: ''; height: 6px; left: 8px; position: absolute; top: 6px; transform: rotate(45deg); width: 6px; }

.home-content { padding-bottom: clamp(4rem, 8vw, 8rem); padding-top: clamp(3rem, 7vw, 7rem); }
/* Tables: remove white cell background so they blend with the body */
.table > :not(caption) > * > * { background-color: transparent; }

.streamfield > * { margin-left: auto; margin-right: auto; max-width: 75ch; }
.streamfield h2 { font-size: clamp(2.3rem, 4vw, 4rem); line-height: .96; margin-top: 1.5rem; }
.streamfield h3 { font-size: clamp(1.8rem, 3vw, 2.6rem); margin-top: 2.5rem; }
.streamfield p { font-size: 1.14rem; }
.streamfield a { font-weight: 600; }
.streamfield img { height: auto; max-width: 100%; }
.streamfield .btn { margin-top: .5rem; }

/* CMS imagery: framed content images; hero images intentionally stay unframed and full bleed. */
.streamfield .image-frame { background: var(--rpsf-white); border: 1px solid var(--rpsf-navy); padding: clamp(.4rem, 1vw, .7rem); width: 100%; }
.streamfield .image-frame__media { border: 1px solid oklch(29% .055 252 / .45); display: block; overflow: hidden; }
.streamfield .image-frame__image { display: block; filter: saturate(.94) contrast(1.04); transition: transform .55s cubic-bezier(.16, 1, .3, 1), filter .35s ease; width: 100%; }
.streamfield .image-frame:hover .image-frame__image { filter: saturate(1) contrast(1.02); transform: scale(1.012); }
.streamfield .image-frame figcaption { border-top: 1px solid var(--rpsf-line); color: var(--rpsf-navy); font-size: .88rem; line-height: 1.45; margin-top: .8rem; padding-top: .7rem; }
.streamfield .image-frame--left { float: left; margin-right: clamp(1.5rem, 4vw, 3.5rem); max-width: min(48%, 32rem); }
.streamfield .image-frame--right { float: right; margin-left: clamp(1.5rem, 4vw, 3.5rem); max-width: min(48%, 32rem); }
.streamfield .image-frame--center { margin-left: auto; margin-right: auto; }
.streamfield .image-frame--round { border-radius: 50%; overflow: hidden; padding: .3rem; width: min(100%, 22rem); }
.streamfield .image-frame--round .image-frame__media { border-radius: 50%; }
.streamfield .image-frame--round figcaption { text-align: center; }
/* The alumni profile is a portrait alongside long-form copy, not a feature image. */
.alumni-spotlight .image-frame--right { max-width: 10rem; width: min(100%, 10rem); }
.alumni-spotlight .image-frame--right .image-frame__media { width: 100%; }
.alumni-spotlight .image-frame--right .image-frame__image { aspect-ratio: 3 / 4; object-fit: cover; width: 100%; }
.image-grid { margin-bottom: clamp(3rem, 6vw, 5rem); margin-top: clamp(3rem, 6vw, 5rem); max-width: 100%; }
.image-grid__items { display: grid; gap: clamp(1.5rem, 4vw, 3.25rem); grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.in-the-news .image-grid__item { background: transparent; border: 0; border-radius: 0; overflow: hidden; transition: transform .25s cubic-bezier(.16, 1, .3, 1); }
.in-the-news .image-grid__item:hover { transform: translateY(-3px); }
.in-the-news .image-grid__item > a { color: inherit; display: block; height: 100%; text-decoration: none; }
.in-the-news .image-grid__item picture { background: var(--rpsf-white); border: 1px solid var(--rpsf-navy); display: block; overflow: hidden; padding: .4rem; }
.in-the-news .image-grid__image { aspect-ratio: 4 / 3; display: block; filter: saturate(.92) contrast(1.04); object-fit: cover; transition: transform .55s cubic-bezier(.16, 1, .3, 1), filter .35s ease; width: 100%; }
.in-the-news .image-grid__item:hover .image-grid__image { filter: saturate(1) contrast(1.02); transform: scale(1.025); }
.in-the-news .image-grid__item .card-body { border-top: 2px solid var(--rpsf-navy); padding: 1rem 0 0; }
.in-the-news .image-grid__item .card-title { color: var(--rpsf-ink); font-family: var(--rpsf-display); font-size: 1.55rem; margin-bottom: .45rem; }
.in-the-news .image-grid__item .card-text { font-size: 1rem; margin-bottom: 0; }
.image-feature { margin-left: calc(50% - 50vw); margin-top: clamp(2rem, 8vw, 3.5rem); max-width: none; width: 100vw; }
.image-feature__frame { margin: 0; overflow: hidden; position: relative; }
.image-feature__frame picture { display: block; }
.image-feature__image { display: block; min-height: clamp(24rem, 44vw, 42rem); object-fit: cover; width: 100%; }
.image-feature figcaption { background: var(--rpsf-navy); bottom: clamp(1.5rem, 5vw, 4rem); color: var(--rpsf-white); left: max(1rem, calc((100vw - 1180px) / 2)); margin: 0; max-width: min(34rem, calc(100% - 2rem)); padding: clamp(1.5rem, 4vw, 3rem); position: absolute; }
.image-feature figcaption h3, .image-feature figcaption h4 { color: var(--rpsf-white); margin: 0; }
.image-feature figcaption h4 { font-family: var(--rpsf-body); font-size: 1.08rem; font-weight: 500; line-height: 1.45; margin-top: .65rem; }

footer { background: var(--rpsf-ink); color: oklch(90% .02 235); margin-top: 0; }
.site-footer__inner { display: grid; gap: 2.5rem; grid-template-columns: 1.2fr 1.6fr 1fr; padding-bottom: 3.8rem; padding-top: 4rem; }
.site-footer__brand { align-items: center; display: flex; gap: .6rem; }
.site-footer__brand img { object-fit: contain; }
.site-footer__brand strong, .site-footer__brand span { display: block; font-family: var(--rpsf-display); line-height: 1; }
.site-footer__brand strong { color: var(--rpsf-white); font-size: 1.6rem; }
.site-footer__brand span { font-family: var(--rpsf-body); font-size: .7rem; font-weight: 600; letter-spacing: .08em; margin-top: .4rem; text-transform: uppercase; }
.site-footer__mission { border-left: 1px solid oklch(50% .04 250); padding-left: 2rem; }
.site-footer__mission p { color: var(--rpsf-white); font-family: var(--rpsf-display); font-size: 1.8rem; line-height: 1.05; margin-bottom: 1rem; max-width: 18ch; }
.site-footer__mission a, .site-footer__meta a { color: oklch(82% .14 70); font-weight: 600; text-decoration: none; }
.site-footer__meta { align-items: flex-start; display: flex; flex-direction: column; font-size: .92rem; gap: .55rem; justify-content: center; }
.site-footer__meta span { color: oklch(75% .02 235); }
.site-footer__credit { border-top: 1px solid oklch(32% .04 250); color: oklch(65% .02 235); font-size: .82rem; padding: .9rem 1rem; }
.site-footer__credit a { color: oklch(88% .02 235); }

@media (max-width: 767.98px) {
  .site-header__utility-inner { align-items: flex-start; flex-direction: column; gap: .15rem; }
  .site-header__inner { padding: 0 1rem; }
  .site-brand__mark { height: 60px; width: 92px; }
  .site-brand__name strong { font-size: 1.3rem; }
  .site-header__nav { background: var(--rpsf-white); border-top: 1px solid var(--rpsf-line); margin-top: .5rem; padding: .5rem 0 1rem; }
  .rpsf-home .site-header__nav { background: var(--rpsf-navy); border-top-color: oklch(100% 0 0 / .18); }
  .rpsf-home .site-header__nav .nav-link { color: var(--rpsf-white); }
  .rpsf-home .site-header__nav .nav-link:hover, .rpsf-home .site-header__nav .nav-link:focus { color: var(--rpsf-white); }
  .rpsf-home .site-header__nav .dropdown-menu { background: oklch(22% .05 250); border: 0; }
  .rpsf-home .site-header__nav .dropdown-item { color: var(--rpsf-white); }
  .site-header__nav .nav-link { padding: .7rem 0; }
  .site-header__action .nav-link { margin-left: 0; margin-top: .35rem; padding: .75rem 1rem; }
  .home-hero, .home-hero__content { min-height: 100svh; min-height: 100dvh; }
  .home-hero__content { padding-bottom: 5.5rem; padding-top: 10rem; }
  .home-hero h1 { font-size: clamp(3.3rem, 17vw, 5rem); }
  .home-hero__intro { max-width: 34ch; }
  .home-hero__scroll { bottom: 1.25rem; left: 1rem; right: auto; }
  .streamfield .image-frame--left, .streamfield .image-frame--right { float: none; margin-left: auto; margin-right: auto; max-width: 100%; }
  .alumni-spotlight .image-frame--right { max-width: min(100%, 10rem); }
  .image-feature__frame { display: block; }
  .image-feature__image { min-height: 19rem; }
  .image-feature figcaption { padding: 1.5rem; }
  .site-footer__inner { grid-template-columns: 1fr; padding-bottom: 3rem; padding-top: 3rem; }
  .site-footer__mission { border-left: 0; border-top: 1px solid oklch(50% .04 250); padding-left: 0; padding-top: 1.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
