@font-face{font-family:Comfortaa;src:url(/assets/Comfortaa-VariableFont_wght-BH_kBfim.ttf) format("truetype-variations");font-weight:300 700;font-style:normal;font-display:swap}@font-face{font-family:Ostrich Sans Heavy;src:url(/assets/OstrichSans-Heavy-DOttOc2F.otf) format("opentype");font-weight:800;font-style:normal;font-display:swap}:root{--purple:#691972;--purple-1:#9841A2;--purple-2:#B969C3;--purple-3:#D595DD;--purple-4:#F1C1F7;--pink:#A31B72;--pink-1:#C43F94;--pink-2:#DB5FAE;--pink-3:#EB85C6;--pink-4:#FFC9EB;--lemon:#CED424;--lemon-1:#E7ED44;--lemon-2:#F1F75F;--lemon-3:#FBFF90;--lemon-4:#FDFFC3;--green:#4F8E3A;--green-1:#70B15B;--green-2:#90CB7D;--green-3:#B7E2A8;--green-4:#E1F5DA;--ink:#241329;--slate-90:#2E1B34;--slate-70:#5A4560;--slate-50:#8A7990;--slate-30:#C7BDCB;--slate-10:#EFEAF1;--white:#FFFFFF;--paper:#FBF8FC;--brand-primary:var(--purple);--brand-secondary:var(--pink);--brand-accent:var(--lemon);--brand-success:var(--green);--text-heading:var(--ink);--text-body:var(--slate-90);--text-muted:var(--slate-50);--text-on-brand:var(--white);--text-link:var(--purple);--text-link-hover:var(--pink);--surface-page:var(--paper);--surface-card:var(--white);--surface-sunken:var(--slate-10);--surface-brand:var(--purple);--surface-inverse:var(--ink);--border-subtle:var(--slate-30);--border-strong:var(--slate-50);--border-brand:var(--purple-2);--state-hover-purple:var(--purple-1);--state-active-purple:#54105c;--focus-ring:var(--pink-2)}:root{--font-display:"Ostrich Sans Heavy",sans-serif;--font-body:"Comfortaa",cursive,sans-serif;--size-h1:60px;--size-h2:48px;--size-h3:40px;--size-h4:30px;--size-h5:24px;--size-h6:18px;--size-body-lg:18px;--size-body:16px;--size-body-sm:14px;--size-caption:12px;--lh-tight:1.05;--lh-heading:1.15;--lh-body:1.6;--lh-loose:1.8;--tracking-display:.01em;--tracking-eyebrow:.14em;--tracking-body:0;--weight-regular:400;--weight-medium:500;--weight-bold:700}:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;--radius-sm:8px;--radius-md:14px;--radius-lg:24px;--radius-pill:999px;--shadow-sm:0 1px 3px rgba(36,19,41,.08);--shadow-md:0 8px 24px rgba(36,19,41,.12);--shadow-lg:0 20px 48px rgba(36,19,41,.18);--shadow-brand:0 12px 32px rgba(105,25,114,.28);--ease-standard:cubic-bezier(.4,0,.2,1);--duration-fast:.15s;--duration-base:.24s}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--surface-page);font-family:var(--font-body);color:var(--text-body)}a{color:var(--text-link)}a:hover{color:var(--text-link-hover)}button,input,select{font-family:var(--font-body)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--slate-30);border-radius:99px}.login-wrap{min-height:100vh;display:flex}.login-brand-panel{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;position:relative;overflow:hidden;padding:40px;text-align:left;background:linear-gradient(180deg,#691972bf,#150d19cc),url(/login/login-student.jpg);background-size:cover;background-position:center}.login-brand-panel img.swirl{position:absolute;left:-120px;bottom:-120px;width:420px}.login-brand-content{display:flex;flex-direction:column;align-items:flex-start;position:relative}.login-brand-panel img.logo{height:88px;margin-bottom:32px;position:relative}.login-brand-panel .tagline{font-family:var(--font-display);font-size:44px;max-width:420px;position:relative;line-height:1.1;letter-spacing:.01em}.login-form-panel{flex:1;display:flex;align-items:center;justify-content:center;background:var(--surface-page)}.login-card{width:340px;background:var(--white);border-radius:var(--radius-lg);padding:36px 40px;box-shadow:var(--shadow-lg);position:relative;z-index:1}.login-card .eyebrow{font-size:12px;font-weight:700;letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--pink);margin-bottom:6px}.login-card h1{margin:0 0 6px;font-size:26px;color:var(--text-heading);font-weight:700}.login-card p.subtitle{margin:0 0 22px;color:var(--text-muted);font-size:14px}.login-card label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:var(--text-heading)}.login-card input[type=email],.login-card input[type=password]{width:100%;height:48px;box-sizing:border-box;padding:12px 16px;border:2px solid var(--border-subtle);border-radius:var(--radius-md);font-size:15px;margin-bottom:14px;background:var(--white);font-family:var(--font-body);color:var(--text-body);outline:none;transition:border-color var(--duration-base) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard)}.login-card input:focus{border-color:var(--purple);box-shadow:0 0 0 4px #db5fae40}.login-card input::placeholder{color:var(--text-muted);opacity:1}.login-card button.btn{width:100%;margin-top:6px}.login-card .password-field{position:relative}.login-card .password-field input{padding-right:44px}.login-card .password-toggle{position:absolute;right:10px;top:0;bottom:14px;display:flex;align-items:center;background:none;border:none;cursor:pointer;font-size:18px;padding:0 6px;color:var(--text-muted);line-height:1}.login-card .password-toggle:hover{color:var(--purple)}.login-card button.btn{background:var(--purple);color:#fff;border:none;padding:14px 26px;border-radius:var(--radius-pill);font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font-body);transition:background var(--duration-base) var(--ease-standard),transform .15s var(--ease-standard)}.login-card button.btn:hover{background:var(--state-hover-purple)}.login-card button.btn:active{background:var(--state-active-purple);transform:scale(.98)}.login-card .back-link{text-align:center;margin-top:14px}.login-card .back-link a{font-size:13px;color:var(--purple);font-weight:700;text-decoration:none;cursor:pointer}.login-card .back-link a:hover{color:var(--pink)}.login-card .error-msg{background:var(--pink-4);color:var(--pink);padding:12px 16px;border-radius:var(--radius-md);font-size:13px;margin-bottom:14px;font-weight:600}.login-card .success-msg{background:var(--green-4);color:var(--green);padding:12px 16px;border-radius:var(--radius-md);font-size:13px;margin-bottom:14px;font-weight:600}.login-card .success-msg a{color:var(--green);font-weight:700}@media (max-width: 760px){.login-wrap{flex-direction:column}.login-brand-panel{padding:32px;min-height:200px}}
