/* E-SchoolSite public experience shell v3
   Shared structural system for every unauthenticated/public page.
   Keeps internal/authenticated workspace layouts untouched. */

.public-body{
  --public-shell-max:1480px;
  --public-shell-readable:1280px;
  --public-gutter:clamp(18px,3vw,48px);
  --public-section-y:clamp(48px,5vw,88px);
  --public-blue:#0b5f9f;
  --public-blue-deep:#082d52;
  --public-green:#198754;
  --public-green-deep:#12663f;
  --public-ink:#102a43;
  --public-muted:#60758a;
  --public-line:#dce8ef;
  background:#fff;
  color:var(--public-ink);
  font-size:16px;
  line-height:1.55;
  overflow-x:hidden;
}

/* One alignment grid for header, alerts and footer. */
.public-body .public-nav-wrap-v2,
.public-body .footer-inner-v2,
.public-body .footer-bottom-v2,
.public-body .public-alert-wrap{
  width:min(calc(100% - (var(--public-gutter) * 2)),var(--public-shell-max));
  max-width:none;
  margin-inline:auto;
}
.public-body .public-main-v2{width:100%;max-width:none;min-height:66vh;overflow:clip}
.public-body .public-header-v2{background:rgba(255,255,255,.97)}
.public-body .public-nav-wrap-v2{min-height:80px;height:auto;padding-block:10px;gap:clamp(18px,2.4vw,38px)}
.public-body .public-brand-copy strong{font-size:17px;letter-spacing:-.02em}
.public-body .public-brand-copy small{font-size:11px}
.public-body .public-nav-desktop{gap:clamp(3px,.7vw,10px)}
.public-body .public-nav-desktop a{font-size:13.5px;padding:10px 12px}
.public-body .public-actions-v2{gap:10px}
.public-body .public-signin{font-size:13px}
.public-body .public-primary-cta{min-height:46px;padding-inline:18px;font-size:13px}

