/* ==========================================================================
   RS PHYSICS ACADEMY — reset, typography, shared components
   Everything reusable lives here. sections.css must never redefine it.
   ========================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--rsa-bg);color:var(--rsa-t2);
  font-family:var(--rsa-fb);font-size:16.5px;line-height:1.68;
  transition:background var(--rsa-duration) var(--rsa-ease),color var(--rsa-duration) var(--rsa-ease);
}
img{max-width:100%;display:block}
a{color:var(--rsa-brand);text-decoration:none}
button{font:inherit;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
::selection{background:var(--rsa-accent);color:var(--rsa-tw)}
:focus-visible{outline:3px solid var(--rsa-accent);outline-offset:3px;border-radius:2px}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* layout ------------------------------------------------------------------ */
.rsa-container{width:100%;max-width:var(--rsa-container);margin-inline:auto;padding-inline:24px}
.rsa-container--narrow{max-width:820px}
.rsa-container--wide{max-width:1340px}
.rsa-section{padding-block:var(--rsa-sp-2xl)}
.rsa-section--sm{padding-block:var(--rsa-sp-xl)}
.rsa-section--alt{background:var(--rsa-bg-alt)}
.rsa-section--dark{background:var(--rsa-bg-deep);color:#cdd6e4}
.rsa-section--dark .rsa-h2,.rsa-section--dark .rsa-h3{color:#fff}
.rsa-section--paper{background:
  linear-gradient(var(--rsa-grid) 1px,transparent 1px) 0 0/32px 32px,
  linear-gradient(90deg,var(--rsa-grid) 1px,transparent 1px) 0 0/32px 32px,
  var(--rsa-bg);
}
.rsa-grid{display:grid;gap:var(--rsa-sp-lg)}
.rsa-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.rsa-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.rsa-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.rsa-stack{display:flex;flex-direction:column;gap:var(--rsa-sp-md)}
.rsa-row{display:flex;gap:var(--rsa-sp-md);flex-wrap:wrap;align-items:center}

/* typography -------------------------------------------------------------- */
.rsa-h1,.rsa-h2,.rsa-h3,.rsa-h4{
  font-family:var(--rsa-fh);color:var(--rsa-t1);font-weight:600;
  line-height:1.08;letter-spacing:-.015em;margin:0;
}
.rsa-h1{font-size:clamp(2.25rem,4.6vw,3.6rem);letter-spacing:-.02em}
.rsa-h2{font-size:clamp(1.7rem,2.9vw,2.4rem);line-height:1.16;letter-spacing:-.015em}
.rsa-h3{font-size:clamp(1.2rem,1.9vw,1.5rem);line-height:1.24}
.rsa-h4{font-size:1.06rem;font-family:var(--rsa-fb);font-weight:600;letter-spacing:0}
.rsa-body{margin:0;color:var(--rsa-t2)}
.rsa-body--lead{font-size:clamp(1.05rem,1.5vw,1.24rem);color:var(--rsa-t2)}
.rsa-small{font-size:.9rem;color:var(--rsa-t3);margin:0}
.rsa-label{font-family:var(--rsa-fm);font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--rsa-t3)}
.rsa-accent-text{color:var(--rsa-accent)}
.rsa-brand-text{color:var(--rsa-brand)}
.rsa-measure{max-width:62ch}

.rsa-eyebrow{
  display:inline-flex;align-items:center;gap:10px;font-family:var(--rsa-fm);
  font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--rsa-accent);margin-bottom:14px;
}
.rsa-eyebrow::before{content:"";width:26px;height:2px;background:var(--rsa-accent);display:inline-block}

.rsa-section-header{max-width:640px;margin-bottom:var(--rsa-sp-xl)}
.rsa-section-header__title{margin-bottom:12px}
.rsa-section-header__desc{color:var(--rsa-t3)}
.rsa-section-header--center{margin-inline:auto;text-align:center}

