/* =====================================================================
   Styles for the parts of the website driven by the admin panel.
   Colours are taken from the school's existing Elementor kit.
   ===================================================================== */

:root {
  --rps-green:  #073221;
  --rps-green-d:#04261A;
  --rps-green-m:#0B4A2F;
  --rps-green-l:#177A4C;
  --rps-gold:   #F2B705;
  --rps-cream:  #FFF4CF;

  /* ---- The site accent. Change these two lines to repaint every
     button, badge, marquee label and slider dot on the website. ---- */
  --rps-accent:       #F2B705;   /* accent background          */
  --rps-accent-hover: #E0A904;   /* darker, for hover states   */
  --rps-accent-ink:   #04261A;   /* text drawn ON the accent   */
  --rps-accent-soft:  #FFF4CF;   /* pale tint for chips/badges */
  --rps-mist:   #F0F8F3;
  --rps-paper:  #FBFAF6;
  --rps-rule:   #E3E9E5;
  --rps-ink:    #132119;
  --rps-ink-2:  #3B4A42;
}

/* ============================================ 2 · HOME BANNER MARQUEE == */
.rps-hero-slider {
  position: relative;
  overflow: hidden;
  background: var(--rps-green-d);
}
/* One fixed height for the whole slider, so every image covers exactly the
   same area no matter how long its heading is. */
.rps-hero-slider__track {
  position: relative;
  height: clamp(500px, 70vh, 720px);
}

.rps-slide {
  position: absolute; inset: 0;
  overflow: hidden;
  opacity: 0; visibility: hidden;
  transition: opacity .8s ease;
  display: flex; align-items: center;
}
.rps-slide.is-on { opacity: 1; visibility: visible; }
.rps-slide__bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transform: scale(1.04);
  transition: transform 7s ease;
}
.rps-slide.is-on .rps-slide__bg { transform: scale(1); }
.rps-slide__bg::after {
  content: none;
}

/* Home-banner copy stays clear of the image while following the requested
   black type treatment. Buttons keep their existing accent styling. */
