/* Creative cancel-footer review (PASS with 2 fixes, 2026-10-20 ~16:50 UTC). All hosts, loads after space-scroll-v2.
   1. Short pages (e.g. the cancel page at 1280) showed sky below the footer panel: pin the footer to the bottom.
      The footer keeps the space-scroll v2 top fade to transparent (no hard edge); the sky stays on <html> (fixed) and
      body::before/::after stay position:fixed, so they are out of the flex flow. */
body{min-height:100vh;display:flex;flex-direction:column}
main{flex:1 0 auto}
/* 2. Footer below 768: everything centred (link rows, contact line, wordmark, X circle). */
@media (max-width:767px){
  .site-footer,.site-footer__inner,.site-footer p{text-align:center}
  .site-footer__inner{align-items:center}
  .site-footer nav,.footer-courses{display:flex;flex-wrap:wrap;justify-content:center;gap:0 var(--space-4)}
  .site-footer__contact{align-items:center}
  .site-footer img,.opens-soon .site-footer img{align-self:center}
  .site-footer .footer-social{margin-inline:auto}
}
/* 3. Cancel page, once Compliance's text is published (scripts/render-cancel-page.py): the body renders as normal body
      copy in one glass panel. The amber placeholder (.cancel-page__placeholder) is unchanged until then. */
.cancel-page__panel{max-width:680px;background:rgba(16,28,58,.72);border-radius:16px;padding:clamp(24px,4vw,32px);
  -webkit-backdrop-filter:blur(10px) saturate(1.15);backdrop-filter:blur(10px) saturate(1.15);
  box-shadow:var(--sp-float-shadow),inset 0 0 0 1px var(--sp-float-hair)}
.cancel-page__panel > :last-child{margin-bottom:0}
.cancel-page__panel h2{font-family:'Nunito','Source Sans 3',system-ui,sans-serif;font-variation-settings:normal;font-weight:700;color:#FFFFFF}
