:root {
  --primary: #2356d8;
  --primary-dark: #1742ad;
  --text: #172033;
  --muted: #667085;
  --surface: #ffffff;
  --background: #f5f7fb;
  --border: #dfe4ec;
}

/* Stitch-inspired public homepage */
:root { --stitch-navy: #131b2e; --stitch-ink: #0b1c30; --stitch-teal: #006a61; --stitch-gold: #f59e0b; --stitch-surface: #f8f9ff; --stitch-surface-low: #eff4ff; --stitch-border: #c6c6cd; }
.public-header { min-height: 72px; border-bottom: 1px solid rgb(198 198 205 / 58%); background: rgb(248 249 255 / 96%); box-shadow: 0 4px 18px rgb(11 28 48 / 5%); }
.public-header .header-brand img { height: 52px; }
.public-header .main-nav a { color: var(--stitch-ink); }
.public-header .main-nav a:hover { color: var(--stitch-teal); }
.stitch-hero { position: relative; isolation: isolate; display: flex; min-height: 560px; align-items: center; margin-inline: calc(50% - 50vw); overflow: hidden; background: var(--stitch-navy); color: #fff; }
.stitch-hero-media, .stitch-hero-overlay { position: absolute; inset: 0; }
.stitch-hero-media { z-index: -2; }
.stitch-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: 54% 48%; }
.stitch-hero-overlay { z-index: -1; background: rgb(11 28 48 / 72%); }
.stitch-hero-inner { width: min(100% - 4rem, 1280px); margin-inline: auto; padding-block: 5rem; }
.stitch-hero h1 { max-width: 760px; margin: 0; color: #fff; font-size: 3.25rem; line-height: 1.08; letter-spacing: 0; }
.stitch-hero .hero-accent { display: block; margin-top: .25rem; color: var(--stitch-gold); }
.stitch-hero p { max-width: 650px; margin: 1.5rem 0 0; color: rgb(255 255 255 / 88%); font-size: 1.12rem; line-height: 1.72; }
.stitch-hero .hero-actions { margin-top: 2rem; }
.stitch-hero .button-gold { border-color: var(--stitch-gold); background: var(--stitch-gold); color: var(--stitch-ink); }
.stitch-hero .hero-secondary { border: 1px solid rgb(255 255 255 / 72%); background: transparent; color: #fff; }
.stitch-hero .hero-secondary:hover { background: #fff; color: var(--stitch-ink); }
.stitch-hero + .trust-strip { width: 100%; margin: 0 0 5.5rem; border: 0; border-bottom: 1px solid var(--stitch-border); border-radius: 0; background: var(--stitch-surface-low); box-shadow: none; }
.stitch-benefits { max-width: 1280px; margin-inline: auto; }
.stitch-benefits .centered-intro { max-width: 720px; margin-inline: auto; text-align: center; }
.stitch-benefits .section-intro h2 { color: var(--stitch-ink); font-size: 2.35rem; letter-spacing: 0; }
.stitch-bento { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1rem; margin-top: 2.5rem; }
.stitch-benefit-card { grid-column: span 4; min-height: 230px; padding: 1.75rem; border: 1px solid rgb(198 198 205 / 72%); border-radius: 8px; background: #fff; box-shadow: 0 12px 30px rgb(11 28 48 / 7%); }
.stitch-benefit-card:nth-child(2), .stitch-benefit-card:nth-child(4) { background: var(--stitch-surface-low); }
.stitch-benefit-card h3 { margin: 1.4rem 0 .6rem; color: var(--stitch-ink); font-size: 1.22rem; letter-spacing: 0; }
.stitch-benefit-card p { margin: 0; color: #526174; line-height: 1.65; }
.stitch-benefit-wide { grid-column: span 8; min-height: 210px; background: var(--stitch-navy); color: #fff; }
.stitch-benefit-wide h3 { color: #fff; }
.stitch-benefit-wide p { max-width: 650px; color: rgb(255 255 255 / 75%); }
.stitch-benefit-icon { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; background: var(--stitch-teal); color: #fff; font-size: .78rem; font-weight: 800; }
.stitch-benefit-wide .stitch-benefit-icon { background: var(--stitch-gold); color: var(--stitch-ink); }
.stitch-courses { width: auto; max-width: none; margin-inline: calc(50% - 50vw); padding: 5.5rem max(2rem, calc((100vw - 1280px) / 2)); background: var(--stitch-surface-low); }
.stitch-courses .section-heading { max-width: 1280px; margin-inline: auto; }
.stitch-course-grid { display: grid; max-width: 1280px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; margin: 2.5rem auto 0; }
.stitch-course-card, .catalogue-card { min-height: 310px; overflow: hidden; border: 1px solid var(--stitch-border); border-radius: 8px; background: #fff; box-shadow: 0 10px 25px rgb(11 28 48 / 7%); }
.stitch-course-top { display: flex; min-height: 78px; align-items: flex-end; padding: 1rem 1.25rem; background: var(--stitch-navy); color: #fff; }
.stitch-course-top span { font-size: .82rem; font-weight: 750; }
.stitch-course-body { display: flex; min-height: 230px; flex-direction: column; padding: 1.35rem; }
.stitch-course-body h3 { margin: 1rem 0; color: var(--stitch-ink); font-size: 1.25rem; letter-spacing: 0; }
.stitch-course-footer { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-top: auto; }
.stitch-course-footer a { color: var(--stitch-teal); font-weight: 800; }
.course-availability { color: #667080; font-size: .82rem; font-weight: 750; }
.course-availability.is-open { color: var(--stitch-teal); }
.catalogue-card { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; padding: 1.5rem; background: var(--stitch-teal); color: #fff; text-decoration: none; }
.catalogue-card:hover { background: #00574f; color: #fff; }
.catalogue-card span { font-size: 2rem; }
.catalogue-card strong { max-width: 210px; font-size: 1.35rem; line-height: 1.3; }
.stitch-final-cta { width: auto; max-width: none; margin: 5.5rem calc(50% - 50vw) 0; padding: 3.5rem max(2rem, calc((100vw - 1280px) / 2)); border-radius: 0; background: var(--stitch-navy); box-shadow: none; }
.stitch-final-cta h2 { color: #fff; letter-spacing: 0; }
.stitch-final-cta p { max-width: 700px; color: rgb(255 255 255 / 72%); }
.stitch-final-cta .button-gold { border-color: var(--stitch-gold); background: var(--stitch-gold); color: var(--stitch-ink); }
.public-footer { background: var(--stitch-navy); }
@media (max-width: 1024px) {
  .stitch-hero { min-height: 520px; }
  .stitch-hero h1 { max-width: 680px; font-size: 2.8rem; }
  .stitch-benefit-card { grid-column: span 6; }
  .stitch-benefit-wide { grid-column: span 12; }
  .stitch-course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .stitch-hero { min-height: 500px; }
  .stitch-hero-media img { object-position: 62% 50%; }
  .stitch-hero-inner { width: min(100% - 2rem, 1280px); padding-block: 3.5rem; }
  .stitch-hero h1 { font-size: 2.25rem; }
  .stitch-hero p { font-size: 1rem; }
  .stitch-hero .hero-actions { align-items: stretch; flex-direction: column; }
  .stitch-hero .hero-actions .button { width: 100%; }
  .stitch-hero + .trust-strip { margin-bottom: 4rem; }
  .stitch-benefits .section-intro h2 { font-size: 1.85rem; }
  .stitch-benefit-card, .stitch-benefit-wide { grid-column: 1 / -1; min-height: 0; }
  .stitch-courses { padding-block: 4rem; padding-inline: 1rem; }
  .stitch-course-grid { grid-template-columns: 1fr; }
  .stitch-final-cta { margin-top: 4rem; padding: 3rem 1rem; }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  max-width: 100%;
}

body {
  margin: 0;
  max-width: 100%;
  color: var(--text);
  background: var(--background);
  font-family: Arial, sans-serif;
  line-height: 1.6;
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
}

img,
video,
audio,
canvas,
svg {
  max-width: 100%;
}

input,
select,
textarea,
button {
  min-width: 0;
  max-width: 100%;
}

a {
  color: var(--primary);
  text-decoration: none;
}

.site-header,
.container,
.site-footer {
  width: min(100% - 2rem, 1120px);
  margin-inline: auto;
}

.site-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 72px;
  padding-top: env(safe-area-inset-top);
}

.site-header nav {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.brand {
  color: var(--text);
  font-size: 1.25rem;
  font-weight: 700;
}

.container {
  min-height: calc(100vh - 145px);
  padding: 4rem 0;
}

.hero {
  max-width: 680px;
  padding: 3rem 0;
}

.hero h1 {
  margin: 0.25rem 0 1rem;
  font-size: clamp(2.2rem, 6vw, 4rem);
  line-height: 1.1;
}

.hero > p:not(.eyebrow) {
  color: var(--muted);
  font-size: 1.1rem;
}

.catalog-hero {
  max-width: 720px;
  margin-bottom: 2.5rem;
}

.catalog-hero h1,
.course-detail-hero h1 {
  margin: 0.2rem 0 0.75rem;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  line-height: 1.1;
}

.catalog-hero > p:last-child,
.course-lead {
  color: var(--muted);
  font-size: 1.1rem;
}

.catalog-empty {
  padding-block: 4rem;
}

.course-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}

.course-card {
  display: flex;
  min-width: 0;
  min-height: 310px;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 1rem;
  background: var(--surface);
  box-shadow: 0 12px 35px rgb(23 32 51 / 6%);
}

.course-card-content {
  padding: 1.5rem;
}

.course-card h2 {
  margin: 0.65rem 0;
  font-size: 1.45rem;
  line-height: 1.25;
}

.course-card-content > p {
  margin-bottom: 0;
  color: var(--muted);
}

.course-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.course-meta span {
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  color: var(--primary-dark);
  background: #eaf0ff;
  font-size: 0.8rem;
  font-weight: 700;
}

.course-card-footer {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-top: auto;
  padding: 1.1rem 1.5rem;
  border-top: 1px solid var(--border);
  background: #fafbfc;
}

.course-card-footer > div {
  display: grid;
}

.course-card-footer small,
.course-card-footer span {
  color: var(--muted);
}

.course-card-footer .button {
  flex: 0 0 auto;
}

.back-link {
  margin-top: -1.5rem;
  margin-bottom: 2rem;
}

.course-detail-hero {
  padding: clamp(1.5rem, 5vw, 3.5rem);
  border-radius: 1rem;
  color: white;
  background: linear-gradient(135deg, var(--primary-dark), var(--primary));
}

.course-detail-hero .eyebrow,
.course-detail-hero .course-lead {
  color: #eaf0ff;
}

.course-detail-hero .course-lead {
  max-width: 760px;
}

.course-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  margin-top: 2rem;
}

.course-facts span {
  display: grid;
}

.course-facts strong {
  color: #cddaff;
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.course-detail-grid {
  margin-top: 2.5rem;
}

.content-section {
  margin-bottom: 2rem;
}

.content-section h2 {
  margin-top: 0;
}

.formatted-copy {
  color: var(--muted);
  white-space: pre-line;
}

.detail-info-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.25rem;
}

.detail-info-grid article {
  padding: 1.25rem;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  background: var(--surface);
}

.detail-info-grid article h2 {
  font-size: 1.1rem;
}

.public-session-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}

.public-session-card {
  padding: 1.5rem;
  border: 1px solid var(--border);
  border-radius: 0.85rem;
  background: var(--surface);
}

.public-session-card h3 {
  margin: 0.75rem 0 1rem;
}

.session-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
  margin: 0;
}

.session-facts div {
  display: grid;
}

.session-facts dt {
  color: var(--muted);
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
}

.session-facts dd {
  margin: 0;
}

.session-register-button {
  width: 100%;
  margin-top: 1.25rem;
  text-align: center;
}

.button-disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.registration-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr);
  align-items: start;
  gap: 1.5rem;
}

.registration-form-card {
  width: 100%;
  max-width: none;
  margin: 0;
}

.registration-form-card h1 {
  margin-bottom: 0.25rem;
}

.registration-form-card > p:not(.eyebrow) {
  margin-top: 0;
  color: var(--muted);
}

.registration-form-card .form-error p {
  margin: 0 0 0.35rem;
}

.registration-form-card .form-error a {
  color: #912018;
  font-weight: 700;
  text-decoration: underline;
}

.registration-summary {
  position: sticky;
  top: 1rem;
  padding: 1.5rem;
  border: 1px solid var(--border);
  border-radius: 0.85rem;
  background: var(--surface);
  box-shadow: 0 10px 30px rgb(23 32 51 / 5%);
}

.registration-summary .eyebrow {
  margin: 0;
}

.registration-summary h2 {
  margin: 0.2rem 0 0;
}

.registration-summary h3 {
  margin: 0.25rem 0 1.25rem;
  color: var(--muted);
  font-size: 1rem;
}

.registration-summary .session-facts {
  grid-template-columns: 1fr;
}

.registration-success {
  max-width: 800px;
  margin: 0 auto;
  padding: clamp(1.5rem, 5vw, 3rem);
  border: 1px solid var(--border);
  border-radius: 1rem;
  background: var(--surface);
  box-shadow: 0 16px 45px rgb(23 32 51 / 7%);
  text-align: center;
}

.registration-success h1 {
  margin: 0.2rem 0 0.75rem;
}

.registration-success > p:not(.eyebrow) {
  color: var(--muted);
}

.success-icon {
  display: grid;
  width: 3.5rem;
  height: 3.5rem;
  margin: 0 auto 1rem;
  border-radius: 50%;
  place-items: center;
  color: #067647;
  background: #dcfae6;
  font-size: 1.75rem;
  font-weight: 700;
}

.success-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  margin: 2rem 0;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  overflow: hidden;
  text-align: left;
}

.success-summary > div {
  display: grid;
  padding: 1rem;
  border-bottom: 1px solid var(--border);
}

.success-summary > div:nth-child(odd) {
  border-right: 1px solid var(--border);
}

.success-summary > div:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.success-summary span:not(.status) {
  color: var(--muted);
  font-size: 0.8rem;
}

.status-pending {
  width: fit-content;
  color: #b54708;
  background: #fef0c7;
}

.success-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 1rem;
}

.success-actions .button {
  margin: 0;
}

.future-link {
  color: var(--muted);
}

.existing-account-link {
  display: block;
  margin-top: 0.75rem;
  text-align: center;
  font-size: 0.9rem;
  font-weight: 700;
}

.auth-alternative {
  margin: 1.25rem 0 0;
  color: var(--muted);
  text-align: center;
}

.enrollment-confirm {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
  align-items: start;
  gap: 2rem;
}

.enrollment-confirm > section > p:not(.eyebrow) {
  color: var(--muted);
}

.enrollment-confirm form {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1.5rem;
}

.enrollment-confirm form .button {
  margin: 0;
}

.online-banner {
  display: grid;
  gap: 0.2rem;
  margin-top: 1.5rem;
  padding: 1rem;
  border: 1px solid #b2ccff;
  border-radius: 0.65rem;
  color: var(--primary-dark);
  background: #eff4ff;
}

.online-banner span {
  font-size: 0.9rem;
}

.enrollment-unavailable {
  text-align: center;
}

.payment-page {
  max-width: 780px;
  margin: 0 auto;
  padding: clamp(1.5rem, 5vw, 2.5rem);
  border: 1px solid var(--border);
  border-radius: 1rem;
  background: var(--surface);
  box-shadow: 0 16px 45px rgb(23 32 51 / 7%);
}

.payment-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.payment-heading h1 { margin: 0.15rem 0 0; }
.payment-heading p { margin: 0.25rem 0; color: var(--muted); }

.payment-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 1.5rem 0;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  overflow: hidden;
}

.payment-details div {
  display: grid;
  padding: 1rem;
  border-bottom: 1px solid var(--border);
}

.payment-details div:nth-child(odd) { border-right: 1px solid var(--border); }
.payment-details div:nth-last-child(-n + 2) { border-bottom: 0; }
.payment-details dt { color: var(--muted); font-size: 0.8rem; font-weight: 700; text-transform: uppercase; }
.payment-details dd { margin: 0; font-weight: 700; }
.payment-details code { overflow-wrap: anywhere; }

.payment-status-success { color: #067647; background: #dcfae6; }
.payment-status-failed, .payment-status-expired, .payment-status-cancelled { color: #b42318; background: #fee4e2; }
.payment-status-pending, .payment-status-processing { color: #b54708; background: #fef0c7; }

.simulation-panel {
  margin: 1.5rem 0;
  padding: 1.25rem;
  border: 1px dashed var(--border);
  border-radius: 0.75rem;
  background: #fafbfc;
}

.simulation-panel h2 { margin: 0; }
.simulation-panel > p { margin-top: 0.25rem; color: var(--muted); }
.simulation-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.simulation-actions form, .simulation-actions .button { margin: 0; }
.payment-error { text-align: center; }

.payment-notice {
  display: grid;
  gap: 0.2rem;
  margin: 0 0 1.5rem;
  padding: 1rem;
  border-radius: 0.65rem;
  color: #b54708;
  background: #fef0c7;
}

.payment-notice-success { color: #067647; background: #dcfae6; }
.payment-notice-failed { color: #b42318; background: #fee4e2; }
.success-actions form, .success-actions form .button { margin: 0; }

.trial-notice {
  display: grid;
  gap: 0.2rem;
  margin-bottom: 1.5rem;
  padding: 1rem;
  border-radius: 0.65rem;
  text-align: left;
}

.trial-notice-active {
  color: #175cd3;
  background: #eff4ff;
}

.trial-notice-blocked {
  color: #b54708;
  background: #fef0c7;
}

.trial-notice-confirmed {
  color: #067647;
  background: #dcfae6;
}

.meeting-list {
  margin-top: 2rem;
  text-align: left;
}

.meeting-list article {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--border);
}

.meeting-list article div {
  display: grid;
}

.meeting-list article div span {
  color: var(--muted);
}

.meeting-list .button {
  flex: 0 0 auto;
  margin: 0;
}

.eyebrow {
  color: var(--primary);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.button {
  display: inline-block;
  margin-top: 1rem;
  padding: 0.75rem 1.1rem;
  border: 0;
  border-radius: 0.5rem;
  color: white;
  background: var(--primary);
  cursor: pointer;
  font: inherit;
}

.button:hover {
  background: var(--primary-dark);
}

.button:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.button-small {
  margin: 0;
  padding: 0.45rem 0.8rem;
}

.card {
  max-width: 520px;
  margin-inline: auto;
  padding: 2rem;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  background: var(--surface);
  box-shadow: 0 10px 30px rgb(23 32 51 / 6%);
}

form {
  display: grid;
  gap: 0.75rem;
}

label {
  margin-top: 0.5rem;
  font-weight: 700;
}

.form-error {
  padding: 0.75rem;
  border-radius: 0.4rem;
  color: #b42318;
  background: #fee4e2;
}

.success-message {
  padding: 0.85rem 1rem;
  border: 1px solid #abefc6;
  border-radius: 0.5rem;
  color: #067647;
  background: #ecfdf3;
}

input,
textarea {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  font: inherit;
}

textarea {
  resize: vertical;
}

.checkbox-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 600;
}

.checkbox-label input {
  width: auto;
}

.weekday-fieldset {
  margin: 0.75rem 0;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 0.65rem;
}

.weekday-fieldset legend {
  padding: 0 0.4rem;
  font-weight: 700;
}

.weekday-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.65rem;
}

.course-admin-form {
  margin-top: 1.25rem;
}

.compact-heading {
  margin-bottom: 1rem;
}

.compact-heading form,
.compact-heading .button {
  margin: 0;
}

.status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.status-actions form,
.status-actions .button {
  margin: 0;
}

.online-course-label {
  margin: 0;
  padding: 0.65rem 1.5rem;
  color: var(--primary-dark);
  background: #eff4ff;
  font-size: 0.85rem;
  font-weight: 700;
}

.admin-nav {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 clamp(1.25rem, 1.5vw, 1.5rem);
  padding: 0.55rem;
  border: 1px solid var(--border);
  border-radius: 0.85rem;
  background: var(--surface);
  box-shadow: 0 8px 24px rgb(23 16 92 / 7%);
}

.admin-nav a {
  flex: 0 0 auto;
  padding: 0.5rem 0.75rem;
  border-radius: 0.5rem;
  color: var(--brand-text);
  font-size: 0.9rem;
  font-weight: 700;
}

.admin-nav a:hover,
.admin-nav a:focus-visible {
  color: var(--brand-secondary-dark);
  background: var(--brand-secondary-light);
}

.student-header {
  position: sticky;
  z-index: 900;
  top: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 1rem;
  width: 100%;
  padding: .55rem max(1.25rem, calc((100% - 1380px) / 2));
  border-bottom: 1px solid var(--border);
  background: rgb(255 255 255 / 96%);
  box-shadow: 0 5px 18px rgb(23 16 92 / 6%);
  backdrop-filter: blur(16px);
}
.student-brand { display: flex; align-items: center; width: 96px; height: 48px; flex: 0 0 auto; }
.student-brand img { display: block; width: 100%; height: 100%; object-fit: contain; }
.student-menu-toggle { display: none; width: 44px; height: 44px; padding: 9px; border: 1px solid var(--border); border-radius: .55rem; background: #fff; cursor: pointer; }
.student-menu-toggle span { display: block; height: 2px; margin: 5px 0; background: var(--text); transition: transform .2s ease, opacity .2s ease; }
.student-menu-toggle.is-open span:first-child { transform: translateY(7px) rotate(45deg); }
.student-menu-toggle.is-open span:nth-child(2) { opacity: 0; }
.student-menu-toggle.is-open span:last-child { transform: translateY(-7px) rotate(-45deg); }
.student-nav {
  display: flex;
  align-items: center;
  gap: .2rem;
  min-width: 0;
  margin: 0;
  padding: .25rem;
  overflow-x: auto;
  scrollbar-width: thin;
  border: 0;
  border-radius: .65rem;
  background: transparent;
}

.student-nav a,
.student-nav button {
  display: block;
  flex: 0 0 auto;
  width: auto;
  padding: .5rem .48rem;
  border: 0;
  border-radius: 0.4rem;
  color: var(--text);
  background: transparent;
  font: inherit;
  font-size: .82rem;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
}

.student-nav a:hover, .student-nav button:hover { background: #eff4ff; }
.student-mobile-logout { display: none; margin: 0; }
.student-nav a[aria-current="page"], .student-account > a[aria-current="page"] { color: var(--brand-primary); background: #e8edff; box-shadow: inset 0 -2px var(--brand-primary); }
.student-account { display: flex; align-items: center; gap: .35rem; }
.student-account > a { display: grid; gap: .05rem; min-width: max-content; padding: .45rem .6rem; border-radius: .5rem; color: var(--text); font-size: .78rem; }
.student-account > a span { color: var(--muted); }
.student-account > a strong { display: block; max-width: 190px; overflow: hidden; font-size: .85rem; text-overflow: ellipsis; white-space: nowrap; }
.student-account form { margin: 0; }
.student-account button { min-height: 40px; padding: .55rem .7rem; border: 1px solid var(--border); border-radius: .5rem; background: #fff; color: var(--text); font: inherit; font-size: .82rem; font-weight: 700; cursor: pointer; }
.student-account button:hover { background: #eff4ff; }
.student-main { width: min(100% - 2rem, 1180px); min-height: calc(100vh - 160px); padding-block: clamp(1.5rem, 3vw, 2.5rem) 5rem; }
.student-dashboard-intro { margin-bottom: clamp(1.5rem, 3vw, 2.25rem); }
.student-dashboard-intro h1 { margin-bottom: 0; }
.student-dashboard-next { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; margin-bottom: clamp(2rem, 4vw, 3rem); padding: clamp(1.5rem, 4vw, 2.5rem); border: 1px solid rgb(23 16 92 / 18%); border-radius: 1rem; background: linear-gradient(135deg, #f4f2ff, #fff 68%); }
.student-dashboard-next__content { display: grid; gap: .35rem; min-width: 0; }
.student-dashboard-next .eyebrow, .student-dashboard-actions .eyebrow { margin: 0 0 .3rem; }
.student-dashboard-course { margin: 0; color: var(--brand-primary); font-weight: 750; }
.student-dashboard-next h2 { margin: 0; font-size: clamp(1.55rem, 3vw, 2.25rem); }
.student-dashboard-date { margin: .2rem 0 0; font-size: 1.05rem; font-weight: 650; }
.student-dashboard-access { margin: .6rem 0 0; color: var(--muted); }
.student-dashboard-access.is-open { color: #067647; font-weight: 700; }
.student-dashboard-join { flex: 0 0 auto; margin: 0; }
.student-dashboard-progress { margin-bottom: clamp(2rem, 4vw, 3rem); padding: clamp(1.25rem, 3vw, 1.75rem); border: 1px solid var(--border); border-radius: 1rem; background: var(--surface); }
.student-dashboard-progress__summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .85rem; }
.student-dashboard-progress progress { display: block; width: 100%; height: 12px; overflow: hidden; border: 0; border-radius: 99px; accent-color: var(--brand-secondary); }
.student-dashboard-progress > p { margin: .65rem 0 0; color: var(--muted); }
.student-dashboard-muted { color: var(--muted); }
.student-dashboard-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-bottom: clamp(2rem, 4vw, 3rem); }
.student-dashboard-actions article { display: flex; min-width: 0; min-height: 178px; padding: 1.25rem; border: 1px solid var(--border); border-radius: .9rem; background: var(--surface); flex-direction: column; }
.student-dashboard-actions strong { font-size: 1.15rem; }
.student-dashboard-actions small { margin-top: .45rem; color: var(--muted); }
.student-dashboard-actions a { margin-top: auto; padding-top: 1rem; font-weight: 750; }
.student-dashboard-schedule { padding: clamp(1.25rem, 3vw, 1.75rem); border: 1px solid var(--border); border-radius: 1rem; background: var(--surface); }
.student-dashboard-meetings article { display: grid; grid-template-columns: minmax(175px, .75fr) minmax(0, 1.5fr) auto; align-items: center; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--border); }
.student-dashboard-meetings article:last-child { border-bottom: 0; }
.student-dashboard-meetings time, .student-dashboard-meetings article > div { display: grid; min-width: 0; }
.student-dashboard-meetings span { color: var(--muted); }
.student-dashboard-meetings article > a { font-weight: 700; }
.student-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.next-access-card { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; padding: 1.2rem; border: 1px solid #b2ccff; border-radius: .8rem; background: #eff4ff; }
.next-access-card > div { display: grid; }
.next-access-card small { color: var(--muted); }
.next-access-card .button { flex: 0 0 auto; margin: 0; }
.student-course-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.student-course-card { padding: 1.4rem; border: 1px solid var(--border); border-radius: 0.85rem; background: var(--surface); box-shadow: 0 10px 30px rgb(23 32 51 / 5%); }
.student-course-card h2 { margin: 0.65rem 0 0.2rem; }
.student-course-card > div > p { margin-top: 0; color: var(--muted); }
.student-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
.student-facts div { display: grid; }
.student-facts dt { color: var(--muted); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; }
.student-facts dd { margin: 0; }
.student-meeting-list article { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--border); }
.student-meeting-list article:last-child { border-bottom: 0; }
.student-meeting-list article > div { display: grid; min-width: 0; }
.student-meeting-list span, .student-meeting-list small { color: var(--muted); }
.student-meeting-list .button { flex: 0 0 auto; margin: 0; }
.student-course-summary { margin-bottom: 1.5rem; }
.student-payment-action { margin: 1.5rem 0; }
.student-payment-action form, .student-payment-action .button { margin: 0; }
.student-filters { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(160px, .7fr) auto; gap: .75rem; margin-bottom: 2rem; }
.student-filters .button { margin: 0; }
.schedule-day { margin: 2rem 0; padding: 0 1.25rem; border: 1px solid var(--border); border-radius: .8rem; background: var(--surface); }
.profile-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 1.5rem; }
.profile-grid .card { width: 100%; margin: 0; }
.generic-failure { display: block; margin-top: .25rem; color: var(--muted); }
.enrollment-status-cancelled, .enrollment-status-payment_failed { color: #b42318; background: #fee4e2; }
.learning-admin-list, .learning-modules, .resource-list { display: grid; gap: 1rem; }
.learning-admin-card { display: grid; grid-template-columns: 70px 1fr; gap: 1rem; padding: 1.25rem; border: 1px solid var(--border); border-radius: .8rem; background: var(--surface); }
.learning-order { display: flex; align-items: center; flex-direction: column; gap: .35rem; padding: .5rem; border-radius: .6rem; background: #eff4ff; }
.learning-order strong { font-size: 1.5rem; }
.learning-order form, .learning-order button, .admin-lesson-list form { display: inline; margin: 0; }
.learning-order button, .admin-lesson-list button, .resource-actions button { border: 1px solid var(--border); border-radius: .35rem; background: white; cursor: pointer; }
.learning-admin-main h2 { margin: .45rem 0 0; }
.learning-admin-main p { color: var(--muted); }
.learning-summary { font-weight: 700; }
.admin-lesson-list { padding-left: 1.5rem; }
.admin-lesson-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .75rem 0; border-top: 1px solid var(--border); }
.admin-lesson-list li > span:last-child { display: flex; align-items: center; gap: .6rem; }
.resource-form { display: grid; grid-template-columns: 1fr 180px 2fr 90px auto; align-items: end; gap: .65rem; }
.resource-form .button { margin: 0; }
.resource-list article { padding: 1rem; border: 1px solid var(--border); border-radius: .7rem; background: var(--surface); }
.resource-actions { display: flex; gap: .5rem; margin-top: .65rem; }
.resource-actions form { display: block; }
.learning-hero { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin-bottom: 1.5rem; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: 1rem; color: white; background: linear-gradient(135deg, var(--primary-dark), var(--primary)); }
.learning-hero .eyebrow, .learning-hero .status { color: white; }
.learning-hero h1 { margin: .25rem 0 .75rem; }
.progress-ring { display: grid; width: 120px; height: 120px; flex: 0 0 auto; border: 8px solid rgb(255 255 255 / 30%); border-radius: 50%; place-content: center; text-align: center; }
.progress-ring strong { font-size: 1.7rem; }
.progress-ring span { font-size: .75rem; }
.learning-overview { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 2rem; }
.learning-overview span { display: grid; padding: 1rem; border: 1px solid var(--border); border-radius: .65rem; background: var(--surface); text-align: center; }
.learning-overview strong { font-size: 1.4rem; }
.learning-modules > section { padding: 1.4rem; border: 1px solid var(--border); border-radius: .85rem; background: var(--surface); }
.learning-lessons { margin: 0; padding: 0; list-style: none; }
.learning-lessons li { display: grid; grid-template-columns: 38px 1fr auto; align-items: center; gap: .8rem; padding: .9rem 0; border-top: 1px solid var(--border); }
.learning-lessons li > div { display: grid; }
.learning-lessons small, .locked-label { color: var(--muted); }
.lesson-state { display: grid; width: 32px; height: 32px; border-radius: 50%; color: var(--primary); background: #eff4ff; place-items: center; font-weight: 700; }
.lesson-page { max-width: 850px; margin: auto; }
.lesson-content { margin: 2rem 0; padding: 1.5rem; border: 1px solid var(--border); border-radius: .7rem; background: var(--surface); white-space: pre-wrap; line-height: 1.75; }
.lesson-resources { padding: 1.25rem; border-radius: .7rem; background: #f8fafc; }
.lesson-resources li { margin: .65rem 0; }
.lesson-resources span { margin-left: .5rem; color: var(--muted); font-size: .8rem; }
.lesson-navigation { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1rem; margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--border); }
.lesson-navigation a:last-child { text-align: right; }
.assignment-form { margin-top: 1rem; }
.assignment-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.assignment-card { display: flex; flex-direction: column; padding: 1.4rem; border: 1px solid var(--border); border-radius: .85rem; background: var(--surface); box-shadow: 0 10px 30px rgb(23 32 51 / 5%); }
.assignment-card h2 { margin: .65rem 0 .2rem; }
.assignment-card p { margin-top: 0; color: var(--muted); }
.assignment-card dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
.assignment-card dl div { display: grid; }
.assignment-card dt { color: var(--muted); font-size: .75rem; font-weight: 700; text-transform: uppercase; }
.assignment-card dd { margin: 0; }
.assignment-card .button, .assignment-card .locked-label { margin-top: auto; }
.assignment-meta, .assignment-stats { display: grid; gap: .75rem; margin-bottom: 1.5rem; }
.assignment-meta { grid-template-columns: repeat(3, 1fr); }
.assignment-meta span, .assignment-stats article { display: grid; padding: 1rem; border: 1px solid var(--border); border-radius: .65rem; background: var(--surface); text-align: center; }
.assignment-stats { grid-template-columns: repeat(4, 1fr); }
.assignment-stats strong { font-size: 1.4rem; }
.assignment-stats span { color: var(--muted); }
.filter-tabs { display: flex; gap: .4rem; margin-bottom: 1rem; overflow-x: auto; }
.filter-tabs a { flex: 0 0 auto; padding: .55rem .75rem; border-radius: .45rem; background: #f2f4f7; font-weight: 700; }
.filter-tabs a.active { color: white; background: var(--primary); }
.submission-answer { margin-bottom: 2rem; }
.published-feedback { margin: 2rem 0; padding: 1.4rem; border: 1px solid #abefc6; border-radius: .8rem; background: #ecfdf3; }
.published-score { display: block; color: #067647; font-size: 2rem; }
.assignment-status-late { color: #b54708; background: #fef0c7; }
.assignment-status-graded, .assignment-status-returned { color: #067647; background: #dcfae6; }
.course-management-actions { display: flex; flex-wrap: wrap; gap: .65rem; margin: 1rem 0 1.5rem; }
.course-management-actions .button { margin: 0; }
.live-detail-hero { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: 1rem; color: white; background: linear-gradient(135deg, #102a56, var(--primary)); }
.live-detail-hero .eyebrow { color: #dbeafe; }
.live-detail-hero h1 { margin: .2rem 0; }
.live-join-panel { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 2rem; padding: 1.25rem; border: 1px solid #b2ccff; border-radius: .75rem; background: #eff4ff; }
.live-join-panel .button { margin: 0; }
.live-program-link { margin-top: .25rem; color: var(--primary) !important; }

.meeting-form {
  margin-top: 1.25rem;
}

.meeting-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
  gap: 0.65rem;
  margin-bottom: 1.25rem;
}

.meeting-filters .button {
  margin: 0;
}

.meeting-status-scheduled { color: #175cd3; background: #eff4ff; }
.meeting-status-completed { color: #067647; background: #dcfae6; }
.meeting-status-cancelled { color: #b42318; background: #fee4e2; }

.meeting-stats {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 2rem 0;
}

.meeting-stats article {
  display: grid;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 0.65rem;
  background: var(--surface);
  text-align: center;
}

.meeting-stats strong {
  font-size: 1.65rem;
}

.meeting-stats span,
.attendance-student > span:not(.status) {
  color: var(--muted);
}

.attendance-cards {
  display: grid;
  gap: 0.75rem;
}

.attendance-card {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(180px, 0.7fr) minmax(300px, 1.3fr);
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 0.7rem;
  background: var(--surface);
}

.attendance-student,
.trial-counter {
  display: grid;
}

.attendance-student .status {
  width: fit-content;
  margin-top: 0.25rem;
}

.enrollment-status-trial_active { color: #175cd3; background: #eff4ff; }
.enrollment-status-payment_required { color: #b54708; background: #fef0c7; }
.enrollment-status-confirmed { color: #067647; background: #dcfae6; }

.attendance-options {
  display: flex;
  gap: 0.75rem;
  margin: 0;
  padding: 0.65rem;
  border: 1px solid var(--border);
  border-radius: 0.5rem;
}

.attendance-options legend {
  padding: 0 0.25rem;
  font-size: 0.8rem;
  font-weight: 700;
}

.attendance-options label {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  margin: 0;
  font-weight: 600;
}

.attendance-options input {
  width: auto;
}

select {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: white;
  font: inherit;
}

.wide-card { max-width: 720px; }

.page-heading,
.heading-actions,
.form-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.page-heading { margin-bottom: 2rem; }
.page-heading h1 { margin: 0; }
.heading-actions form,
.heading-actions .button,
.form-actions .button { margin: 0; }
.session-form { margin-top: 1.5rem; }

.form-grid,
.details-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.form-grid label { display: block; }
.form-actions { justify-content: flex-start; margin-top: 1rem; }

.table-wrapper {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  background: white;
}

.table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  border: 1px solid var(--border);
  border-radius: 0.75rem;
  background: white;
}

table { width: 100%; border-collapse: collapse; }
th, td { padding: 0.9rem 1rem; border-bottom: 1px solid var(--border); text-align: left; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }

.report-tabs {
  display: flex;
  width: 100%;
  max-width: 100%;
  gap: .5rem;
  margin-bottom: 1.5rem;
  padding-bottom: .35rem;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
}

.report-tabs a {
  flex: 0 0 auto;
  padding: .45rem .7rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
}

.report-tabs + section,
.report-tabs ~ section,
.resource-form {
  min-width: 0;
  max-width: 100%;
}

.resource-form > * {
  min-width: 0;
}

.heading-actions {
  flex-wrap: wrap;
}

.status {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: #e8edf5;
  font-size: 0.78rem;
  font-weight: 700;
}

.status-open, .status-ongoing { color: #067647; background: #dcfae6; }
.status-full, .status-cancelled { color: #b42318; background: #fee4e2; }
.status-active { color: #067647; background: #dcfae6; }
.status-inactive { color: #b42318; background: #fee4e2; }
.details-grid .card { display: grid; gap: 0.35rem; margin: 0; padding: 1.25rem; }
.section-block { margin: 2.5rem 0; }
.button-danger { background: #b42318; }

.student-form {
  margin-top: 1.5rem;
}

.form-hint {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
}

.search-form {
  display: flex;
  align-items: center;
  grid-template-columns: minmax(0, 420px) auto auto;
  gap: 0.75rem;
  margin-bottom: 1.25rem;
}

.search-form input {
  max-width: 420px;
}

.search-form .button {
  flex: 0 0 auto;
  margin: 0;
}

.table-actions {
  display: flex;
  gap: 0.8rem;
}

.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  margin-top: 1.5rem;
}

.pagination span {
  color: var(--muted);
}

.student-details {
  margin-bottom: 2rem;
}

.progress-list {
  display: grid;
  gap: 0.75rem;
}

.progress-list article {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--border);
  border-radius: 0.65rem;
  background: var(--surface);
}

.progress-list article div {
  display: grid;
}

.progress-list article div span,
.reset-card > p {
  color: var(--muted);
}

.reset-card {
  margin: 2.5rem 0;
}

.reset-card h2 {
  margin-top: 0;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.heading-copy {
  margin: 0.35rem 0 0;
  color: var(--muted);
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  margin-bottom: 2rem;
}

.stat-card,
.dashboard-panel {
  border: 1px solid var(--border);
  border-radius: 0.85rem;
  background: var(--surface);
  box-shadow: 0 10px 30px rgb(23 32 51 / 5%);
}

.stat-card {
  display: flex;
  min-width: 0;
  padding: 1.25rem;
  flex-direction: column;
}

.stat-label,
.dashboard-list span {
  color: var(--muted);
}

.stat-value {
  margin: 0.15rem 0 0.5rem;
  font-size: 2rem;
  line-height: 1.2;
}

.stat-card a {
  margin-top: auto;
  font-size: 0.9rem;
  font-weight: 700;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}

.dashboard-panel {
  min-width: 0;
  padding: 1.5rem;
}

.section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}

.section-heading .eyebrow {
  margin: 0;
  font-size: 0.75rem;
}

.section-heading h2 {
  margin: 0.1rem 0 0;
  font-size: 1.25rem;
}

.section-heading > a {
  white-space: nowrap;
}

.dashboard-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.dashboard-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.9rem 0;
  border-bottom: 1px solid var(--border);
}

.dashboard-list li:last-child {
  border-bottom: 0;
}

.dashboard-list li div {
  display: grid;
  min-width: 0;
}

.dashboard-list strong,
.dashboard-list span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dashboard-list time {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 0.85rem;
}

.empty-state {
  padding: 2rem 1rem;
  border: 1px dashed var(--border);
  border-radius: 0.65rem;
  color: var(--muted);
  text-align: center;
}

.empty-state strong {
  color: var(--text);
}

.empty-state p {
  margin: 0.35rem 0 0;
}

.empty-state .button {
  margin-top: 1rem;
}

.site-footer {
  min-height: 72px;
  color: var(--muted);
  text-align: center;
}

@media (max-width: 520px) {
  .site-header nav > a:first-child {
    display: none;
  }

  .container {
    padding-top: 2rem;
  }

  .page-heading, .heading-actions, .form-actions { align-items: flex-start; flex-direction: column; }
  .form-grid, .details-grid { grid-template-columns: 1fr; }
  .stats-grid, .dashboard-grid { grid-template-columns: 1fr; }
  .stat-card { padding: 1rem; }
  .dashboard-panel { padding: 1.1rem; }
  .dashboard-list li { align-items: flex-start; }
  .search-form { align-items: stretch; flex-direction: column; }
  .search-form input { max-width: none; }
  .pagination { justify-content: space-between; gap: 0.5rem; }

  .responsive-table table,
  .responsive-table thead,
  .responsive-table tbody,
  .responsive-table tr,
  .responsive-table th,
  .responsive-table td {
    display: block;
  }

  .responsive-table thead {
    display: none;
  }

  .responsive-table tr {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--border);
  }

  .responsive-table tr:last-child {
    border-bottom: 0;
  }

  .responsive-table td {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.35rem 0;
    border: 0;
    text-align: right;
    white-space: normal;
  }

  .responsive-table td::before {
    content: attr(data-label);
    color: var(--muted);
    font-weight: 700;
    text-align: left;
  }

  .responsive-table .table-actions {
    justify-content: flex-end;
  }

  .course-grid,
  .detail-info-grid,
  .public-session-grid,
  .session-facts {
    grid-template-columns: 1fr;
  }

  .course-card-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .course-card-footer .button {
    width: 100%;
    text-align: center;
  }

  .course-detail-hero {
    padding: 1.5rem;
  }

  .registration-layout,
  .success-summary {
    grid-template-columns: 1fr;
  }

  .registration-summary {
    position: static;
  }

  .success-summary > div,
  .success-summary > div:nth-child(odd),
  .success-summary > div:nth-last-child(-n + 2) {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .success-summary > div:last-child {
    border-bottom: 0;
  }

  .success-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .enrollment-confirm {
    grid-template-columns: 1fr;
  }

  .enrollment-confirm form {
    align-items: stretch;
    flex-direction: column;
  }

  .payment-heading,
  .simulation-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .payment-details { grid-template-columns: 1fr; }
  .payment-details div,
  .payment-details div:nth-child(odd),
  .payment-details div:nth-last-child(-n + 2) {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .payment-details div:last-child { border-bottom: 0; }

  .meeting-list article {
    align-items: stretch;
    flex-direction: column;
  }

  .weekday-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .meeting-filters,
  .meeting-stats,
  .attendance-card {
    grid-template-columns: 1fr;
  }

  .student-nav { margin-top: 0; }
  .student-stats, .student-course-grid, .student-facts, .profile-grid, .student-filters { grid-template-columns: 1fr; }
  .student-meeting-list article { align-items: stretch; flex-direction: column; }
  .next-access-card { align-items: stretch; flex-direction: column; }
  .learning-admin-card, .resource-form, .learning-overview { grid-template-columns: 1fr; }
  .learning-order { flex-direction: row; justify-content: flex-start; }
  .admin-lesson-list li, .learning-hero { align-items: flex-start; flex-direction: column; }
  .admin-lesson-list li > span:last-child { flex-wrap: wrap; }
  .learning-lessons li { grid-template-columns: 38px 1fr; }
  .learning-lessons li > a, .learning-lessons .locked-label { grid-column: 2; }
  .progress-ring { width: 95px; height: 95px; }
  .lesson-navigation { grid-template-columns: 1fr; }
  .lesson-navigation a:last-child { text-align: left; }
  .assignment-grid, .assignment-meta, .assignment-stats { grid-template-columns: 1fr; }
  .live-detail-hero, .live-join-panel { align-items: stretch; flex-direction: column; }

  .attendance-options {
    flex-wrap: wrap;
  }
}

.assessment-form { display: grid; gap: 1rem; }
.assessment-form label { display: grid; gap: .35rem; }
.assessment-columns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.section-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: center; flex-wrap: wrap; }
.section-heading > div { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.sub-card { padding: 1rem; margin-block: .75rem; border: 1px solid var(--border); border-radius: 12px; background: #f8fafc; }
.response-list { display: grid; gap: 1rem; }
.response-list audio { width: 100%; }
.recorder-controls { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; margin-block: 1rem; }
.recorder-message { min-height: 1.5rem; padding: .5rem 0; color: #1d4ed8; }
.error-message { color: #b91c1c; }
.assessment-score { font-size: clamp(2rem, 6vw, 4rem); font-weight: 800; color: var(--primary); }

@media (max-width: 760px) {
  .assessment-columns { grid-template-columns: 1fr; }
  .recorder-controls { align-items: stretch; flex-direction: column; }
  .course-grid { grid-template-columns: 1fr; }
  .course-card-footer { align-items: stretch; flex-direction: column; }
  .course-card-footer .button { width: 100%; text-align: center; }
}

@media (min-width: 521px) and (max-width: 860px) {
  .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dashboard-grid { grid-template-columns: 1fr; }
  .detail-info-grid { grid-template-columns: 1fr; }
  .registration-layout { grid-template-columns: 1fr; }
  .registration-summary { position: static; }
  .enrollment-confirm { grid-template-columns: 1fr; }
  .meeting-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .meeting-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .attendance-card { grid-template-columns: 1fr; }
  .student-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .student-course-grid, .profile-grid { grid-template-columns: 1fr; }
}
.notification-unread { border-left: 4px solid #1d4ed8; background: #f8fbff; }
.notification-list { display: grid; gap: 1rem; }
.settings-page { --settings-primary: var(--primary); }
.settings-tabs { display: flex; gap: .45rem; overflow-x: auto; margin: 1rem 0; padding: .35rem; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.settings-tabs a { flex: 0 0 auto; padding: .65rem .8rem; border-radius: 8px; color: var(--muted); text-decoration: none; font-weight: 700; }
.settings-tabs a.active, .settings-tabs a:hover { color: #fff; background: var(--primary); }
.settings-panel { padding: clamp(1rem, 3vw, 2rem); }
.settings-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.settings-form label { display: grid; gap: .35rem; }
.settings-form .wide, .settings-form fieldset.wide { grid-column: 1 / -1; }
.settings-form .check { display: flex; align-items: center; flex-direction: row; }
.settings-form fieldset { padding: 1rem; border: 1px solid var(--border); border-radius: 10px; }
.checks { display: flex; flex-wrap: wrap; gap: 1rem; }
.checks label { display: flex; flex-direction: row; align-items: center; gap: .4rem; }
.color-preview { display: grid; grid-template-columns: repeat(3, 1fr); height: 60px; overflow: hidden; border-radius: 10px; }
.color-preview span:nth-child(1) { background: var(--preview-primary); }.color-preview span:nth-child(2) { background: var(--preview-secondary); }.color-preview span:nth-child(3) { background: var(--preview-accent); }
.file-settings { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.file-settings form { display: flex; align-items: end; gap: .75rem; padding: 1rem; background: #f8fafc; border-radius: 10px; }
.settings-files { padding: 0; list-style: none; }.settings-files li { display: flex; justify-content: space-between; padding: .7rem; border-bottom: 1px solid var(--border); }
.logo-preview { display: grid; place-items: center; min-height: 130px; margin-bottom: 1rem; padding: 1rem; border: 1px dashed var(--border); border-radius: 12px; background: #f8fafc; }
.logo-preview img { max-width: 240px; max-height: 110px; object-fit: contain; }
.brand-logo { width: 32px; height: 32px; margin-right: .5rem; object-fit: contain; vertical-align: middle; }
@media (max-width: 700px) { .settings-form, .file-settings { grid-template-columns: 1fr; }.settings-form > *, .settings-form .wide { grid-column: 1; }.file-settings form { align-items: stretch; flex-direction: column; } }

.pwa-message,
.pwa-ios-help {
  position: fixed;
  z-index: 1000;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
  gap: .75rem;
  max-width: min(32rem, calc(100% - 2rem));
  padding: .9rem 1rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 12px 35px rgb(23 59 87 / 18%);
}
.pwa-message[hidden],
.pwa-ios-help[hidden],
.pwa-install[hidden] { display: none; }
.pwa-ios-help { align-items: flex-start; flex-direction: column; padding-right: 2.75rem; }
.pwa-ios-help button { position: absolute; top: .45rem; right: .6rem; border: 0; background: transparent; font-size: 1.5rem; cursor: pointer; }
.site-footer { padding-bottom: max(1rem, env(safe-area-inset-bottom)); }
.pwa-standalone .site-header { min-height: calc(72px + env(safe-area-inset-top)); }
.public-registration { max-width: 760px; margin-inline: auto; }
.public-registration form, .placement-test form { display: grid; gap: 1rem; }
.selected-course, .level-guidance { padding: 1rem; border-radius: 10px; background: #eef4ff; }
.level-guidance p { margin: 0; }
.optional { color: var(--muted); font-weight: normal; }
.placement-test, .placement-result { max-width: 760px; margin-inline: auto; }
.placement-question { display: grid; gap: .65rem; }
.placement-question legend { padding-inline: .35rem; font-weight: 700; }
.placement-question label { display: flex; gap: .5rem; align-items: center; }
.placement-explanation { padding: 1rem; border-left: 4px solid var(--primary); background: #eef4ff; }

@media (max-width: 520px) {
  .pwa-message,
  .pwa-ios-help { left: max(1rem, env(safe-area-inset-left)); right: max(1rem, env(safe-area-inset-right)); }
  .pwa-message { align-items: stretch; flex-direction: column; }
}

.certificate-verify { max-width: 900px; margin: 0 auto; padding: 2rem 1rem 4rem; }
.certificate-verify-hero { padding: clamp(1.5rem, 4vw, 3rem); border-radius: 18px; background: linear-gradient(135deg, #173b57, #245d80); color: #fff; }
.certificate-verify-hero h1 { color: #fff; margin-bottom: .5rem; }
.certificate-search { display: grid; gap: .5rem; margin-top: 1.5rem; }
.certificate-search > div { display: flex; gap: .75rem; }
.certificate-search input { flex: 1; min-width: 0; background: #fff; }
.certificate-result { margin-top: 1.5rem; padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid var(--border); border-radius: 16px; background: #fff; }
.certificate-result-valid { border-left: 6px solid #15803d; }
.certificate-result-revoked { border-left: 6px solid #b91c1c; }
.certificate-result-unknown { border-left: 6px solid #64748b; }
.certificate-status { font-size: 1.15rem; font-weight: 700; }
.certificate-result dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.certificate-result dl div { padding: .75rem; background: #f8fafc; border-radius: 10px; }
.certificate-result dt { color: #64748b; font-size: .85rem; }
.certificate-result dd { margin: .2rem 0 0; font-weight: 600; overflow-wrap: anywhere; }
.certificate-actions { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }

@media (max-width: 520px) {
  .certificate-search > div, .certificate-actions { align-items: stretch; flex-direction: column; }
  .certificate-result dl { grid-template-columns: 1fr; }
}

/* New Vision Academy — official public identity */
:root {
  --brand-primary: #17105c;
  --brand-primary-dark: #0e0a42;
  --brand-primary-light: #35288d;
  --brand-secondary: #008f93;
  --brand-secondary-dark: #006d72;
  --brand-secondary-light: #e6f6f6;
  --brand-accent: #b86b12;
  --brand-accent-light: #fff4df;
  --brand-surface: #ffffff;
  --brand-background: #f7f9fc;
  --brand-text: #191a33;
  --brand-text-muted: #5f6475;
  --brand-border: #dde2eb;
  --brand-focus: #b86b12;
  --public-header-height: 78px;
  --admin-header-height: 76px;
  --primary: var(--brand-primary);
  --primary-dark: var(--brand-primary-dark);
  --secondary: var(--brand-text);
  --accent: var(--brand-accent);
  --text: var(--brand-text);
  --muted: var(--brand-text-muted);
  --surface: var(--brand-surface);
  --background: var(--brand-background);
  --border: var(--brand-border);
  --shadow-sm: 0 8px 24px rgb(23 16 92 / 8%);
  --shadow-lg: 0 24px 70px rgb(23 16 92 / 14%);
}
html { scroll-behavior: smooth; }
body { background: var(--background); font-family: Inter, "Segoe UI", Arial, sans-serif; }
img, svg, video { max-width: 100%; height: auto; }
h1, h2, h3, p, a, button, label, dt, dd { overflow-wrap: anywhere; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--brand-focus); outline-offset: 3px; }
.skip-link { position: fixed; z-index: 2000; top: .5rem; left: .5rem; padding: .65rem 1rem; border-radius: 8px; background: #fff; transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
.public-header { position: sticky; z-index: 900; top: 0; width: 100%; max-width: none; min-height: var(--public-header-height); padding-inline: max(1.5rem, calc((100% - 1180px) / 2)); border-bottom: 1px solid rgb(226 232 240 / 80%); background: rgb(255 255 255 / 94%); backdrop-filter: blur(16px); }
.official-brand { display: inline-flex; align-items: center; color: var(--brand-primary); line-height: 1; }
.header-brand picture { display: block; height: 64px; }
.header-brand img { display: block; width: auto; height: 64px; object-fit: contain; }
.public-navigation { display: flex; align-items: center; gap: clamp(.65rem, 1.6vw, 1.35rem); }
.public-navigation > a:not(.button) { color: #334155; font-size: .93rem; font-weight: 650; }
.public-navigation > a:hover { color: var(--primary); }
.nav-register { box-shadow: 0 8px 18px rgb(23 16 92 / 22%); }
.language-switcher { display: flex; align-items: center; gap: .25rem; padding: .3rem .45rem; border: 1px solid var(--border); border-radius: 999px; background: #f8fafc; }
.language-switcher button { min-width: auto; padding: .15rem .25rem; border: 0; background: transparent; color: var(--muted); font-size: .75rem; font-weight: 800; cursor: pointer; }
.language-switcher button[aria-pressed="true"] { color: var(--primary); }
.mobile-menu-toggle { display: none; width: 44px; height: 44px; padding: 10px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }
.mobile-menu-toggle span { display: block; height: 2px; margin: 5px 0; background: var(--secondary); transition: .2s ease; }
.public-main { width: min(100% - 2rem, 1180px); min-height: calc(100vh - 200px); padding-block: 0 5rem; }
body:has(.admin-nav) .public-header {
  min-height: var(--admin-header-height);
  border-bottom-color: rgb(23 16 92 / 12%);
  box-shadow: 0 5px 18px rgb(23 16 92 / 5%);
  backdrop-filter: blur(18px);
}
body:has(.admin-nav) .header-brand picture,
body:has(.admin-nav) .header-brand img {
  height: 68px;
}
body:has(.admin-nav) .public-navigation {
  gap: clamp(.55rem, 1.25vw, 1rem);
}
body:has(.admin-nav) .public-navigation > a:not(.button) {
  font-size: .88rem;
}
body:has(.admin-nav) .nav-register {
  min-height: 40px;
  margin: 0;
  padding: .62rem 1rem;
  border-radius: 9px;
  box-shadow: 0 6px 15px rgb(23 16 92 / 16%);
}
body:has(.admin-nav) .public-main {
  padding-top: clamp(1.25rem, 2vw, 2rem);
}
body:has(.admin-nav) .page-heading {
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}
body:has(.admin-nav) .dashboard-heading {
  padding-bottom: clamp(.25rem, 1vw, .75rem);
}
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid transparent; border-radius: 10px; background: var(--primary); color: #fff; font-weight: 750; line-height: 1.2; text-align: center; transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }
.button:hover { color: #fff; background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 10px 25px rgb(23 16 92 / 22%); }
.button:active { transform: translateY(0); box-shadow: 0 4px 12px rgb(23 16 92 / 18%); }
.button-large { padding: .9rem 1.35rem; font-size: 1rem; }
.button-outline { border-color: #cbd5e1; background: #fff; color: var(--secondary); }
.button-outline:hover { border-color: var(--brand-secondary-dark); background: var(--brand-secondary-light); color: var(--brand-secondary-dark); box-shadow: none; }
.button-gold { background: var(--brand-accent); color: #fff; }
.button-gold:hover { background: #8f500b; color: #fff; }
.button-tertiary { background: transparent; color: var(--brand-secondary-dark); }
.button-tertiary:hover { background: var(--brand-secondary-light); color: var(--brand-secondary-dark); box-shadow: none; }
.button[aria-busy="true"] { gap: .55rem; cursor: progress; pointer-events: none; }
.button[aria-busy="true"]::before { width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; content: ""; animation: brand-spin .7s linear infinite; }
@keyframes brand-spin { to { transform: rotate(360deg); } }
.button:disabled, .button[aria-disabled="true"], .button-disabled { transform: none; box-shadow: none; cursor: not-allowed; opacity: .58; pointer-events: none; }
.eyebrow { color: var(--primary); font-size: .76rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.landing-hero { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(2rem, 7vw, 6rem); align-items: center; min-width: 0; max-width: 100%; min-height: 680px; padding-block: 5rem; }
.hero-copy, .hero-visual { min-width: 0; max-width: 100%; }
.hero-copy h1 { max-width: 720px; margin: .65rem 0 1.3rem; color: var(--secondary); font-size: clamp(3rem, 6vw, 5.4rem); line-height: .98; letter-spacing: -.055em; }
.hero-lead { max-width: 650px; color: #475569; font-size: clamp(1.05rem, 2vw, 1.25rem); line-height: 1.75; }
.hero-actions { display: flex; gap: .8rem; flex-wrap: wrap; margin-top: 2rem; }
.hero-trust { display: flex; gap: .75rem 1.5rem; flex-wrap: wrap; margin: 2rem 0 0; padding: 0; color: #475569; list-style: none; font-size: .88rem; font-weight: 650; }
.hero-trust li::before { content: "✓"; margin-right: .4rem; color: #16a34a; font-weight: 900; }
.hero-visual { position: relative; isolation: isolate; display: grid; width: 100%; place-items: center; min-height: 510px; border: 1px solid rgb(23 16 92 / 6%); border-radius: 40% 60% 54% 46% / 45% 42% 58% 55%; background: linear-gradient(145deg, var(--brand-background), var(--brand-secondary-light) 66%, #fff); overflow: clip; box-shadow: inset 0 0 70px rgb(0 143 147 / 8%); }
.visual-halo { position: absolute; width: 98%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgb(255 255 255 / 58%) 0 46%, rgb(0 143 147 / 8%) 63%, transparent 74%); filter: blur(3px); }
.visual-orbit { position: absolute; max-width: calc(100% - 1rem); aspect-ratio: 1; border: 1px solid rgb(23 16 92 / 9%); border-radius: 50%; opacity: .72; }
.visual-orbit::before, .visual-orbit::after { position: absolute; width: 8px; aspect-ratio: 1; border: 2px solid #fff; border-radius: 50%; background: var(--brand-secondary); box-shadow: 0 4px 12px rgb(0 143 147 / 24%); content: ""; }
.visual-orbit::before { top: 13%; right: 14%; }.visual-orbit::after { bottom: 13%; left: 14%; }
.orbit-one { width: 100%; border-style: dashed; animation: hero-orbit 48s linear infinite; }.orbit-two { width: 92%; border-color: rgb(0 143 147 / 17%); animation: hero-orbit-reverse 38s linear infinite; }.orbit-three { width: 82%; border-color: rgb(23 16 92 / 9%); }
.orbit-two::before { background: var(--brand-primary); }.orbit-two::after, .orbit-three::before, .orbit-three::after { display: none; }
.visual-depth-card { position: absolute; z-index: 1; width: min(61%, 275px); height: 260px; transform: translate(22px, 18px) rotate(5deg); border: 1px solid rgb(0 143 147 / 17%); border-radius: 26px; background: rgb(255 255 255 / 43%); box-shadow: 0 25px 60px rgb(23 16 92 / 9%); backdrop-filter: blur(5px); }
.visual-card { z-index: 3; display: grid; gap: .45rem; padding: 1.1rem 1.2rem; border: 1px solid rgb(255 255 255 / 84%); border-radius: 18px; background: rgb(255 255 255 / 86%); box-shadow: 0 14px 36px rgb(23 16 92 / 12%); backdrop-filter: blur(12px); }
.visual-main { position: relative; width: min(64%, 290px); min-height: 278px; align-content: center; padding: 1.7rem 2rem; border-color: rgb(0 143 147 / 14%); border-radius: 26px; text-align: center; animation: hero-float 7s ease-in-out infinite; }
.visual-card-top { position: absolute; top: 1rem; left: 1rem; right: 1rem; display: flex; align-items: center; justify-content: space-between; }
.visual-label { padding: .3rem .65rem; border: 1px solid rgb(0 143 147 / 15%); border-radius: 999px; background: var(--brand-secondary-light); color: var(--brand-secondary-dark); font-size: .66rem; font-weight: 850; letter-spacing: .08em; }
.visual-live-mark { width: 8px; aspect-ratio: 1; border-radius: 50%; background: var(--brand-secondary); box-shadow: 0 0 0 5px rgb(0 143 147 / 10%); }
.teacher-avatar { position: relative; display: grid; place-items: center; width: 112px; height: 112px; margin: .5rem auto; border: 1px solid rgb(255 255 255 / 50%); border-radius: 34px; background: linear-gradient(145deg, var(--brand-primary), var(--brand-secondary)); color: #fff; box-shadow: 0 16px 28px rgb(23 16 92 / 18%); transform: rotate(-3deg); }
.teacher-avatar span { font-size: 1.7rem; font-weight: 850; letter-spacing: .04em; }.teacher-avatar svg { position: absolute; right: -10px; bottom: -10px; width: 36px; padding: 8px; border: 1px solid rgb(0 143 147 / 15%); border-radius: 11px; background: #fff; color: var(--brand-secondary-dark); box-shadow: 0 8px 20px rgb(23 16 92 / 14%); transform: rotate(3deg); }
.visual-card svg { display: block; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.visual-card small { color: var(--muted); }.visual-progress { width: 74%; height: 5px; margin: .8rem auto 0; overflow: hidden; border-radius: 99px; background: var(--brand-secondary-light); }.visual-progress span { display: block; width: 68%; height: 100%; border-radius: inherit; background: var(--brand-secondary); }
.visual-float { position: absolute; display: flex; max-width: min(190px, calc(100% - 1.5rem)); align-items: center; gap: .7rem; padding: .75rem .9rem; font-size: .74rem; line-height: 1.25; animation: hero-float 8s ease-in-out infinite; }
.visual-icon { display: grid; flex: 0 0 auto; width: 34px; height: 34px; place-items: center; border-radius: 10px; background: var(--brand-secondary-light); color: var(--brand-secondary-dark); }.visual-icon svg { width: 19px; }
.visual-float-top { top: 13%; right: 9%; animation-delay: -2s; }.visual-float-side { top: 48%; left: 4%; animation-delay: -5s; }.visual-float-bottom { right: 12%; bottom: 10%; animation-delay: -3.5s; }
.visual-spark { position: absolute; z-index: 2; width: 11px; aspect-ratio: 1; border: 2px solid #fff; border-radius: 4px; background: var(--brand-primary); box-shadow: 0 6px 16px rgb(23 16 92 / 18%); transform: rotate(45deg); }.spark-one { top: 21%; left: 19%; }.spark-two { right: 19%; bottom: 23%; width: 8px; background: var(--brand-secondary); }
.hero-photo-frame { position: relative; z-index: 2; display: block; width: min(98%, 540px); aspect-ratio: 1; overflow: hidden; border: 2px solid rgb(255 255 255 / 88%); border-radius: 50%; background: var(--brand-secondary-light); box-shadow: 0 26px 56px rgb(23 16 92 / 16%), 0 0 0 1px rgb(0 143 147 / 14%), 0 0 36px rgb(0 143 147 / 10%); }
.hero-photo-frame::after { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(145deg, rgb(255 255 255 / 5%), transparent 54%, rgb(23 16 92 / 6%)); content: ""; pointer-events: none; }
.hero-student-photo { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 54% 50%; filter: brightness(1.045) saturate(1.015); }
.hero-visual .visual-float { z-index: 4; max-width: min(160px, calc(100% - 1.5rem)); gap: .5rem; padding: .58rem .72rem; border-color: rgb(255 255 255 / 72%); border-radius: 15px; background: rgb(255 255 255 / 80%); box-shadow: 0 10px 26px rgb(23 16 92 / 9%); font-size: clamp(.68rem, .72vw, .78rem); }
.hero-visual .visual-float .visual-icon { width: 28px; height: 28px; border-radius: 9px; }.hero-visual .visual-float .visual-icon svg { width: 16px; }
.hero-visual .visual-float-top { top: clamp(38px, 11%, 56px); right: auto; left: clamp(12px, 3%, 20px); }
.hero-visual .visual-float-side { top: auto; right: clamp(12px, 3%, 20px); bottom: clamp(82px, 18%, 96px); left: auto; }
.hero-visual .visual-float-bottom { top: clamp(205px, 44%, 230px); right: clamp(8px, 2%, 14px); bottom: auto; left: auto; white-space: nowrap; }
@keyframes hero-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes hero-orbit { to { transform: rotate(360deg); } }
@keyframes hero-orbit-reverse { to { transform: rotate(-360deg); } }
.trust-strip { display: grid; grid-template-columns: repeat(5, 1fr); margin-bottom: 7rem; padding: 1.2rem; border: 1px solid var(--border); border-radius: 16px; background: #fff; box-shadow: var(--shadow-sm); }
.trust-strip span { padding: .45rem 1rem; border-right: 1px solid var(--border); color: #334155; text-align: center; font-size: .85rem; font-weight: 700; }.trust-strip span:last-child { border: 0; }
.landing-section { padding-block: 5.5rem; }
.section-intro { max-width: 720px; margin-bottom: 2.6rem; }
.section-intro h2, .online-section h2, .final-cta h2 { margin: .4rem 0 1rem; color: var(--secondary); font-size: clamp(2.1rem, 4vw, 3.4rem); line-height: 1.08; letter-spacing: -.035em; }
.benefit-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.feature-card { height: 100%; padding: 1.5rem; border: 1px solid var(--border); border-top: 3px solid var(--brand-secondary); border-radius: 16px; background: #fff; transition: .25s ease; }
.feature-card:hover { transform: translateY(-5px); border-color: #9bcfd1; box-shadow: var(--shadow-sm); }
.feature-icon { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 1rem; border-radius: 11px; background: var(--brand-secondary-light); color: var(--brand-secondary-dark); font-size: 1.2rem; font-weight: 900; }
.feature-card h3 { margin: 0 0 .45rem; color: var(--secondary); }.feature-card p { margin: 0; color: var(--muted); font-size: .93rem; }
.courses-showcase { margin-inline: calc(50% - 50vw); padding-inline: max(1rem, calc((100vw - 1180px) / 2)); background: #f1f5f9; }
.landing-course-grid { grid-template-columns: repeat(3, 1fr); }.premium-card { display: flex; flex-direction: column; justify-content: space-between; border: 1px solid var(--border); border-top: 3px solid var(--brand-primary); border-radius: 18px; box-shadow: none; }
.course-card-actions { display: flex; align-items: stretch; gap: .6rem; padding: 1.2rem; border-top: 1px solid var(--border); }.course-card-actions .button { flex: 1 1 0; }
.text-link { color: var(--primary); font-weight: 800; }
.steps-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.step-card { position: relative; padding: 1.7rem; border-radius: 16px; background: var(--secondary); color: #fff; }
.step-card span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--accent); color: var(--secondary); font-weight: 900; }.step-card p { margin: 1.2rem 0 0; font-weight: 700; }
.online-section { display: grid; grid-template-columns: 1fr .8fr; gap: 3rem; align-items: center; padding-inline: clamp(1.5rem, 5vw, 4rem); border-radius: 24px; background: linear-gradient(135deg, var(--brand-primary-dark), var(--brand-primary)); color: #d9d9ee; }
.online-section h2 { color: #fff; }.device-stack { position: relative; min-height: 260px; }
.device { position: absolute; display: grid; place-items: center; border: 5px solid #34305f; background: var(--brand-secondary-light); color: var(--brand-primary); font-weight: 900; box-shadow: var(--shadow-lg); }
.desktop { inset: 10% 8%; border-radius: 12px; }.tablet { right: 4%; bottom: 0; width: 36%; height: 62%; border-radius: 12px; }.phone { left: 5%; bottom: 0; width: 22%; height: 48%; border-radius: 16px; }
.audience-section { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: stretch; }.audience-section .section-intro { margin: 0; }
.expect-card { padding: 2.4rem; border: 1px solid #fde68a; border-radius: 20px; background: #fffbeb; }.expect-card h3 { color: var(--secondary); font-size: 1.5rem; }
.final-cta { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 4rem; padding: clamp(2rem, 5vw, 4rem); border-radius: 24px; background: var(--brand-primary); color: #e4e4f4; }
.final-cta h2 { margin: 0 0 .75rem; color: #fff; }.final-cta p { margin: 0; }
.brand-footer { width: 100%; max-width: none; margin: 0; padding: 4rem max(1.5rem, calc((100% - 1180px) / 2)) max(1.5rem, env(safe-area-inset-bottom)); background: var(--brand-primary-dark); color: #b8b9ce; }
.footer-grid { display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: 3rem; }.footer-grid > div { display: flex; align-items: flex-start; flex-direction: column; gap: .55rem; }
.footer-grid h2 { margin: 0 0 .5rem; color: #fff; font-size: .9rem; }.footer-grid a { color: #e1e1ee; }
.footer-brand { width: min(100%, 230px); padding: .75rem; border-radius: 16px; background: #fff; box-shadow: 0 12px 34px rgb(0 0 0 / 18%); }
.footer-brand img { display: block; width: 100%; height: auto; }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #334155; }
.auth-shell { display: grid; grid-template-columns: .9fr 1.1fr; max-width: 900px; margin: 5rem auto; border-radius: 24px; overflow: hidden; box-shadow: var(--shadow-lg); }
.auth-brand-panel { display: flex; align-items: flex-start; justify-content: center; flex-direction: column; padding: 3rem; background: linear-gradient(145deg, var(--brand-primary-dark), var(--brand-primary)); color: #e2e2f1; }
.auth-brand-logo { width: min(100%, 210px); margin-bottom: 1.5rem; padding: .65rem; border-radius: 16px; background: #fff; box-shadow: 0 14px 36px rgb(0 0 0 / 20%); }
.auth-brand-panel h2 { color: #fff; font-size: 2rem; line-height: 1.15; }.login-card { max-width: none; margin: 0; padding: 3rem; border: 0; border-radius: 0; }
.login-card form { display: grid; gap: .7rem; }.auth-submit { width: 100%; margin-top: .8rem; }
.public-registration { margin-block: 4rem; padding: clamp(1.5rem, 5vw, 3.5rem); border-radius: 22px; box-shadow: var(--shadow-sm); }
.public-registration input, .public-registration select, .login-card input { min-height: 48px; border: 1px solid #cbd5e1; border-radius: 9px; }
.level-guidance { border-left: 4px solid var(--primary); }.placement-test { margin-block: 4rem; }.test-progress { height: 7px; border-radius: 99px; background: #e2e8f0; }.test-progress span { display: block; width: 10%; height: 100%; border-radius: inherit; background: var(--primary); }
.placement-question { transition: .2s ease; }.placement-question:focus-within { border-color: var(--brand-secondary); box-shadow: 0 0 0 3px var(--brand-secondary-light); }
.placement-result { margin-block: 5rem; padding: 3rem; border-radius: 22px; box-shadow: var(--shadow-lg); text-align: center; }
.result-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 2rem 0; }.result-grid div { display: grid; gap: .3rem; padding: 1.2rem; border-radius: 12px; background: #f1f5f9; }.result-grid span { color: var(--muted); font-size: .8rem; }.result-grid strong { color: var(--secondary); font-size: 1.4rem; }
.polished-hero { margin-inline: calc(50% - 50vw); padding: 5rem max(1rem, calc((100vw - 1180px) / 2)); background: linear-gradient(135deg, #f0eff9, var(--brand-background) 60%, var(--brand-accent-light)); }
.polished-hero h1 { max-width: 800px; color: var(--secondary); font-size: clamp(2.6rem, 5vw, 4.5rem); }
.reveal { opacity: 1; transform: none; }.reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }.reveal { opacity: 1; transform: none; }.button[aria-busy="true"]::before { animation: none; } }
@media (max-width: 1100px) {
  .student-header { grid-template-columns: auto 1fr; gap: .35rem .75rem; padding-inline: 1rem; }
  .student-nav { grid-column: 1 / -1; grid-row: 2; justify-content: center; flex-wrap: wrap; overflow-x: visible; }
  .student-account { justify-self: end; }
}
@media (max-width: 900px) {
  .mobile-menu-toggle { display: block; }
  .public-header .public-navigation { position: absolute; top: calc(100% + 1px); left: 1rem; right: 1rem; display: none; align-items: stretch; flex-direction: column; padding: 1rem; border: 1px solid var(--border); border-radius: 14px; background: #fff; box-shadow: var(--shadow-lg); }
  .public-header .public-navigation.is-open { display: flex; }.public-navigation .button { text-align: center; }.language-switcher { align-self: flex-start; }
  .landing-hero { grid-template-columns: 1fr; padding-top: 3.5rem; }.hero-visual { min-height: 440px; }.hero-visual .visual-float-side { display: none; }
  .trust-strip { grid-template-columns: repeat(2, 1fr); }.trust-strip span { border: 0; }
  .benefit-grid { grid-template-columns: repeat(2, 1fr); }.landing-course-grid { grid-template-columns: 1fr 1fr; }
  .steps-grid { grid-template-columns: 1fr 1fr; }.online-section, .audience-section { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }.auth-shell { grid-template-columns: 1fr; }.auth-brand-panel { min-height: 260px; }
  body:has(.admin-nav) .public-main { padding-top: 1.25rem; }
  .admin-nav a { flex: 1 1 calc(33.333% - .35rem); text-align: center; }
}
@media (max-width: 1100px) {
  .hero-visual .visual-float-side, .hero-visual .visual-float-bottom { display: none; }
  .hero-visual .visual-float-top { top: clamp(34px, 10%, 48px); left: clamp(22px, 7%, 52px); }
}
@media (min-width: 1101px) {
  .hero-visual { overflow: visible; }
  .hero-visual .visual-float-top { left: 0; translate: -32% 0; }
  .hero-visual .visual-float-side, .hero-visual .visual-float-bottom { right: 0; translate: 55% 0; }
}
@media (max-width: 600px) {
  .student-header { padding: .45rem .65rem; }
  .student-brand { width: 88px; height: 44px; }
  .student-account > a { padding-inline: .35rem; }
  .student-account > a span { display: none; }
  .student-account > a strong { max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .student-account button { padding-inline: .55rem; font-size: .76rem; }
  .student-nav a { padding: .5rem .65rem; font-size: .82rem; }
  .student-main { width: min(100% - 1.25rem, 1180px); padding-top: 1.25rem; }
  :root { --public-header-height: 68px; --admin-header-height: 68px; }
  .public-header { min-height: var(--public-header-height); padding-inline: 1rem; }.header-brand picture, .header-brand img { height: 56px; }
  body:has(.admin-nav) .header-brand picture, body:has(.admin-nav) .header-brand img { height: 58px; }
  body:has(.admin-nav) .public-main { padding-top: 1rem; }
  .admin-nav { gap: .3rem; margin-bottom: 1.25rem; padding: .4rem; }
  .admin-nav a { flex-basis: calc(50% - .3rem); padding: .55rem .4rem; font-size: .82rem; }
  .public-main { width: min(100% - 1.25rem, 1180px); }.landing-hero { min-height: auto; padding-block: 3rem 4rem; }.hero-copy h1 { font-size: clamp(2.55rem, 13vw, 3.5rem); }
  .hero-actions { align-items: stretch; flex-direction: column; }.hero-actions .button { text-align: center; }.hero-visual { min-height: 370px; }
  .visual-float-top, .visual-float-side, .visual-float-bottom { display: none; }
  .hero-photo-frame { width: min(98%, 440px); aspect-ratio: 1; border-width: 2px; }
  .hero-student-photo { object-position: 54% 48%; }
  .visual-main { width: min(70%, 280px); min-height: 250px; padding: 1.4rem; }.visual-depth-card { width: min(66%, 265px); height: 235px; }.teacher-avatar { width: 96px; height: 96px; }
  .trust-strip, .benefit-grid, .landing-course-grid, .steps-grid, .result-grid { grid-template-columns: 1fr; }
  .landing-section { padding-block: 3.8rem; }.online-section { padding-block: 2.5rem; }.device-stack { min-height: 210px; }
  .final-cta { align-items: stretch; flex-direction: column; }.final-cta .button { text-align: center; }
  .footer-grid { grid-template-columns: 1fr; gap: 2rem; }.footer-bottom { align-items: flex-start; flex-direction: column; }
  .auth-shell { margin-block: 2rem; }.auth-brand-panel { display: none; }.login-card { padding: 1.5rem; }
  .public-registration { margin-block: 2rem; padding: 1.25rem; }.course-card-actions { align-items: stretch; flex-direction: column; }.course-card-actions .button { text-align: center; }
}
@media (max-width: 768px) {
  .student-header { grid-template-columns: auto 1fr auto; }
  .student-menu-toggle { display: block; grid-column: 3; justify-self: end; }
  .student-account { grid-column: 2; grid-row: 1; min-width: 0; }
  .student-account > a { min-width: 0; }
  .student-account > a strong { max-width: 110px; }
  .student-account form { display: none; }
  .student-nav { display: none; grid-column: 1 / -1; grid-row: 2; align-items: stretch; justify-content: stretch; grid-template-columns: 1fr; gap: .25rem; width: 100%; max-height: calc(100vh - 82px); padding: .55rem 0 .35rem; overflow-y: auto; }
  .student-nav.is-open { display: grid; }
  .student-nav a { width: 100%; padding: .7rem .8rem; text-align: left; }
  .student-mobile-logout { display: block; }
  .student-mobile-logout button { width: 100%; padding: .7rem .8rem; text-align: left; }
  .student-dashboard-next { align-items: stretch; flex-direction: column; }
  .student-dashboard-join { width: 100%; text-align: center; }
  .student-dashboard-actions { grid-template-columns: 1fr; }
  .student-dashboard-actions article { min-height: 150px; }
  .student-dashboard-meetings article { grid-template-columns: 1fr auto; }
  .student-dashboard-meetings article > div { grid-column: 1 / -1; grid-row: 2; }
  .student-dashboard-meetings article > a { grid-column: 2; grid-row: 1; }
}
@media (max-width: 480px) {
  .student-dashboard-next, .student-dashboard-progress, .student-dashboard-schedule { padding: 1.1rem; }
  .student-dashboard-progress__summary { align-items: flex-start; flex-direction: column; gap: .35rem; }
  .student-dashboard-meetings article { grid-template-columns: 1fr; }
  .student-dashboard-meetings article > div, .student-dashboard-meetings article > a { grid-column: 1; grid-row: auto; }
}
@media (max-width: 360px) {
  .public-main { width: min(100% - 1rem, 1180px); }
  .public-header { padding-inline: .65rem; }
  .header-brand picture, .header-brand img { height: 48px; }.header-brand img { max-width: 90px; }
  .hero-copy h1 { font-size: 2.35rem; }
  .hero-photo-frame { width: 99%; }
  .public-registration, .placement-result { padding: 1rem; }
  body:has(.admin-nav) .header-brand picture, body:has(.admin-nav) .header-brand img { height: 50px; }
}

/* Manual payment workflow */
.manual-payment-page { display: grid; gap: 1.5rem; max-width: 1040px; margin-inline: auto; padding-bottom: 4rem; }
.payment-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; margin: 0; padding: 0; list-style: none; }
.payment-steps li { display: flex; align-items: center; gap: .6rem; padding: .8rem 1rem; border: 1px solid var(--border); border-radius: 14px; color: var(--muted); background: #fff; font-weight: 750; }
.payment-steps li span { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: var(--brand-secondary-light); color: var(--brand-secondary-dark); }
.payment-steps li.active { border-color: rgb(0 143 147 / 28%); color: var(--brand-primary); box-shadow: var(--shadow-sm); }
.payment-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.payment-summary > div { display: grid; gap: .35rem; min-width: 0; }.payment-summary span { color: var(--muted); font-size: .82rem; }.payment-summary strong { color: var(--brand-primary); }
.payment-summary .payment-progress-block { grid-column: 1 / -1; grid-template-columns: 1fr auto; }
.payment-summary progress { grid-column: 1 / -1; width: 100%; height: 10px; accent-color: var(--brand-secondary); }
.payment-method-grid, .pending-payment-grid, .payment-settings-form { display: grid; gap: 1rem; }
.payment-method-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.payment-method-card { position: relative; display: grid; gap: .85rem; padding: 1.15rem; border: 1px solid var(--border); border-radius: 18px; background: #fff; box-shadow: var(--shadow-sm); cursor: pointer; }
.payment-method-card:has(input:checked) { border-color: var(--brand-secondary); box-shadow: 0 14px 34px rgb(0 143 147 / 12%); }
.payment-method-card > input { position: absolute; top: 1rem; right: 1rem; accent-color: var(--brand-secondary); }
.payment-method-name { padding-right: 2rem; color: var(--brand-primary); font-size: 1.05rem; font-weight: 850; }
.payment-method-card dl, .pending-payment-card dl { display: grid; gap: .65rem; margin: 0; }.payment-method-card dl div, .pending-payment-card dl div { display: grid; gap: .2rem; }.payment-method-card dt, .pending-payment-card dt { color: var(--muted); font-size: .76rem; }.payment-method-card dd, .pending-payment-card dd { margin: 0; overflow-wrap: anywhere; }
.copy-button { padding: .25rem .45rem; border: 1px solid rgb(0 143 147 / 22%); border-radius: 8px; background: var(--brand-secondary-light); color: var(--brand-secondary-dark); cursor: pointer; font-size: .72rem; font-weight: 750; }
.manual-payment-declaration { max-width: 720px; }.manual-payment-declaration label span { color: var(--muted); font-size: .8rem; font-weight: 500; }
.payment-review-state { display: grid; gap: .25rem; padding: 1rem 1.2rem; border: 1px solid rgb(0 143 147 / 25%); border-radius: 16px; background: var(--brand-secondary-light); color: var(--brand-primary); }.payment-review-state.success { border-color: rgb(22 163 74 / 25%); background: rgb(240 253 244); }.payment-review-state.failed { border-color: rgb(220 38 38 / 24%); background: rgb(254 242 242); color: #991b1b; }
.pending-payment-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); }.pending-payment-card header { display: flex; justify-content: space-between; gap: 1rem; }.pending-payment-card header h2 { margin: 0; }.payment-admin-actions { display: grid; gap: .8rem; margin-top: 1rem; }.payment-admin-actions form:last-child { display: grid; grid-template-columns: 1fr auto; gap: .6rem; align-items: end; }
.payment-settings-form { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }.payment-settings-form > .button { grid-column: 1 / -1; justify-self: start; }.payment-setting-card { display: grid; gap: .8rem; }.payment-setting-card legend { padding-inline: .35rem; color: var(--brand-primary); font-weight: 850; }
.payment-method-create summary { color: var(--brand-primary); cursor: pointer; font-size: 1.05rem; font-weight: 850; }.payment-method-create[open] summary { margin-bottom: 1rem; }
.payment-method-admin-list { display: grid; gap: 1rem; margin-top: 1rem; }.payment-setting-card header { display: flex; justify-content: space-between; gap: 1rem; }.payment-setting-card header h2 { margin: 0; }
.payment-method-admin-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }.payment-method-admin-form label { display: grid; gap: .35rem; }.payment-method-admin-form textarea { min-height: 100px; }.payment-method-admin-form .button { align-self: end; justify-self: start; }
.payment-method-toggle { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding-top: .9rem; border-top: 1px solid var(--border); }
.manual-payment-filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin-bottom: 1rem; }.manual-payment-filters label { display: grid; gap: .3rem; }.manual-payment-filters .button { align-self: end; }
@media (max-width: 900px) { .manual-payment-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .payment-steps { gap: .35rem; }.payment-steps li { justify-content: center; padding: .65rem .35rem; font-size: .76rem; }.payment-steps li span { width: 24px; height: 24px; }.payment-summary { grid-template-columns: 1fr 1fr; }.payment-admin-actions form:last-child, .payment-method-admin-form { grid-template-columns: 1fr; }.payment-method-toggle { align-items: stretch; flex-direction: column; } }
@media (max-width: 500px) { .manual-payment-filters { grid-template-columns: 1fr; }.pending-payment-card { overflow: hidden; }.pending-payment-card dl, .pending-payment-card dd { min-width: 0; overflow-wrap: anywhere; } }
@media (max-width: 420px) { .payment-summary { grid-template-columns: 1fr; }.payment-summary .payment-progress-block { grid-column: 1; }.payment-steps li { flex-direction: column; } }

/* Public conversion sections */
.benefit-grid-six { grid-template-columns: repeat(3, 1fr); }
.course-format-section { padding-inline: clamp(1.25rem, 4vw, 3rem); border: 1px solid var(--brand-border); border-radius: 24px; background: #fff; box-shadow: var(--shadow-sm); }
.format-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.format-card { position: relative; min-width: 0; padding: 1.4rem; border-radius: 14px; background: var(--brand-background); }
.format-marker { display: block; width: 34px; height: 4px; margin-bottom: 1rem; border-radius: 99px; background: linear-gradient(90deg, var(--brand-secondary), var(--brand-accent)); }
.format-card h3 { margin: 0 0 .5rem; color: var(--brand-text); font-size: 1.05rem; }
.format-card p { margin: 0; color: var(--brand-text-muted); font-size: .92rem; }
.journey-section { margin-inline: calc(50% - 50vw); padding-inline: max(1rem, calc((100vw - 1180px) / 2)); background: #f0eff9; }
.journey-timeline { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .75rem; margin: 0; padding: 0; list-style: none; }
.journey-step { position: relative; min-width: 0; padding-top: 3.5rem; }
.journey-step::before { position: absolute; top: 19px; left: 42px; width: calc(100% - 26px); height: 2px; background: #c8c4e2; content: ""; }
.journey-step:last-child::before { display: none; }
.journey-step > span { position: absolute; z-index: 1; top: 0; left: 0; display: grid; width: 40px; height: 40px; border-radius: 50%; background: var(--brand-primary); color: #fff; place-items: center; font-weight: 850; }
.journey-step h3 { margin: 0 0 .4rem; font-size: 1rem; line-height: 1.3; }
.journey-step p { margin: 0; color: var(--brand-text-muted); font-size: .84rem; }
.session-preview-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.session-preview-card { display: flex; min-width: 0; flex-direction: column; padding: 1.4rem; border: 1px solid var(--brand-border); border-top: 3px solid var(--brand-secondary); border-radius: 16px; background: #fff; box-shadow: var(--shadow-sm); }
.session-preview-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.session-preview-card h3 { margin: 1rem 0 .2rem; }
.session-preview-card > p { margin: 0 0 1rem; color: var(--brand-text-muted); }
.session-preview-card dl { display: grid; gap: .55rem; margin: 0 0 1.2rem; }
.session-preview-card dl div { display: flex; justify-content: space-between; gap: 1rem; }
.session-preview-card dt { color: var(--brand-text-muted); font-size: .78rem; }
.session-preview-card dd { margin: 0; text-align: right; font-size: .86rem; font-weight: 700; }
.session-preview-card .button { margin-top: auto; }
.dashboard-preview-section { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.dashboard-preview-section .section-intro { margin: 0; }
.dashboard-mock { display: grid; grid-template-columns: 150px 1fr; min-width: 0; min-height: 330px; overflow: hidden; border: 1px solid #cbc8df; border-radius: 20px; background: #fff; box-shadow: var(--shadow-lg); }
.mock-sidebar { display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem 1rem; background: var(--brand-primary-dark); color: #dadaea; font-size: .78rem; }
.mock-sidebar strong { margin-bottom: 1rem; color: #fff; font-size: 1.2rem; }
.mock-content { min-width: 0; padding: 1.5rem; }
.mock-heading { display: flex; justify-content: space-between; gap: 1rem; }
.mock-heading small { color: var(--brand-secondary-dark); font-weight: 800; text-transform: uppercase; }
.mock-heading h3 { margin: .2rem 0 1.5rem; }
.mock-notification { color: var(--brand-accent); }
.mock-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem; }
.mock-grid article { display: grid; min-width: 0; gap: .6rem; padding: 1rem; border: 1px solid var(--brand-border); border-radius: 12px; }
.mock-grid article:first-child { grid-column: 1 / -1; }
.mock-grid span { color: var(--brand-text-muted); font-size: .75rem; }
.mock-grid strong { font-size: .9rem; }
.mock-progress { height: 8px; overflow: hidden; border-radius: 99px; background: #e6e7ef; }
.mock-progress i { display: block; width: 58%; height: 100%; border-radius: inherit; background: var(--brand-secondary); }
.faq-section { max-width: 900px; margin-inline: auto; }
.faq-list { display: grid; gap: .75rem; }
.faq-item { overflow: hidden; border: 1px solid var(--brand-border); border-radius: 14px; background: #fff; }
.faq-item h3 { margin: 0; }
.faq-item button { display: flex; width: 100%; min-height: 58px; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.2rem; border: 0; background: transparent; color: var(--brand-text); text-align: left; font: inherit; font-weight: 800; cursor: pointer; }
.faq-item button span:last-child { color: var(--brand-secondary-dark); font-size: 1.5rem; transition: transform .2s ease; }
.faq-item button[aria-expanded="true"] span:last-child { transform: rotate(45deg); }
.faq-item [data-faq-panel] { padding: 0 1.2rem 1.2rem; color: var(--brand-text-muted); }
.faq-item [data-faq-panel] p { margin: 0; }
.public-page-hero { margin-bottom: 0; }
.about-pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.content-card, .contact-card { padding: 1.6rem; border: 1px solid var(--brand-border); border-radius: 16px; background: #fff; box-shadow: var(--shadow-sm); }
.content-card h2, .contact-card h3 { margin: .5rem 0; }
.content-card p, .contact-card p { margin: 0; color: var(--brand-text-muted); }
.method-section { max-width: 1000px; margin-inline: auto; }
.contact-layout { display: grid; grid-template-columns: .8fr 1.2fr; gap: clamp(2rem, 6vw, 5rem); }
.contact-cards { display: grid; gap: 1rem; }
.contact-card a { font-weight: 750; }
.footer-tools { display: flex; align-items: center; gap: 1rem; }
.footer-language { border-color: #4c4a72; background: #17134a; }
.footer-language button[aria-pressed="true"] { color: #fff; }

.whatsapp-contact {
  position: fixed;
  z-index: 800;
  right: max(1.25rem, env(safe-area-inset-right));
  bottom: max(1.25rem, env(safe-area-inset-bottom));
  max-width: calc(100vw - 2.5rem);
}
.whatsapp-contact__link {
  display: inline-flex;
  min-height: 52px;
  align-items: center;
  gap: .65rem;
  padding: .65rem 1rem .65rem .72rem;
  border: 2px solid rgba(255, 255, 255, .92);
  border-radius: 999px;
  background: #128c4a;
  box-shadow: 0 10px 28px rgba(11, 43, 34, .24);
  color: #fff;
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.2;
  text-decoration: none;
  transition: background-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.whatsapp-contact__link:hover {
  background: #08783c;
  box-shadow: 0 12px 32px rgba(11, 43, 34, .3);
  transform: translateY(-2px);
}
.whatsapp-contact__link:focus-visible {
  outline: 3px solid var(--brand-accent);
  outline-offset: 3px;
}
.whatsapp-contact__icon { width: 28px; height: 28px; flex: 0 0 28px; }

@media (prefers-reduced-motion: reduce) {
  .whatsapp-contact__link { transition: none; }
  .whatsapp-contact__link:hover { transform: none; }
}

@media (max-width: 900px) {
  .benefit-grid-six, .format-grid { grid-template-columns: repeat(2, 1fr); }
  .journey-timeline { grid-template-columns: 1fr; gap: 1rem; }
  .journey-step { min-height: 70px; padding: 0 0 0 3.7rem; }
  .journey-step::before { top: 40px; left: 19px; width: 2px; height: calc(100% + 1rem); }
  .session-preview-grid { grid-template-columns: repeat(2, 1fr); }
  .dashboard-preview-section { grid-template-columns: 1fr; }
  .about-pillars { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .benefit-grid-six, .format-grid, .session-preview-grid, .contact-layout { grid-template-columns: 1fr; }
  .course-format-section { padding-block: 2.5rem; }
  .dashboard-mock { grid-template-columns: 1fr; min-height: 0; }
  .mock-sidebar { flex-direction: row; flex-wrap: wrap; }
  .mock-sidebar strong { width: 100%; margin: 0; }
  .mock-grid { grid-template-columns: 1fr; }
  .mock-grid article:first-child { grid-column: auto; }
  .footer-tools { align-items: flex-start; flex-direction: column; }
  .whatsapp-contact {
    right: max(.85rem, env(safe-area-inset-right));
    bottom: max(.85rem, env(safe-area-inset-bottom));
    max-width: calc(100vw - 1.7rem);
  }
  .whatsapp-contact__link {
    width: 52px;
    min-height: 52px;
    justify-content: center;
    padding: 0;
  }
  .whatsapp-contact__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .whatsapp-contact__icon { width: 28px; height: 28px; flex-basis: 28px; }
}

/* Strict Stitch homepage fidelity overrides */
.public-header { min-height: 76px; padding-inline: max(2rem, calc((100% - 1280px) / 2)); }
.public-header .header-brand img { width: auto; height: 52px; }
.public-main { width: min(100% - 2rem, 1280px); padding-bottom: 0; }
.stitch-hero { min-height: 540px; }
.stitch-hero-media img { object-position: 52% 50%; }
.stitch-hero-overlay { background: rgb(11 20 36 / 38%); }
.stitch-hero-overlay::before { position: absolute; inset: 0 auto 0 0; width: 64%; background: rgb(11 20 36 / 76%); content: ""; }
.stitch-hero-inner { width: min(100% - 4rem, 1280px); padding-block: 4rem; }
.stitch-hero h1 { max-width: 650px; font-size: 3rem; line-height: 1.1; }
.stitch-hero p { max-width: 610px; margin-top: 1.25rem; font-size: 1rem; line-height: 1.6; }
.stitch-hero .hero-actions { display: flex; flex-direction: row; gap: 1rem; margin-top: 1.75rem; }
.stitch-hero .button { min-width: 180px; min-height: 48px; border-radius: 8px; font-size: .82rem; text-transform: uppercase; }
.stitch-benefits { padding-block: 4rem; }
.stitch-benefits .centered-intro { max-width: 680px; }
.stitch-benefits .section-intro h2,
.stitch-courses .section-intro h2 { font-size: 2rem; line-height: 1.2; }
.stitch-benefits .section-intro p { margin-top: .75rem; font-size: 1rem; }
.stitch-bento { gap: 1.5rem; margin-top: 2.5rem; }
.stitch-benefit-card { min-height: 174px; padding: 1.5rem; border-color: rgb(198 198 205 / 62%); border-radius: 16px; box-shadow: 0 4px 20px rgb(15 23 42 / 5%); }
.stitch-benefit-card h3 { margin: 1rem 0 .4rem; font-size: 1rem; }
.stitch-benefit-card p { font-size: .88rem; line-height: 1.55; }
.stitch-benefit-wide { min-height: 174px; background: #fff; color: var(--stitch-ink); }
.stitch-benefit-wide h3 { color: var(--stitch-ink); }
.stitch-benefit-wide p { color: #526174; }
.stitch-benefit-wide .stitch-benefit-icon { background: #86f2e4; color: #006f66; }
.stitch-benefit-icon { width: 36px; height: 36px; background: #86f2e4; color: #006f66; }
.stitch-benefit-card:nth-child(even) .stitch-benefit-icon { background: var(--stitch-navy); color: #fff; }
.stitch-courses { padding-block: 4rem; }
.stitch-courses .section-heading { align-items: flex-end; }
.stitch-course-grid { gap: 1.5rem; margin-top: 2rem; }
.stitch-course-grid-empty { grid-template-columns: 2fr 1fr; }
.stitch-course-grid-empty .empty-state { display: flex; min-height: 260px; align-items: center; flex-direction: column; justify-content: center; margin: 0; }
.stitch-course-card,
.catalogue-card { min-height: 360px; border-radius: 16px; box-shadow: 0 4px 20px rgb(15 23 42 / 5%); }
.stitch-course-top { position: relative; min-height: 180px; align-items: center; justify-content: center; overflow: hidden; background: var(--stitch-navy); }
.stitch-course-top::before { position: absolute; width: 180px; height: 180px; border: 42px solid rgb(134 242 228 / 12%); border-radius: 50%; content: ""; }
.stitch-course-top span { position: relative; color: rgb(255 255 255 / 42%); font-size: 1.5rem; }
.stitch-course-body { min-height: 180px; padding: 1.5rem; }
.stitch-course-body h3 { margin: 1.1rem 0; font-size: 1.15rem; }
.stitch-course-footer { padding-top: 1rem; border-top: 1px solid var(--stitch-border); }
.catalogue-card { align-items: center; flex-direction: column; justify-content: center; border-style: dashed; background: #e5eeff; color: var(--stitch-ink); text-align: center; }
.catalogue-card:hover { background: #dce9ff; color: var(--stitch-ink); }
.catalogue-card span { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; background: #d3e4fe; }
.catalogue-card strong { max-width: 240px; font-size: 1.15rem; }
.stitch-final-cta { min-height: 190px; margin-top: 0; padding-block: 3.5rem; border-radius: 0; background: var(--stitch-navy); }
.stitch-final-cta h2 { font-size: 2rem; }
.site-footer { padding: 3.5rem max(2rem, calc((100% - 1280px) / 2)) 1.5rem; background: var(--stitch-navy); }
.footer-grid { gap: 2rem; }
.footer-brand { width: 170px; padding: .5rem; border-radius: 8px; }
.footer-grid > div { gap: .4rem; }
.footer-grid > div:first-child p { max-width: 280px; margin-top: .75rem; font-size: .85rem; line-height: 1.55; }
.footer-grid h2 { margin-bottom: .35rem; }
.footer-grid a,
.footer-grid span { font-size: .85rem; }
.footer-bottom { margin-top: 2rem; padding-top: 1rem; }

@media (max-width: 1024px) {
  .stitch-benefits { padding-block: 3.5rem; }
  .stitch-benefit-card { grid-column: span 6; }
  .stitch-benefit-wide { grid-column: span 12; }
  .stitch-course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalogue-card { grid-column: 1 / -1; min-height: 210px; }
}

@media (max-width: 700px) {
  .public-header { min-height: 68px; padding-inline: 1rem; }
  .public-header .header-brand img { height: 48px; }
  .public-main { width: min(100% - 1rem, 1280px); }
  .stitch-hero { min-height: 520px; }
  .stitch-hero-media img { object-position: 56% 50%; }
  .stitch-hero-overlay { background: rgb(11 20 36 / 72%); }
  .stitch-hero-overlay::before { display: none; }
  .stitch-hero-inner { width: min(100% - 2rem, 1280px); padding-block: 3rem; }
  .stitch-hero h1 { font-size: 2rem; }
  .stitch-hero .hero-actions { flex-direction: column; }
  .stitch-hero .button { width: 100%; }
  .stitch-benefits { padding-block: 3.5rem; }
  .stitch-benefits .section-intro h2,
  .stitch-courses .section-intro h2 { font-size: 1.75rem; }
  .stitch-bento { gap: 1rem; margin-top: 2rem; }
  .stitch-benefit-card,
  .stitch-benefit-wide { grid-column: 1 / -1; min-height: 0; border-radius: 16px; }
  .stitch-courses { padding: 3.5rem 1rem; }
  .stitch-courses .section-heading { align-items: flex-start; }
  .stitch-course-grid { grid-template-columns: 1fr; gap: 1rem; }
  .stitch-course-grid-empty { grid-template-columns: 1fr; }
  .catalogue-card { grid-column: auto; min-height: 190px; }
  .stitch-final-cta { min-height: 0; padding: 3rem 1rem; }
  .stitch-final-cta .button { width: 100%; }
  .site-footer { padding: 3rem 1rem 1.25rem; }
}

/* Final measured alignment with the approved Stitch homepage. */
.public-header { min-height: 64px; padding-inline: max(2rem, calc((100% - 1280px) / 2)); }
.public-header .header-brand,
.public-header .header-brand picture { height: 48px; }
.public-header .header-brand img { height: 46px; }
.public-header .public-navigation { gap: 1.25rem; }
.public-header .public-navigation > a:not(.button) { padding-block: .35rem; font-size: .88rem; }
.public-header .public-navigation > a[aria-current="page"]:not(.button) { border-bottom: 2px solid var(--public-teal); color: var(--public-navy); }
.public-header .nav-register { min-height: 38px; padding: .6rem 1rem; border-radius: 4px; }
.public-header .nav-register { border-color: var(--public-navy); background: var(--public-navy); color: #fff; }
.public-header .language-switcher { padding: .45rem .65rem; }

.stitch-hero { min-height: min(75vh, 620px); }
.stitch-hero-overlay { background: linear-gradient(90deg, rgb(11 20 36 / 94%) 0%, rgb(11 20 36 / 90%) 34%, rgb(11 20 36 / 68%) 55%, rgb(11 20 36 / 24%) 78%, rgb(11 20 36 / 16%) 100%); }
.stitch-hero-overlay::before { display: none; }
.stitch-hero-inner { padding-block: 4rem; }
.stitch-hero h1 { max-width: 660px; font-size: 3rem; }
.stitch-hero p { max-width: 575px; margin-top: 1.5rem; font-size: 1.125rem; line-height: 1.6; }
.stitch-hero .hero-actions { gap: 1.5rem; margin-top: 2.5rem; }

.stitch-benefits { padding-block: 4rem; }
.stitch-benefits .centered-intro { margin-bottom: 0; }
.stitch-bento { gap: 1.5rem; margin-top: 4rem; }
.stitch-benefit-card { min-height: 230px; padding: 2.5rem; border-color: #e2e8f0; border-radius: 16px; box-shadow: 0 4px 20px rgb(15 23 42 / 5%); }
.stitch-benefit-card h3 { margin: 1.5rem 0 .5rem; font-size: 1.25rem; }
.stitch-benefit-card p { font-size: 1rem; line-height: 1.5; }

.stitch-courses { padding-block: 4rem; }
.stitch-course-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.stitch-course-card,
.catalogue-card { width: 100%; min-height: 350px; border-color: #c6c6cd; border-radius: 16px; box-shadow: 0 4px 20px rgb(15 23 42 / 5%); }
.stitch-course-top { min-height: 192px; }
.stitch-course-body { min-height: 158px; padding: 1.5rem; }
.catalogue-card { max-width: 100%; }

.stitch-final-cta { min-height: 156px; padding-block: 2.5rem; }
.stitch-final-cta h2 { margin-bottom: .5rem; }
.stitch-final-cta p { margin: 0; }
.site-footer { padding-top: 3rem; }
.footer-grid { grid-template-columns: 2fr repeat(3, 1fr); gap: 1.5rem; }
.footer-bottom { margin-top: 2rem; }
.footer-legal { display: flex; align-items: center; gap: 1.5rem; color: #b8c2d3; }
.footer-legal p { margin: 0; }
.footer-legal span { font-size: .8rem; }

@media (max-width: 1024px) {
  .stitch-benefit-card { min-height: 210px; padding: 2rem; }
  .stitch-course-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalogue-card { grid-column: auto; }
  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
  .public-header { min-height: 60px; padding-inline: 1rem; }
  .public-header .header-brand,
  .public-header .header-brand picture { height: 44px; }
  .public-header .header-brand img { height: 42px; }
  .stitch-hero { min-height: 520px; }
  .stitch-hero-overlay { background: linear-gradient(90deg, rgb(11 20 36 / 86%) 0%, rgb(11 20 36 / 76%) 62%, rgb(11 20 36 / 54%) 100%); }
  .stitch-hero-inner { padding-block: 2.75rem; }
  .stitch-hero h1 { font-size: 2rem; }
  .stitch-hero p { margin-top: 1.25rem; font-size: 1rem; }
  .stitch-hero .hero-actions { gap: 1rem; margin-top: 2rem; }
  .stitch-benefits { padding-block: 3rem; }
  .stitch-bento { margin-top: 2rem; }
  .stitch-benefit-card { min-height: 0; padding: 1.5rem; }
  .stitch-benefit-card h3 { margin-top: 1rem; font-size: 1.1rem; }
  .stitch-courses { padding-block: 3rem; }
  .stitch-course-grid { grid-template-columns: 1fr; }
  .stitch-course-card,
  .catalogue-card { min-height: 0; }
  .catalogue-card { min-height: 180px; }
  .stitch-final-cta { min-height: 0; padding-block: 2.5rem; }
  .site-footer { padding-top: 2.5rem; }
  .footer-grid { grid-template-columns: 1fr; gap: 1.75rem; }
  .footer-legal { align-items: flex-start; flex-wrap: wrap; gap: .5rem 1rem; }
}

/* Academic Vision: shared public pages from the final Stitch references. */
:root {
  --public-navy: #021f48;
  --public-navy-soft: #1d355e;
  --public-teal: #006a60;
  --public-teal-soft: #8cf5e4;
  --public-canvas: #f7f9fb;
  --public-surface: #fff;
  --public-surface-low: #f2f4f6;
  --public-ink: #191c1e;
  --public-muted: #44474e;
  --public-outline: #c4c6d0;
  --public-coral: #f67a5b;
  --public-card-shadow: 0 10px 25px rgb(29 53 94 / 5%);
}

.public-main:has(.public-stitch-page),
.public-main:has(.public-auth-shell) { width: 100%; max-width: none; padding: 0; background: var(--public-canvas); }
.public-stitch-page,
.public-auth-shell { color: var(--public-ink); font-family: Inter, "Segoe UI", Arial, sans-serif; }
.public-stitch-page h1,
.public-stitch-page h2,
.public-stitch-page h3,
.public-auth-shell h1,
.public-auth-shell h2 { color: var(--public-navy); font-family: Manrope, "Segoe UI", Arial, sans-serif; letter-spacing: 0; }
.public-stitch-page { min-height: 55vh; padding: 5rem max(1.25rem, calc((100% - 1280px) / 2)); }
.public-page-intro { max-width: 920px; margin-bottom: 4rem; }
.public-page-intro h1 { margin: 0 0 1rem; font-size: 3rem; line-height: 1.17; }
.public-page-intro > p:last-child { margin: 0; color: var(--public-muted); font-size: 1.125rem; line-height: 1.55; }
.public-page-intro .eyebrow { margin-bottom: 1rem; color: var(--public-teal); }
.compact-intro { max-width: 760px; margin-bottom: 6.5rem; }
.public-chip-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.public-chip { display: inline-flex; min-height: 30px; align-items: center; padding: .25rem .85rem; border-radius: 999px; background: #e0e3e5; color: var(--public-muted); font-size: .82rem; font-weight: 700; }
.public-chip-teal { background: var(--public-teal-soft); color: #005048; }
.button-coral { border-color: var(--public-coral); background: var(--public-coral); color: #fff; }
.button-coral:hover { border-color: #dc6145; background: #dc6145; color: #fff; }
.public-stitch-page .button-disabled { border-color: #e0e3e5; background: #e0e3e5; color: #74777f; box-shadow: none; }

.catalogue-page { padding-bottom: 6.5rem; }
.catalogue-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.catalogue-course-card { display: flex; min-width: 0; min-height: 445px; flex-direction: column; overflow: hidden; border: 1px solid var(--public-outline); border-radius: 16px; background: var(--public-surface); box-shadow: var(--public-card-shadow); }
.catalogue-card-main { display: flex; flex: 1; flex-direction: column; padding: 1.9rem; }
.catalogue-course-card h2 { margin: 1.35rem 0 .75rem; font-size: 1.5rem; line-height: 1.32; }
.catalogue-course-card p { margin: 0; color: var(--public-muted); font-size: 1rem; line-height: 1.55; }
.catalogue-course-card .online-course-label { display: flex; align-items: center; gap: .65rem; margin-top: 1.5rem; color: var(--public-ink); font-size: .9rem; font-weight: 700; }
.catalogue-next-session { margin-top: .75rem; color: var(--public-muted); }
.catalogue-card-footer { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.25rem; margin-inline: 1.9rem; padding-block: 1.4rem 1.9rem; border-top: 1px solid var(--public-outline); }
.catalogue-price { display: flex; min-width: 130px; flex-direction: column; }
.catalogue-price strong { color: var(--public-navy); font-family: Manrope, "Segoe UI", Arial, sans-serif; font-size: 1.7rem; line-height: 1.2; }
.catalogue-price small { margin-top: .25rem; color: var(--public-muted); }
.catalogue-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .75rem; }
.catalogue-actions .button { white-space: nowrap; }
.catalogue-empty { max-width: 800px; min-height: 260px; margin-inline: auto; }

.course-detail-page { padding-top: 4rem; }
.course-detail-page .back-link { max-width: 1280px; margin: 0 auto 2rem; }
.course-detail-layout { display: grid; max-width: 1280px; grid-template-columns: minmax(0, 2fr) minmax(300px, .92fr); align-items: start; gap: 2.5rem; margin-inline: auto; }
.course-detail-primary > h1 { max-width: 800px; margin: 1.25rem 0 .75rem; font-size: 3rem; line-height: 1.16; }
.course-detail-lead { max-width: 790px; margin: 0 0 2rem; color: var(--public-muted); font-size: 1.125rem; line-height: 1.55; }
.course-detail-image { position: relative; min-height: 390px; margin: 0 0 1.5rem; overflow: hidden; border-radius: 16px; background: var(--public-navy); }
.course-detail-image img { width: 100%; height: 100%; min-height: 390px; object-fit: cover; }
.course-detail-image figcaption { position: absolute; right: 0; bottom: 0; left: 0; display: flex; align-items: center; gap: .65rem; padding: 3rem 1.5rem 1.25rem; background: linear-gradient(transparent, rgb(2 31 72 / 78%)); color: #fff; font-weight: 700; }
.course-information-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.public-info-card { padding: 1.5rem; border: 1px solid var(--public-outline); border-radius: 16px; background: #fff; box-shadow: var(--public-card-shadow); }
.public-info-card h2 { display: inline; margin-left: .75rem; font-size: 1.35rem; }
.public-info-card p { margin: 1.25rem 0 0; color: var(--public-muted); line-height: 1.55; white-space: pre-line; }
.public-info-icon { display: inline-grid; width: 38px; height: 38px; place-items: center; border-radius: 8px; background: #e4f4f1; color: var(--public-teal); font-weight: 800; }
.public-info-icon-navy { background: #e6e8ea; color: var(--public-navy); }
.detail-summary { display: grid; gap: 1rem; margin: 1.25rem 0 0; }
.detail-summary dt { color: #74777f; font-size: .78rem; font-weight: 700; text-transform: uppercase; }
.detail-summary dd { margin: .2rem 0 0; color: var(--public-ink); }
.course-about-card { margin-top: 1rem; }
.course-about-card h2 { margin-left: 0; }
.course-enrolment-panel { position: sticky; top: 88px; padding: 1.75rem; border: 1px solid var(--public-outline); border-radius: 16px; background: #fff; box-shadow: var(--public-card-shadow); }
.course-price-line { display: flex; align-items: baseline; gap: .65rem; }
.course-price-line strong { color: var(--public-navy); font-family: Manrope, "Segoe UI", Arial, sans-serif; font-size: 2rem; }
.course-price-line span { color: var(--public-muted); }
.course-panel-status { margin: .5rem 0 1.5rem; font-size: .9rem; font-weight: 700; }
.course-panel-status.is-open { color: var(--public-teal); }
.course-panel-status.is-closed { color: #ba1a1a; }
.course-enrolment-panel > .button { width: 100%; margin-bottom: .75rem; }
.course-panel-includes { margin-top: 1rem; padding-top: 1.25rem; border-top: 1px solid var(--public-outline); }
.course-panel-includes h2 { font-size: .95rem; }
.course-panel-includes ul { display: grid; gap: .8rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.course-panel-includes li { display: flex; gap: .7rem; color: var(--public-muted); }
.course-panel-includes li > span:first-child { color: var(--public-teal); font-weight: 800; }
.stitch-session-section { max-width: 1280px; margin: 4rem auto 0; }
.stitch-session-section .public-session-card { border-color: var(--public-outline); border-radius: 16px; box-shadow: var(--public-card-shadow); }

.public-auth-shell { display: grid; width: min(calc(100% - 4rem), 1480px); min-height: 760px; grid-template-columns: minmax(360px, 1fr) minmax(480px, 1fr); margin: 3rem auto 5rem; overflow: hidden; border: 1px solid #e0e3e5; border-radius: 20px; background: #fff; box-shadow: var(--public-card-shadow); }
.public-auth-visual { position: relative; display: flex; min-height: 100%; align-items: center; justify-content: center; overflow: hidden; padding: 4rem; background: var(--public-navy); color: #fff; }
.registration-visual::before { position: absolute; inset: 0; background: linear-gradient(rgb(2 31 72 / 82%), rgb(2 31 72 / 90%)), url('/images/public/registration-academic-pattern.jpg') center / cover; content: ""; }
.auth-visual-content { position: relative; z-index: 1; display: flex; max-width: 460px; align-items: center; flex-direction: column; text-align: center; }
.auth-visual-content img { width: 170px; height: auto; padding: .75rem; border-radius: 12px; background: #fff; }
.auth-visual-content h2 { margin: 2rem 0 .75rem; color: #fff; font-size: 2.5rem; line-height: 1.2; text-transform: uppercase; }
.auth-visual-content p { max-width: 420px; margin: 0; color: #fff; font-family: Manrope, "Segoe UI", Arial, sans-serif; font-size: 1.25rem; font-weight: 700; }
.auth-visual-content small { margin-top: 5rem; color: var(--public-teal-soft); font-weight: 700; }
.login-visual { align-items: stretch; justify-content: flex-start; }
.login-visual .auth-visual-content { align-items: flex-start; justify-content: space-between; text-align: left; }
.login-visual .auth-visual-content img { width: 145px; }
.login-visual .auth-visual-content h2 { max-width: 440px; text-transform: none; }
.public-auth-form-panel { display: flex; justify-content: center; flex-direction: column; padding: 4rem 5rem; }
.public-auth-heading { margin-bottom: 2.5rem; }
.public-auth-heading .eyebrow { color: var(--public-teal); }
.public-auth-heading h1 { margin: .5rem 0 .75rem; font-size: 2.25rem; }
.public-auth-heading > p:last-child { margin: 0; color: var(--public-muted); line-height: 1.5; }
.public-stitch-form { display: grid; gap: .85rem; }
.public-stitch-form label { margin-top: .4rem; color: var(--public-ink); font-size: .9rem; font-weight: 700; }
.public-stitch-form input,
.public-stitch-form select { width: 100%; min-height: 52px; padding: .8rem 1rem; border: 1px solid var(--public-outline); border-radius: 8px; background: var(--public-surface-low); color: var(--public-ink); }
.public-stitch-form input:focus,
.public-stitch-form select:focus { border-color: var(--public-navy); outline: 2px solid rgb(2 31 72 / 12%); outline-offset: 1px; }
.public-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.public-form-grid > div { display: grid; gap: .85rem; align-content: start; }
.public-stitch-form small,
.public-stitch-form .form-hint { margin: 0; color: var(--public-muted); font-size: .78rem; }
.public-stitch-form .level-guidance { padding: .75rem 1rem; border-left: 3px solid var(--public-teal); background: #eef9f7; }
.public-stitch-form .level-guidance p { margin: 0; }
.public-auth-submit { width: 100%; margin-top: 1rem; }
.public-login-shell .public-auth-submit { border-color: var(--public-navy); background: var(--public-navy); color: #fff; }
.auth-alternative { margin: 1.75rem 0 0; color: var(--public-muted); text-align: center; }
.auth-alternative a { color: var(--public-navy); font-weight: 800; }
.selected-course { display: flex; flex-direction: column; gap: .35rem; padding: 1rem; border: 1px solid var(--public-outline); border-radius: 8px; background: var(--public-surface-low); }

.contact-page { padding-bottom: 6rem; }
.contact-stitch-layout { display: grid; max-width: 1120px; grid-template-columns: .95fr 1.05fr; gap: 4rem; margin-inline: auto; }
.contact-copy h2 { margin: .75rem 0 1rem; font-size: 1.5rem; }
.contact-copy > p:last-child { color: var(--public-muted); }
.contact-channel-panel { display: grid; gap: 1rem; padding: 2rem; border: 1px solid var(--public-outline); border-radius: 16px; background: #fff; box-shadow: var(--public-card-shadow); }
.contact-channel { display: flex; align-items: center; gap: 1rem; padding: 1.25rem; border: 1px solid #e0e3e5; border-radius: 12px; }
.contact-channel-icon { display: grid; width: 48px; height: 48px; flex: 0 0 48px; place-items: center; border-radius: 50%; background: #d7e2ff; color: var(--public-navy); font-weight: 800; }
.contact-channel h3 { margin: 0 0 .25rem; font-size: 1rem; }
.contact-channel a,
.contact-channel div > span { color: var(--public-muted); }
.contact-channel-panel .contact-empty { margin: 0; }

.about-page { padding-bottom: 6rem; }
.about-intro { max-width: 850px; }
.about-pillars { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin-bottom: 6.5rem; }
.about-pillar-card { min-height: 235px; padding: 2rem; border: 1px solid #e0e3e5; border-radius: 16px; background: #fff; box-shadow: var(--public-card-shadow); }
.about-pillar-card > span { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; background: #f2f4f6; color: var(--public-navy); font-weight: 700; }
.about-pillar-card:nth-child(2) > span { background: #e4f8f5; color: var(--public-teal); }
.about-pillar-card:nth-child(3) > span { background: #fff4f1; color: #83260e; }
.about-pillar-card h2 { margin: 1.5rem 0 .75rem; font-size: 1.35rem; }
.about-pillar-card p { margin: 0; color: var(--public-muted); line-height: 1.55; }
.about-method { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 3rem; }
.about-method figure { min-height: 470px; margin: 0; overflow: hidden; border-radius: 16px; box-shadow: var(--public-card-shadow); }
.about-method picture { display: block; height: 100%; }
.about-method img { width: 100%; height: 100%; min-height: 470px; object-fit: cover; }
.about-method-copy { display: grid; gap: 2rem; }
.about-method-copy h2 { margin: 0 0 .75rem; font-size: 1.65rem; }
.about-method-copy p { margin: 0; color: var(--public-muted); line-height: 1.6; }
.site-footer { background: var(--public-navy); }

@media (max-width: 1024px) {
  .public-stitch-page { padding-block: 4rem; }
  .catalogue-grid { grid-template-columns: 1fr; }
  .course-detail-layout { grid-template-columns: 1fr; }
  .course-enrolment-panel { position: static; }
  .public-auth-shell { width: min(calc(100% - 3rem), 900px); grid-template-columns: 1fr; }
  .public-auth-visual { min-height: 360px; }
  .login-visual .auth-visual-content { align-items: center; text-align: center; }
  .auth-visual-content small { margin-top: 2rem; }
  .contact-stitch-layout { gap: 2rem; }
  .about-method { grid-template-columns: .9fr 1.1fr; gap: 2rem; }
}

@media (max-width: 700px) {
  .public-stitch-page { padding: 3rem 1rem; }
  .public-page-intro { margin-bottom: 2.5rem; }
  .public-page-intro h1,
  .course-detail-primary > h1 { font-size: 2rem; line-height: 1.25; }
  .public-page-intro > p:last-child,
  .course-detail-lead { font-size: 1rem; }
  .compact-intro { margin-bottom: 3rem; }
  .catalogue-course-card { min-height: 0; }
  .catalogue-card-main { padding: 1.25rem; }
  .catalogue-card-footer { align-items: stretch; flex-direction: column; margin-inline: 1.25rem; padding-bottom: 1.25rem; }
  .catalogue-actions { justify-content: stretch; }
  .catalogue-actions .button { flex: 1; }
  .course-detail-page { padding-top: 2.5rem; }
  .course-detail-page .back-link { margin-bottom: 1.5rem; }
  .course-detail-image,
  .course-detail-image img { min-height: 270px; }
  .course-information-grid { grid-template-columns: 1fr; }
  .course-enrolment-panel { padding: 1.25rem; }
  .public-auth-shell { width: 100%; min-height: 0; margin: 0; border: 0; border-radius: 0; }
  .public-auth-visual { min-height: 270px; padding: 2rem 1rem; }
  .auth-visual-content img { width: 105px; }
  .auth-visual-content h2 { margin-top: 1rem; font-size: 1.65rem; }
  .auth-visual-content p { font-size: 1rem; }
  .auth-visual-content small { margin-top: 1rem; }
  .public-auth-form-panel { padding: 2.5rem 1rem 3rem; }
  .public-auth-heading { margin-bottom: 1.5rem; }
  .public-auth-heading h1 { font-size: 2rem; }
  .public-form-grid { grid-template-columns: 1fr; }
  .contact-stitch-layout { grid-template-columns: 1fr; }
  .contact-channel-panel { padding: 1rem; }
  .about-pillars { grid-template-columns: 1fr; gap: 1rem; margin-bottom: 3rem; }
  .about-pillar-card { min-height: 0; padding: 1.5rem; }
  .about-method { grid-template-columns: 1fr; }
  .about-method figure,
  .about-method img { min-height: 320px; }
}
.register-progress{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;list-style:none;padding:0;margin:0 0 1.5rem}.register-progress li{padding:.65rem;border-bottom:3px solid #d9d8e8;font-size:.78rem}.register-progress li.is-active{border-color:#6b4eff;color:#17105c;font-weight:700}.register-step h3{margin-top:0}.register-step-actions{display:flex;justify-content:space-between;gap:1rem;margin-top:1.5rem}.register-recap{display:grid;grid-template-columns:minmax(130px,.7fr) 1.3fr;gap:.7rem;margin:0}.register-recap dt{font-weight:700}.register-recap dd{margin:0}.student-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:.75rem}.student-filters label{display:grid;gap:.25rem}@media(max-width:640px){.register-progress{grid-template-columns:repeat(2,1fr)}.register-recap{grid-template-columns:1fr}.register-recap dd{margin-bottom:.5rem}}