/* buttons ----------------------------------------------------------------- */
.rsa-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 28px;border-radius:var(--rsa-r-md);border:1.5px solid transparent;
  font-weight:600;font-size:.98rem;letter-spacing:.01em;line-height:1;
  transition:transform var(--rsa-duration) var(--rsa-ease),box-shadow var(--rsa-duration) var(--rsa-ease),
             background var(--rsa-duration) var(--rsa-ease),color var(--rsa-duration) var(--rsa-ease),
             border-color var(--rsa-duration) var(--rsa-ease);
}
.rsa-btn--primary{background:var(--rsa-brand);color:#fff}
.rsa-btn--primary:hover{transform:translateY(-2px);box-shadow:var(--rsa-shadow-glow)}
.rsa-btn--dark{background:var(--rsa-accent);color:#12203a}
.rsa-btn--dark:hover{transform:translateY(-2px);box-shadow:var(--rsa-shadow-md);filter:brightness(1.04)}
.rsa-btn--outline{border-color:var(--rsa-line-strong);color:var(--rsa-t1);background:transparent}
.rsa-btn--outline:hover{border-color:var(--rsa-brand);color:var(--rsa-brand);background:var(--rsa-brand-soft)}
.rsa-btn--ghost{padding-inline:0;color:var(--rsa-brand);background:none}
.rsa-btn--ghost:hover{gap:16px}
.rsa-btn--sm{padding:9px 18px;font-size:.9rem}
.rsa-btn--block{width:100%}

/* cards ------------------------------------------------------------------- */
.rsa-card{
  background:var(--rsa-surface);border:1px solid var(--rsa-line);border-radius:var(--rsa-r-lg);
  padding:var(--rsa-sp-lg);position:relative;
  transition:transform var(--rsa-duration) var(--rsa-ease),border-color var(--rsa-duration) var(--rsa-ease),
             box-shadow var(--rsa-duration) var(--rsa-ease);
}
.rsa-card:hover{transform:translateY(-3px);border-color:var(--rsa-brand);box-shadow:var(--rsa-shadow-md)}
.rsa-card__icon{
  width:44px;height:44px;border-radius:var(--rsa-r-sm);display:grid;place-items:center;
  background:var(--rsa-brand-soft);color:var(--rsa-brand);font-size:1.15rem;margin-bottom:16px;
}
.rsa-card__title{margin:0 0 8px}
.rsa-card__text{margin:0;color:var(--rsa-t3);font-size:.98rem}

.rsa-chip{
  display:inline-flex;align-items:center;gap:7px;padding:5px 13px;border-radius:var(--rsa-r-full);
  border:1px solid var(--rsa-line);font-size:.82rem;color:var(--rsa-t2);background:var(--rsa-surface);
}
.rsa-chip--accent{background:var(--rsa-accent-soft);border-color:transparent;color:var(--rsa-accent)}
.rsa-chip--good{background:var(--rsa-good-soft);border-color:transparent;color:var(--rsa-good)}
.rsa-chip--brand{background:var(--rsa-brand-soft);border-color:transparent;color:var(--rsa-brand)}

/* image placeholder, used until real photographs are supplied --------------- */
.rsa-ph{
  position:relative;border-radius:var(--rsa-r-lg);overflow:hidden;background:
    repeating-linear-gradient(135deg,var(--rsa-bg-alt) 0 14px,var(--rsa-surface) 14px 28px);
  border:1px solid var(--rsa-line);display:grid;place-items:center;min-height:200px;
}
.rsa-ph span{font-family:var(--rsa-fm);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--rsa-t3)}
.rsa-ph--tall{min-height:340px}
.rsa-ph--wide{min-height:260px}

/* forms ------------------------------------------------------------------- */
.rsa-field{display:flex;flex-direction:column;gap:6px}
.rsa-field label{font-size:.86rem;font-weight:500;color:var(--rsa-t2)}
.rsa-input,.rsa-select,.rsa-textarea{
  width:100%;padding:12px 14px;border:1px solid var(--rsa-line);border-radius:var(--rsa-r-md);
  background:var(--rsa-surface);color:var(--rsa-t1);font-size:1rem;
  transition:border-color var(--rsa-duration) var(--rsa-ease),box-shadow var(--rsa-duration) var(--rsa-ease);
}
.rsa-input:focus,.rsa-select:focus,.rsa-textarea:focus{
  border-color:var(--rsa-brand);box-shadow:0 0 0 4px var(--rsa-brand-soft);outline:none;
}
.rsa-textarea{min-height:120px;resize:vertical}
.rsa-form-note{font-size:.86rem;color:var(--rsa-t3)}

/* scroll reveal ------------------------------------------------------------ */
.rsa-js .rsa-reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--rsa-ease),transform .6s var(--rsa-ease)}
.rsa-js .rsa-reveal.is-visible{opacity:1;transform:none}
.rsa-reveal-d1{transition-delay:.08s}
.rsa-reveal-d2{transition-delay:.16s}
.rsa-reveal-d3{transition-delay:.24s}
.rsa-reveal-d4{transition-delay:.32s}

