[hidden]{display:none!important}html{scroll-behavior:smooth}.btn:hover{transform:translateY(-2px)}.portal-card{background:white;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 12px 36px #0e2f630c}.portal-head,.portal-tabs,.children,.filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.portal-head{justify-content:space-between;margin-bottom:20px}.portal-head h2{margin:0}.portal-tabs,.children{margin:16px 0}.portal-tabs button[aria-pressed=true],.children button[aria-pressed=true]{background:var(--navy);color:white;border-color:var(--navy)}.portal-card label{display:block;font-weight:700;margin-bottom:6px}.portal-card input,.portal-card select{font:inherit;width:100%;padding:12px;border:1px solid #bacbe0;border-radius:10px;background:white;color:var(--ink)}.login-form{max-width:420px;margin:auto}.login-form>div{margin-bottom:18px}.login-form .btn{width:100%}.portal-message{padding:16px;background:var(--panel);border-radius:12px}.portal-error{color:#9c2222;background:#fff1f1}.portal-grid,.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.datum,.stat{padding:16px;background:var(--panel);border-radius:12px;overflow-wrap:anywhere}.datum span,.stat span{display:block;color:var(--ink2)}.stat strong{font-size:24px;color:var(--navy)}.table-scroll{overflow:auto;margin-top:20px}table{width:100%;border-collapse:collapse;text-align:right}th,td{padding:13px;border-bottom:1px solid var(--line);white-space:nowrap}th{background:var(--panel)}.filters{margin-bottom:18px}.filters>div{flex:1 1 150px}.portal-body{animation:appear .25s ease}.portal-card :focus-visible{outline:3px solid var(--gold);outline-offset:3px}.portal-card button:disabled{opacity:.6;cursor:wait}.portal-note{color:var(--ink2);font-size:14px}@keyframes appear{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(max-width:560px){.portal-card{padding:16px}.portal-tabs .btn{flex:1 1 100%;white-space:normal}.portal-head .btn{padding:12px 18px}.portal-grid,.stats{grid-template-columns:1fr}.children .btn{white-space:normal}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

.login-form form>div{margin-bottom:18px}
/* A native modal keeps the live map above the sidebar and traps keyboard focus. */
.transport-map-panel{min-width:0;margin:16px 0;padding:0}
.transport-map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--ink)}
.transport-map-toolbar strong{flex:1 1 160px;min-width:0;overflow-wrap:anywhere}
.transport-map-toolbar .btn{min-height:44px;flex:0 0 auto;white-space:normal;margin:0}
.transport-map-toolbar .btn span{font-size:22px;line-height:1;vertical-align:middle;margin-inline-end:6px}
.transport-map-panel .transport-map{margin:12px 0 0}
#transportStatus:empty,#transportMapStatus:empty{display:none}
html.transport-map-expanded,html.transport-map-expanded body{overflow:hidden;overscroll-behavior:none}
.transport-map-dialog{box-sizing:border-box;position:fixed;inset:0;width:100%;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:16px;padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(12px,env(safe-area-inset-bottom));padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));background:var(--surface,#fff);color:var(--ink,#19334a);overflow:hidden}
.transport-map-dialog:not([open]){display:none}
.transport-map-dialog::backdrop{background:#0e2f63b3}
.transport-map-dialog .transport-map-panel{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;margin:0}
.transport-map-dialog .transport-map-toolbar{flex:none}
.transport-map-dialog .transport-map{flex:1 1 0;height:auto;min-height:0;max-height:none;width:100%}
.transport-map-dialog #transportMapStatus{flex:none;max-height:20vh;overflow:auto;margin:10px 0 0}
.transport-map-dialog :focus-visible{outline:3px solid var(--blue,#2563eb);outline-offset:3px}
@media(max-width:560px){.transport-map-toolbar{gap:8px}.transport-map-toolbar strong{font-size:16px}.transport-map-toolbar .btn{padding:10px 12px;font-size:14px}.transport-map-dialog .transport-map{border-radius:10px}}
.portal-pagination{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:16px 0}.portal-pagination button{max-width:100%;white-space:normal}
/* A visible, consistent scroll affordance for long tables and learning content. */
html,.table-scroll,.pr-table-wrap,#platformArea *{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb,#94a3b8) var(--scroll-track,#edf2f7)}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--scroll-track,#edf2f7);border-radius:12px}::-webkit-scrollbar-thumb{background:var(--scroll-thumb,#94a3b8);border:2px solid var(--scroll-track,#edf2f7);border-radius:12px}::-webkit-scrollbar-thumb:hover{background:var(--primary-color,#2563eb)}
html{scroll-padding-top:16px}body{overflow-wrap:break-word}.portal-body,.table-scroll,.pr-table-wrap{min-width:0;max-width:100%}
.tracking-entry{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px;margin:20px 0;background:#edf5ff;border:1px solid #bdd4f3;border-inline-start:5px solid var(--blue);border-radius:14px}.tracking-entry>div{min-width:0}.tracking-entry h3{margin:0 0 8px;color:var(--navy);font-size:23px}.tracking-child{margin:0 0 8px;overflow-wrap:anywhere}.tracking-description{margin:0;color:var(--ink2);font-size:14px;line-height:1.9}.tracking-entry .btn{flex:none;white-space:normal}.portal-tabs .transport-tab{border-color:#9abce9;background:#edf5ff;color:var(--navy)}.portal-tabs .transport-tab[aria-pressed=true]{background:var(--navy);color:#fff}.tracking-entry .btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}@media(max-width:760px){.tracking-entry{align-items:stretch;flex-direction:column;gap:16px;padding:18px}.tracking-entry .btn{width:100%}.tracking-entry h3{font-size:21px}}
[data-theme=dark] .tracking-entry{background:var(--surface);border-color:var(--line);border-inline-start-color:var(--blue)}

/* Shared published-result markup. Only server-released marks are rendered. */
.result-toolbar,.result-pagination{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:16px 0}.result-toolbar select{flex:1 1 240px;width:auto;min-width:0}.result-pagination{justify-content:center}.result-toolbar .btn,.result-pagination .btn{white-space:normal}.pr-result-card{border:1px solid #d8e3ec;border-top:5px solid #176e88;border-radius:12px;padding:24px;margin-top:18px;background:#fff;color:#19334a;overflow-wrap:anywhere}.pr-result-card header{position:static;background:transparent;color:inherit;border:0;box-shadow:none;text-align:center;padding:0}.pr-result-card h3{font-size:23px;margin:12px 0}.pr-result-card h4{font-size:21px;margin:8px 0}.pr-eyebrow{color:#176e88;font-size:13px;font-weight:700}.pr-note{color:#526579;font-size:13px;line-height:1.8}.pr-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:22px 0}.pr-summary>div{padding:14px;background:#eef7f8;border-radius:8px;display:flex;gap:8px;flex-direction:column;text-align:center}.pr-summary span{color:#4d6575;font-size:13px}.pr-summary strong{font-size:18px}.pr-table-wrap{overflow-x:auto}.pr-result-card table{border-collapse:collapse;width:100%;margin:18px 0}.pr-result-card th,.pr-result-card td{border:1px solid #dce5ed;padding:12px;text-align:start;vertical-align:top;white-space:normal}.pr-result-card thead{background:#edf4f8}.pr-result-card small{display:block;font-weight:400;color:#526579;font-size:12px;margin-top:6px}.pr-mark{display:flex;justify-content:space-between;gap:16px;padding:5px 0}.pr-mark strong{white-space:nowrap}.pr-result-card footer{background:transparent;color:#526579;border:0;text-align:center;margin-top:18px;padding:0}.pr-result-card bdi{unicode-bidi:isolate}.pr-result-card[dir=ltr]{text-align:left}.transport-map{height:390px;min-height:280px;max-height:60vh;border:1px solid #b9cbe2;border-radius:14px;z-index:0;margin:16px 0;direction:ltr}.transport-map .leaflet-control-attribution{direction:ltr}#transportStatus,#transportMapStatus,#resultStatus{overflow-wrap:anywhere}#portalPrintArea{display:none}
@media(max-width:650px){.pr-result-card{padding:12px}.pr-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.pr-result-card th,.pr-result-card td{padding:8px}.pr-mark{flex-direction:column;gap:3px}.result-toolbar .btn{flex:1 1 100%}.transport-map{height:340px}}
.pr-result-card th{background:#edf4f8;color:#19334a}.pr-result-card footer.pr-note{background:transparent;color:#526579;border:0}
@media print{body.portal-printing>*:not(#portalPrintArea){display:none!important}body.portal-printing{background:white!important;color:#19334a!important}body.portal-printing>#portalPrintArea{display:block!important;width:100%;padding:0;margin:0}.pr-result-card{border-radius:0;margin:0;padding:10px;font-size:12px;break-inside:auto}.pr-result-card tr{break-inside:avoid}.pr-table-wrap{overflow:visible}.pr-result-card header{break-after:avoid}.pr-summary{grid-template-columns:repeat(4,1fr)}.pr-mark{flex-direction:row}.pr-result-card table{font-size:12px}}

#parentPortal .portal-card:has(#loginArea:not([hidden])){background:transparent;border:0;border-radius:0;box-shadow:none;padding:0}#parentPortal:has(#loginArea:not([hidden])){background:#fff;border:0}.os-logo{width:40px;height:40px;flex:none}.android-logo{color:#228750}.ios-logo{color:#18283e}

.brand-row{justify-content:space-between;align-items:center}.school-brand,.app-brand{text-align:center;flex:0 1 44%;min-width:0}.school-logo{width:104px;height:108px;object-fit:contain;border-radius:16px}.school-brand p{color:var(--sky);margin:12px 0 0}.app-brand h1{font-size:30px;font-weight:800;margin:0 0 16px}.app-brand-logo{width:114px;height:114px;object-fit:contain;border-radius:20px}.school-details{display:grid;grid-template-columns:1fr 1fr;gap:24px}.school-details a{color:var(--blue);overflow-wrap:anywhere}@media(max-width:540px){.app-brand h1{font-size:20px}.school-brand p{font-size:13px}.school-logo{width:90px;height:94px}.app-brand-logo{width:104px;height:104px}.school-details{grid-template-columns:1fr}}
.school-gallery{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:28px}.school-gallery figure{margin:0;min-width:0}.school-gallery img{display:block;width:100%;height:240px;object-fit:contain;background:#101a30;border-radius:16px;transition:transform .25s ease}.school-gallery a{display:block;overflow:hidden;border-radius:16px}.school-gallery a:hover img{transform:scale(1.025)}.school-gallery figcaption{font-size:13px;color:#64748b;margin-top:10px;line-height:1.7}@media(max-width:640px){.school-gallery{grid-template-columns:1fr}.school-gallery img{height:auto}}@media(prefers-reduced-motion:reduce){.school-gallery img{transition:none}}
/* Compact, balanced school and application branding. */
.hero{padding:8px 0 10px}.hero>.wrap{max-width:1440px;padding-inline:32px}.brand-row{flex-wrap:nowrap;align-items:flex-start;justify-content:space-between;gap:20px}.school-brand,.app-brand{flex:0 1 auto;display:flex;flex-direction:column;align-items:center}.school-logo,.app-brand-logo{width:114px;height:114px;display:block;object-fit:contain;border-radius:16px}.school-brand p,.app-brand h1{font-size:30px;font-weight:800;line-height:1.2;margin:4px 0 0;color:#fff}.heroCta{margin-top:0;justify-content:center}.heroCta .btn{padding:12px 26px}footer b{display:block;margin-top:4px}@media(max-width:760px){.hero>.wrap{padding-inline:16px}.school-brand,.app-brand{flex-basis:48%}.school-brand p,.app-brand h1{font-size:clamp(14px,2.7vw,22px)}.school-logo,.app-brand-logo{width:100px;height:100px}.heroCta{margin-top:12px;gap:8px}.heroCta .btn{font-size:14px;padding:10px 13px}}
#admissionSection{background:linear-gradient(145deg,#f1f6fc,#fff);scroll-margin-top:16px}.admission-card{padding:28px;border:1px solid #dce5f0;border-radius:20px;background:white;box-shadow:0 12px 35px #0e2f630a}.admission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0}.admission-field{min-width:0}.admission-field label{display:block;font-weight:700;margin-bottom:7px}.admission-field input,.admission-field select{width:100%;min-height:48px;border:1px solid #b9cbe2;border-radius:10px;padding:12px;background:#fbfdff;font:inherit;color:var(--ink)}.admission-field :focus-visible{outline:3px solid #f5b324;outline-offset:2px}.admission-full{grid-column:1/-1}#admissionMessage{overflow-wrap:anywhere}#admissionSubmit{min-width:200px}#admissionSubmit:disabled{opacity:.55;cursor:wait}@media(max-width:600px){.admission-grid{grid-template-columns:1fr}.admission-card{padding:18px}#admissionSubmit{width:100%}}
.admission-tracking{background:#f4f8fd;border:1px solid #dce5f0;padding:20px;border-radius:14px;margin:20px 0 28px}.admission-tracking label{display:block;font-weight:700;margin-bottom:8px}.admission-track-row{display:flex;gap:12px;flex-wrap:wrap}.admission-track-row input{flex:1 1 250px;min-width:0;max-width:100%;border:1px solid #b9cbe2;border-radius:10px;padding:12px;font:inherit}.admission-track-row input:focus-visible{outline:3px solid #f5b324}.admission-tracking [role=status]{font-weight:700;color:var(--navy)}

/* Translate shared communications tokens to the website palette, including
   body-mounted message dialogs and alerts outside the portal card. */
:is(.school-communications,.sc-modal,.communication-alert){
 --card-bg:var(--surface);--field-bg:var(--surface-raised);--surface-soft:var(--panel);
 --muted:var(--ink2);--line-strong:var(--line);--accent:var(--blue);--accent-hover:var(--blue2);
 --accent-contrast:#fff;--accent-soft:#e8efff;--success:#137256;
 --danger:#b42338;--danger-soft:#fce9ed;--warning:#80530c;--warning-soft:#fcf2db;
}
[data-theme=dark] :is(.school-communications,.sc-modal,.communication-alert){
 --accent-contrast:#0f172a;--accent-soft:#253650;--success:var(--ok);
 --danger:#fca5a5;--danger-soft:#3f2026;--warning:var(--warn);--warning-soft:#382c19;
}
.school-communications details.sc-format{background:var(--card-bg);color:var(--ink);border-color:var(--line)}
.school-communications .sc-format summary{color:inherit}
