:root{--blue:#1e52ab;--navy:#0f295b;--green:#74bf2e;--text:#1e293b;--muted:#64748b}
*{box-sizing:border-box}html{min-height:100%}body{margin:0}button,input{font:inherit}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #2c6ae37a;outline-offset:3px}[hidden]{display:none!important}
.portal-body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;font-family:'Plus Jakarta Sans',Arial,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased;background-color:#f3f7fb;background-image:radial-gradient(rgba(30,82,171,.10) 1px,transparent 1px),radial-gradient(ellipse at 0% 0%,rgba(30,82,171,.13),transparent 50%),radial-gradient(ellipse at 100% 0%,rgba(116,191,46,.14),transparent 50%),radial-gradient(ellipse at 100% 100%,rgba(30,82,171,.08),transparent 50%),radial-gradient(ellipse at 0% 100%,rgba(116,191,46,.07),transparent 50%);background-size:24px 24px,100% 100%,100% 100%,100% 100%,100% 100%;background-attachment:fixed}::selection{background:var(--green);color:white}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.portal-header{display:flex;align-items:center;padding:16px 24px;min-height:69px;border-bottom:1px solid #e2e8f099;background:#ffffffb3;backdrop-filter:blur(12px);position:relative;z-index:2}.portal-name{display:inline-flex;align-items:center;gap:9px;transition:transform .2s}.portal-name:hover{transform:scale(1.02);text-decoration:none}.portal-cap{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:linear-gradient(45deg,var(--navy),var(--blue));color:white;box-shadow:0 4px 9px #1e52ab40}.portal-name strong,.portal-name small{display:block;text-transform:uppercase}.portal-name strong{font-size:14px;font-weight:800;letter-spacing:.7px;line-height:19px;color:var(--navy)}.portal-name small{font-size:11px;line-height:15px;font-weight:700;letter-spacing:1.1px;color:#5c9b23}
.portal-main{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 24px}.portal-container{width:100%;max-width:430px}.portal-card{position:relative;background:#fffffff0;backdrop-filter:blur(16px);border:1px solid #ffffffcc;box-shadow:0 25px 50px -12px #0f295b38,0 0 0 1px #ffffffb3;border-radius:24px;padding:40px 35px 35px;overflow:hidden}.portal-card:before{content:'';position:absolute;inset:0 0 auto;height:6px;background:linear-gradient(90deg,var(--blue),#2c6ae3,var(--green))}.school-logo{display:flex;flex-direction:column;align-items:center;width:max-content;max-width:100%;margin:0 auto 22px;user-select:none}.school-wordmark{position:relative;line-height:1.15}.school-wordmark span{font-family:'Plus Jakarta Sans',Arial,sans-serif;font-size:36px;font-weight:800;font-style:italic;letter-spacing:-1.6px;color:var(--blue);padding-left:8px;text-shadow:0 1px 2px #1e52ab1a}.logo-cap{position:absolute;top:-14px;left:-12px;width:32px;height:32px;transform:rotate(-12deg);filter:drop-shadow(0 2px 1px #0f172a22)}.school-underline{height:6px;align-self:stretch;border-radius:50px;background:var(--green);margin:4px 0;box-shadow:0 2px 3px #74bf2e30}.school-subtitle{font-size:12px;letter-spacing:3.35px;text-transform:uppercase;font-weight:800;color:var(--blue);margin-right:-3.35px}.card-heading{text-align:center;margin:0 0 28px}.card-heading h1{font-size:20px;line-height:1.4;font-weight:700;letter-spacing:-.4px;margin:0}.card-heading p{font-size:12px;line-height:1.6;color:var(--muted);margin:5px 0 0}
.auth-field{margin-bottom:18px}.auth-field label{display:block;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#334155;margin:0 0 7px 4px}.label-row{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:7px}.label-row label{margin-bottom:0}.label-row a{font-size:11px;font-weight:600;white-space:nowrap;letter-spacing:-.15px}.input-wrap{position:relative}.field-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#94a3b8;pointer-events:none}.input-wrap:focus-within .field-icon{color:var(--blue)}.input-wrap input{display:block;width:100%;min-height:48px;padding:12px 14px 12px 43px;background:#f8fafacc;border:1px solid #e2e8f0e6;border-radius:12px;font-size:14px;font-weight:500;color:#0f172a;box-shadow:0 1px 2px #0f172a08;transition:background .2s,border-color .2s,box-shadow .2s}.input-wrap input:hover{background:#f8fafc}.input-wrap input:focus{outline:none;background:white;border-color:var(--blue);box-shadow:0 0 0 3px #1e52ab30}.input-wrap input::placeholder{color:#94a3b8;font-weight:400;font-size:13px;opacity:1}.input-wrap input.has-toggle{padding-right:44px}.password-toggle{position:absolute;top:0;right:0;bottom:0;padding:0 13px;border:0;background:transparent;color:#94a3b8;display:flex;align-items:center;border-radius:0 12px 12px 0}.password-toggle:hover{color:#475569}.remember{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:#475569;margin:3px 0 20px;cursor:pointer}.remember input{margin:0;width:16px;height:16px;accent-color:var(--blue);cursor:pointer}.auth-submit{width:100%;min-height:49px;padding:14px 12px;border:0;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:9px;background:linear-gradient(135deg,#1e52ab 0%,#2c6ae3 60%,#1e52ab 100%);background-size:200% auto;transition:transform .2s,background-position .3s;box-shadow:0 10px 25px -5px #1e52ab73;font-size:14px;font-weight:700;color:white;text-align:center}.auth-submit:hover{background-position:right center;transform:translateY(-1.5px);text-decoration:none}.auth-submit:active{transform:translateY(0)}.auth-submit .icon{width:16px;height:16px}.auth-submit[disabled]{opacity:.8;transform:none}.button-spinner{display:none;width:16px;height:16px;border:2px solid #ffffff50;border-top-color:white;border-radius:50%;animation:auth-spin .7s linear infinite}.is-loading .button-spinner{display:block}.is-loading .submit-arrow{display:none}@keyframes auth-spin{to{transform:rotate(360deg)}}
.auth-divider{display:flex;align-items:center;gap:12px;text-align:center;margin:25px 0 23px;color:#94a3b8;font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase}.auth-divider:before,.auth-divider:after{content:'';flex:1;border-top:1px solid #e2e8f0}.auth-links{text-align:center;font-size:12px;line-height:1.7;color:var(--muted)}.auth-links p{margin:0 0 8px}.register-link{color:#5c9b23;font-weight:800;display:inline-flex;align-items:center;gap:3px;margin-left:3px}.auth-links .icon{width:14px;height:14px}.back-link{color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:500}.back-link:hover{color:var(--blue)}.auth-return{margin-top:25px}.portal-footer{text-align:center;color:var(--muted);font-size:11px;line-height:1.7;margin:23px -8px 0}.auth-message{padding:12px 13px;margin:0 0 20px;border:1px solid;border-radius:12px;font-size:12px;line-height:1.7;overflow-wrap:anywhere}.auth-message.error{background:#fff1f2;color:#9f1239;border-color:#fecdd3}.auth-message.success{background:#f0fdf4;color:#166534;border-color:#bbf7d0}.auth-hint{text-align:center;font-size:12px;color:var(--muted);line-height:1.7;margin:20px 0 0}.auth-captcha{margin-bottom:18px;overflow:auto}
@media(max-width:480px){.portal-header{padding:14px 18px;min-height:65px}.portal-main{padding:27px 16px}.portal-card{padding:35px 25px 28px}.school-wordmark span{font-size:32px}.school-logo{margin-bottom:23px}.card-heading{margin-bottom:25px}.label-row{flex-wrap:wrap;row-gap:6px}.label-row label{font-size:10px}.label-row a{font-size:10px}.auth-field label{letter-spacing:.65px}.portal-footer{font-size:10px}.register-link{margin-left:0}.portal-card .auth-links{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
