:root {
  --ink: #08163b;
  --navy: #071536;
  --blue: #0b45d6;
  --blue-dark: #082c94;
  --cyan: #20c8d8;
  --gold: #dfa900;
  --paper: #f4f7fd;
  --white: #fff;
  --muted: #657089;
  --line: rgba(8, 22, 59, 0.13);
  --success: #07865a;
  --danger: #b72d42;
  --shadow: 0 24px 70px rgba(15, 55, 148, 0.12);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { min-height: 100%; scroll-behavior: smooth; background: var(--paper); }
body { min-height: 100%; margin: 0; background: var(--paper); color: var(--ink); font-family: "Plus Jakarta Sans", "Segoe UI", Arial, sans-serif; text-rendering: optimizeLegibility; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
button { cursor: pointer; }
.admission-shell { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }
.skip-link { position: fixed; z-index: 100; top: 10px; left: 10px; transform: translateY(-160%); border-radius: 8px; background: var(--navy); color: white; padding: 12px 16px; }
.skip-link:focus { transform: translateY(0); }

.admission-header { position: relative; z-index: 30; border-bottom: 1px solid rgba(8, 22, 59, 0.09); background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(15px); }
.header-inner { display: flex; min-height: 88px; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: block; width: min(265px, 42vw); }
.brand img { display: block; width: 100%; height: auto; max-height: 68px; object-fit: contain; object-position: left center; }
.header-inner nav { display: flex; align-items: center; gap: 10px; }
.header-inner nav a, .header-inner nav button { min-height: 44px; border: 0; border-radius: 13px; background: transparent; color: var(--ink); font-size: 14px; font-weight: 800; padding: 12px 16px; }
.header-inner nav button { border: 1px solid rgba(11, 69, 214, 0.2); background: #edf3ff; color: var(--blue); }

.admission-hero { position: relative; overflow: hidden; background: linear-gradient(112deg, #fff 0 49%, #eaf4ff 49% 100%); }
.admission-hero::before { position: absolute; width: 600px; height: 600px; right: -220px; top: -300px; border-radius: 50%; background: radial-gradient(circle, rgba(32, 200, 216, 0.22), rgba(11, 69, 214, 0.02) 67%, transparent 68%); content: ""; }
.hero-grid { position: relative; display: grid; min-height: 455px; align-items: center; grid-template-columns: 1.25fr 0.75fr; gap: 70px; padding-top: 50px; padding-bottom: 62px; }
.eyebrow { display: inline-flex; color: var(--blue); font-size: 12px; font-weight: 900; letter-spacing: 0.14em; text-transform: uppercase; }
.hero-copy h1 { max-width: 760px; margin: 17px 0 18px; font-size: clamp(48px, 6vw, 76px); letter-spacing: -0.065em; line-height: 0.98; }
.hero-copy h1 em { color: var(--blue); font-style: normal; }
.hero-copy > p { max-width: 650px; margin: 0; color: var(--muted); font-size: 17px; line-height: 1.75; }
.hero-points { display: flex; flex-wrap: wrap; gap: 10px 24px; margin-top: 34px; }
.hero-points span { display: flex; align-items: center; gap: 9px; color: #33405d; font-size: 13px; font-weight: 800; }
.hero-points i { display: grid; width: 31px; height: 31px; place-items: center; border-radius: 10px; background: #e9f0ff; color: var(--blue); font-size: 9px; font-style: normal; font-weight: 950; }
.hero-status-card { position: relative; display: flex; min-height: 290px; align-items: center; justify-content: center; flex-direction: column; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.32); border-radius: 42px; background: radial-gradient(circle at 80% 20%, rgba(32, 200, 216, 0.9), transparent 32%), linear-gradient(145deg, #0c4ee0, #062a91); box-shadow: 0 30px 80px rgba(11, 69, 214, 0.25); color: white; padding: 38px; text-align: center; }
.status-orbit { position: absolute; width: 260px; height: 260px; right: -105px; bottom: -120px; border: 1px solid rgba(255, 255, 255, 0.27); border-radius: 50%; }
.status-orbit::before { position: absolute; width: 170px; height: 170px; top: 42px; left: 42px; border: 1px solid rgba(255, 255, 255, 0.22); border-radius: 50%; content: ""; }
.status-icon { display: grid; width: 62px; height: 62px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.36); border-radius: 21px; background: rgba(255, 255, 255, 0.15); box-shadow: inset 0 1px rgba(255, 255, 255, 0.25); font-size: 28px; font-weight: 900; }
.hero-status-card p { margin: 22px 0 6px; color: rgba(255, 255, 255, 0.68); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.hero-status-card strong { font-size: 27px; letter-spacing: -0.04em; }
.hero-status-card small { max-width: 260px; margin-top: 12px; color: rgba(255, 255, 255, 0.64); font-size: 12px; line-height: 1.6; }

.portal-section { position: relative; padding: 0 0 85px; }
.portal-tabs { position: relative; z-index: 4; display: inline-flex; gap: 5px; margin-top: -28px; border: 1px solid var(--line); border-radius: 17px; background: white; box-shadow: 0 16px 40px rgba(8, 44, 148, 0.12); padding: 5px; }
.portal-tabs button { min-height: 48px; border: 0; border-radius: 12px; background: transparent; color: var(--muted); font-size: 13px; font-weight: 850; padding: 12px 20px; }
.portal-tabs button.active { background: var(--navy); color: white; }
.portal-alert { margin: 22px 0; border: 1px solid rgba(183, 45, 66, 0.25); border-radius: 15px; background: #fff0f2; color: #922439; font-size: 15px; line-height: 1.6; padding: 15px 18px; }
.portal-alert.success { border-color: rgba(7, 134, 90, 0.22); background: #eafaf4; color: #086d4d; }

.portal-panel { display: grid; min-height: 720px; grid-template-columns: 300px minmax(0, 1fr); margin-top: 24px; overflow: hidden; border: 1px solid var(--line); border-radius: 31px; background: white; box-shadow: var(--shadow); }
.step-sidebar { display: flex; flex-direction: column; background: radial-gradient(circle at 40% 96%, rgba(32, 200, 216, 0.15), transparent 28%), var(--navy); color: white; padding: 35px 28px; }
.step-intro { display: flex; flex-direction: column; gap: 8px; margin-bottom: 35px; }
.step-intro span { color: var(--cyan); font-size: 10px; font-weight: 900; letter-spacing: 0.14em; text-transform: uppercase; }
.step-intro strong { font-size: 21px; line-height: 1.3; }
.step-sidebar ol { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.step-sidebar li { position: relative; display: grid; min-height: 74px; align-items: center; grid-template-columns: 42px 1fr; gap: 12px; border: 1px solid transparent; border-radius: 16px; color: rgba(255, 255, 255, 0.45); padding: 10px; transition: background 160ms ease, color 160ms ease; }
.step-sidebar li::after { position: absolute; width: 1px; height: 16px; left: 30px; bottom: -12px; background: rgba(255, 255, 255, 0.18); content: ""; }
.step-sidebar li:last-child::after { display: none; }
.step-sidebar li.active { border-color: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.085); color: white; }
.step-sidebar li.complete { color: rgba(255, 255, 255, 0.72); }
.step-sidebar li i { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 13px; background: rgba(255, 255, 255, 0.08); color: var(--cyan); font-size: 11px; font-style: normal; font-weight: 950; }
.step-sidebar li.complete i { background: var(--success); color: white; }
.step-sidebar li div { display: flex; flex-direction: column; gap: 4px; }
.step-sidebar li strong { font-size: 13px; }
.step-sidebar li small { color: inherit; font-size: 10px; line-height: 1.4; }
.privacy-card { display: flex; align-items: center; gap: 11px; margin-top: auto; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; background: rgba(255, 255, 255, 0.06); padding: 15px; }
.privacy-card > span { display: grid; min-width: 37px; height: 37px; place-items: center; border-radius: 12px; background: rgba(32, 200, 216, 0.12); color: var(--cyan); }
.privacy-card p { display: flex; flex-direction: column; gap: 3px; margin: 0; }
.privacy-card strong { font-size: 11px; }
.privacy-card small { color: rgba(255, 255, 255, 0.5); font-size: 9px; line-height: 1.5; }
.form-card { min-width: 0; padding: 46px clamp(28px, 5vw, 68px); }
.portal-loading { display: flex; min-height: 500px; align-items: center; justify-content: center; flex-direction: column; gap: 16px; color: var(--muted); }
.portal-loading span { width: 42px; height: 42px; border: 4px solid #e5ecfb; border-top-color: var(--blue); border-radius: 50%; animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.mobile-progress { display: none; }
.form-step { margin: 0; border: 0; padding: 0; }
.form-step legend { display: flex; width: 100%; flex-direction: column; gap: 7px; margin-bottom: 30px; padding: 0; }
.form-step legend > span { color: var(--blue); font-size: 11px; font-weight: 900; letter-spacing: 0.13em; text-transform: uppercase; }
.form-step legend > strong { max-width: 620px; font-size: clamp(28px, 3.3vw, 42px); letter-spacing: -0.05em; line-height: 1.08; }
.form-step legend > small { color: var(--muted); font-size: 14px; line-height: 1.6; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field-grid label, #status-form label { display: flex; min-width: 0; flex-direction: column; gap: 8px; }
.field-wide { grid-column: 1 / -1; }
.field-grid label > span, .service-field > span, #status-form label > span { color: #37425c; font-size: 13px; font-weight: 800; }
.field-grid b { color: var(--danger); }
.field-grid label > span small { color: var(--muted); font-size: 10px; font-weight: 600; }
input, select, textarea { width: 100%; min-height: 52px; border: 1px solid rgba(8, 22, 59, 0.15); border-radius: 14px; outline: 0; background: white; color: var(--ink); font-size: 16px; padding: 13px 15px; transition: border 160ms ease, box-shadow 160ms ease; }
textarea { min-height: 115px; resize: vertical; line-height: 1.6; }
input:focus, select:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(11, 69, 214, 0.1); }
input:invalid:not(:placeholder-shown), textarea:invalid:not(:placeholder-shown) { border-color: rgba(183, 45, 66, 0.5); }
input[type="checkbox"] { width: 20px; min-height: 20px; height: 20px; padding: 0; accent-color: var(--blue); }
.service-field { display: flex; flex-direction: column; gap: 9px; }
.choice-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.choice-row label { display: flex; min-height: 85px; align-items: center; flex-direction: row; gap: 12px; border: 1px solid var(--line); border-radius: 16px; background: #f9fbff; padding: 15px; }
.choice-row label > span { display: flex; flex-direction: column; gap: 4px; }
.choice-row label strong { color: var(--ink); font-size: 14px; }
.choice-row label small { color: var(--muted); font-size: 10px; }
.upload-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; }
.file-field { min-height: 145px; justify-content: center; border: 1px dashed rgba(11, 69, 214, 0.3); border-radius: 16px; background: #f7faff; padding: 16px; }
.file-field input { min-height: auto; border: 0; background: transparent; font-size: 11px; padding: 8px 0 0; }
.file-field small { color: var(--muted); font-size: 9px; line-height: 1.4; }
.file-selection { color: var(--muted); font-size: 10px; font-style: normal; font-weight: 750; line-height: 1.45; }
.file-selection.ready { color: var(--success); }
.application-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 22px; }
.application-summary article { border: 1px solid var(--line); border-radius: 16px; background: #f8faff; padding: 16px; }
.application-summary small { display: block; margin-bottom: 5px; color: var(--muted); font-size: 10px; text-transform: uppercase; }
.application-summary strong { font-size: 14px; }
.consent-list { display: grid; gap: 12px; }
.consent-list label { display: grid; align-items: start; grid-template-columns: 22px 1fr; gap: 10px; border: 1px solid var(--line); border-radius: 15px; padding: 15px; }
.consent-list label span { color: #35415b; font-size: 13px; line-height: 1.6; }
.consent-list label a { color: var(--blue); font-weight: 850; text-decoration: underline; text-underline-offset: 2px; }
.submission-note { display: flex; align-items: center; gap: 11px; margin-top: 18px; border-radius: 14px; background: #edf3ff; color: #1c3f97; padding: 13px; }
.submission-note > span { display: grid; min-width: 30px; height: 30px; place-items: center; border-radius: 10px; background: white; font-weight: 900; }
.submission-note p { margin: 0; font-size: 12px; line-height: 1.55; }
.form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 32px; border-top: 1px solid var(--line); padding-top: 22px; }
.button-primary, .button-secondary, .button-link { display: inline-flex; min-height: 52px; align-items: center; justify-content: center; gap: 14px; border: 0; border-radius: 14px; font-size: 14px; font-weight: 850; padding: 13px 20px; }
.button-primary { background: linear-gradient(135deg, var(--blue), var(--blue-dark)); box-shadow: 0 13px 28px rgba(11, 69, 214, 0.22); color: white; }
.button-primary:hover { transform: translateY(-1px); }
.button-primary:disabled { cursor: wait; opacity: 0.55; transform: none; }
.button-secondary { border: 1px solid var(--line); background: white; color: var(--ink); }
.button-link { background: transparent; color: var(--blue); }
.honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

.application-success { max-width: 700px; margin: 0 auto; padding: 35px 0; text-align: center; }
.success-mark { display: grid; width: 70px; height: 70px; place-items: center; margin: 0 auto; border-radius: 23px; background: #e4f8ef; color: var(--success); font-size: 31px; font-weight: 950; }
.application-success > p:first-of-type { margin: 22px 0 8px; color: var(--success); font-size: 12px; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase; }
.application-success h2 { margin: 0; font-size: clamp(30px, 4vw, 44px); letter-spacing: -0.05em; }
.reference-card { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 30px; border: 1px solid rgba(11, 69, 214, 0.18); border-radius: 21px; background: #f4f8ff; padding: 12px; }
.reference-card div { border-radius: 15px; background: white; padding: 20px; }
.reference-card small { display: block; margin-bottom: 7px; color: var(--muted); font-size: 10px; text-transform: uppercase; }
.reference-card strong { color: var(--blue); font-size: clamp(18px, 3vw, 27px); letter-spacing: 0.02em; }
.success-warning { max-width: 520px; margin: 18px auto 0; color: var(--danger); font-size: 12px; line-height: 1.6; }
.success-upload-summary { display: grid; gap: 5px; margin: 18px 0; border: 1px solid rgba(7, 134, 90, 0.2); border-radius: 15px; background: #eafaf4; color: #086d4d; padding: 15px; text-align: left; }
.success-upload-summary strong { font-size: 13px; }
.success-upload-summary span { overflow-wrap: anywhere; font-size: 11px; line-height: 1.5; }
.success-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 9px; margin-top: 25px; }

.status-layout { grid-template-columns: 0.82fr 1.18fr; min-height: 580px; }
.status-copy-card { display: flex; justify-content: center; flex-direction: column; background: radial-gradient(circle at 20% 85%, rgba(32, 200, 216, 0.15), transparent 28%), var(--navy); color: white; padding: clamp(35px, 6vw, 70px); }
.status-copy-card .eyebrow { color: var(--cyan); }
.status-copy-card h2 { margin: 15px 0; font-size: clamp(36px, 5vw, 57px); letter-spacing: -0.055em; line-height: 1.05; }
.status-copy-card > p { margin: 0; color: rgba(255, 255, 255, 0.62); font-size: 15px; line-height: 1.75; }
.status-help { display: flex; align-items: center; gap: 12px; margin-top: 45px; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 17px; background: rgba(255, 255, 255, 0.06); padding: 15px; }
.status-help > span { display: grid; min-width: 38px; height: 38px; place-items: center; border-radius: 12px; background: rgba(32, 200, 216, 0.13); color: var(--cyan); font-weight: 900; }
.status-help p { display: flex; flex-direction: column; gap: 3px; margin: 0; }
.status-help strong { font-size: 12px; }
.status-help small { color: rgba(255, 255, 255, 0.5); font-size: 10px; line-height: 1.5; }
.status-form-card { display: flex; justify-content: center; flex-direction: column; padding: clamp(35px, 7vw, 82px); }
#status-form { display: grid; gap: 18px; }
#status-form .button-primary { margin-top: 5px; }
.status-result { margin-top: 25px; }
.status-result-head { display: flex; align-items: start; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--line); padding-bottom: 18px; }
.status-result-head span { color: var(--blue); font-size: 11px; font-weight: 900; text-transform: uppercase; }
.status-result-head h3 { margin: 6px 0 0; font-size: 25px; }
.status-pill { display: inline-flex; border-radius: 999px; background: #e9f8f2; color: var(--success); font-size: 10px; font-weight: 900; padding: 8px 11px; text-transform: uppercase; }
.status-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 17px 0; }
.status-meta article { border-radius: 13px; background: #f7f9fd; padding: 13px; }
.status-meta small { display: block; margin-bottom: 4px; color: var(--muted); font-size: 9px; text-transform: uppercase; }
.status-meta strong { font-size: 12px; }
.status-timeline { display: grid; gap: 0; margin-top: 20px; }
.status-timeline article { position: relative; display: grid; grid-template-columns: 34px 1fr; gap: 11px; padding-bottom: 18px; }
.status-timeline article::after { position: absolute; width: 1px; height: calc(100% - 30px); left: 16px; top: 29px; background: #d8e2f8; content: ""; }
.status-timeline article:last-child::after { display: none; }
.status-timeline i { display: grid; width: 33px; height: 33px; place-items: center; border-radius: 11px; background: #edf3ff; color: var(--blue); font-size: 10px; font-style: normal; font-weight: 950; }
.status-timeline strong { display: block; font-size: 13px; }
.status-timeline p { margin: 4px 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.status-timeline small { color: #8b94a8; font-size: 9px; }

.admission-footer { background: white; border-top: 1px solid var(--line); }
.admission-footer .admission-shell { display: flex; min-height: 100px; align-items: center; justify-content: space-between; gap: 20px; }
.admission-footer p { color: var(--muted); font-size: 12px; }
.admission-footer div div { display: flex; flex-wrap: wrap; gap: 18px; }
.admission-footer a { color: var(--blue); font-size: 12px; font-weight: 800; }
.noscript-message { position: fixed; z-index: 99; right: 15px; bottom: 15px; left: 15px; border-radius: 12px; background: #fff0f2; color: var(--danger); padding: 15px; text-align: center; }

.privacy-main { padding-top: 70px; padding-bottom: 90px; }
.privacy-main > h1 { max-width: 800px; margin: 15px 0; font-size: clamp(46px, 7vw, 76px); letter-spacing: -0.06em; line-height: 1; }
.privacy-lead { max-width: 800px; margin: 0 0 42px; color: var(--muted); font-size: 18px; line-height: 1.75; }
.privacy-main section { max-width: 850px; margin-top: 15px; border: 1px solid var(--line); border-radius: 19px; background: white; padding: 24px; }
.privacy-main section h2 { margin: 0 0 8px; font-size: 20px; }
.privacy-main section p { margin: 0; color: #4f5b73; font-size: 15px; line-height: 1.75; }
.privacy-main section a { color: var(--blue); font-weight: 800; }
.privacy-updated { margin-top: 28px; color: var(--muted); font-size: 12px; }

@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap: 34px; padding-top: 45px; }
  .hero-status-card { min-height: 230px; }
  .portal-panel { grid-template-columns: 1fr; }
  .step-sidebar { display: none; }
  .mobile-progress { display: flex; flex-direction: column; gap: 8px; margin-bottom: 28px; }
  .mobile-progress span { color: var(--blue); font-size: 11px; font-weight: 900; }
  .mobile-progress > div { height: 7px; overflow: hidden; border-radius: 999px; background: #e8eefb; }
  .mobile-progress i { display: block; width: 25%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--cyan)); transition: width 180ms ease; }
  .mobile-progress i[data-progress-step="2"] { width: 50%; }
  .mobile-progress i[data-progress-step="3"] { width: 75%; }
  .mobile-progress i[data-progress-step="4"] { width: 100%; }
  .status-layout { grid-template-columns: 1fr; }
  .status-copy-card { min-height: 380px; }
}

@media (max-width: 640px) {
  .admission-shell { width: min(100% - 24px, 1180px); }
  .header-inner { min-height: 76px; }
  .brand { width: 190px; }
  .header-inner nav a { display: none; }
  .header-inner nav button { font-size: 12px; padding: 10px 12px; }
  .admission-hero { background: linear-gradient(155deg, #fff 0 62%, #eaf4ff 62% 100%); }
  .hero-grid { min-height: auto; padding-top: 38px; padding-bottom: 58px; }
  .hero-copy h1 { font-size: 45px; }
  .hero-copy > p { font-size: 16px; }
  .hero-points { display: grid; gap: 10px; }
  .hero-status-card { min-height: 210px; border-radius: 27px; padding: 28px; }
  .portal-tabs { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .portal-tabs button { padding: 10px; }
  .portal-panel { min-height: 600px; border-radius: 23px; }
  .form-card { padding: 28px 18px 34px; }
  .form-step legend > strong { font-size: 30px; }
  .field-grid { grid-template-columns: 1fr; gap: 15px; }
  .field-wide { grid-column: auto; }
  .choice-row, .upload-grid, .application-summary, .reference-card, .status-meta { grid-template-columns: 1fr; }
  .file-field { min-height: 125px; }
  .file-field small,
  .file-selection,
  .choice-row label small,
  .reference-card small,
  .status-meta small,
  .status-timeline small,
  .status-timeline p {
    font-size: 12px;
  }
  .success-upload-summary strong { font-size: 14px; }
  .success-upload-summary span { font-size: 13px; }
  .status-pill { font-size: 12px; }
  .form-actions { display: grid; grid-template-columns: 1fr; }
  .form-actions .button-primary { grid-row: 1; }
  .success-actions { display: grid; }
  .status-copy-card { min-height: 340px; padding: 36px 24px; }
  .status-form-card { padding: 34px 20px; }
  .status-result-head { flex-direction: column; }
  .admission-footer .admission-shell { align-items: flex-start; flex-direction: column; padding: 25px 0; }
  .admission-footer p { margin: 0; }
  .admission-footer div div { display: grid; gap: 9px; }
}

@media print {
  .admission-header, .admission-hero, .portal-tabs, .step-sidebar, .form-actions, .success-actions, .admission-footer { display: none !important; }
  body, .portal-section, .portal-panel, .form-card { background: white; box-shadow: none; }
  .portal-panel { display: block; min-height: 0; border: 0; }
  .application-success { display: block !important; }
}