/* Public buttons should remain readable and consistent across legacy page CSS. */
.public-body .public-main-v2 .btn{
  min-height:44px;
  border-radius:11px;
  font-size:13px;
  line-height:1.2;
}
.public-body .public-main-v2 .btn.primary{
  background:linear-gradient(135deg,var(--public-blue),#1476bd);
  border-color:var(--public-blue);
  color:#fff;
}
.public-body .public-main-v2 .btn.primary:hover{background:var(--public-blue-deep);border-color:var(--public-blue-deep)}

/* ---------- Shared public page widths ---------- */
.public-body .programme-discovery-v6__shell,
.public-body .programme-detail-hero-v6__inner,
.public-body .programme-facts-v6__inner,
.public-body .programme-detail-main-v6,
.public-body .programme-related-v6,
.public-body .inst-reg-shell-v46,
.public-body .application-hero-v15__inner,
.public-body .application-shell-v15,
.public-body .app-pay-hero-v16__inner,
.public-body .app-pay-shell-v16,
.public-body .app-result-hero-v17__inner{
  width:min(calc(100% - (var(--public-gutter) * 2)),var(--public-shell-max))!important;
  max-width:none!important;
  margin-inline:auto!important;
}

.public-body .contact-v18,
.public-body .certificate-verification-v19,
.public-body .tracker47-shell{
  width:min(calc(100% - (var(--public-gutter) * 2)),var(--public-shell-max))!important;
  max-width:none!important;
  margin-inline:auto!important;
}

/* A single-column tracker/search form should be readable, not artificially tiny. */
.public-body .tracker47-shell.tracker47-lookup{max-width:980px!important}

/* Public authentication/recovery pages also belong to the public visual system. */
.public-body .auth-page{
  width:min(calc(100% - (var(--public-gutter) * 2)),1180px)!important;
  max-width:none!important;
  margin:clamp(30px,5vh,64px) auto 44px;
}
.public-body .public-main-v2>.authcard{
  width:min(calc(100% - (var(--public-gutter) * 2)),760px);
  margin:clamp(40px,7vh,84px) auto;
}

/* ---------- Programmes catalogue ---------- */
.public-body .programme-discovery-v6__hero-grid{gap:clamp(36px,5vw,82px)}
.public-body .programme-discovery-v6__cards{gap:22px}
.public-body .programme-discovery-v6__card-body{padding:20px}
.public-body .programme-discovery-v6__card h2{font-size:20px}
.public-body .programme-discovery-v6__card-body>p,
.public-body .programme-discovery-v6__card .programme-discovery-v6__summary{font-size:13px;line-height:1.65}
.public-body .programme-discovery-v6__institution{font-size:10.5px}
.public-body .programme-discovery-v6__facts small{font-size:9px}
.public-body .programme-discovery-v6__facts strong{font-size:11.5px}
.public-body .programme-discovery-v6__card-link{font-size:12px}

/* ---------- Programme detail ---------- */
.public-body .programme-detail-main-v6{grid-template-columns:minmax(0,1.55fr) minmax(330px,.6fr);gap:clamp(34px,4vw,64px)}
.public-body .programme-detail-prose-v6{font-size:14px;line-height:1.75}
.public-body .programme-related-card-v6 p{font-size:12px}
.public-body .programme-related-card-v6__link{font-size:11.5px}

/* ---------- Contact ---------- */
.public-body .contact-v18{padding:clamp(34px,4vw,60px) 0 clamp(64px,6vw,100px)}
.public-body .contact-hero-v18{gap:clamp(22px,3vw,40px)}
.public-body .contact-layout-v18{grid-template-columns:minmax(0,1.72fr) minmax(320px,.65fr);gap:28px}
.public-body .contact-form-card-v18{padding:clamp(28px,3vw,42px)}

/* ---------- Institution registration ---------- */
.public-body .inst-reg-hero-v47,
.public-body .inst-request-hero-v47,
.public-body .inst-status-hero-v47{padding-block:clamp(48px,5vw,76px)}
.public-body .inst-reg-main-v47,
.public-body .inst-request-main-v47,
.public-body .inst-status-page-v47{padding-block:clamp(34px,4vw,72px) clamp(64px,6vw,96px)}
.public-body .inst-reg-layout-v47,
.public-body .inst-request-layout-v47,
.public-body .inst-status-layout-v47{gap:clamp(22px,3vw,38px)}

/* ---------- Application ---------- */
.public-body .application-hero-v15__inner{grid-template-columns:minmax(0,1.35fr) minmax(360px,.55fr);gap:clamp(38px,5vw,78px)}
.public-body .application-shell-v15{grid-template-columns:260px minmax(0,1fr) 290px;gap:26px}
.public-body .application-step-v15{padding:clamp(28px,3vw,40px)}
.public-body .application-step-v15__head h2{font-size:clamp(25px,2vw,32px)}
.public-body .application-step-v15__head p{font-size:13px}
.public-body .application-field-v15{font-size:12px}
.public-body .application-field-v15 input,
.public-body .application-field-v15 textarea,
.public-body .application-field-v15 select{font-size:14px;min-height:50px}
.public-body .application-field-v15 small,
.public-body .application-upload-v15__copy small{font-size:11px}
.public-body .application-steps-v15 li button strong{font-size:12px}
.public-body .application-steps-v15 li button small{font-size:10px}

/* ---------- Application tracker ---------- */
.public-body .tracker47-shell{padding:clamp(34px,4vw,56px) 0 clamp(64px,6vw,96px)}
.public-body .tracker47-grid{grid-template-columns:minmax(0,1fr) minmax(300px,.34fr);gap:28px}
.public-body .tracker47-card,
.public-body .tracker47-status-card{padding:clamp(22px,2.4vw,32px)}

/* ---------- Public payment and result ---------- */
.public-body .app-pay-hero-v16__inner,
.public-body .app-result-hero-v17__inner{padding-inline:0}
.public-body .app-pay-hero-v16__inner{grid-template-columns:minmax(0,1.5fr) minmax(330px,.62fr);gap:clamp(36px,5vw,78px)}
.public-body .app-pay-shell-v16{grid-template-columns:minmax(0,1.75fr) minmax(300px,.55fr);gap:26px;padding-inline:0}
.public-body .app-result-hero-grid-v17{grid-template-columns:minmax(0,1.5fr) minmax(330px,.62fr);gap:clamp(36px,5vw,78px)}

/* ---------- Credential verification ---------- */
.public-body .certificate-verification-v19{padding:clamp(34px,4vw,56px) 0 clamp(64px,6vw,96px)}
.public-body .verification-hero-v19{grid-template-columns:minmax(0,1.58fr) minmax(320px,.62fr);gap:clamp(28px,4vw,52px);padding:clamp(38px,4vw,58px)}
.public-body .verification-workspace-v19{grid-template-columns:minmax(0,1.65fr) minmax(310px,.55fr);gap:28px}


/* ---------- Public staff invitation ---------- */
.public-body .team22-join-shell{
  width:min(calc(100% - (var(--public-gutter) * 2)),1320px)!important;
  max-width:none!important;
  margin:clamp(34px,5vh,64px) auto 64px!important;
  padding-inline:0!important;
}
.public-body .team22-join-card{padding:clamp(30px,3vw,46px)}

/* ---------- Surface hierarchy: fewer nested frames ---------- */
.public-body :is(
  .contact-form-card-v18,.contact-help-v18,.contact-institution-card-v18,.contact-expectation-v18,.contact-faq-v18,
  .verification-form-card-v19,.verification-guidance-v19,.verification-result-v19,.verification-empty-v19,.verification-faq-v19,
  .tracker47-card,.tracker47-status-card,
  .app-pay-card-v16,.app-pay-side-card-v16
){box-shadow:0 10px 30px rgba(10,48,76,.055)}

/* Footer is part of the same alignment system. */
.public-body .public-footer-v2{margin-top:clamp(56px,6vw,88px);padding-top:clamp(50px,5vw,72px)}
.public-body .footer-inner-v2{grid-template-columns:minmax(300px,1.55fr) minmax(140px,.62fr) minmax(140px,.62fr) minmax(280px,1fr);gap:clamp(28px,4vw,56px)}
.public-body .footer-column h2{font-size:14px}
.public-body .footer-column a{font-size:13px}
.public-body .footer-brand-block p{font-size:13px;max-width:540px}

/* Extra-wide displays: avoid a tiny website in the middle of a large monitor. */
@media (min-width:1800px){
  .public-body{--public-shell-max:1680px;--public-gutter:clamp(40px,5vw,96px)}
  .public-body .public-nav-desktop a{font-size:14px}
  .public-body .programme-discovery-v6__cards{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media (max-width:1180px){
  .public-body{--public-gutter:24px}
  .public-body .application-shell-v15{grid-template-columns:220px minmax(0,1fr)}
  .public-body .application-context-v15{grid-column:1/-1;position:static}
  .public-body .programme-detail-main-v6,
  .public-body .contact-layout-v18,
  .public-body .verification-workspace-v19,
  .public-body .app-pay-shell-v16{grid-template-columns:1fr}
  .public-body .contact-side-v18{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:1000px){
  .public-body .public-nav-wrap-v2{grid-template-columns:auto 1fr}
  .public-body .footer-inner-v2{grid-template-columns:1.4fr 1fr 1fr}
  .public-body .application-hero-v15__inner,
  .public-body .app-pay-hero-v16__inner,
  .public-body .app-result-hero-grid-v17,
  .public-body .verification-hero-v19{grid-template-columns:1fr}
  .public-body .application-shell-v15{grid-template-columns:1fr}
  .public-body .application-steps-v15,.public-body .application-context-v15{position:static}
  .public-body .application-steps-v15 ol{grid-template-columns:repeat(4,minmax(0,1fr))}
}

@media (max-width:720px){
  .public-body{--public-gutter:14px;--public-section-y:52px}
  .public-body .public-nav-wrap-v2{min-height:70px;padding-block:8px}
  .public-body .public-brand-copy strong{font-size:16px}
  .public-body .public-main-v2 .btn{font-size:13px}
  .public-body .contact-v18,
  .public-body .certificate-verification-v19,
  .public-body .tracker47-shell{padding-inline:0}
  .public-body .contact-side-v18{grid-template-columns:1fr}
  .public-body .application-field-grid-v15{grid-template-columns:1fr}
  .public-body .application-steps-v15 ol{grid-template-columns:1fr 1fr}
  .public-body .app-pay-shell-v16{padding-inline:0}
  .public-body .footer-inner-v2{grid-template-columns:1fr 1fr}
}

@media (max-width:430px){
  .public-body{--public-gutter:12px}
  .public-body .footer-inner-v2{grid-template-columns:1fr}
  .public-body .application-steps-v15 ol{grid-template-columns:1fr}
  .public-body .public-main-v2>.authcard{width:calc(100% - 24px)}
}

/* Final deployment public-page cleanup: remove duplicated explainer-column gaps. */
.inst-reg-hero-grid-v47,
.inst-request-hero-grid-v47{
  grid-template-columns:minmax(0,1fr)!important;
}
.inst-reg-hero-copy-v47,
.inst-request-hero-copy-v47{
  max-width:900px;
}


/* Public shell stability h15: keep off-canvas navigation out of the visual layout
   until explicitly opened and prevent transformed UI from widening public pages. */
body.public-body{max-width:100vw;overflow-x:clip}
.public-body .public-mobile-drawer{visibility:hidden;pointer-events:none}
.public-body .public-header-v2.mobile-open .public-mobile-drawer{visibility:visible;pointer-events:auto}
.public-body .public-nav-backdrop{visibility:hidden}
.public-body .public-header-v2.mobile-open .public-nav-backdrop{visibility:visible}
