/* Self-hosted authentication, responsive and keyboard accessible. */
.social-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.social-button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;background:#fff;border:1px solid #c9d3dd;border-radius:10px;color:#183549;padding:12px 16px;font:600 14px/1.3 system-ui,sans-serif;cursor:pointer;text-align:left}.social-button:hover{border-color:var(--brand-accent,#087e85);background:#f1f8f8}.social-button:focus-visible{outline:3px solid var(--brand-highlight,#ebaf35);outline-offset:3px}.social-button:disabled{opacity:.6;cursor:wait}.auth-divider{display:flex;align-items:center;gap:14px;color:#647484;font-size:12px;margin:20px 0}.auth-divider:before,.auth-divider:after{content:"";height:1px;flex:1;background:#d8e0e6}.auth-links{display:flex;flex-wrap:wrap;gap:14px;margin:20px 0;font-size:14px}.auth-links a{color:var(--brand-primary,#12334a);text-decoration:underline;text-underline-offset:3px}.auth-body{background:#f3f6f8}.auth-layout{min-height:100vh;display:grid;grid-template-columns:minmax(320px,43%) 1fr}.auth-story{background:var(--brand-primary,#12334a);color:white;padding:50px 58px;display:flex;flex-direction:column;justify-content:space-between;gap:40px}.auth-foundation{color:white;letter-spacing:3px;font-size:13px;line-height:1.6;text-decoration:none}.auth-foundation strong{font-size:18px}.auth-story h1{font-size:clamp(38px,4vw,64px);letter-spacing:-2px;line-height:1.13;margin:25px 0}.auth-story h1 em{font-style:normal;color:#a9e0da}.auth-story p:not(.eyebrow){max-width:430px;color:#e3edf2;line-height:1.8;font-size:16px}.auth-story .eyebrow{color:#e8bd65}.auth-facts{display:flex;gap:32px;margin-top:36px;flex-wrap:wrap}.auth-facts span{display:flex;flex-direction:column;font-size:12px;color:#d5e5eb;gap:7px}.auth-facts strong{font-size:28px;color:white}.auth-main{padding:35px 7%;display:flex;flex-direction:column;justify-content:space-between;gap:30px}.auth-back{font-size:13px;color:#456172;text-decoration:none}.auth-card{max-width:490px;width:100%;margin:20px auto}.auth-card h2{font-size:32px;letter-spacing:-1px;line-height:1.2;margin:12px 0;color:var(--brand-primary,#12334a)}.auth-description{line-height:1.7;color:#546877;margin-bottom:24px}.auth-card label:not(.auth-consent){margin-top:16px}.auth-card input:not([type=checkbox]){background:white}.auth-hint{font-size:12px;color:#637583;line-height:1.7;margin:10px 0}.auth-consent{display:flex;gap:10px;align-items:flex-start;margin:22px 0;font-size:13px!important;font-weight:400!important;line-height:1.7;color:#425969}.auth-consent input{width:18px;height:18px;flex-shrink:0;margin-top:3px}.auth-small{font-size:11px!important;line-height:1.8;color:#667988}.identity-list{margin:20px 0}.identity-row{display:flex;justify-content:space-between;gap:18px;padding:16px 0;border-bottom:1px solid #dbe3e8;align-items:center}.identity-row span{display:block;font-size:12px;color:#5b7280;margin-top:6px}.identity-row .actions{display:flex;flex-wrap:wrap}.auth-success{background:#e8f5ed;color:#18573a;padding:12px 16px;border-radius:8px}.notice-document{max-width:820px;margin:50px auto;padding:30px;background:white;line-height:1.8}.notice-document h1{line-height:1.25}.notice-document .template-note{background:#fff5dc;padding:18px;border-left:4px solid #c68c1c}.notice-document a{color:#185c7b}
@media(max-width:950px){.auth-story{padding:35px 32px}.auth-layout{grid-template-columns:38% 1fr}.auth-story h1{font-size:40px}.auth-main{padding:32px 7%}.auth-facts{gap:20px}}
@media(max-width:680px){.auth-layout{display:block}.auth-story{padding:22px 24px;gap:12px}.auth-story>div,.auth-story>.auth-small{display:none}.auth-foundation{font-size:10px}.auth-foundation strong{font-size:14px}.auth-main{padding:24px;gap:20px;min-height:calc(100vh - 92px)}.auth-card{margin:12px auto}.auth-card h2{font-size:29px}.social-grid{grid-template-columns:1fr}.identity-row{align-items:flex-start;flex-direction:column}.notice-document{margin:0;padding:25px}.social-button{min-height:48px}.auth-back{display:inline-block;min-height:32px}}
/* The existing dashboard uses light labels on dark panels; auth is a light page. */
.auth-card label:not(.auth-consent){display:block;color:#203f53}.auth-card .eyebrow{color:#08727b}.auth-card input:not([type=checkbox]){color:#173548;border-color:#8da4b2}.auth-card .form-error{color:#a72c32}

/* Separate the public student entry from managed staff sign-in. */
.staff-entry{border-top:1px solid var(--border,#dce3e9);margin-top:1.8rem;padding-top:1.2rem}.staff-entry h3{font-size:1rem;margin-bottom:.4rem}.staff-entry p{font-size:.875rem;line-height:1.5;color:var(--muted,#506579)}
/* The standalone authentication page is light even when the app theme is dark. */
.auth-body .auth-main .btn.secondary {background:#fff;color:#17384c;border-color:#8ba2b3}
.auth-body .auth-main .btn.secondary:hover {background:#e7f0f5;color:#102d40}
.auth-body .auth-main .staff-entry h3 {color:#17384c}
.auth-body .auth-main .staff-entry p {color:#526a7b}