/* navigation --------------------------------------------------------------- */
.rsa-nav{
  position:sticky;top:0;z-index:60;height:var(--rsa-nav-h);display:flex;align-items:center;
  background:color-mix(in srgb,var(--rsa-bg) 88%,transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid transparent;transition:border-color var(--rsa-duration) var(--rsa-ease),
    box-shadow var(--rsa-duration) var(--rsa-ease),background var(--rsa-duration) var(--rsa-ease);
}
.rsa-nav.is-scrolled{border-bottom-color:var(--rsa-line);box-shadow:var(--rsa-shadow-sm)}
.rsa-nav__in{display:flex;align-items:center;gap:var(--rsa-sp-lg);width:100%}
.rsa-logo{display:flex;align-items:center;gap:11px;color:var(--rsa-t1)}
.rsa-logo img{width:36px;height:36px}
.rsa-logo__text{font-family:var(--rsa-fh);font-weight:600;font-size:1.12rem;letter-spacing:.01em;line-height:1.1}
.rsa-logo__text small{display:block;font-family:var(--rsa-fm);font-size:.6rem;letter-spacing:.22em;color:var(--rsa-t3);text-transform:uppercase}
.rsa-nav__links{display:flex;align-items:center;gap:26px;margin-left:auto;list-style:none;padding:0;margin-block:0}
.rsa-nav__link{position:relative;color:var(--rsa-t2);font-size:.96rem;font-weight:500;padding-block:6px}
.rsa-nav__link::after{
  content:"";position:absolute;left:50%;bottom:0;width:0;height:2px;background:var(--rsa-accent);
  transform:translateX(-50%);transition:width var(--rsa-duration) var(--rsa-ease);
}
.rsa-nav__link:hover{color:var(--rsa-t1)}
.rsa-nav__link:hover::after,.rsa-nav__link.is-active::after{width:20px}
.rsa-nav__link.is-active{color:var(--rsa-t1);font-weight:600}
.rsa-nav__actions{display:flex;align-items:center;gap:12px}
.rsa-iconbtn{
  width:40px;height:40px;border-radius:var(--rsa-r-full);border:1px solid var(--rsa-line);
  background:var(--rsa-surface);color:var(--rsa-t2);display:grid;place-items:center;
  transition:border-color var(--rsa-duration) var(--rsa-ease),color var(--rsa-duration) var(--rsa-ease);
}
.rsa-iconbtn:hover{border-color:var(--rsa-brand);color:var(--rsa-brand)}
.rsa-burger{display:none}
.rsa-drawer{
  position:fixed;inset:var(--rsa-nav-h) 0 0;background:var(--rsa-bg);z-index:55;
  padding:32px 24px;transform:translateX(100%);transition:transform .36s var(--rsa-ease);overflow-y:auto;
}
.rsa-drawer.is-open{transform:none}
.rsa-drawer__links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.rsa-drawer__links a{
  display:block;padding:14px 4px;font-family:var(--rsa-fh);font-size:1.5rem;color:var(--rsa-t1);
  border-bottom:1px solid var(--rsa-line);opacity:0;transform:translateY(10px);
}
.rsa-drawer.is-open .rsa-drawer__links a{animation:rsaDrawerIn .4s var(--rsa-ease) forwards}
@keyframes rsaDrawerIn{to{opacity:1;transform:none}}
body.is-locked{overflow:hidden}

/* footer ------------------------------------------------------------------- */
.rsa-footer{background:var(--rsa-bg-deep);color:#aab6c7;padding-block:var(--rsa-sp-2xl) var(--rsa-sp-lg)}
.rsa-footer a{color:#cdd6e4}
.rsa-footer__grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.4fr;gap:var(--rsa-sp-lg)}
.rsa-footer__title{font-family:var(--rsa-fb);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:#7f8ea3;margin:0 0 16px}
.rsa-footer__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rsa-footer__list a{position:relative;transition:color var(--rsa-duration) var(--rsa-ease),padding-left var(--rsa-duration) var(--rsa-ease)}
.rsa-footer__list a:hover{color:var(--rsa-accent);padding-left:8px}
.rsa-footer__brand{font-family:var(--rsa-fh);font-size:1.35rem;color:#fff;margin:0 0 12px}
.rsa-footer__bottom{
  margin-top:var(--rsa-sp-xl);padding-top:20px;border-top:1px solid rgba(255,255,255,.1);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.86rem;color:#7f8ea3;
}
.rsa-social{display:flex;gap:10px}
.rsa-social a{
  width:38px;height:38px;border-radius:var(--rsa-r-full);border:1px solid rgba(255,255,255,.16);
  display:grid;place-items:center;transition:background var(--rsa-duration) var(--rsa-ease),
    border-color var(--rsa-duration) var(--rsa-ease),transform var(--rsa-duration) var(--rsa-ease);
}
.rsa-social a:hover{background:var(--rsa-accent);border-color:var(--rsa-accent);color:#fff;transform:translateY(-2px)}

/* floating helpers ---------------------------------------------------------- */
.rsa-totop{
  position:fixed;right:20px;bottom:22px;width:44px;height:44px;border-radius:var(--rsa-r-full);
  background:var(--rsa-brand);color:#fff;border:none;display:grid;place-items:center;z-index:50;
  opacity:0;pointer-events:none;transform:translateY(10px);
  transition:opacity var(--rsa-duration) var(--rsa-ease),transform var(--rsa-duration) var(--rsa-ease);
}
.rsa-totop.is-visible{opacity:1;pointer-events:auto;transform:none}
.rsa-wa{
  position:fixed;left:20px;bottom:22px;z-index:50;display:inline-flex;align-items:center;gap:9px;
  padding:11px 18px;border-radius:var(--rsa-r-full);background:#128c7e;color:#fff;font-weight:600;
  font-size:.92rem;box-shadow:var(--rsa-shadow-md);transition:transform var(--rsa-duration) var(--rsa-ease);
}
.rsa-wa:hover{transform:translateY(-2px)}

/* page hero shared by inner pages -------------------------------------------- */
.rsa-page-hero{padding-block:var(--rsa-sp-xl) var(--rsa-sp-lg);background:var(--rsa-bg-alt);border-bottom:1px solid var(--rsa-line)}
.rsa-breadcrumb{display:flex;gap:9px;font-size:.86rem;color:var(--rsa-t3);margin-bottom:14px}
.rsa-breadcrumb a{color:var(--rsa-t3)}
.rsa-breadcrumb a:hover{color:var(--rsa-accent)}
.rsa-page-hero__desc{margin-top:14px;max-width:62ch;color:var(--rsa-t3)}

/* spacing and modifier utilities, so no page ever needs an inline style ------ */
.rsa-mt-1{margin-top:8px}
.rsa-mt-2{margin-top:12px}
.rsa-mt-3{margin-top:16px}
.rsa-mt-4{margin-top:22px}
.rsa-mt-5{margin-top:26px}
.rsa-mb-2{margin-bottom:12px}
.rsa-mb-5{margin-bottom:26px}
.rsa-eyebrow--center{justify-content:center}
.rsa-btn--on-dark{color:#fff;border-color:rgba(255,255,255,.4)}
.rsa-btn--on-dark:hover{background:rgba(255,255,255,.12);border-color:#fff;color:#fff}
.rsa-stack--lg{gap:var(--rsa-sp-lg)}
.rsa-stack--md{gap:18px}
.rsa-drawer__cta{margin-top:24px}


/* imagery ------------------------------------------------------------------ */
.rsa-shot{width:100%;height:100%;object-fit:cover;display:block;border-radius:var(--rsa-r-lg)}
.rsa-figure{position:relative;border-radius:var(--rsa-r-lg);overflow:hidden;background:var(--rsa-bg-alt);
  border:1px solid var(--rsa-line);line-height:0}
.rsa-figure--tall{aspect-ratio:4/5}
.rsa-figure--wide{aspect-ratio:16/10}
.rsa-figure--square{aspect-ratio:1/1}
.rsa-figure__cap{
  position:absolute;inset:auto 0 0 0;padding:16px 18px;color:#fff;font-size:.9rem;line-height:1.4;
  background:linear-gradient(transparent,rgba(6,17,32,.85));opacity:0;transition:opacity var(--rsa-duration) var(--rsa-ease);
}
.rsa-figure:hover .rsa-figure__cap{opacity:1}
.rsa-figure--frame{box-shadow:var(--rsa-shadow-lg);border:none}
.rsa-figure--frame::after{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.16);border-radius:inherit;pointer-events:none}

/* utility bar above the nav -------------------------------------------------- */
.rsa-topbar{background:var(--rsa-bg-deep);color:#b9c6d8;font-size:.84rem}
.rsa-topbar__in{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-block:9px}
.rsa-topbar a{color:#dbe4f0}
.rsa-topbar a:hover{color:var(--rsa-accent)}
.rsa-topbar__set{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.rsa-topbar__set span i{margin-right:7px;color:var(--rsa-accent)}
@media (max-width:760px){.rsa-topbar__hide{display:none}}

/* rule + kicker used between sections ---------------------------------------- */
.rsa-rule{height:1px;background:var(--rsa-line);border:0;margin:0}