.rps-hero-slider .rps-slide__inner { color: #000 !important; text-shadow: none; }
.rps-hero-slider .rps-slide .rps-slide__eyebrow,
.rps-hero-slider .rps-slide .rps-slide__title,
.rps-hero-slider .rps-slide .rps-slide__text { color: #000 !important; text-shadow: none; }

/* Image-only slides stay entirely clear; their optional text is omitted by
   the template, so an administrator can use a banner purely as a photo. */

/* =====================================================================
   CONTACT PAGE - visible hero, cards/map together, centred enquiry form
   ===================================================================== */
body.page-id-124 .rps-pagehero {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
}
body.page-id-124 .rps-pagehero > .e-con-inner {
  width: 100%;
}
body.page-id-124 .elementor-element-a6268bf {
  display: grid !important;
  grid-template-columns: minmax(270px, .85fr) minmax(360px, 1.15fr);
  gap: 22px;
  align-items: stretch;
}
body.page-id-124 .elementor-element-a6268bf > .rps-contact-card {
  grid-column: 1;
  width: 100%;
}
/* Form first, then the visit/contact details section. */
body.page-id-124 .elementor-124 { display: flex !important; flex-direction: column; }
body.page-id-124 .elementor-124 > .elementor-element-22221b0 { order: 1; }
body.page-id-124 .elementor-124 > .elementor-element-00c692f { order: 2; }
body.page-id-124 .elementor-124 > .elementor-element-8b7a793 { order: 3; }
body.page-id-124 .elementor-element-a6268bf > .rps-contact-card { display: none !important; }
body.page-id-124 .rps-contact-info-card {
  grid-column: 1; grid-row: 1; align-self: stretch;
  padding: 30px; border: 1px solid var(--rps-rule); border-radius: 18px;
  background: #fff; box-shadow: 0 18px 40px -28px rgba(4, 38, 26, .32);
}
body.page-id-124 .rps-contact-info-card__icon { color: var(--rps-green-m); font-size: 28px; }
body.page-id-124 .rps-contact-info-card h2 { margin: 14px 0; color: var(--rps-green); font-size: 25px; }
body.page-id-124 .rps-contact-info-card__content { color: var(--rps-ink-2); font-size: 15px; line-height: 1.7; }
body.page-id-124 .rps-contact-info-card__richtext > :first-child { margin-top: 0; padding-top: 0; border-top: 0; }
body.page-id-124 .rps-contact-info-card__richtext h2,
body.page-id-124 .rps-contact-info-card__richtext h3,
body.page-id-124 .rps-contact-info-card__richtext h4 {
  margin: 20px 0 7px; padding-top: 18px; border-top: 1px solid var(--rps-rule);
  color: var(--rps-green-m); font-size: 17px;
}
body.page-id-124 .rps-contact-info-card__richtext p,
body.page-id-124 .rps-contact-info-card__richtext ul,
body.page-id-124 .rps-contact-info-card__richtext ol { margin: 0; color: var(--rps-ink-2); font-size: 15px; line-height: 1.7; }
body.page-id-124 .rps-contact-info-card__richtext ul,
body.page-id-124 .rps-contact-info-card__richtext ol { padding-left: 22px; }
body.page-id-124 .rps-contact-map-panel {
  grid-column: 2;
  grid-row: 1 / span 3;
  padding: 28px;
  border: 1px solid var(--rps-rule);
  border-radius: 18px;
  background: #fff;
  overflow: hidden; box-shadow: 0 18px 40px -28px rgba(4, 38, 26, .32);
}
body.page-id-124 .rps-contact-map-panel h2 { margin: 0 0 18px; color: var(--rps-green); }
body.page-id-124 .rps-contact-map-panel .rps-map { height: 430px; overflow: hidden; border-radius: 12px; }
body.page-id-124 .rps-contact-map-panel .rps-map iframe { display: block; width: 100%; height: 430px; border: 0; }
body.page-id-124 .rps-contact-map-duplicate { display: none !important; }
body.page-id-124 .elementor-element-00c692f > .e-con-inner { display: block; }
body.page-id-124 .elementor-element-f8d9d71 { display: block; }
body.page-id-124 .elementor-element-c880078 {
  width: min(100%, 760px) !important;
  margin-inline: auto;
}
@media (max-width: 767px) {
  body.page-id-124 .elementor-element-a6268bf { grid-template-columns: 1fr; }
  body.page-id-124 .elementor-element-a6268bf > .rps-contact-card,
  body.page-id-124 .rps-contact-info-card,
  body.page-id-124 .rps-contact-map-panel { grid-column: 1; grid-row: auto; }
  body.page-id-124 .rps-contact-map-panel { padding: 20px; min-height: 340px; }
}

/* Shared sizes keep the two right-hand shortcuts aligned and separated. */
:root {
  --rps-floating-edge: 22px;
  --rps-floating-size: 56px;
  --rps-floating-gap: 14px;
}
.rps-floating-whatsapp {
  position: fixed;
  right: calc(var(--rps-floating-edge) + env(safe-area-inset-right, 0px));
  bottom: calc(var(--rps-floating-edge) + env(safe-area-inset-bottom, 0px));
  z-index: 10001;
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--rps-floating-size); height: var(--rps-floating-size); border-radius: 50%;
  background: #25D366; color: #fff; font-size: 31px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .28);
  transition: transform .2s ease, box-shadow .2s ease;
}
.rps-floating-whatsapp:hover,
.rps-floating-whatsapp:focus-visible { color: #fff; transform: translateY(-3px) scale(1.04); box-shadow: 0 14px 32px rgba(0, 0, 0, .34); }
body .hfe-scroll-to-top-button {
  right: calc(var(--rps-floating-edge) + env(safe-area-inset-right, 0px));
  bottom: calc(var(--rps-floating-edge) + env(safe-area-inset-bottom, 0px) + var(--rps-floating-size) + var(--rps-floating-gap));
  width: var(--rps-floating-size); height: var(--rps-floating-size);
  margin: 0; padding: 0; border: 0; border-radius: 50%;
  z-index: 10001;
}
@media (max-width: 767px) {
  :root { --rps-floating-edge: 16px; --rps-floating-size: 52px; }
  .rps-floating-whatsapp { font-size: 29px; }
}

/* Clear confirmation at the top of the Contact Us enquiry form. */
.rps-contact-form .elementor-message-success {
  margin: 0 0 18px; padding: 15px 18px;
  border: 1px solid #9DCDB0; border-radius: 10px;
  background: #EAF7EE; color: var(--rps-green);
  font-family: Poppins, sans-serif; font-size: 14.5px; font-weight: 600; line-height: 1.55;
}
.rps-slide__inner {
  position: relative; z-index: 2;
  width: 100%; max-width: 1140px;
  margin: 0 auto; padding: 40px 24px;
  color: #fff;
}
.rps-slide--center .rps-slide__inner { text-align: center; }
.rps-slide--right  .rps-slide__inner { text-align: right; }

.rps-slide__eyebrow {
  display: inline-block;
  font-family: Poppins, sans-serif;
  font-size: 12px; font-weight: 800;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--rps-accent);
  margin-bottom: 16px;
}
.rps-slide__title {
  font-family: Poppins, sans-serif;
  font-weight: 600;
  font-size: clamp(30px, 5vw, 58px);
  line-height: 1.08;
  letter-spacing: -.02em;
  color: #fff;
  margin: 0 0 16px;
  max-width: 17ch;
}

/* Home banner copy uses black text; imagery and buttons stay unchanged. */
.rps-hero-slider .rps-slide__title { color: #000; }
.rps-hero-slider .rps-slide__text { color: #000; }
.rps-hero-slider .rps-slide__eyebrow { color: #000; }
.rps-slide--center .rps-slide__title,
.rps-slide--right  .rps-slide__title { max-width: none; }

.rps-slide__text {
  font-family: Poppins, sans-serif;
  font-size: clamp(15px, 1.5vw, 17.5px);
  line-height: 1.65;
  color: rgba(255,255,255,.82);
  max-width: 54ch;
  margin: 0 0 28px;
}
.rps-slide--center .rps-slide__text { margin-left: auto; margin-right: auto; }
.rps-slide--right  .rps-slide__text { margin-left: auto; }

.rps-slide__buttons { display: flex; gap: 12px; flex-wrap: wrap; }
.rps-slide--center .rps-slide__buttons { justify-content: center; }
.rps-slide--right  .rps-slide__buttons { justify-content: flex-end; }

.rps-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 26px;
  border-radius: 999px;
  font-family: Poppins, sans-serif;
  font-size: 14.5px; font-weight: 700;
  text-decoration: none;
  transition: transform .18s, box-shadow .18s, background .18s;
}
.rps-btn--gold { background: var(--rps-accent); color: var(--rps-accent-ink);
                 box-shadow: 0 6px 20px rgba(0,0,0,.18); }
.rps-btn--gold:hover { background: var(--rps-accent-hover); transform: translateY(-2px);
                       box-shadow: 0 10px 28px rgba(0,0,0,.24); color: var(--rps-accent-ink); }
.rps-btn--ghost { background: rgba(255,255,255,.10); color: #fff;
                  border: 1px solid rgba(255,255,255,.34); backdrop-filter: blur(4px); }
.rps-btn--ghost:hover { background: rgba(255,255,255,.19); color: #fff; transform: translateY(-2px); }

/* dots + arrows */
.rps-hero-dots {
  position: absolute; left: 0; right: 0; bottom: 26px;
  display: flex; justify-content: center; gap: 9px; z-index: 4;
}
.rps-hero-dots button {
  width: 9px; height: 9px; padding: 0;
  border: 0; border-radius: 50%;
  background: rgba(255,255,255,.42);
  cursor: pointer; transition: .22s;
}
.rps-hero-dots button.is-on { background: var(--rps-accent); width: 30px; border-radius: 6px; }

.rps-hero-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 46px; height: 46px; z-index: 4;
  border: 1px solid rgba(255,255,255,.28); border-radius: 50%;
  background: rgba(4,38,26,.34); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: 18px; transition: .2s;
}
.rps-hero-arrow:hover { background: var(--rps-accent); color: var(--rps-accent-ink);
                        border-color: var(--rps-accent); }
.rps-hero-arrow--prev { left: 20px; }
.rps-hero-arrow--next { right: 20px; }

@media (max-width: 991.98px) {
  .rps-hero-slider__track { height: clamp(440px, 60vh, 560px); }
}
@media (max-width: 767.98px) {
  .rps-hero-slider__track { height: 500px; }
  .rps-slide__inner { padding: 28px 18px; }
  .rps-hero-arrow { display: none; }
  .rps-hero-dots { bottom: 18px; }
}

/* ========================================= 4 · UPCOMING EVENTS STRIP == */
.rps-events-bar {
  background: var(--rps-green);
  color: #fff;
  display: flex; align-items: stretch;
  overflow: hidden;
}
.rps-events-bar__label {
  flex: none;
  display: flex; align-items: center; gap: 8px;
  background: var(--rps-accent); color: var(--rps-accent-ink);
  padding: 0 20px;
  font-family: Poppins, sans-serif;
  font-size: 12.5px; font-weight: 800;
  letter-spacing: .08em; text-transform: uppercase;
  white-space: nowrap;
  text-decoration: none;
}
.rps-events-bar__label:hover,
.rps-events-bar__label:focus-visible { color: var(--rps-accent-ink); filter: brightness(.95); }
.rps-events-bar__viewport { flex: 1; overflow: hidden; position: relative; }
.rps-events-bar__track {
  display: inline-flex; align-items: center; gap: 40px;
  padding: 5px 0;
  height: 100%;
  white-space: nowrap;
  animation: rps-marquee 38s linear infinite;
}
.rps-events-bar:hover .rps-events-bar__track { animation-play-state: paused; }
@keyframes rps-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.rps-event-chip {
  display: inline-flex; align-items: center; gap: 9px;
  background: none; border: 0; cursor: pointer;
  color: #fff;
  font-family: Poppins, sans-serif;
  font-size: 14px; font-weight: 600;
  padding: 0;
}
.rps-event-chip:hover { color: var(--rps-accent); }
.rps-event-chip time {
  background: rgba(255,255,255,.14);
  border-radius: 20px;
  padding: 3px 11px;
  font-size: 11.5px; font-weight: 800;
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--rps-accent);
}

@media (max-width: 575.98px) {
  .rps-events-bar__label span { display: none; }
  .rps-events-bar__label { padding: 12px 14px; }
}

/* ========================================= UPCOMING EVENTS PAGE == */
.rps-events-page__main { background: var(--rps-paper); }
.rps-events-wrap { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.rps-events-page__hero { padding: 68px 0 62px; background: var(--rps-green); color: #fff; }
.rps-events-page__hero .rps-crumb { margin: 0 0 16px; color: rgba(255,255,255,.78); }
.rps-events-page__hero .rps-crumb a { color: #fff; }
.rps-events-page__hero h1 { margin: 0 0 12px; font-family: Poppins, sans-serif; font-size: clamp(34px, 5vw, 54px); line-height: 1.12; color: #fff; }
.rps-events-page__hero p:last-child { max-width: 620px; margin: 0; font-size: 17px; line-height: 1.65; color: rgba(255,255,255,.82); }
.rps-events-page__section { padding: 72px 0; }
.rps-events-page__heading { margin-bottom: 30px; text-align: center; }
.rps-events-page__heading .rps-eyebrow { display: block; margin-bottom: 9px; }
.rps-events-page__heading h2 { margin: 0; color: var(--rps-green); font-family: Poppins, sans-serif; font-size: clamp(27px, 3vw, 38px); }
.rps-event-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.rps-event-card { display: flex; flex-direction: column; overflow: hidden; padding: 0; border: 1px solid var(--rps-rule); border-radius: 18px; background: #fff; color: var(--rps-ink); text-align: left; cursor: pointer; box-shadow: 0 12px 28px -24px rgba(4,38,26,.45); transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.rps-event-card:hover, .rps-event-card:focus-visible {
  transform: translateY(-5px); border-color: var(--rps-gold);
  background: #fff !important; color: var(--rps-ink) !important;
  box-shadow: 0 24px 42px -24px rgba(4,38,26,.42); outline: none;
}
.rps-event-card:hover strong, .rps-event-card:focus-visible strong { color: var(--rps-green) !important; }
.rps-event-card:hover .rps-event-card__text, .rps-event-card:focus-visible .rps-event-card__text { color: var(--rps-ink-2) !important; }
.rps-event-card:hover .rps-event-card__more, .rps-event-card:focus-visible .rps-event-card__more { color: var(--rps-green-m) !important; }
.rps-event-card img, .rps-event-card__placeholder { width: 100%; height: 190px; object-fit: cover; }
.rps-event-card__placeholder { display: grid; place-items: center; background: var(--rps-mist); color: var(--rps-green-l); font-size: 42px; }
.rps-event-card__body { display: flex; flex: 1; flex-direction: column; align-items: flex-start; padding: 22px; }
.rps-event-card__category { margin-bottom: 8px; color: var(--rps-green-l); font-family: Poppins, sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.rps-event-card__date { margin-bottom: 8px; color: var(--rps-green-m); font-family: Poppins, sans-serif; font-size: 13px; font-weight: 700; }
.rps-event-card strong { color: var(--rps-green); font-family: Poppins, sans-serif; font-size: 20px; line-height: 1.3; }
.rps-event-card__text { margin-top: 10px; color: var(--rps-ink-2); font-size: 14.5px; line-height: 1.55; }
.rps-event-card__more { margin-top: auto; padding-top: 18px; color: var(--rps-green-m); font-family: Poppins, sans-serif; font-size: 13px; font-weight: 800; }
.rps-event-card__more i { margin-left: 5px; transition: transform .2s ease; }
.rps-event-card:hover .rps-event-card__more i { transform: translateX(4px); }
.rps-events-page__empty { padding: 70px 24px; border: 1px dashed #B7CFC0; border-radius: 18px; background: #fff; color: var(--rps-ink-2); text-align: center; }
.rps-events-page__empty i { color: var(--rps-green-l); font-size: 42px; }
.rps-events-page__empty h2 { margin: 14px 0 8px; color: var(--rps-green); font-family: Poppins, sans-serif; }
.rps-events-page__empty p { margin: 0; }
@media (max-width: 900px) { .rps-event-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .rps-events-wrap { width: min(100% - 32px, 1180px); } .rps-events-page__hero { padding: 48px 0; } .rps-events-page__section { padding: 48px 0; } .rps-event-cards { grid-template-columns: 1fr; gap: 16px; } .rps-event-card img, .rps-event-card__placeholder { height: 180px; } }

/* ============================== 3 + 4 · POPUP (announcement & event) == */
.rps-modal {
  position: fixed; inset: 0; z-index: 99999;
  display: none;
  align-items: center; justify-content: center;
  padding: 20px;
}
.rps-modal.is-open { display: flex; }
.rps-modal__veil {
  position: absolute; inset: 0;
  background: rgba(4,38,26,.72);
  backdrop-filter: blur(3px);
  animation: rps-fade .3s ease;
}
.rps-modal__box {
  position: relative;
  width: 100%; max-width: 520px;
  max-height: 90vh; overflow-y: auto;
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 30px 80px rgba(4,38,26,.42);
  animation: rps-pop .34s cubic-bezier(.2,.9,.3,1.2);
}
@keyframes rps-fade { from { opacity: 0 } to { opacity: 1 } }
@keyframes rps-pop  { from { opacity: 0; transform: translateY(22px) scale(.97) }
                      to   { opacity: 1; transform: none } }

.rps-modal__close {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  width: 36px; height: 36px;
  border: 0; border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: var(--rps-green); font-size: 17px;
  cursor: pointer;
  box-shadow: 0 2px 10px rgba(4,38,26,.2);
  display: inline-flex; align-items: center; justify-content: center;
  transition: .18s;
}
.rps-modal__close:hover { background: var(--rps-accent); }

.rps-modal__img {
  width: 100%; max-height: 250px; object-fit: cover;
  border-radius: 18px 18px 0 0; display: block;
}
.rps-modal__body { padding: 26px 28px 28px; }
.rps-modal__eyebrow {
  font-family: Poppins, sans-serif;
  font-size: 11px; font-weight: 800;
  letter-spacing: .13em; text-transform: uppercase;
  color: var(--rps-green-l); margin-bottom: 9px;
}
.rps-modal__title {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: 24px; line-height: 1.22; color: var(--rps-green);
  margin: 0 0 12px;
}
.rps-modal__meta {
  display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px;
}
.rps-modal__meta span {
  background: var(--rps-mist); color: var(--rps-green-m);
  border-radius: 20px; padding: 4px 12px;
  font-family: Poppins, sans-serif; font-size: 12.5px; font-weight: 700;
}
.rps-modal__text {
  font-family: Poppins, sans-serif; font-size: 15px; line-height: 1.68;
  color: var(--rps-ink-2); margin: 0 0 20px;
}
/* Keep the paragraph structure created in the admin rich-text editor. */
.rps-modal__text > p,
.rps-modal__text > div { margin: 0 0 16px; }
.rps-modal__text > p:last-child,
.rps-modal__text > div:last-child { margin-bottom: 0; }
.rps-modal__text div:empty { display: block; min-height: 1em; }
.rps-modal__text ul,
.rps-modal__text ol { margin: 0 0 16px 1.25em; padding-left: 1.1em; }
.rps-modal__text li + li { margin-top: 5px; }
.rps-modal__text strong { color: var(--rps-ink); }
.rps-modal__actions { display: flex; gap: 10px; flex-wrap: wrap; }
.rps-modal__actions .rps-btn--gold { box-shadow: none; }
.rps-modal__actions .rps-btn--plain {
  background: var(--rps-mist); color: var(--rps-green-m);
}
.rps-modal__actions .rps-btn--plain:hover { background: var(--rps-rule); color: var(--rps-green); }

/* ================================================= 7 · FACULTY GRID == */
.rps-faculty-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
  gap: 20px;
  width: 100%;
}
.rps-faculty {
  background: #fff;
  border: 1px solid var(--rps-rule);
  border-radius: 16px;
  padding: 22px 20px;
  text-align: center;
  transition: transform .2s, box-shadow .2s, border-color .2s;
}
.rps-faculty:hover {
  transform: translateY(-3px);
  border-color: var(--rps-green-l);
  box-shadow: 0 14px 34px rgba(7,50,33,.10);
}
.rps-faculty__photo {
  width: 96px; height: 96px;
  border-radius: 50%; object-fit: cover;
  margin: 0 auto 14px; display: block;
  border: 3px solid var(--rps-mist);
}
.rps-faculty__photo--empty {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(140deg, var(--rps-green-m), var(--rps-green-l));
  color: #fff;
  font-family: Poppins, sans-serif; font-size: 34px; font-weight: 600;
}
.rps-faculty__name {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: 17px; color: var(--rps-green); margin: 0 0 4px;
}
.rps-faculty__role {
  font-family: Poppins, sans-serif; font-size: 13px; font-weight: 700;
  color: var(--rps-green-l); margin: 0 0 6px;
}
.rps-faculty__qual, .rps-faculty__exp {
  font-family: Poppins, sans-serif; font-size: 12.5px;
  color: var(--rps-ink-2); margin: 0 0 3px;
}
.rps-faculty__bio {
  font-family: Poppins, sans-serif; font-size: 13px; line-height: 1.6;
  color: var(--rps-ink-2); margin-top: 10px; text-align: left;
}
.rps-faculty__pdf {
  display: inline-block; margin-top: 12px;
  font-family: Poppins, sans-serif; font-size: 12.5px; font-weight: 700;
  color: var(--rps-green-m); text-decoration: underline;
}

/* ================================================ 9 · DOWNLOAD CHIPS == */
.rps-chips { display: flex; flex-wrap: wrap; gap: 9px; margin: 0; }
.rps-chips a {
  display: inline-block;
  background: var(--rps-mist); color: var(--rps-green-m);
  border: 1px solid var(--rps-rule);
  border-radius: 999px; padding: 7px 16px;
  font-family: Poppins, sans-serif; font-size: 13px; font-weight: 700;
  text-decoration: none; transition: .16s;
}
.rps-chips a:hover { background: var(--rps-green-m); color: #fff; border-color: var(--rps-green-m); }

/* Document cards keep the site's original look (post-22.css). Only the
   "not open to visitors" state is added here. */
.rps-doc--locked { cursor: not-allowed; background: #FBFCFB; }
.rps-doc--locked .rps-doc__icon { background: #EEF1EF; color: #68766E; font-size: 14px; }
.rps-doc--locked .rps-doc__name,
.rps-doc--locked:hover .rps-doc__name { color: #3B4A42; }
.rps-doc__lock {
  display: block; margin-top: 3px;
  font-family: Poppins, sans-serif; font-size: 11.5px; font-weight: 700; color: #8A6A00;
}

/* ==================================================== 5 · ABOUT BLOCK == */
.rps-about-cms { width: 100%; }
.rps-about-cms__grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 44px; align-items: center; width: 100%;
}
.rps-about-cms__img {
  width: 100%; border-radius: 18px; display: block;
  box-shadow: 0 20px 50px rgba(7,50,33,.14);
}
.rps-about-cms__body h2 {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: clamp(25px, 3vw, 36px); line-height: 1.18;
  color: var(--rps-green); margin: 0 0 16px; letter-spacing: -.01em;
}
.rps-about-cms__body { font-family: Poppins, sans-serif; }
.rps-about-cms__text {
  font-size: 15.5px; line-height: 1.72; color: var(--rps-ink-2); margin-bottom: 22px;
}
.rps-about-cms__text p { margin: 0 0 12px; }

@media (max-width: 991.98px) {
  .rps-about-cms__grid { grid-template-columns: 1fr; gap: 26px; }
}

/* =====================================================================
   Overrides — the Elementor kit styles h1/h2/p globally, so hero text
   needs a slightly stronger selector to stay legible on the photo.
   ===================================================================== */
.rps-hero-slider .rps-slide .rps-slide__title { color: #fff; }
.rps-hero-slider .rps-slide .rps-slide__text  { color: rgba(255,255,255,.85); }
.rps-hero-slider .rps-slide .rps-slide__eyebrow { color: var(--rps-accent); }
.rps-hero-slider .rps-slide .rps-btn { text-decoration: none; }
.rps-hero-slider .rps-slide .rps-btn--ghost,
.rps-hero-slider .rps-slide .rps-btn--ghost:hover,
.rps-hero-slider .rps-slide .rps-btn--ghost:focus { color: #fff; }
.rps-hero-slider .rps-slide .rps-btn--gold,
.rps-hero-slider .rps-slide .rps-btn--gold:hover,
.rps-hero-slider .rps-slide .rps-btn--gold:focus { color: var(--rps-accent-ink); }

/* ---------------------------------------------------------------------
   HEADER - spread across the screen, same height as before (77px desktop).
   The logo fills the full height; the content is larger. Elementor sets
   these with very specific rules, so the selectors match their weight
   instead of using !important.
   --------------------------------------------------------------------- */
.elementor-64 .elementor-element.elementor-element-3176112,
.elementor-64 .elementor-element.elementor-element-389624e {
  --content-width: 1760px;
  --padding-left: 40px;
  --padding-right: 40px;
}
.elementor-64 .elementor-element.elementor-element-389624e { --padding-top: 0px; --padding-bottom: 0px; }
.elementor-64 .rps-header > .e-con-inner { min-height: 76px; }

/* logo as tall as the header, three lines of text beside it */
.elementor-64 .rps-header .rps-header__brand { gap: 12px; }
.elementor-64 .rps-header .rps-header__brand img { width: auto; height: 76px; }
.elementor-64 .rps-header .rps-header__name { font-size: 21px; font-weight: 700; line-height: 1.15; letter-spacing: -.01em; white-space: nowrap; }
.elementor-64 .rps-header .rps-header__sub  { font-size: 10.5px; line-height: 1.5; letter-spacing: .06em; white-space: nowrap; margin-top: 2px; }
.elementor-64 .rps-header .rps-header__note { display: block; font-size: 10.5px; font-weight: 500; line-height: 1.45; color: #5E7A6B; white-space: nowrap; }

/* menu and buttons, sized by the widths measured for each screen band so the
   header never wraps onto a second line */
@media (min-width: 1025px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item {
    font-size: 15px; font-weight: 600;
    padding-left: 11px; padding-right: 11px;
  }
  .elementor-64 .elementor-element.elementor-element-ebf8134 .elementor-button {
    font-size: 15px; line-height: 1; padding: 16px 28px;
  }
}
/* 1600-1759: smaller menu */
@media (min-width: 1025px) and (max-width: 1759px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item { font-size: 14px; padding-left: 6px; padding-right: 6px; }
}
/* 1440-1599: calendar button shows its icon only (its name appears on hover) */
@media (min-width: 1025px) and (max-width: 1599px) {
  body .rps-header .rps-header-actions button.rps-cal-btn { width: 48px; padding: 0; gap: 0; justify-content: center; }
  .rps-cal-btn__label { display: none; }
}
/* 1366-1439: the "Managed by" line gives way */
@media (min-width: 1025px) and (max-width: 1439px) {
  .elementor-64 .rps-header .rps-header__note { display: none; }
}
/* 1280-1365 */
@media (min-width: 1025px) and (max-width: 1365px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item { font-size: 12.5px; padding-left: 3px; padding-right: 3px; }
}
/* 1025-1279: compact; the top bar already carries the "Apply Now" link */
@media (min-width: 1025px) and (max-width: 1279px) {
  .elementor-64 .elementor-element.elementor-element-3176112,
  .elementor-64 .elementor-element.elementor-element-389624e { --padding-left: 20px; --padding-right: 20px; }
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item { font-size: 12px; padding-left: 2px; padding-right: 2px; }
  .elementor-64 .rps-header .rps-header__name { font-size: 16px; }
  .elementor-64 .rps-header .rps-header__sub  { font-size: 9px; }
  .rps-header .elementor-element-ebf8134 { display: none; }
}

/* tablets and phones: the opened menu floats under the menu button instead of
   stretching the header, so the full-height logo and the name still fit on
   one row on small phones */
@media (max-width: 1024px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d { position: relative; }
  .elementor-64 .elementor-element.elementor-element-5ff9a3d .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    position: absolute; top: calc(100% + 10px); right: 0; z-index: 60;
    width: max-content; min-width: 264px; max-width: calc(100vw - 32px);
  }
}

/* tablets and phones: same heights as before (78px / 74px) */
@media (max-width: 1024px) {
  .elementor-64 .elementor-element.elementor-element-3176112,
  .elementor-64 .elementor-element.elementor-element-389624e { --padding-left: 16px; --padding-right: 16px; }
  .elementor-64 .rps-header > .e-con-inner { min-height: 77px; }
  .elementor-64 .rps-header .rps-header__brand img { height: 77px; }
  .elementor-64 .rps-topbar .rps-topbar-social { display: none; }     /* shown in the menu instead */
  .elementor-64 .rps-topbar .elementor-icon-list-text { font-size: 12px; }
}
@media (max-width: 767px) {
  .elementor-64 .rps-header > .e-con-inner { min-height: 73px; }
  .elementor-64 .rps-header .rps-header__brand { gap: 8px; }
  .elementor-64 .rps-header .rps-header__brand img { height: 73px; }
  .elementor-64 .rps-header .rps-header__name { font-size: 16px; }
  .elementor-64 .rps-header .rps-header__sub  { font-size: 9px; letter-spacing: .04em; }
  .elementor-64 .rps-header .rps-header__note { display: none; }
  .elementor-64 .rps-topbar .elementor-icon-list-text { font-size: 11px; }
}

/* =====================================================================
   9 · DOWNLOADS PAGE
   ===================================================================== */
.rps-dl { background: var(--rps-paper); }

.rps-dl-wrap {
  width: 100%; max-width: 1160px;
  margin: 0 auto; padding: 0 24px;
}

/* ---- hero ---- */
.rps-dl-hero {
  position: relative;
  background: linear-gradient(150deg, var(--rps-green) 0%, var(--rps-green-d) 100%);
  color: #fff;
  padding: 44px 0 40px;
  overflow: hidden;
}
.rps-dl-hero::after {
  content: ""; position: absolute;
  width: 420px; height: 420px; right: -130px; top: -180px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .045);
}
.rps-dl-hero > * { position: relative; z-index: 1; }

.rps-dl-crumb {
  font-family: Poppins, sans-serif;
  font-size: 12.5px; font-weight: 600;
  color: rgba(255, 255, 255, .6);
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 18px;
}
.rps-dl-crumb a { color: rgba(255, 255, 255, .82); text-decoration: none; }
.rps-dl-crumb a:hover { color: var(--rps-accent); }
.rps-dl-crumb strong { color: #fff; font-weight: 700; }

.rps-dl-hero__title {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: clamp(30px, 4.4vw, 46px); line-height: 1.1;
  letter-spacing: -.02em; color: #fff; margin: 0 0 14px;
}
.rps-dl-hero__lead {
  font-family: Poppins, sans-serif;
  font-size: 15.5px; line-height: 1.65;
  color: rgba(255, 255, 255, .74);
  max-width: 62ch; margin: 0 0 30px;
}

.rps-dl-hero__facts { display: flex; flex-wrap: wrap; gap: 42px; }
.rps-dl-hero__facts b {
  display: block;
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: 27px; line-height: 1; color: var(--rps-accent);
}
.rps-dl-hero__facts span {
  display: block; margin-top: 5px;
  font-family: Poppins, sans-serif;
  font-size: 11px; font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase;
  color: rgba(255, 255, 255, .55);
}

/* ---- sticky category bar ---- */
.rps-dl-nav {
  position: sticky; top: 0; z-index: 30;
  background: rgba(255, 255, 255, .95);
  backdrop-filter: saturate(180%) blur(10px);
  border-bottom: 1px solid var(--rps-rule);
}
.rps-dl-nav__inner {
  display: flex; gap: 8px; overflow-x: auto;
  padding-top: 12px; padding-bottom: 12px;
  scrollbar-width: none;
}
.rps-dl-nav__inner::-webkit-scrollbar { display: none; }
.rps-dl-nav a {
  flex: none;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 15px;
  border: 1px solid var(--rps-rule); border-radius: 999px;
  background: #fff;
  font-family: Poppins, sans-serif;
  font-size: 13px; font-weight: 700;
  color: var(--rps-ink-2); text-decoration: none;
  white-space: nowrap; transition: .16s;
}
.rps-dl-nav a:hover {
  border-color: var(--rps-green-m); background: var(--rps-mist);
  color: var(--rps-green); transform: translateY(-1px);
}
.rps-dl-nav a em {
  font-style: normal; font-size: 11px; font-weight: 800;
  background: var(--rps-mist); color: var(--rps-green-m);
  border-radius: 20px; padding: 1px 7px;
}

/* ---- groups ---- */
.rps-dl-group { padding: 32px 0 0; scroll-margin-top: 76px; }
.rps-dl-group:last-of-type { padding-bottom: 28px; }

.rps-dl-group__head {
  display: flex; align-items: baseline; gap: 14px;
  padding-bottom: 14px; margin-bottom: 20px;
  border-bottom: 2px solid var(--rps-rule);
}
.rps-dl-group__head h2 {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: clamp(21px, 2.4vw, 27px); line-height: 1.2;
  color: var(--rps-green); margin: 0; letter-spacing: -.01em;
}
.rps-dl-group__head span {
  font-family: Poppins, sans-serif;
  font-size: 12px; font-weight: 700;
  color: var(--rps-ink-2);
  background: var(--rps-mist);
  border-radius: 20px; padding: 3px 11px;
}

/* ---- the document rows ---- */
.rps-dl-list {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 12px;
}
.rps-dl-item {
  display: flex; align-items: center; gap: 15px;
  height: 100%;
  padding: 16px 18px;
  background: #fff;
  border: 1px solid var(--rps-rule);
  border-radius: 14px;
  text-decoration: none;
  transition: border-color .18s, box-shadow .18s, transform .18s;
}
.rps-dl-item:hover {
  border-color: var(--rps-green-l);
  box-shadow: 0 10px 26px rgba(7, 50, 33, .09);
  transform: translateY(-2px);
}

.rps-dl-item__type {
  flex: none;
  width: 46px; height: 52px;
  display: flex; align-items: flex-end; justify-content: center;
  padding-bottom: 7px;
  border-radius: 7px;
  background: #FCE9EC; color: #B3253F;
  font-family: Poppins, sans-serif;
  font-size: 9.5px; font-weight: 800; letter-spacing: .06em;
  position: relative;
}
.rps-dl-item__type::before {
  content: ""; position: absolute; top: 7px; left: 11px; right: 11px; height: 2px;
  border-radius: 2px; background: currentColor; opacity: .35;
}
.rps-dl-item__type::after {
  content: ""; position: absolute; top: 13px; left: 11px; right: 17px; height: 2px;
  border-radius: 2px; background: currentColor; opacity: .35;
}
.rps-dl-item__type[data-ext="doc"],
.rps-dl-item__type[data-ext="docx"] { background: #E7F0FB; color: #1B5FA8; }
.rps-dl-item__type[data-ext="xls"],
.rps-dl-item__type[data-ext="xlsx"] { background: #E4F5EC; color: #12703F; }
.rps-dl-item__type[data-ext="link"] { background: var(--rps-mist); color: var(--rps-green-m); }

.rps-dl-item__body { flex: 1; min-width: 0; }
.rps-dl-item__name {
  display: block;
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: 16px; line-height: 1.3;
  color: var(--rps-green); margin-bottom: 3px;
}
.rps-dl-item__desc {
  display: block;
  font-family: Poppins, sans-serif; font-size: 12.5px; line-height: 1.5;
  color: var(--rps-ink-2);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.rps-dl-item__meta { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 7px; }
.rps-dl-item__meta em {
  font-style: normal;
  font-family: Poppins, sans-serif; font-size: 10.5px; font-weight: 700;
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--rps-ink-2);
  background: var(--rps-mist);
  border-radius: 5px; padding: 2px 7px;
}

.rps-dl-item__go {
  flex: none;
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--rps-mist); color: var(--rps-green-m);
  font-size: 12px; transition: .18s;
}
.rps-dl-item:hover .rps-dl-item__go {
  background: var(--rps-accent); color: var(--rps-accent-ink);
}

.rps-dl-empty { padding: 60px 24px; text-align: center; font-family: Poppins, sans-serif; }

/* ---- help footer ---- */
.rps-dl-help {
  background: #fff;
  border-top: 1px solid var(--rps-rule);
  padding: 28px 0;
}
.rps-dl-help__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 26px; flex-wrap: wrap;
}
.rps-dl-help h2 {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: 24px; color: var(--rps-green); margin: 0 0 6px;
}
.rps-dl-help p {
  font-family: Poppins, sans-serif; font-size: 14.5px;
  color: var(--rps-ink-2); margin: 0;
}
.rps-dl-help__actions { display: flex; gap: 11px; flex-wrap: wrap; }
.rps-btn--ghost-dark {
  background: var(--rps-mist); color: var(--rps-green-m);
  border: 1px solid var(--rps-rule);
}
.rps-btn--ghost-dark:hover { background: var(--rps-rule); color: var(--rps-green); }

@media (max-width: 767.98px) {
  .rps-dl-hero { padding: 34px 0 32px; }
  .rps-dl-hero__facts { gap: 26px; }
  .rps-dl-list { grid-template-columns: 1fr; }
  .rps-dl-group { padding-top: 26px; }
  .rps-dl-help__inner { flex-direction: column; align-items: flex-start; }
}

/* The Elementor kit colours every h1/h2 dark green, so headings that sit on a
   dark background need a stronger selector to stay readable. */
.rps-dl .rps-dl-hero .rps-dl-hero__title { color: #fff; }
.rps-dl .rps-dl-hero .rps-dl-hero__lead  { color: rgba(255, 255, 255, .74); }
.rps-dl .rps-dl-help .rps-dl-help__inner h2 { color: var(--rps-green); }

/* =====================================================================
   SCHOOL CALENDAR POP-UP
   ===================================================================== */
:root {
  --cal-event:    #1B62A8;  --cal-event-bg:    #E8F1FB;
  --cal-exam:     #B8325A;  --cal-exam-bg:     #FDECF1;
  --cal-holiday:  #12703F;  --cal-holiday-bg:  #E2F3EA;
  --cal-activity: #9A6B00;  --cal-activity-bg: #FFF3D6;
}

/* floating button, bottom-left (the scroll-to-top button sits bottom-right) */
.rps-cal-fab {
  position: fixed; left: 20px; bottom: 20px; z-index: 9990;
  display: inline-flex; align-items: center; gap: 9px;
  padding: 12px 19px 12px 16px;
  border: 0; border-radius: 999px;
  background: var(--rps-green); color: #fff;
  font-family: Poppins, sans-serif; font-size: 14px; font-weight: 700;
  box-shadow: 0 10px 30px rgba(4, 38, 26, .32);
  cursor: pointer; transition: transform .2s, box-shadow .2s, background .2s;
}
.rps-cal-fab i { font-size: 15px; color: var(--rps-accent); }
.rps-cal-fab:hover { transform: translateY(-3px); background: var(--rps-green-m);
                     box-shadow: 0 14px 36px rgba(4, 38, 26, .38); }
.rps-cal-fab:focus-visible { outline: 3px solid var(--rps-accent); outline-offset: 3px; }

.rps-cal .rps-cal__box { max-width: 980px; padding: 0; border-radius: 20px; }
.rps-cal__head {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 22px 26px 16px;
  background: linear-gradient(150deg, var(--rps-green) 0%, var(--rps-green-d) 100%);
  border-radius: 20px 20px 0 0;
}
.rps-cal__eyebrow {
  font-family: Poppins, sans-serif; font-size: 10.5px; font-weight: 800;
  letter-spacing: .14em; text-transform: uppercase; color: var(--rps-accent);
}
.rps-cal .rps-cal__head .rps-cal__title {
  font-family: Poppins, sans-serif; font-weight: 600; font-size: 25px;
  color: #fff; margin: 3px 0 0; line-height: 1.15;
}
.rps-cal .rps-cal__close { position: static; flex: none; }

.rps-cal__bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 14px 26px; border-bottom: 1px solid var(--rps-rule);
}
.rps-cal__nav {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--rps-rule); background: #fff; color: var(--rps-green);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; transition: .15s;
}
.rps-cal__nav:hover { background: var(--rps-green); color: #fff; border-color: var(--rps-green); }
.rps-cal__month {
  min-width: 158px; text-align: center;
  font-family: Poppins, sans-serif; font-weight: 600; font-size: 19px; color: var(--rps-green);
}
.rps-cal__today {
  margin-left: 4px; padding: 7px 14px; border-radius: 999px;
  border: 1px solid var(--rps-rule); background: var(--rps-mist); color: var(--rps-green-m);
  font-family: Poppins, sans-serif; font-size: 12.5px; font-weight: 700; cursor: pointer;
}
.rps-cal__today:hover { background: var(--rps-rule); }
.rps-cal__legend { margin-left: auto; display: flex; gap: 6px; flex-wrap: wrap; }

.rps-cal-tag {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 10px; border-radius: 999px;
  font-family: Poppins, sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .02em;
}
.rps-cal-tag::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.rps-cal-tag--event    { background: var(--cal-event-bg);    color: var(--cal-event); }
.rps-cal-tag--exam     { background: var(--cal-exam-bg);     color: var(--cal-exam); }
.rps-cal-tag--holiday  { background: var(--cal-holiday-bg);  color: var(--cal-holiday); }
.rps-cal-tag--activity { background: var(--cal-activity-bg); color: var(--cal-activity); }

.rps-cal__body { display: grid; grid-template-columns: 1.45fr 1fr; }
.rps-cal__grid-wrap { padding: 16px 20px 20px 26px; border-right: 1px solid var(--rps-rule); }

.rps-cal__dows, .rps-cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.rps-cal__dows span {
  text-align: center; padding: 4px 0 8px;
  font-family: Poppins, sans-serif; font-size: 11px; font-weight: 800;
  letter-spacing: .06em; text-transform: uppercase; color: var(--rps-ink-2);
}
.rps-cal__dows span:last-child { color: var(--cal-exam); }

.rps-cal__grid { transition: opacity .18s; }
.rps-cal__grid.is-loading { opacity: .35; pointer-events: none; }

.rps-cal__cell {
  position: relative; aspect-ratio: 1 / 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  border: 1px solid transparent; border-radius: 12px;
  background: #FAFBFA; cursor: pointer;
  font-family: Poppins, sans-serif;
  transition: background .14s, border-color .14s, transform .14s;
}
.rps-cal__cell.is-blank { background: transparent; cursor: default; }
.rps-cal__cell:not(.is-blank):hover { background: var(--rps-mist); border-color: var(--rps-rule); transform: translateY(-1px); }
.rps-cal__num { font-size: 14.5px; font-weight: 700; color: var(--rps-ink); line-height: 1; }
.rps-cal__cell.is-sun .rps-cal__num { color: var(--cal-exam); }
.rps-cal__cell.has-entries { background: #fff; border-color: var(--rps-rule); }
.rps-cal__cell.is-holiday { background: var(--cal-holiday-bg); border-color: transparent; }
.rps-cal__cell.is-today .rps-cal__num {
  background: var(--rps-accent); color: var(--rps-accent-ink);
  width: 26px; height: 26px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
}
.rps-cal__cell.is-selected { border-color: var(--rps-green); box-shadow: 0 0 0 2px var(--rps-green) inset; background: #fff; }

.rps-cal__dots { display: flex; align-items: center; gap: 3px; min-height: 7px; }
.rps-cal__dots em { font-style: normal; font-size: 9.5px; font-weight: 800; color: var(--rps-ink-2); }
.rps-cal-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
.rps-cal-dot--event    { background: var(--cal-event); }
.rps-cal-dot--exam     { background: var(--cal-exam); }
.rps-cal-dot--holiday  { background: var(--cal-holiday); }
.rps-cal-dot--activity { background: var(--cal-activity); }

.rps-cal__side { padding: 18px 24px 22px; max-height: 470px; overflow-y: auto; }
.rps-cal__day {
  font-family: Poppins, sans-serif; font-weight: 600; font-size: 17px;
  color: var(--rps-green); margin-bottom: 12px; line-height: 1.3;
}
.rps-cal__sub {
  margin: 14px 0 8px; font-family: Poppins, sans-serif; font-size: 10.5px; font-weight: 800;
  letter-spacing: .1em; text-transform: uppercase; color: var(--rps-ink-2);
}
.rps-cal__none, .rps-cal__error {
  font-family: Poppins, sans-serif; font-size: 13.5px; color: var(--rps-ink-2); margin: 0;
}
.rps-cal__error { grid-column: 1 / -1; text-align: center; padding: 40px 0; }

.rps-cal-item {
  border: 1px solid var(--rps-rule); border-left: 4px solid currentColor;
  border-radius: 10px; padding: 11px 13px; margin-bottom: 9px; background: #fff;
}
.rps-cal-item--event    { color: var(--cal-event); }
.rps-cal-item--exam     { color: var(--cal-exam); }
.rps-cal-item--holiday  { color: var(--cal-holiday); }
.rps-cal-item--activity { color: var(--cal-activity); }
.rps-cal-item__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 5px; }
.rps-cal-item__when { font-family: Poppins, sans-serif; font-size: 11.5px; font-weight: 700; color: var(--rps-ink-2); }
.rps-cal .rps-cal-item .rps-cal-item__title {
  font-family: Poppins, sans-serif; font-size: 14.5px; font-weight: 700;
  color: var(--rps-ink); margin: 0 0 2px; line-height: 1.35;
}
.rps-cal-item__meta { font-family: Poppins, sans-serif; font-size: 12.5px; color: var(--rps-ink-2); margin: 0; }
.rps-cal-item__desc { font-family: Poppins, sans-serif; font-size: 12.5px; line-height: 1.55; color: var(--rps-ink-2); margin: 6px 0 0; }
/* the kit gives every <p> a 16px bottom margin and the body line-height */
.rps-cal p.rps-cal-item__meta { margin: 0; line-height: 1.5; }
.rps-cal p.rps-cal-item__desc { margin: 6px 0 0; }
.rps-cal p.rps-cal__none, .rps-cal p.rps-cal__error { margin: 0; }

.rps-cal__foot {
  padding: 11px 26px; border-top: 1px solid var(--rps-rule);
  font-family: Poppins, sans-serif; font-size: 12px; color: var(--rps-ink-2);
  background: var(--rps-paper); border-radius: 0 0 20px 20px;
}
.rps-cal__foot i { color: var(--rps-green-l); margin-right: 5px; }

@media (max-width: 860px) {
  .rps-cal__body { grid-template-columns: 1fr; }
  .rps-cal__grid-wrap { border-right: 0; border-bottom: 1px solid var(--rps-rule); padding: 14px 16px 16px; }
  .rps-cal__side { max-height: none; padding: 16px; }
  .rps-cal__legend { margin-left: 0; width: 100%; }
  .rps-cal__bar, .rps-cal__head { padding-left: 16px; padding-right: 16px; }
  .rps-cal__cell { border-radius: 9px; }
  .rps-cal__num { font-size: 13px; }
}
@media (max-width: 575.98px) {
  .rps-cal-fab span { display: none; }
  .rps-cal-fab { padding: 14px; left: 14px; bottom: 14px; }
  .rps-cal__dows, .rps-cal__grid { gap: 3px; }
  .rps-cal__cell.is-today .rps-cal__num { width: 22px; height: 22px; }
}

/* =====================================================================
   TEACHER MESSAGES
   ===================================================================== */
.rps-tm { background: var(--rps-paper); padding: 76px 0; }
.rps-tm__wrap { max-width: 1160px; margin: 0 auto; padding: 0 24px; }
.rps-tm__head { text-align: center; max-width: 640px; margin: 0 auto 38px; }
.rps-tm__eyebrow {
  font-family: Poppins, sans-serif; font-size: 12px; font-weight: 800;
  letter-spacing: .14em; text-transform: uppercase; color: var(--rps-green-l);
}
.rps-tm .rps-tm__head .rps-tm__title {
  font-family: Poppins, sans-serif; font-weight: 600;
  font-size: clamp(28px, 3.4vw, 40px); line-height: 1.15;
  color: var(--rps-green); margin: 8px 0 10px; letter-spacing: -.02em;
}
.rps-tm__lead { font-family: Poppins, sans-serif; font-size: 15.5px; color: var(--rps-ink-2); margin: 0; }

.rps-tm__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; }

.rps-tm-card {
  position: relative; display: flex; flex-direction: column;
  background: #fff; border: 1px solid var(--rps-rule); border-radius: 18px;
  padding: 28px 26px 22px;
  transition: transform .2s, box-shadow .2s, border-color .2s;
}
.rps-tm-card:hover { transform: translateY(-4px); border-color: var(--rps-green-l);
                     box-shadow: 0 18px 40px rgba(7, 50, 33, .10); }
.rps-tm-card__quote {
  font-family: Poppins, sans-serif; font-size: 64px; line-height: .6;
  color: var(--rps-accent); height: 26px; margin-bottom: 8px;
}
.rps-tm .rps-tm-card .rps-tm-card__title {
  font-family: Poppins, sans-serif; font-weight: 600; font-size: 20px;
  line-height: 1.28; color: var(--rps-green); margin: 0 0 10px;
}
.rps-tm-card__excerpt {
  font-family: Poppins, sans-serif; font-size: 14.5px; line-height: 1.7;
  color: var(--rps-ink-2); margin: 0 0 20px; flex: 1;
}
.rps-tm-card__foot { display: flex; align-items: center; gap: 12px; padding-top: 16px; border-top: 1px solid var(--rps-rule); }
.rps-tm-card__photo { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; flex: none; }
.rps-tm-card__photo--initial {
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(140deg, var(--rps-green-m), var(--rps-green-l)); color: #fff;
  font-family: Poppins, sans-serif; font-size: 19px; font-weight: 600;
}
.rps-tm-card__who { font-family: Poppins, sans-serif; line-height: 1.3; min-width: 0; }
.rps-tm-card__who strong { display: block; font-size: 14px; color: var(--rps-ink); }
.rps-tm-card__who span { display: block; font-size: 12.5px; color: var(--rps-ink-2); }
.rps-tm-card__more {
  align-self: flex-start; margin-top: 14px; padding: 0; border: 0; background: none;
  font-family: Poppins, sans-serif; font-size: 13.5px; font-weight: 700;
  color: var(--rps-green-m); cursor: pointer;
}
.rps-tm-card__more i { margin-left: 5px; transition: transform .2s; }
.rps-tm-card__more:hover { color: var(--rps-green-l); }
.rps-tm-card__more:hover i { transform: translateX(4px); }

.rps-tm-modal { max-width: 640px; }
.rps-tm-modal__text { font-family: Poppins, sans-serif; font-size: 15.5px; line-height: 1.8; color: var(--rps-ink-2); }
.rps-tm-modal__text p { margin: 0 0 14px; }
.rps-tm-modal__by { margin-top: 10px; }

@media (max-width: 767.98px) {
  .rps-tm { padding: 52px 0; }
  .rps-tm__grid { grid-template-columns: 1fr; }
}

/* =====================================================================
   BUTTON RESET for the calendar, teacher section and pop-ups.
   The Elementor kit styles every <button> with ".elementor-kit-22 button":
   dark green fill, pill radius, 14px 26px padding, a green drop shadow and a
   1em line-height (plus a matching :hover/:focus rule). These selectors carry
   one extra element so our own button styles win, without !important.
   ===================================================================== */
body .rps-cal button,
body .rps-tm button,
body button.rps-modal__close,
body button.rps-cal-fab {
  font-family: Poppins, sans-serif;
  line-height: normal;
  text-transform: none;
  letter-spacing: normal;
  text-decoration: none;
  box-shadow: none;
}

/* pop-up close cross: white disc */
body button.rps-modal__close {
  background-color: rgba(255, 255, 255, .94); color: var(--rps-green);
  border: 0; border-radius: 50%; padding: 0;
  width: 36px; height: 36px; font-size: 16px;
  box-shadow: 0 2px 10px rgba(4, 38, 26, .2);
}
body button.rps-modal__close:hover,
body button.rps-modal__close:focus { background-color: var(--rps-accent); color: var(--rps-accent-ink); }

/* "Close" button beside the announcement / event call-to-action */
body .rps-modal__actions button.rps-btn--plain { box-shadow: none; border: 0; }   /* theme default is a pink border */

/* floating calendar button */
body button.rps-cal-fab {
  background-color: var(--rps-green); color: #fff;
  border: 0; border-radius: 999px; padding: 12px 19px 12px 16px; font-size: 14px; font-weight: 700;
  box-shadow: 0 10px 30px rgba(4, 38, 26, .32);
}
body button.rps-cal-fab:hover,
body button.rps-cal-fab:focus {
  background-color: var(--rps-green-m); color: #fff;
  box-shadow: 0 14px 36px rgba(4, 38, 26, .38);
}

/* month navigation */
body .rps-cal button.rps-cal__nav {
  background-color: #fff; color: var(--rps-green);
  border: 1px solid var(--rps-rule); border-radius: 50%;
  width: 36px; height: 36px; padding: 0; font-size: 13px;
}
body .rps-cal button.rps-cal__nav:hover,
body .rps-cal button.rps-cal__nav:focus { background-color: var(--rps-green); color: #fff; border-color: var(--rps-green); }

body .rps-cal button.rps-cal__today {
  background-color: var(--rps-mist); color: var(--rps-green-m);
  border: 1px solid var(--rps-rule); border-radius: 999px;
  padding: 7px 14px; font-size: 12.5px; font-weight: 700;
}
body .rps-cal button.rps-cal__today:hover,
body .rps-cal button.rps-cal__today:focus { background-color: var(--rps-rule); color: var(--rps-green); }

/* day cells (order matters: state, then hover, then selected) */
body .rps-cal button.rps-cal__cell {
  background-color: #FAFBFA; color: var(--rps-ink);
  border: 1px solid transparent; border-radius: 12px;
  padding: 0; font-size: inherit; font-weight: 400;
}
body .rps-cal button.rps-cal__cell.has-entries { background-color: #fff; border-color: var(--rps-rule); }
body .rps-cal button.rps-cal__cell.is-holiday  { background-color: var(--cal-holiday-bg); border-color: transparent; }
body .rps-cal button.rps-cal__cell:hover,
body .rps-cal button.rps-cal__cell:focus-visible { background-color: var(--rps-mist); border-color: var(--rps-rule); color: var(--rps-ink); }
body .rps-cal button.rps-cal__cell:focus-visible { outline: 2px solid var(--rps-green-l); outline-offset: 1px; }
body .rps-cal button.rps-cal__cell.is-selected {
  background-color: #fff; border-color: var(--rps-green); box-shadow: 0 0 0 2px var(--rps-green) inset;
}

/* teacher section "Read full message" */
body .rps-tm button.rps-tm-card__more {
  background-color: transparent; color: var(--rps-green-m);
  border: 0; border-radius: 0; padding: 0; font-size: 13.5px; font-weight: 700;
}
body .rps-tm button.rps-tm-card__more:hover,
body .rps-tm button.rps-tm-card__more:focus { background-color: transparent; color: var(--rps-green-l); }

/* the reset above out-ranks the small-screen rules earlier in this file */
@media (max-width: 860px) {
  body .rps-cal button.rps-cal__cell { border-radius: 9px; }
}
@media (max-width: 575.98px) {
  body button.rps-cal-fab { padding: 14px; }
}

/* =====================================================================
   SOCIAL ICONS - Admin > 1 · Header > Logo & Contact Details > Social Media.
   Shown after the top bar message (desktop and tablet) and at the foot of
   the mobile menu (phones, where the right half of the top bar is hidden).
   Only networks with a link filled in appear.
   ===================================================================== */
.rps-social { display: inline-flex; align-items: center; gap: 8px; }
.rps-social__link {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 26px; height: 26px; border-radius: 50%;
  text-decoration: none;
  transition: background-color .15s, color .15s, transform .15s;
}
.rps-social__icon { width: 13px; height: 13px; fill: currentColor; display: block; }

.elementor-64 .rps-topbar-social { margin-inline-start: 14px; }
/* the icon-list widget makes every link full width; keep ours round */
.elementor-64 .rps-social--topbar a.rps-social__link {
  display: inline-flex; flex: none; width: 26px; height: 26px;
  background-color: rgba(255, 255, 255, .1); color: #CFE3D6;
}
.elementor-64 .rps-social--topbar a.rps-social__link:hover,
.elementor-64 .rps-social--topbar a.rps-social__link:focus-visible {
  background-color: var(--rps-accent); color: var(--rps-accent-ink); transform: translateY(-1px);
}

.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social {
  display: flex; padding: 12px 20px 16px; border-top: 1px solid var(--rps-rule, #E3ECE6);
  /* takes the menu's width instead of setting it, so the closed menu stays small */
  width: 0; min-width: 100%; box-sizing: border-box;
}
.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social .rps-social { flex-wrap: wrap; }
.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social a.rps-social__link {
  display: inline-flex; flex: none; width: 36px; height: 36px; padding: 0;
  background-color: var(--rps-mist, #F0F8F3); color: var(--rps-green, #0B4A2F);
}
.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social a.rps-social__link:hover,
.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social a.rps-social__link:focus-visible {
  background-color: var(--rps-green, #0B4A2F); color: #fff;
}
.elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social .rps-social__icon { width: 16px; height: 16px; }
@media (min-width: 1025px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d .rps-nav-social { display: none; }
}

/* =====================================================================
   ADMIN CONTENT INSIDE THE ORIGINAL PAGE DESIGN
   Gallery album filter, uniform photo grid, category / department titles,
   locked disclosure cards and videos that cannot be embedded.
   ===================================================================== */

/* Gallery: album filter under "Moments from our campus" (same look as the Downloads chips) */
.rps-gallery-filter {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;
  margin: -18px 0;   /* the section already spaces its blocks 44px apart */
}
body .rps-gallery-filter button.rps-chip {
  display: inline-flex; align-items: center;
  margin: 0; padding: 8px 15px;
  border: 1px solid var(--rps-rule); border-radius: 999px;
  background-color: #fff; color: var(--rps-ink-2);
  font-family: Poppins, sans-serif; font-size: 13px; font-weight: 700; line-height: 1.2;
  letter-spacing: normal; text-transform: none; box-shadow: none;
  cursor: pointer; transition: .16s;
}
body .rps-gallery-filter button.rps-chip:hover,
body .rps-gallery-filter button.rps-chip:focus-visible {
  border-color: var(--rps-green-m); background-color: var(--rps-mist); color: var(--rps-green);
}
body .rps-gallery-filter button.rps-chip.is-active {
  border-color: var(--rps-green-m); background-color: var(--rps-green-m); color: #fff;
}

/* Gallery: every photo the same shape, whatever size was uploaded */
.rps-mosaic .gallery-item img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }

/* Category (Mandatory Disclosure) and department (Faculty) titles inside a section */
.rps-section .rps-group-title {
  display: flex; align-items: center; gap: 14px;
  margin: 34px 0 16px;
  font-family: Poppins, sans-serif; font-size: 12px; font-weight: 800; line-height: 1.3;
  letter-spacing: .14em; text-transform: uppercase; color: var(--rps-green-l);
}
.rps-section .rps-group-title::after { content: ""; flex: 1; height: 1px; background: var(--rps-rule); }
.rps-section .rps-group-title:first-child { margin-top: 0; }

/* Disclosure card that visitors cannot open: same layout as the linked cards */
.rps-doc .rps-doc__row { display: flex; align-items: center; gap: 14px; }

/* Video that cannot be embedded (not YouTube or Vimeo): opens in a new tab */
.rps-video.rps-video--link { display: block; text-decoration: none; }
.rps-video--link img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .72; }
.rps-video__play {
  position: absolute; left: 50%; top: 50%;
  width: 58px; height: 58px; margin: -29px 0 0 -29px;
  border-radius: 50%; background: var(--rps-accent);
}
.rps-video__play::after {
  content: ""; position: absolute; left: 23px; top: 18px;
  border-style: solid; border-width: 11px 0 11px 17px;
  border-color: transparent transparent transparent var(--rps-accent-ink);
}
.rps-video__title {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 16px;
  font-family: Poppins, sans-serif; font-size: 14px; font-weight: 700; color: #fff;
  background: linear-gradient(transparent, rgba(4, 38, 26, .85));
}

/* =====================================================================
   HEADER ACTIONS - School Calendar button beside "Apply Now"
   ===================================================================== */
.rps-header-actions { display: flex; align-items: center; gap: 12px; }
@media (max-width: 1024px) {
  .rps-header-actions { display: none; }             /* the floating calendar button is used instead */
}

body .rps-header button.rps-cal-btn {
  position: relative;
  display: inline-flex; align-items: center; gap: 9px;
  height: 48px; margin: 0; padding: 0 20px 0 7px;
  border: 1.5px solid var(--rps-green-m); border-radius: 999px;
  background-color: #fff; color: var(--rps-green);
  font-family: Poppins, sans-serif; font-size: 14.5px; font-weight: 600; line-height: 1;
  text-transform: none; letter-spacing: normal; white-space: nowrap;
  box-shadow: none; cursor: pointer;
  transition: background-color .2s, color .2s, transform .2s, box-shadow .2s;
}
body .rps-header button.rps-cal-btn:hover,
body .rps-header button.rps-cal-btn:focus-visible {
  background-color: var(--rps-green-m); color: #fff;
  transform: translateY(-2px); box-shadow: 0 10px 22px -8px rgba(11, 74, 47, .55);
}
.rps-cal-btn__icon {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--rps-green-m); color: var(--rps-accent); font-size: 15px;
}
body .rps-header button.rps-cal-btn:hover .rps-cal-btn__icon { background: var(--rps-accent); color: var(--rps-accent-ink); }
.rps-cal-btn__icon i { display: block; transform-origin: 50% 10%; animation: rps-cal-ring 3.6s ease-in-out infinite; }
/* a soft ring that pulses out every few seconds */
body .rps-header button.rps-cal-btn::after {
  content: ""; position: absolute; inset: -5px;
  border: 2px solid var(--rps-accent); border-radius: 999px;
  opacity: 0; pointer-events: none;
  animation: rps-cal-pulse 3.6s ease-out infinite;
}
@keyframes rps-cal-ring {
  0%, 68%, 100% { transform: rotate(0); }
  72% { transform: rotate(-16deg); }
  76% { transform: rotate(13deg); }
  80% { transform: rotate(-9deg); }
  84% { transform: rotate(5deg); }
  88% { transform: rotate(0); }
}
@keyframes rps-cal-pulse {
  0%, 62% { opacity: 0; transform: scale(.94); }
  70%     { opacity: .9; }
  100%    { opacity: 0; transform: scale(1.14); }
}

/* the floating calendar button stays for tablets and phones only */
@media (min-width: 1025px) {
  body button.rps-cal-fab { display: none; }
}

/* =====================================================================
   TOP BAR - blinking "New" badge before the admissions message
   ===================================================================== */
.rps-new-badge {
  display: inline-flex; align-items: center;
  margin-right: 9px; padding: 3px 8px 2px;
  border-radius: 4px; background: #E53935; color: #fff;
  font-family: Poppins, sans-serif; font-size: 10px; font-weight: 700; line-height: 1.2;
  letter-spacing: .1em; text-transform: uppercase;
  animation: rps-blink 1.1s ease-in-out infinite;
}
@keyframes rps-blink {
  0%, 100% { opacity: 1; }
  50%      { opacity: .18; }
}


/* =====================================================================
   SECTIONS - less empty space at the start and end of every section,
   a larger eyebrow ("WHY RPS") and a smaller main heading under it
   ===================================================================== */
.rps-section.e-con > .e-con-inner {
  padding-block-start: min(var(--padding-block-start), 40px);
  padding-block-end: min(var(--padding-block-end), 40px);
}
.elementor .e-con.rps-section .rps-eyebrow .elementor-heading-title {
  font-size: 20px; letter-spacing: .12em; line-height: 1.3;
}
.elementor .e-con.rps-section .elementor-widget-heading h2.elementor-heading-title {
  font-size: 28px; line-height: 1.3;
}
@media (max-width: 1024px) {
  .elementor .e-con.rps-section .rps-eyebrow .elementor-heading-title { font-size: 18px; }
  .elementor .e-con.rps-section .elementor-widget-heading h2.elementor-heading-title { font-size: 25px; }
}
@media (max-width: 767px) {
  .elementor .e-con.rps-section .rps-eyebrow .elementor-heading-title { font-size: 16px; }
  .elementor .e-con.rps-section .elementor-widget-heading h2.elementor-heading-title { font-size: 22px; }
}
/* the Teacher Messages section follows the same sizes */
.rps-tm { padding: 46px 0; }
.rps-tm .rps-tm__eyebrow { font-size: 20px; letter-spacing: .12em; }
.rps-tm .rps-tm__head .rps-tm__title { font-size: 28px; line-height: 1.3; }
@media (max-width: 767px) {
  .rps-tm .rps-tm__eyebrow { font-size: 16px; }
  .rps-tm .rps-tm__head .rps-tm__title { font-size: 22px; }
}

/* =====================================================================
   HOME BANNERS - the text sits on one side over a deep shade that fades
   away smoothly, so the rest of the photo is left completely clear
   ===================================================================== */
@media (min-width: 768px) {
  /* the text starts near the left edge (clear of the arrow) instead of the middle */
  .rps-hero-slider .rps-slide .rps-slide__inner {
    max-width: none;
    padding-left: clamp(96px, 7vw, 150px);
    padding-right: clamp(96px, 7vw, 150px);
  }
  /* the heading wraps before it runs into the photo side (about two lines) */
  .rps-hero-slider .rps-slide .rps-slide__inner .rps-slide__title { max-width: 13.6em; }
  .rps-hero-slider .rps-slide--right  .rps-slide__inner .rps-slide__title { margin-left: auto; }
  .rps-hero-slider .rps-slide--center .rps-slide__inner .rps-slide__title { margin-left: auto; margin-right: auto; }
  /* the shade covers the text plus a soft fade after it, and stops there:
     (left space) + (heading width, 13.6em of the heading size) + (fade) */
  .rps-slide__bg::after {
    right: auto;
    width: calc(clamp(96px, 7vw, 150px) + clamp(381px, 43.5vw, 680px) + 340px);
    max-width: 100%;
    background: linear-gradient(90deg,
      rgba(4, 38, 26, .93) 0%,  rgba(4, 38, 26, .9) 45%,  rgba(4, 38, 26, .86) 62%,
      rgba(4, 38, 26, .8) 70%,  rgba(4, 38, 26, .64) 77%, rgba(4, 38, 26, .43) 84%,
      rgba(4, 38, 26, .24) 90%, rgba(4, 38, 26, .1) 95%,  rgba(4, 38, 26, 0) 100%);
  }
  .rps-slide--right .rps-slide__bg::after {
    left: auto; right: 0;
    background: linear-gradient(270deg,
      rgba(4, 38, 26, .93) 0%,  rgba(4, 38, 26, .9) 45%,  rgba(4, 38, 26, .86) 62%,
      rgba(4, 38, 26, .8) 70%,  rgba(4, 38, 26, .64) 77%, rgba(4, 38, 26, .43) 84%,
      rgba(4, 38, 26, .24) 90%, rgba(4, 38, 26, .1) 95%,  rgba(4, 38, 26, 0) 100%);
  }
  /* centred text has no free side - shade the middle, keep the edges clear */
  .rps-slide--center .rps-slide__bg::after {
    left: 0; right: 0; width: auto; max-width: none;
    background: radial-gradient(ellipse 58% 78% at 50% 50%,
      rgba(4, 38, 26, .9) 0%, rgba(4, 38, 26, .7) 50%, rgba(4, 38, 26, .25) 80%, rgba(4, 38, 26, 0) 100%);
  }
}
@media (max-width: 767.98px) {
  /* on phones the text spans the whole banner, so the shade does too */
  .rps-slide__bg::after,
  .rps-slide--right .rps-slide__bg::after,
  .rps-slide--center .rps-slide__bg::after {
    background: linear-gradient(180deg, rgba(4, 38, 26, .6) 0%, rgba(4, 38, 26, .85) 55%, rgba(4, 38, 26, .92) 100%);
  }
}

/* =====================================================================
   HOME BANNER TEXT - sized for Poppins so the heading sits on two lines
   and the content keeps clear of the top edge and the slide dots
   ===================================================================== */
.rps-hero-slider .rps-slide .rps-slide__title {
  font-size: clamp(28px, 3.2vw, 50px);
  line-height: 1.12;
  letter-spacing: -.015em;
  max-width: 26ch;
}
.rps-hero-slider .rps-slide__inner { padding-top: 32px; padding-bottom: 64px; }
.rps-hero-slider .rps-slide .rps-slide__eyebrow { margin-bottom: 12px; }
.rps-hero-slider .rps-slide .rps-slide__text { margin-bottom: 24px; }
@media (max-width: 767.98px) {
  .rps-hero-slider__track { height: 500px; }
  .rps-hero-slider .rps-slide .rps-slide__title { font-size: 27px; max-width: none; }
  .rps-hero-slider .rps-slide__inner { padding-top: 24px; padding-bottom: 52px; }
  .rps-hero-slider .rps-slide .rps-slide__text { font-size: 14.5px; line-height: 1.6; }
}

/* on tablets and phones the About RPS section had no side spacing, so its content touched the screen edge */
@media (max-width: 1024px) {
  .elementor .elementor-element-b2ed4a4 > .e-con-inner,
  .elementor .elementor-element-18e9d86 > .e-con-inner,
  .elementor .elementor-element-faa8a1d > .e-con-inner,
  .elementor .elementor-element-f95acaf > .e-con-inner { padding-inline: 16px; }
}

/* =====================================================================
   HOME - "at a glance" fact cards (their own section after About RPS)
   ===================================================================== */
.rps-facts { background: var(--rps-paper); padding: 48px 0 0; }
.rps-facts__wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
.rps-facts__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.rps-fact {
  display: flex; align-items: center; gap: 18px;
  background: #fff; border: 1px solid var(--rps-rule); border-radius: 18px;
  padding: 22px 24px; box-shadow: 0 14px 34px -26px rgba(4, 38, 26, .45);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.rps-fact:hover { transform: translateY(-4px); border-color: var(--rps-green-l); box-shadow: 0 20px 40px -22px rgba(4, 38, 26, .4); }
.rps-fact__icon {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 62px; height: 62px; border-radius: 16px;
  background: var(--rps-green-m); color: var(--rps-accent); font-size: 25px;
}
.rps-facts .rps-fact .rps-fact__title {
  margin: 0 0 3px; font-family: Poppins, sans-serif; font-size: 17.5px; font-weight: 700;
  line-height: 1.3; letter-spacing: normal; color: var(--rps-green);
}
.rps-facts .rps-fact p.rps-fact__text {
  margin: 0; font-family: Poppins, sans-serif; font-size: 13.5px; line-height: 1.55; color: var(--rps-ink-2);
}
@media (max-width: 991px) {
  .rps-facts { padding-top: 36px; }
  .rps-facts__grid { grid-template-columns: 1fr; gap: 12px; }
  .rps-fact { padding: 16px 18px; }
  .rps-fact__icon { width: 52px; height: 52px; font-size: 21px; border-radius: 14px; }
}

/* =====================================================================
   HOME - Teacher's Corner: a picture beside a deck of message cards
   ===================================================================== */
.rps-tm { padding: 40px 0; }
.rps-tm .rps-tm__wrap { max-width: 1200px; padding: 0 16px; }
.rps-tm__layout {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  gap: 60px; align-items: center;
}
.rps-tm__media { position: relative; margin: 0 18px 18px 0; isolation: isolate; }
.rps-tm__media::before {
  content: ""; position: absolute; inset: 18px -18px -18px 18px; z-index: -1;
  border-radius: 26px; background: linear-gradient(150deg, var(--rps-accent) 0%, #FFD65A 100%);
}
.rps-tm__media img {
  display: block; width: 100%; height: 440px;
  object-fit: cover; object-position: 62% center;
  border-radius: 26px; box-shadow: 0 24px 50px -28px rgba(4, 38, 26, .55);
}
/* The all-staff photo is intentionally kept uncropped so every teacher is visible. */
.rps-tm__media--staff-group img {
  height: auto; aspect-ratio: 2 / 1;
  object-fit: contain; object-position: center;
  background: #f5f4ef;
}

.rps-tm__deck { position: relative; }
.rps-tm__stack { display: grid; padding: 0 22px 36px 0; }
.rps-tm .rps-tm__stack > .rps-tm-card {
  grid-area: 1 / 1; min-height: 330px; padding: 34px 32px 24px;
  box-shadow: 0 22px 44px -26px rgba(4, 38, 26, .45);
  transform-origin: 50% 100%;
  transition: transform .52s cubic-bezier(.2, .8, .2, 1), opacity .45s ease, box-shadow .3s ease;
}
.rps-tm .rps-tm__stack > .rps-tm-card:not(.is-active) { opacity: 0; pointer-events: none; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-active { z-index: 4; transform: none; opacity: 1; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-next   { z-index: 3; transform: translate(11px, 17px) rotate(2deg); opacity: 1; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-after  { z-index: 2; transform: translate(22px, 34px) rotate(4deg); opacity: .8; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-back   { z-index: 1; transform: translate(22px, 34px) rotate(4deg); opacity: 0; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-leaving       { z-index: 5; transform: translate(-65%, -14px) rotate(-12deg); opacity: 0; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-leaving-right { z-index: 5; transform: translate(65%, -14px) rotate(12deg); opacity: 0; }
.rps-tm .rps-tm__stack > .rps-tm-card.is-next,
.rps-tm .rps-tm__stack > .rps-tm-card.is-after { background: #FDFCF8; }
.rps-tm .rps-tm-card__foot { flex-wrap: wrap; row-gap: 10px; }
body .rps-tm .rps-tm-card__foot button.rps-tm-card__more { margin: 0 0 0 auto; align-self: center; }

.rps-tm__controls { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 4px; }
.rps-tm__dots, .rps-testi-slider__dots { display: flex; align-items: center; gap: 8px; }
body .rps-tm .rps-tm__controls button.rps-tm__arrow,
body .rps-testi-slider button.rps-testi-slider__arrow {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; margin: 0; padding: 0;
  border: 1px solid var(--rps-rule); border-radius: 50%;
  background-color: #fff; color: var(--rps-green); font-size: 15px; line-height: 1;
  box-shadow: none; cursor: pointer; transition: background-color .2s, color .2s, border-color .2s;
}
body .rps-tm .rps-tm__controls button.rps-tm__arrow:hover,
body .rps-tm .rps-tm__controls button.rps-tm__arrow:focus-visible,
body .rps-testi-slider button.rps-testi-slider__arrow:hover,
body .rps-testi-slider button.rps-testi-slider__arrow:focus-visible {
  background-color: var(--rps-green-m); border-color: var(--rps-green-m); color: #fff;
}
body .rps-tm .rps-tm__dots button.rps-tm__dot,
body .rps-testi-slider button.rps-testi-slider__dot {
  width: 9px; height: 9px; margin: 0; padding: 0;
  border: 0; border-radius: 50%; background-color: #C9D8CF;
  box-shadow: none; cursor: pointer; transition: width .25s ease, background-color .25s ease;
}
body .rps-tm .rps-tm__dots button.rps-tm__dot.is-on,
body .rps-testi-slider button.rps-testi-slider__dot.is-on { width: 28px; border-radius: 6px; background-color: var(--rps-green-m); }

@media (max-width: 991px) {
  .rps-tm__layout { grid-template-columns: 1fr; gap: 28px; }
  .rps-tm__media img { height: 320px; }
}
@media (max-width: 767px) {
  .rps-tm { padding: 28px 0; }
  .rps-tm__media { margin: 0 12px 12px 0; }
  .rps-tm__media::before { inset: 12px -12px -12px 12px; border-radius: 20px; }
  .rps-tm__media img { height: 240px; border-radius: 20px; }
  .rps-tm__stack { padding: 0 14px 28px 0; }
  .rps-tm .rps-tm__stack > .rps-tm-card { min-height: 0; padding: 26px 22px 20px; }
  .rps-tm .rps-tm__stack > .rps-tm-card.is-next  { transform: translate(7px, 12px) rotate(1.5deg); }
  .rps-tm .rps-tm__stack > .rps-tm-card.is-after { transform: translate(14px, 24px) rotate(3deg); }
}

/* =====================================================================
   HOME - Campus & Facilities: clear photos, text along the bottom,
   each card opens the Gallery page
   ===================================================================== */
.rps-facility-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; width: 100%; }
.rps-facility {
  position: relative; display: block; overflow: hidden; isolation: isolate;
  aspect-ratio: 4 / 3; border-radius: 20px; background: var(--rps-green-d);
  text-decoration: none; box-shadow: 0 16px 36px -24px rgba(4, 38, 26, .55);
  transition: transform .3s ease, box-shadow .3s ease;
}
/* Elementor gives every image height:auto; the photo must fill the whole card */
.rps-facility img.rps-facility__img { position: absolute; inset: 0; width: 100%; max-width: none; height: 100%; object-fit: cover; transition: transform .7s ease; }
.rps-facility::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(4, 38, 26, .88) 0%, rgba(4, 38, 26, .55) 22%, rgba(4, 38, 26, .08) 46%, rgba(4, 38, 26, 0) 60%);
}
.rps-facility__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 16px 18px 15px; }
.rps-facility .rps-facility__title {
  display: block; font-family: Poppins, sans-serif; font-size: 16px; font-weight: 600; line-height: 1.3; color: #fff;
}
.rps-facility .rps-facility__text {
  display: block; margin-top: 2px; font-family: Poppins, sans-serif; font-size: 12.5px; line-height: 1.45; color: rgba(255, 255, 255, .86);
}
.rps-facility:hover { transform: translateY(-4px); box-shadow: 0 24px 44px -24px rgba(4, 38, 26, .6); }
.rps-facility:hover img.rps-facility__img { transform: scale(1.06); }
.rps-facility:focus-visible { outline: 3px solid var(--rps-accent); outline-offset: 3px; }
@media (max-width: 991px) { .rps-facility-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } }
@media (max-width: 575px) { .rps-facility-grid { grid-template-columns: 1fr; } }

/* =====================================================================
   HOME - Testimonials slider
   ===================================================================== */
.rps-testi-slider { width: 100%; }
.rps-testi-slider__track {
  display: flex; gap: 24px; padding: 6px 4px 20px;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; outline: none;
}
.rps-testi-slider__track::-webkit-scrollbar { display: none; }
.rps-quote {
  flex: 0 0 calc((100% - 24px) / 2); scroll-snap-align: start;
  display: flex; align-items: center; gap: 26px;
  background: #fff; border: 1px solid var(--rps-rule); border-radius: 22px;
  padding: 28px 30px; box-shadow: 0 18px 40px -30px rgba(4, 38, 26, .45);
}
.rps-quote__avatar {
  flex: none; width: 104px; height: 104px; border-radius: 50%; overflow: hidden;
  box-shadow: 0 0 0 5px #fff, 0 0 0 6px var(--rps-rule);
}
.rps-quote__avatar svg { display: block; width: 100%; height: 100%; }
.rps-quote__body { flex: 1; min-width: 0; }
.rps-quote__stars { color: var(--rps-accent); font-size: 13px; letter-spacing: 2px; margin-bottom: 10px; }
.rps-quote p.rps-quote__text {
  margin: 0 0 18px; font-family: Poppins, sans-serif; font-size: 15px; line-height: 1.7; color: var(--rps-ink);
}
.rps-quote__who { display: flex; align-items: center; gap: 12px; }
.rps-quote__initial {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 50%;
  background: var(--rps-green-m); color: #fff;
  font-family: Poppins, sans-serif; font-size: 17px; font-weight: 600; line-height: 1;
}
.rps-quote__name strong { display: block; font-family: Poppins, sans-serif; font-size: 15px; line-height: 1.3; color: var(--rps-green); }
.rps-quote__name small { display: block; font-family: Poppins, sans-serif; font-size: 12.5px; color: var(--rps-ink-2); }
.rps-testi-slider__nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 6px; }
@media (max-width: 991px) { .rps-quote { flex-basis: 100%; } }
@media (max-width: 600px) {
  .rps-quote { flex-direction: column; text-align: center; padding: 26px 22px; gap: 16px; }
  .rps-quote__avatar { width: 84px; height: 84px; }
  .rps-quote__who { justify-content: center; }
}

/* =====================================================================
   HEADER - always above the page, so its drop-down menus are never
   covered by the banner text underneath
   ===================================================================== */
header.elementor-location-header { position: relative; z-index: 100; }
.elementor-location-header .elementor-nav-menu--main .sub-menu {
  box-shadow: 0 18px 40px -12px rgba(4, 38, 26, .28);
}

/* =====================================================================
   HOME - section backgrounds alternate: white, light green, white ...
   ===================================================================== */
body .elementor-25 .elementor-element.elementor-element-af32c89:not(.elementor-motion-effects-element-type-background),
body .elementor-25 section.rps-facts,
body .elementor-25 .elementor-element.elementor-element-20b2876:not(.elementor-motion-effects-element-type-background),
body .elementor-25 .elementor-element.elementor-element-faa8a1d:not(.elementor-motion-effects-element-type-background) { background-color: #fff; }
body .elementor-25 .elementor-element.elementor-element-b2ed4a4:not(.elementor-motion-effects-element-type-background),
body .elementor-25 .elementor-element.elementor-element-18e9d86:not(.elementor-motion-effects-element-type-background),
body .elementor-25 section.rps-tm,
body .elementor-25 .elementor-element.elementor-element-f95acaf:not(.elementor-motion-effects-element-type-background) { background-color: var(--rps-mist); }
/* the fact cards are now a band of their own, so they get space below too */
.elementor-25 section.rps-facts { padding: 36px 0; }
@media (max-width: 991px) { .elementor-25 section.rps-facts { padding: 28px 0; } }

/* =====================================================================
   HOME - campus amenities marquee
   ===================================================================== */
.elementor-25 .rps-amenities {
  position: relative; width: 100%; overflow: hidden;
  margin-top: 0; padding: 6px 0;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%);
}
.rps-amenities__track { display: flex; width: max-content; animation: rps-marquee 36s linear infinite; }
.rps-amenities:hover .rps-amenities__track { animation-play-state: paused; }
.elementor-25 .rps-amenities ul.rps-amenities__group {
  display: flex; flex: none; gap: 14px;
  margin: 0; padding: 0 14px 0 0; list-style: none;
}
.elementor-25 .rps-amenities li.rps-amenity {
  display: inline-flex; align-items: center; gap: 12px; flex: none;
  margin: 0; padding: 9px 22px 9px 9px; white-space: nowrap;
  background: var(--rps-mist); border: 1px solid #CFE3D7; border-radius: 999px;
  font-family: Poppins, sans-serif; font-size: 15px; font-weight: 600; line-height: 1.2;
  color: var(--rps-green);
}
.rps-amenity__icon {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 38px; height: 38px; border-radius: 50%; background: var(--rps-green-m);
}
.rps-amenity__icon svg { display: block; width: 17px; height: 17px; fill: var(--rps-accent); }
@media (max-width: 767px) {
  .elementor-25 .rps-amenities li.rps-amenity { gap: 10px; padding: 7px 18px 7px 7px; font-size: 14px; }
  .rps-amenity__icon { width: 32px; height: 32px; }
  .rps-amenity__icon svg { width: 15px; height: 15px; }
  .rps-amenities__track { animation-duration: 28s; }
}

/* =====================================================================
   SPACING - less empty space on every page: section edges, the gap
   under section headings and the gaps between blocks
   ===================================================================== */
body .elementor .e-con.rps-section > .e-con-inner,
body .elementor .rps-section .e-con-full,
body .elementor .rps-section .e-con-boxed > .e-con-inner { row-gap: min(var(--row-gap), 36px); }
body .elementor .e-con.rps-head { padding-block-end: min(var(--padding-block-end), 8px); }
body .elementor .rps-section .elementor-widget-text-editor p:last-child,
body .elementor .rps-pagehero .elementor-widget-text-editor p:last-child { margin-block-end: 0; }
body .elementor .e-con.rps-pagehero > .e-con-inner {
  padding-block-start: min(var(--padding-block-start), 52px);
  padding-block-end: min(var(--padding-block-end), 52px);
}
body .elementor .rps-section table:last-child { margin-block-end: 0; }
body .elementor .rps-faq .elementor-accordion-item:last-child { margin-bottom: 0; }
body .elementor .e-con.rps-cta {
  padding-block-start: min(var(--padding-block-start), 40px);
  padding-block-end: min(var(--padding-block-end), 40px);
}
@media (max-width: 1024px) {
  .rps-section.e-con > .e-con-inner {
    padding-block-start: min(var(--padding-block-start), 32px);
    padding-block-end: min(var(--padding-block-end), 32px);
  }
  body .elementor .e-con.rps-section > .e-con-inner,
  body .elementor .rps-section .e-con-full,
  body .elementor .rps-section .e-con-boxed > .e-con-inner { row-gap: min(var(--row-gap), 28px); }
  body .elementor .e-con.rps-pagehero > .e-con-inner {
    padding-block-start: min(var(--padding-block-start), 40px);
    padding-block-end: min(var(--padding-block-end), 40px);
  }
}
@media (max-width: 767px) {
  .rps-section.e-con > .e-con-inner {
    padding-block-start: min(var(--padding-block-start), 28px);
    padding-block-end: min(var(--padding-block-end), 28px);
  }
  body .elementor .e-con.rps-section > .e-con-inner,
  body .elementor .rps-section .e-con-full,
  body .elementor .rps-section .e-con-boxed > .e-con-inner { row-gap: min(var(--row-gap), 24px); }
}

/* Gallery page on phones: the video list was squeezed to 100px and all but the first video were cut off */
body .elementor .elementor-element-e0b22d8 > .e-con-inner { flex-wrap: nowrap; }

/* =====================================================================
   HOME - Academics: one card per group of classes, each in its own colour
   ===================================================================== */
.rps-stages { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; width: 100%; }
.rps-stage {
  --stage-a: #EA580C; --stage-b: #B93C07; --stage-soft: #FFF3E8; --stage-ink: #9A3412;
  position: relative; display: flex; flex-direction: column;
  background: #fff; border: 1px solid rgba(4, 38, 26, .06); border-radius: 22px; overflow: hidden;
  box-shadow: 0 18px 40px -26px rgba(4, 38, 26, .45);
  transition: transform .4s cubic-bezier(.2, .8, .2, 1), box-shadow .4s ease;
}
.rps-stage--school { --stage-a: #1F9D63; --stage-b: #0B4A2F; --stage-soft: #E7F5EE; --stage-ink: #0B4A2F; }
.rps-stage--senior { --stage-a: #2F6FEB; --stage-b: #1B3A8C; --stage-soft: #EAF1FF; --stage-ink: #1B3A8C; }
.rps-stage:hover { transform: translateY(-8px); box-shadow: 0 32px 56px -30px rgba(4, 38, 26, .55); }

.rps-stage__head {
  position: relative; overflow: hidden; isolation: isolate;
  display: flex; align-items: center; gap: 14px; padding: 24px 24px 22px;
  background: linear-gradient(135deg, var(--stage-a) 0%, var(--stage-b) 100%);
}
.rps-stage__head::before,
.rps-stage__head::after {
  content: ""; position: absolute; z-index: -1; border-radius: 50%;
  background: rgba(255, 255, 255, .13); transition: transform .7s cubic-bezier(.2, .8, .2, 1);
}
.rps-stage__head::before { width: 150px; height: 150px; right: -44px; top: -64px; }
.rps-stage__head::after  { width: 86px; height: 86px; right: 70px; bottom: -58px; background: rgba(255, 255, 255, .09); }
.rps-stage:hover .rps-stage__head::before { transform: scale(1.3); }
.rps-stage:hover .rps-stage__head::after  { transform: translate(-18px, -10px); }
.rps-stage__icon {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 50px; height: 50px; border-radius: 15px; font-size: 21px; color: #fff;
  background: rgba(255, 255, 255, .2); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .3);
  transition: transform .5s cubic-bezier(.3, 1.6, .5, 1);
}
.rps-stage:hover .rps-stage__icon { transform: rotate(-10deg) scale(1.1); }
.elementor-25 .rps-stage h3.rps-stage__title {
  margin: 0; font-family: Poppins, sans-serif; font-size: 21px; font-weight: 700; line-height: 1.25;
  letter-spacing: normal; color: #fff;
}
.elementor-25 .rps-stage ul.rps-stage__list {
  flex: 1; display: grid; align-content: stretch; gap: 12px;
  margin: 0; padding: 20px 20px 22px; list-style: none;
}
.elementor-25 .rps-stage li.rps-stage__item {
  display: flex; align-items: center; gap: 12px; margin: 0; padding: 12px 14px;
  border-radius: 14px; background: var(--stage-soft);
  transition: transform .35s cubic-bezier(.2, .8, .2, 1);
}
.elementor-25 .rps-stage li.rps-stage__item:hover { transform: translateX(5px); }
.rps-stage__mark {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 11px; font-size: 14px; color: #fff;
  background: linear-gradient(135deg, var(--stage-a) 0%, var(--stage-b) 100%);
}
.rps-stage__body { min-width: 0; }
.rps-stage__name { display: block; font-family: Poppins, sans-serif; font-size: 16px; font-weight: 600; line-height: 1.3; color: var(--stage-ink); }
.rps-stage__text { display: block; margin-top: 1px; font-family: Poppins, sans-serif; font-size: 13.5px; line-height: 1.45; color: var(--rps-ink-2); }
@media (max-width: 1199px) {
  .rps-stages { grid-template-columns: 1fr; gap: 16px; max-width: 560px; margin: 0 auto; }
}
@media (max-width: 480px) {
  .rps-stage__head { padding: 18px 18px 16px; }
  .rps-stage__icon { width: 44px; height: 44px; font-size: 19px; border-radius: 13px; }
  .elementor-25 .rps-stage h3.rps-stage__title { font-size: 19px; }
  .elementor-25 .rps-stage ul.rps-stage__list { padding: 14px 14px 16px; gap: 10px; }
  .elementor-25 .rps-stage li.rps-stage__item { gap: 10px; padding: 10px 12px; }
  .rps-stage__mark { width: 32px; height: 32px; font-size: 13px; border-radius: 10px; }
  .rps-stage__name { font-size: 15px; }
  .rps-stage__text { font-size: 13px; }
}

/* =====================================================================
   MOTION - gentle animations on every page (rps-motion.js decides
   what animates; nothing is hidden if the script does not run)
   ===================================================================== */
@keyframes rps-rise       { from { opacity: 0; translate: 0 34px; }  to { opacity: 1; translate: 0 0; } }
@keyframes rps-from-left  { from { opacity: 0; translate: -46px 0; } to { opacity: 1; translate: 0 0; } }
@keyframes rps-from-right { from { opacity: 0; translate: 46px 0; }  to { opacity: 1; translate: 0 0; } }
@keyframes rps-settle     { from { opacity: 0; scale: .93; }         to { opacity: 1; scale: 1; } }

/* 1. blocks rise into view while scrolling; cards that appear together follow one another */
html.rps-motion .rps-reveal { opacity: 0; }
html.rps-motion .rps-reveal.is-in { animation: rps-rise .85s cubic-bezier(.2, .7, .2, 1) var(--rps-delay, 0s) both; }
html.rps-motion .rps-reveal--left.is-in  { animation-name: rps-from-left; }
html.rps-motion .rps-reveal--right.is-in { animation-name: rps-from-right; }
html.rps-motion .rps-reveal--zoom.is-in  { animation-name: rps-settle; animation-duration: 1s; }

/* 2. the home page's own entrance effects use the same soft movement */
.elementor-element.animated { animation-duration: .9s; animation-timing-function: cubic-bezier(.2, .7, .2, 1); }
.elementor-element.animated.fadeInUp    { animation-name: rps-rise; }
.elementor-element.animated.fadeInLeft  { animation-name: rps-from-left; }
.elementor-element.animated.fadeInRight { animation-name: rps-from-right; }

/* 3. page titles and banner text arrive in steps */
.rps-pagehero .elementor-widget,
.rps-dl-hero > * > * { animation: rps-rise .8s cubic-bezier(.2, .7, .2, 1) both; }
.rps-pagehero .elementor-widget:nth-child(2), .rps-dl-hero > * > *:nth-child(2) { animation-delay: .12s; }
.rps-pagehero .elementor-widget:nth-child(3), .rps-dl-hero > * > *:nth-child(3) { animation-delay: .24s; }
.rps-pagehero .elementor-widget:nth-child(n+4), .rps-dl-hero > * > *:nth-child(n+4) { animation-delay: .36s; }
.rps-slide.is-on .rps-slide__eyebrow { animation: rps-rise .7s cubic-bezier(.2, .7, .2, 1) .15s both; }
.rps-slide.is-on .rps-slide__title   { animation: rps-rise .8s cubic-bezier(.2, .7, .2, 1) .28s both; }
.rps-slide.is-on .rps-slide__text    { animation: rps-rise .8s cubic-bezier(.2, .7, .2, 1) .42s both; }
.rps-slide.is-on .rps-slide__buttons { animation: rps-rise .8s cubic-bezier(.2, .7, .2, 1) .56s both; }

/* 4. cards lift under the mouse and their icons give a little turn */
.rps-card, .rps-tile, .rps-doc, .rps-mv, .rps-contact-card, .rps-video, .rps-faculty {
  transition: transform .4s cubic-bezier(.2, .8, .2, 1), box-shadow .4s ease, border-color .4s ease;
}
.rps-card:hover, .rps-tile:hover, .rps-doc:hover, .rps-mv:hover, .rps-contact-card:hover, .rps-video:hover, .rps-faculty:hover {
  transform: translateY(-6px);
  box-shadow: 0 26px 50px -28px rgba(4, 38, 26, .42);
}
.rps-card .elementor-icon, .rps-tile .elementor-icon, .rps-mv .elementor-icon, .rps-contact-card .elementor-icon,
.rps-fact__icon, .rps-doc .fas, .rps-doc svg {
  transition: scale .5s cubic-bezier(.3, 1.6, .5, 1), rotate .5s cubic-bezier(.3, 1.6, .5, 1);
}
.rps-card:hover .elementor-icon, .rps-tile:hover .elementor-icon, .rps-mv:hover .elementor-icon, .rps-contact-card:hover .elementor-icon,
.rps-fact:hover .rps-fact__icon, .rps-doc:hover .fas, .rps-doc:hover svg { scale: 1.14; rotate: -8deg; }

/* 5. a light sweeps across buttons under the mouse */
.elementor-button, .rps-btn { position: relative; overflow: hidden; isolation: isolate; }
.elementor-button::after, .rps-btn::after {
  content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 60%; z-index: 1; pointer-events: none;
  background: linear-gradient(105deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .38) 50%, rgba(255, 255, 255, 0) 100%);
  translate: -170% 0; transition: translate .75s ease;
}
.elementor-button:hover::after, .rps-btn:hover::after { translate: 260% 0; }

@media print {
  html.rps-motion .rps-reveal { opacity: 1; animation: none; }
}

/* =====================================================================
   ABOUT US - "Our Story" pictures: one main photo with a smaller one
   overlapping it, so the pair matches the height of the text beside it
   ===================================================================== */
.elementor .e-con.rps-story-media {
  position: relative; display: block;
  padding: 0 42px 52px 16px;
}

.rps-story-media .rps-story__img1 { position: relative; z-index: 1; width: 100%; }
.rps-story-media .rps-story__img1 img {
  display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover;
  border-radius: 22px;
  box-shadow: -14px 14px 0 0 var(--rps-accent), 0 26px 52px -30px rgba(4, 38, 26, .6);
}
.rps-story-media .rps-story__img2 {
  position: absolute; right: 0; bottom: 0; width: 54%; z-index: 2;
}
.rps-story-media .rps-story__img2 img {
  display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover;
  border: 6px solid #fff; border-radius: 18px; box-shadow: 0 20px 44px -26px rgba(4, 38, 26, .55);
}
.rps-story-media .rps-story__img1 img,
.rps-story-media .rps-story__img2 img { transition: transform .5s cubic-bezier(.2, .8, .2, 1); }
.rps-story-media:hover .rps-story__img1 img { transform: translateY(-4px); }
.rps-story-media:hover .rps-story__img2 img { transform: translateY(-4px) scale(1.02); }
@media (max-width: 1024px) {
  .elementor .e-con.rps-story-media { max-width: 560px; margin-inline: auto; }
}
@media (max-width: 575px) {
  .elementor .e-con.rps-story-media { padding: 0; }
  .rps-story-media .rps-story__img2 { position: static; width: 72%; margin: -34px 0 0 auto; }
}

/* The Admissions 2026-27 promotional block is retired site-wide. */
body .rps-cta-section { display: none !important; }

/* =====================================================================
   ACADEMICS - compact, consistent curriculum image presentation
   ===================================================================== */
.elementor-118 .rps-academic-visuals { gap: 18px; }
.elementor-118 .rps-academic-visuals .elementor-widget-image {
  overflow: hidden; border-radius: 22px; background: #e8f1eb;
  box-shadow: 0 18px 38px -25px rgba(4, 38, 26, .55);
}
.elementor-118 .rps-academic-visuals .elementor-widget-image img {
  display: block; width: 100%; height: 236px; object-fit: cover;
  transition: transform .35s ease;
}
.elementor-118 .rps-academic-visuals .elementor-widget-image:first-child img { object-position: center 42%; }
.elementor-118 .rps-academic-visuals .elementor-widget-image:last-child img { object-position: center 38%; }
.elementor-118 .rps-academic-visuals .elementor-widget-image:hover img { transform: scale(1.035); }

/* =====================================================================
   ADMISSIONS - clearer, connected three-step application journey
   ===================================================================== */
.elementor-117 .rps-apply-steps {
  display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px; position: relative; align-items: stretch;
}
.elementor-117 .rps-apply-steps::before {
  content: ""; position: absolute; z-index: 0; left: 13%; right: 13%; top: 56px;
  height: 2px; background: linear-gradient(90deg, #f2b705, #d8e7de, #f2b705);
}
.elementor-117 .rps-apply-step {
  z-index: 1; min-height: 278px; padding: 30px 30px 26px;
  border-color: #dbe7df; border-top: 4px solid #f2b705;
  box-shadow: 0 12px 28px -25px rgba(4, 38, 26, .5);
}
.elementor-117 .rps-apply-step > .elementor-element:first-child .elementor-heading-title {
  display: grid; place-items: center; width: 58px; height: 58px; margin: 0 0 16px;
  border-radius: 50%; background: #fff8df; color: #bf8600; font-size: 25px; line-height: 1;
}
.elementor-117 .rps-apply-step h3 { margin: 0 0 12px; color: #0b4a2f; }
.elementor-117 .rps-apply-step p { margin: 0; color: #405047; line-height: 1.7; }
.elementor-117 .rps-apply-step:hover { border-color: #c8dacd; }
@media (max-width: 767px) {
  .elementor-118 .rps-academic-visuals .elementor-widget-image img { height: 220px; }
  .elementor-117 .rps-apply-steps { grid-template-columns: 1fr; gap: 16px; }
  .elementor-117 .rps-apply-steps::before { left: 29px; top: 60px; bottom: 60px; right: auto; width: 2px; height: auto; }
  .elementor-117 .rps-apply-step { min-height: 0; padding: 24px 24px 24px 32px; }
}

/* Reference layout: four clean, equal-width cards; keep Elementor child widths
   from shrinking the cards on wide screens. */
.elementor-117 .rps-apply-steps {
  display: flex !important; align-items: stretch; gap: 40px;
}
.elementor-117 .rps-apply-steps::before { display: none; }
.elementor-117 .rps-apply-step {
  flex: 1 1 0 !important; width: auto !important; max-width: none !important; min-width: 0;
  min-height: 382px; padding: 32px; border: 1px solid #dfe7e2; border-top: 1px solid #dfe7e2;
  border-radius: 22px; box-shadow: none;
}
.elementor-117 .rps-apply-step > .elementor-element:first-child .elementor-heading-title {
  display: block; width: auto; height: auto; margin: 0 0 16px; padding: 0;
  border-radius: 0; background: transparent; color: #f2b705; font-size: 40px; line-height: 1.1;
}
.elementor-117 .rps-apply-step h3 { margin: 0 0 16px; color: #0b4a2f; font-family: Georgia, serif; font-size: 24px; line-height: 1.35; }
.elementor-117 .rps-apply-step p { margin: 0; color: #26362d; line-height: 1.7; }
.elementor-117 .rps-apply-step:hover { transform: none; border-color: #d2dfd7; box-shadow: none; }
.elementor-117 .elementor-element-dc003e8 { padding-left: 24px !important; padding-right: 24px !important; }
.elementor-117 .elementor-element-dc003e8 > .e-con-inner { width: 100%; max-width: none !important; }
@media (max-width: 1100px) and (min-width: 768px) {
  .elementor-117 .rps-apply-steps { flex-wrap: wrap; gap: 24px; }
  .elementor-117 .rps-apply-step { flex-basis: calc(50% - 12px) !important; min-height: 300px; }
}
@media (max-width: 767px) {
  .elementor-117 .elementor-element-dc003e8 { padding-left: 16px !important; padding-right: 16px !important; }
  .elementor-117 .rps-apply-steps { display: flex !important; flex-direction: column; gap: 16px; }
  .elementor-117 .rps-apply-step { flex-basis: auto !important; min-height: 0; padding: 26px; }
}


/* =====================================================================
   2026-09 REVISION
   1. Home banner fits the first screen: header + banner + events bar +
      highlights strip are all visible without scrolling.
      --rps-hero-offset is measured by the small script under the banner
      in index.php (header + events bar + strip); 242px is the fallback.
   ===================================================================== */
.rps-hero-slider .rps-hero-slider__track {
  height: clamp(320px, calc(100vh - var(--rps-hero-offset, 242px)), 640px);
  height: clamp(320px, calc(100svh - var(--rps-hero-offset, 242px)), 640px);
}
.rps-hero-slider .rps-slide .rps-slide__title {
  font-size: clamp(26px, min(3.2vw, 6.2vh), 50px);
}
.rps-hero-slider .rps-slide .rps-slide__text {
  font-size: clamp(14.5px, min(1.5vw, 2.6vh), 17.5px);
}
@media (min-width: 768px) and (max-height: 700px) {
  .rps-hero-slider .rps-slide__inner { padding-top: 20px; padding-bottom: 46px; }
  .rps-hero-slider .rps-slide .rps-slide__eyebrow { margin-bottom: 8px; font-size: 11px; }
  .rps-hero-slider .rps-slide .rps-slide__title { margin-bottom: 10px; }
  .rps-hero-slider .rps-slide .rps-slide__text { margin-bottom: 16px; line-height: 1.5; }
  .rps-hero-slider .rps-slide .rps-btn { padding: 10px 22px; font-size: 13.5px; }
  .rps-hero-dots { bottom: 14px; }
}
@media (max-width: 767.98px) {
  .rps-hero-slider .rps-hero-slider__track {
    height: clamp(400px, calc(100vh - var(--rps-hero-offset, 234px)), 520px);
    height: clamp(400px, calc(100svh - var(--rps-hero-offset, 234px)), 520px);
  }
  .rps-hero-slider .rps-slide .rps-slide__title { font-size: clamp(23px, 6.6vw, 28px); }
  .rps-hero-slider .rps-slide .rps-slide__eyebrow { font-size: 10.5px; letter-spacing: .1em; }
  .rps-hero-slider .rps-slide .rps-slide__text { margin-bottom: 18px; }
  .rps-hero-slider .rps-slide .rps-btn { padding: 11px 20px; font-size: 13.5px; }
}
@media (max-width: 767.98px) and (max-height: 700px) {
  .rps-hero-slider .rps-slide__inner { padding-top: 16px; padding-bottom: 40px; }
  .rps-hero-slider .rps-slide .rps-slide__text { font-size: 13.5px; line-height: 1.5; margin-bottom: 14px; }
}

/* 2. "RPS in numbers" strip - calmer type, and a real grid so nothing is
      cut off on phones (the 50%-wide counters used to overflow). */
.elementor-25 .elementor-element.elementor-element-8c98066.rps-stats {
  --padding-top: 38px; --padding-bottom: 38px;
  --padding-left: 20px; --padding-right: 20px;
}
.elementor-25 .rps-stats .elementor-element.elementor-element-10913ad {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 22px 16px;
  align-items: start;
}
.elementor-25 .rps-stats .elementor-element.elementor-widget-counter {
  width: auto; max-width: none; min-width: 0;
}
.elementor-25 .rps-stats .elementor-counter { display: flex; flex-direction: column-reverse; align-items: center; gap: 4px; }
.elementor-25 .rps-stats .elementor-counter .elementor-counter-number-wrapper {
  font-family: Poppins, sans-serif;
  font-size: clamp(24px, 2.5vw, 36px);
  font-weight: 700; line-height: 1.1; letter-spacing: -.01em;
  justify-content: center;
}
.elementor-25 .rps-stats .elementor-counter .elementor-counter-title {
  font-family: Poppins, sans-serif;
  font-size: 13.5px; font-weight: 500; font-style: normal;
  line-height: 1.35; letter-spacing: .02em;
  text-align: center;
}
@media (max-width: 767px) {
  .elementor-25 .rps-stats .elementor-element.elementor-element-10913ad {
    grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 20px 10px;
  }
  /* three on the first row, two centred on the second */
  .elementor-25 .rps-stats .elementor-element.elementor-widget-counter { grid-column: span 2; }
  .elementor-25 .rps-stats .elementor-element.elementor-widget-counter:nth-child(4) { grid-column: 2 / span 2; }
  .elementor-25 .rps-stats .elementor-element.elementor-widget-counter:nth-child(5) { grid-column: 4 / span 2; }
  .elementor-25 .rps-stats .elementor-counter .elementor-counter-number-wrapper { font-size: clamp(20px, 6vw, 26px); }
  .elementor-25 .rps-stats .elementor-counter .elementor-counter-title { font-size: 12px; }
}

/* 3. ADMISSIONS - table on the left, the points beside it on the right.
      Every section has an id, so the Admissions sub-menu can jump to it. */
.rps-adm-anchor { scroll-margin-top: 110px; }
@media (max-width: 1024px) { .rps-adm-anchor { scroll-margin-top: 84px; } }

.rps-adm-split {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  gap: 28px;
  align-items: stretch;
  width: 100%;
}
.rps-adm-split--fee { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.rps-adm-split__main { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

.rps-adm-table table {
  border: 1px solid var(--rps-rule);
  box-shadow: 0 10px 30px rgba(7, 50, 33, .06);
}
.rps-adm-table th { font-family: Poppins, sans-serif; font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; }
.rps-adm-table th span { font-weight: 500; opacity: .75; text-transform: none; letter-spacing: 0; }
.rps-adm-table td { font-family: Poppins, sans-serif; vertical-align: middle; }
.rps-adm-table td strong { display: block; font-weight: 600; }
.rps-adm-table tbody tr { transition: background .18s; }
.rps-adm-table tbody tr:hover td { background: var(--rps-mist); }
.rps-adm-pill {
  display: inline-block;
  background: var(--rps-accent-soft); color: #6B5200;
  border-radius: 999px; padding: 3px 14px;
  font-size: 13.5px; font-weight: 600;
}
.rps-adm-due {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 5px;
  background: var(--rps-accent-soft); color: #6B5200;
  border-radius: 999px; padding: 3px 12px;
  font-size: 12.5px; font-weight: 600;
}
.rps-adm-due i { font-size: 11px; }
/* the two tables are narrow enough now - no sideways scrolling on phones */
.rps-adm-table.rps-table { overflow-x: visible; }
.rps-adm-table.rps-table table { min-width: 0; }

.rps-adm-docs.rps-doc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.rps-adm-card {
  background: #fff;
  border: 1px solid var(--rps-rule);
  border-radius: 18px;
  padding: 26px 28px 28px;
  box-shadow: 0 10px 30px rgba(7, 50, 33, .06);
  position: relative; overflow: hidden;
}
.rps-adm-card::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px;
  background: linear-gradient(180deg, var(--rps-accent), var(--rps-green-l));
}
.elementor .rps-adm-card .rps-adm-card__title {
  font-family: Poppins, sans-serif; font-size: 20px; font-weight: 600;
  color: var(--rps-green-m); margin: 0 0 4px; line-height: 1.3;
}
.elementor .rps-adm-card .rps-adm-card__sub {
  font-family: Poppins, sans-serif; font-size: 14px; line-height: 1.6;
  color: var(--rps-ink-2); margin: 0 0 18px;
}
.rps-adm-points { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.rps-adm-points li {
  display: flex; gap: 14px; align-items: flex-start;
  background: var(--rps-mist);
  border-radius: 14px; padding: 13px 16px;
  font-family: Poppins, sans-serif; font-size: 14.5px; line-height: 1.6; color: var(--rps-ink-2);
  transition: transform .2s, box-shadow .2s;
}
.rps-adm-points li:hover { transform: translateX(3px); box-shadow: 0 6px 18px rgba(7, 50, 33, .08); }
.rps-adm-points li > span > strong:first-child { display: block; color: var(--rps-ink); font-weight: 600; font-size: 15px; }
.rps-adm-points li strong { color: var(--rps-ink); font-weight: 600; }
.rps-adm-points__icon {
  flex: none; width: 38px; height: 38px; border-radius: 11px;
  background: var(--rps-green-m); color: var(--rps-accent);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 15px; margin-top: 2px;
}

@media (max-width: 991px) {
  .rps-adm-split, .rps-adm-split--fee { grid-template-columns: 1fr; gap: 20px; }
}
@media (max-width: 575px) {
  .rps-adm-card { padding: 20px 18px 22px 22px; border-radius: 16px; }
  .rps-adm-points li { padding: 12px; gap: 12px; font-size: 14px; }
  .rps-adm-points__icon { width: 34px; height: 34px; font-size: 14px; }
  .rps-adm-table th, .rps-adm-table td { padding: 11px 13px; }
  .rps-adm-table th { font-size: 11.5px; }
  .rps-adm-docs.rps-doc-grid { grid-template-columns: 1fr; }
  .rps-adm-due { white-space: nowrap; font-size: 11.5px; padding: 3px 10px; }
  .rps-adm-table td:first-child { width: 58%; }
}

/* 4. HEADER - Admissions now has a drop-down too, so the arrows sit closer to
      their labels on mid-size screens and nothing wraps onto a second line. */
@media (min-width: 1025px) and (max-width: 1599px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d .elementor-nav-menu--main .elementor-item .sub-arrow { padding-left: 4px; }
  .elementor-64 .elementor-element.elementor-element-5ff9a3d .elementor-nav-menu--main .elementor-nav-menu { flex-wrap: nowrap; }
  .elementor-64 .elementor-element.elementor-element-5ff9a3d .elementor-nav-menu--main .elementor-item { white-space: nowrap; }
  .elementor-64 .elementor-element.elementor-element-ebf8134 .elementor-button { white-space: nowrap; padding-left: 22px; padding-right: 22px; }
}
@media (min-width: 1280px) and (max-width: 1439px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item { font-size: 13px; padding-left: 5px; padding-right: 5px; }
}
@media (min-width: 1280px) and (max-width: 1365px) {
  .elementor-64 .elementor-element.elementor-element-5ff9a3d
  .elementor-nav-menu--main .elementor-item { font-size: 12.5px; padding-left: 3px; padding-right: 3px; }
  .elementor-64 .rps-header .rps-header__name { font-size: 19px; }
}
/* drop-down links never break or spill out of their panel */
.elementor-64 .elementor-nav-menu--main .sub-menu { min-width: max-content; }
.elementor-64 .elementor-nav-menu--main .sub-menu .elementor-sub-item { white-space: nowrap; }

/* 5. TEACHER'S CORNER - on tablets and phones the uncropped staff photo kept a
      fixed height, which left empty bands above and below it. */
@media (max-width: 991px) {
  .rps-tm .rps-tm__media--staff-group img { height: auto; }
}

/* 6. ACADEMICS - the learning journey, stage by stage. Uses the same colour
      groups as the home page cards (early / school / senior). */
.elementor .e-con.rps-journey-section { --display: block; display: block; background: var(--rps-mist); padding: 64px 24px; scroll-margin-top: 110px; }
.rps-journey-section > .e-con-inner { display: block; width: 100%; max-width: 1200px; margin: 0 auto; }
.rps-journey__head { text-align: center; max-width: 820px; margin: 0 auto 40px; }
.rps-journey__eyebrow {
  display: block; font-family: Poppins, sans-serif; font-size: 15px; font-weight: 800;
  letter-spacing: .16em; text-transform: uppercase; color: var(--rps-green-l); margin-bottom: 10px;
}
.elementor .rps-journey__title {
  font-family: Poppins, sans-serif; font-weight: 600; font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1.22; letter-spacing: -.01em; color: var(--rps-green-d); margin: 0 0 12px;
}
.elementor .rps-journey__lead { font-family: Poppins, sans-serif; font-size: 16px; line-height: 1.7; color: var(--rps-ink-2); margin: 0; }

.rps-journey { display: grid; gap: 26px; }
.rps-journey__row {
  --stage-a: #EA580C; --stage-b: #B93C07; --stage-soft: #FFF3E8; --stage-ink: #9A3412;
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); align-items: stretch;
  background: #fff; border: 1px solid rgba(4, 38, 26, .06); border-radius: 22px; overflow: hidden;
  box-shadow: 0 18px 40px -28px rgba(4, 38, 26, .4);
  transition: transform .35s cubic-bezier(.2, .8, .2, 1), box-shadow .35s ease;
}
.rps-journey__row.rps-stage--school { --stage-a: #1F9D63; --stage-b: #0B4A2F; --stage-soft: #E7F5EE; --stage-ink: #0B4A2F; }
.rps-journey__row.rps-stage--senior { --stage-a: #2F6FEB; --stage-b: #1B3A8C; --stage-soft: #EAF1FF; --stage-ink: #1B3A8C; }
.rps-journey__row:hover { transform: translateY(-4px); box-shadow: 0 28px 52px -30px rgba(4, 38, 26, .5); }
.rps-journey__row--flip .rps-journey__media { order: 2; }

.rps-journey__media { position: relative; margin: 0; min-height: 270px; overflow: hidden; }
.rps-journey__media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transition: transform .8s cubic-bezier(.2, .8, .2, 1);
}
.rps-journey__row:hover .rps-journey__media img { transform: scale(1.05); }
.rps-journey__badge {
  position: absolute; left: 18px; bottom: 18px;
  background: linear-gradient(135deg, var(--stage-a), var(--stage-b)); color: #fff;
  font-family: Poppins, sans-serif; font-size: 13px; font-weight: 700; letter-spacing: .04em;
  padding: 7px 16px; border-radius: 999px; box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .5);
}
.rps-journey__row--flip .rps-journey__badge { left: auto; right: 18px; }

.rps-journey__body { position: relative; padding: 34px 38px; display: flex; flex-direction: column; justify-content: center; }
.rps-journey__body::before {
  content: ""; position: absolute; left: 0; top: 28px; bottom: 28px; width: 4px; border-radius: 4px;
  background: linear-gradient(180deg, var(--stage-a), var(--stage-b));
}
.rps-journey__row--flip .rps-journey__body::before { left: auto; right: 0; }
.rps-journey__step {
  position: absolute; right: 28px; top: 14px;
  font-family: Poppins, sans-serif; font-size: 64px; font-weight: 800; line-height: 1;
  color: var(--stage-soft); pointer-events: none; user-select: none;
}
.rps-journey__row--flip .rps-journey__step { right: 36px; }
.elementor .rps-journey__name {
  position: relative; display: flex; align-items: center; gap: 12px;
  font-family: Poppins, sans-serif; font-size: 22px; font-weight: 600; line-height: 1.25;
  color: var(--stage-ink); margin: 0 0 12px;
}
.rps-journey__icon {
  flex: none; width: 42px; height: 42px; border-radius: 12px;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--stage-a), var(--stage-b)); color: #fff; font-size: 16px;
}
.elementor .rps-journey__text { position: relative; font-family: Poppins, sans-serif; font-size: 15.5px; line-height: 1.75; color: var(--rps-ink-2); margin: 0 0 18px; }
.rps-journey__chips { position: relative; list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rps-journey__chips li {
  background: var(--stage-soft); color: var(--stage-ink);
  font-family: Poppins, sans-serif; font-size: 13px; font-weight: 600;
  padding: 6px 14px; border-radius: 999px;
}

@media (max-width: 860px) {
  .elementor .e-con.rps-journey-section { padding: 44px 16px; }
  .rps-journey__head { margin-bottom: 26px; }
  .rps-journey__row { grid-template-columns: 1fr; }
  .rps-journey__row--flip .rps-journey__media { order: 0; }
  .rps-journey__media { min-height: 0; aspect-ratio: 16 / 9; }
  .rps-journey__badge, .rps-journey__row--flip .rps-journey__badge { left: 16px; right: auto; bottom: 14px; }
  .rps-journey__body { padding: 24px 22px 26px 26px; }
  .rps-journey__body::before, .rps-journey__row--flip .rps-journey__body::before { left: 0; right: auto; top: 22px; bottom: 22px; }
  .rps-journey__step, .rps-journey__row--flip .rps-journey__step { font-size: 48px; right: 18px; top: 12px; }
  .elementor .rps-journey__name { font-size: 19px; }
  .elementor .rps-journey__text { font-size: 14.5px; }
}

/* 7. HOME BANNER - front view of the school: keep the rooftop "RAUNAQ PUBLIC
      SCHOOL" sign in the frame on wide screens, and the building (not the
      trees) in the frame on phones. Applies only to this picture. */
.rps-slide__bg[style*="rps-campus-front-view"] { background-position: center top; }
@media (max-width: 767.98px) {
  .rps-slide__bg[style*="rps-campus-front-view"] { background-position: 80% center; }
}

/* 8. ADMISSIONS - withdrawal & transfer-certificate rules shown as points */
.rps-adm-points--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; width: 100%; }
.rps-adm-points--grid li {
  background: #fff; border: 1px solid var(--rps-rule);
  padding: 16px 18px; box-shadow: 0 8px 22px -14px rgba(7, 50, 33, .22);
}
.rps-adm-points--grid li:hover { transform: translateY(-3px); }
.rps-adm-points--grid a { color: var(--rps-green-m); font-weight: 600; text-decoration: underline; overflow-wrap: anywhere; }
@media (max-width: 767px) { .rps-adm-points--grid { grid-template-columns: 1fr; gap: 10px; } }


/* =====================================================================
   9. PAGE KIT ("rx-") - one set of building blocks shared by About Us,
      Academics, Campus Life and Mandatory Disclosure, so every section on
      those pages has the same spacing, headings, cards and rhythm.
   ===================================================================== */
.rx-sec { padding: 72px 24px; background: var(--rps-paper); scroll-margin-top: 120px; }
.rx-sec--mist  { background: var(--rps-mist); }
.rx-sec--white { background: #fff; }
.rx-sec--dark  { background: var(--rps-green); }
.rx-sec--tight { padding-top: 0; padding-bottom: 34px; }
.rx-wrap { width: 100%; max-width: 1200px; margin: 0 auto; }

/* section heading: eyebrow + title + lead, always centred */
.rx-head { text-align: center; max-width: 800px; margin: 0 auto 44px; }
.rx-head--left { text-align: left; margin-left: 0; margin-bottom: 18px; }
.rx-eyebrow {
  display: block; margin: 0 0 10px;
  font-family: Poppins, sans-serif; font-size: 14px; font-weight: 800;
  letter-spacing: .16em; text-transform: uppercase; color: var(--rps-green-l);
}
.elementor .rx-title {
  font-family: Poppins, sans-serif; font-weight: 600; font-size: clamp(24px, 2.6vw, 34px);
  line-height: 1.22; letter-spacing: -.01em; color: var(--rps-green-d); margin: 0 0 12px;
}
.elementor .rx-lead { font-family: Poppins, sans-serif; font-size: 16px; line-height: 1.75; color: var(--rps-ink-2); margin: 0; }
.rx-sec--dark .rx-eyebrow { color: var(--rps-accent); }
.elementor .rx-sec--dark .rx-title { color: #fff; }
.elementor .rx-sec--dark .rx-lead { color: rgba(255, 255, 255, .78); }

.elementor .rx-prose p { font-family: Poppins, sans-serif; font-size: 15.5px; line-height: 1.8; color: var(--rps-ink-2); margin: 0 0 14px; }
.elementor .rx-prose p:last-child { margin-bottom: 0; }
.elementor .rx-prose strong { color: var(--rps-ink); font-weight: 600; }

/* grid + cards */
.rx-grid { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 22px; }
.rx-card {
  position: relative; background: #fff; border: 1px solid var(--rps-rule); border-radius: 20px;
  padding: 28px 26px; box-shadow: 0 14px 34px -24px rgba(4, 38, 26, .35);
  transition: transform .3s cubic-bezier(.2, .8, .2, 1), box-shadow .3s ease, border-color .3s ease;
}
.rx-card:hover { transform: translateY(-5px); box-shadow: 0 26px 48px -28px rgba(4, 38, 26, .5); border-color: #cfe0d5; }
.rx-card__icon {
  width: 52px; height: 52px; border-radius: 15px; margin-bottom: 18px;
  display: inline-flex; align-items: center; justify-content: center; font-size: 20px;
  background: linear-gradient(135deg, var(--rps-green-l), var(--rps-green-m)); color: #fff;
}
.rx-card--gold .rx-card__icon { background: linear-gradient(135deg, #F7C62F, var(--rps-accent)); color: var(--rps-accent-ink); }
.elementor .rx-card__title { font-family: Poppins, sans-serif; font-size: 18.5px; font-weight: 600; line-height: 1.3; color: var(--rps-green-d); margin: 0 0 8px; }
.elementor .rx-card__text { font-family: Poppins, sans-serif; font-size: 14.5px; line-height: 1.7; color: var(--rps-ink-2); margin: 0; }
.rx-card--center { text-align: center; }
.rx-card__num {
  position: absolute; right: 22px; top: 14px; font-family: Poppins, sans-serif; font-size: 46px; font-weight: 800;
  line-height: 1; color: var(--rps-mist); pointer-events: none; user-select: none;
}
.rx-card--feature { padding: 34px 32px; overflow: hidden; }
.rx-card--feature::before { content: ""; position: absolute; left: 0; top: 0; right: 0; height: 5px; background: linear-gradient(90deg, var(--rps-accent), var(--rps-green-l)); }

/* picture beside text */
.rx-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 56px; align-items: center; }
.rx-split + .rx-split { margin-top: 64px; }
.rx-split--flip .rx-media { order: 2; }
.rx-media { position: relative; margin: 0 16px 16px 0; isolation: isolate; }
.rx-split--flip .rx-media { margin: 0 0 16px 16px; }
.rx-media::before {
  content: ""; position: absolute; inset: 16px -16px -16px 16px; z-index: -1; border-radius: 24px;
  background: linear-gradient(150deg, var(--rps-accent) 0%, #FFD65A 100%);
}
.rx-split--flip .rx-media::before { inset: 16px 16px -16px -16px; }
.rx-media--green::before { background: linear-gradient(150deg, var(--rps-green-l) 0%, var(--rps-green-m) 100%); }
.rx-media img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 24px; box-shadow: 0 24px 50px -30px rgba(4, 38, 26, .6); }
.rx-media__inset {
  position: absolute; right: -28px; bottom: -34px; width: 46%; margin: 0;
  border: 6px solid #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 20px 40px -20px rgba(4, 38, 26, .55);
}
.rx-media .rx-media__inset img { border-radius: 0; box-shadow: none; }
.rx-media__tag {
  position: absolute; left: 18px; top: 18px; background: var(--rps-green); color: #fff; border-radius: 14px;
  padding: 10px 16px; font-family: Poppins, sans-serif; line-height: 1.15; box-shadow: 0 12px 26px -12px rgba(0, 0, 0, .55);
}
.rx-media__tag b { display: block; font-size: 24px; font-weight: 700; color: var(--rps-accent); }
.rx-media__tag span { font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

.rx-checks { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 10px; }
.rx-checks--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rx-checks li { display: flex; gap: 10px; align-items: flex-start; font-family: Poppins, sans-serif; font-size: 15px; line-height: 1.55; color: var(--rps-ink); }
.rx-checks li i { flex: none; width: 22px; height: 22px; margin-top: 1px; border-radius: 50%; background: var(--rps-mist); color: var(--rps-green-l); font-size: 10px; display: inline-flex; align-items: center; justify-content: center; }
.rx-sec--mist .rx-checks li i { background: #fff; }

.rx-chips { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rx-chips li { background: #fff; border: 1px solid var(--rps-rule); color: var(--rps-green-m); border-radius: 999px; padding: 7px 15px; font-family: Poppins, sans-serif; font-size: 13.5px; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; }
.rx-chips li i { color: var(--rps-accent-hover); font-size: 12px; }

/* numbers band */
.rx-stats { display: grid; grid-template-columns: repeat(var(--cols, 5), minmax(0, 1fr)); gap: 16px; }
.rx-stat { background: #fff; border: 1px solid var(--rps-rule); border-radius: 18px; padding: 22px 12px; text-align: center; box-shadow: 0 12px 28px -22px rgba(4, 38, 26, .4); }
.rx-stat b { display: block; font-family: Poppins, sans-serif; font-size: clamp(24px, 2.6vw, 32px); font-weight: 700; line-height: 1.1; color: var(--rps-green-m); }
.rx-stat span { display: block; margin-top: 6px; font-family: Poppins, sans-serif; font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #5E7A6B; }
.rx-stats--float { margin-top: -34px; position: relative; z-index: 2; }

/* buttons */
.rx-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.rx-actions--center { justify-content: center; margin-top: 36px; }
.elementor a.rx-btn {
  display: inline-flex; align-items: center; gap: 9px; padding: 13px 26px; border-radius: 999px;
  font-family: Poppins, sans-serif; font-size: 14.5px; font-weight: 700; text-decoration: none;
  background: var(--rps-green-m); color: #fff; box-shadow: 0 10px 22px -12px rgba(4, 38, 26, .7);
  transition: transform .18s, box-shadow .18s, background .18s;
}
.elementor a.rx-btn:hover { transform: translateY(-2px); background: var(--rps-green); color: #fff; }
.elementor a.rx-btn--gold { background: var(--rps-accent); color: var(--rps-accent-ink); }
.elementor a.rx-btn--gold:hover { background: var(--rps-accent-hover); color: var(--rps-accent-ink); }
.elementor a.rx-btn--ghost { background: #fff; color: var(--rps-green-m); border: 1px solid #cfe0d5; box-shadow: none; }
.elementor a.rx-btn--ghost:hover { background: var(--rps-mist); color: var(--rps-green-m); }

/* in-page navigation chips */
.rx-jump { background: #fff; border-bottom: 1px solid var(--rps-rule); padding: 12px 24px; position: sticky; top: 76px; z-index: 20; }
.rx-jump ul { list-style: none; margin: 0 auto; padding: 0; max-width: 1200px; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.rx-jump ul::-webkit-scrollbar { display: none; }
.elementor .rx-jump a {
  display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; padding: 8px 16px; border-radius: 999px;
  font-family: Poppins, sans-serif; font-size: 13.5px; font-weight: 600; text-decoration: none;
  color: var(--rps-green-m); background: var(--rps-mist); transition: background .18s, color .18s;
}
.elementor .rx-jump a:hover { background: var(--rps-green-m); color: #fff; }
.rx-jump a i { font-size: 12px; color: var(--rps-accent-hover); }
.elementor .rx-jump a:hover i { color: var(--rps-accent); }

/* quote band */
.rx-quotes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.rx-quote { border: 1px solid rgba(255, 255, 255, .16); background: rgba(255, 255, 255, .06); border-radius: 20px; padding: 28px 30px; }
.rx-quote i { color: var(--rps-accent); font-size: 22px; margin-bottom: 12px; display: block; }
.elementor .rx-quote p { font-family: Poppins, sans-serif; font-size: 19px; font-weight: 500; font-style: italic; line-height: 1.5; color: #fff; margin: 0; }

/* photo mosaic */
.rx-mosaic { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 18px; }
.rx-mosaic figure { position: relative; margin: 0; border-radius: 22px; overflow: hidden; box-shadow: 0 22px 46px -30px rgba(4, 38, 26, .6); min-height: 400px; }
.rx-mosaic img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .8, .2, 1); }
.rx-mosaic figure:hover img { transform: scale(1.05); }
.rx-mosaic figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 44px 20px 16px; color: #fff;
  font-family: Poppins, sans-serif; font-size: 14.5px; font-weight: 600;
  background: linear-gradient(180deg, rgba(4, 38, 26, 0) 0%, rgba(4, 38, 26, .82) 100%);
}

/* photo card (picture on top) */
.rx-pcard { background: #fff; border: 1px solid var(--rps-rule); border-radius: 22px; overflow: hidden; box-shadow: 0 18px 40px -28px rgba(4, 38, 26, .45); display: flex; flex-direction: column; transition: transform .3s, box-shadow .3s; }
.rx-pcard:hover { transform: translateY(-5px); box-shadow: 0 30px 54px -30px rgba(4, 38, 26, .55); }
.rx-pcard__media { margin: 0; aspect-ratio: 16 / 10; overflow: hidden; }
.rx-pcard__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2, .8, .2, 1); }
.rx-pcard:hover .rx-pcard__media img { transform: scale(1.05); }
.rx-pcard__body { padding: 26px 28px 30px; }

/* facts laid out as label / value pairs (Mandatory Disclosure) */
.rx-panel { background: #fff; border: 1px solid var(--rps-rule); border-radius: 22px; overflow: hidden; box-shadow: 0 18px 40px -30px rgba(4, 38, 26, .45); }
.rx-panel + .rx-panel { margin-top: 28px; }
.rx-panel__head { display: flex; align-items: center; gap: 16px; padding: 22px 28px; background: var(--rps-green); color: #fff; }
.rx-panel__letter { flex: none; width: 46px; height: 46px; border-radius: 13px; background: var(--rps-accent); color: var(--rps-accent-ink); font-family: Poppins, sans-serif; font-size: 20px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.rx-panel__head small { display: block; font-family: Poppins, sans-serif; font-size: 11.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--rps-accent); margin-bottom: 2px; }
.elementor .rx-panel__head h2 { font-family: Poppins, sans-serif; font-size: 20px; font-weight: 600; line-height: 1.25; color: #fff; margin: 0; }
.rx-spec { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 -1px -1px 0; }
.rx-spec > div { position: relative; padding: 18px 28px 18px 80px; border-bottom: 1px solid #EDF2EE; border-right: 1px solid #EDF2EE; transition: background .18s; }
.rx-spec > div:hover { background: #FBFCFB; }
.rx-spec dt i { position: absolute; left: 28px; top: 20px; width: 36px; height: 36px; border-radius: 10px; background: var(--rps-mist); color: var(--rps-green-l); font-size: 14px; display: inline-flex; align-items: center; justify-content: center; }
.rx-spec dt { font-family: Poppins, sans-serif; font-size: 11.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--rps-green-l); margin: 0 0 3px; }
.rx-spec dd { font-family: Poppins, sans-serif; font-size: 15px; line-height: 1.6; color: var(--rps-ink); margin: 0; overflow-wrap: anywhere; }
.rx-spec dd a { color: var(--rps-green-m); font-weight: 600; text-decoration: underline; }
.rx-spec > div.rx-spec__wide { grid-column: 1 / -1; }

.rx-docs .rps-doc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rx-docs .rps-group-title { margin-top: 30px; }
.rx-docs--center .rps-doc-grid { display: flex; flex-wrap: wrap; justify-content: center; }
.rx-docs--center .rps-doc { flex: 0 1 360px; }

@media (max-width: 1024px) {
  .rx-sec { padding: 56px 20px; }
  .rx-split { gap: 40px; }
  .rx-grid { --cols: 2 !important; }
  .rx-stats { --cols: 3 !important; }
  .rx-jump { top: 77px; padding: 10px 16px; }
  .rx-docs .rps-doc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .rx-sec { padding: 44px 16px; scroll-margin-top: 130px; }
  .rx-sec--tight { padding-top: 0; padding-bottom: 26px; }
  .rx-head { margin-bottom: 28px; }
  .elementor .rx-lead { font-size: 15px; }
  .rx-split, .rx-mosaic, .rx-quotes { grid-template-columns: 1fr; gap: 28px; }
  .rx-split + .rx-split { margin-top: 44px; }
  .rx-split--flip .rx-media { order: 0; }
  .rx-media, .rx-split--flip .rx-media { margin: 0 12px 12px 0; }
  .rx-media::before, .rx-split--flip .rx-media::before { inset: 12px -12px -12px 12px; border-radius: 20px; }
  .rx-media img { border-radius: 20px; }
  .rx-media__inset { right: -6px; bottom: -22px; width: 44%; border-width: 4px; border-radius: 16px; }
  .rx-media--inset { margin-bottom: 34px !important; }
  .rx-grid { --cols: 1 !important; gap: 16px; }
  .rx-stats { --cols: 2 !important; gap: 12px; }
  .rx-stats > .rx-stat:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .rx-stats--float { margin-top: -24px; }
  .rx-checks--2 { grid-template-columns: 1fr; }
  .rx-card, .rx-card--feature { padding: 24px 22px; }
  .rx-mosaic figure { min-height: 0; aspect-ratio: 4 / 3; }
  .rx-jump { top: 73px; }
  .rx-spec { grid-template-columns: 1fr; }
  .rx-spec > div { padding: 16px 16px 16px 64px; }
  .rx-spec dt i { left: 16px; top: 18px; }
  .rx-panel__head { padding: 18px; }
  .elementor .rx-panel__head h2 { font-size: 17.5px; }
  .rx-docs .rps-doc-grid { grid-template-columns: 1fr; }
  .elementor .rx-quote p { font-size: 16.5px; }
  .rx-actions .rx-btn { flex: 1 1 auto; justify-content: center; }
}
