@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.login{color:#0e1a35;background:#1b1440;place-items:center;min-height:100vh;padding:24px;font-family:Instrument Sans Variable,system-ui,sans-serif;display:grid;position:relative;overflow:hidden;isolation:isolate}
.login:before{content:"";background:url(/campus.jpg) center/cover no-repeat;z-index:-2;animation:loginBgIn 1.4s ease both,loginDrift 38s ease-in-out 1.4s infinite alternate;will-change:transform;position:fixed;inset:-3%}
.login:after{content:"";z-index:-1;background:linear-gradient(180deg,#1b144024,#0000 35%,#0000 65%,#1b14402e);position:fixed;inset:0}
.login-card{-webkit-backdrop-filter:blur(18px) saturate(1.25);backdrop-filter:blur(18px) saturate(1.25);background:#ffffffd1;border:1px solid #ffffffb3;border-radius:30px;gap:14px;width:min(100%,400px);padding:28px 24px;display:grid;box-shadow:0 24px 70px #0c0a2a59;animation:loginCardIn .9s cubic-bezier(.16,.84,.3,1) .15s both}.login-card h1{letter-spacing:-.02em;margin:6px 0 0;font-size:28px}.login-card p{color:#6b7688;margin:0 0 6px;line-height:1.5}.login-card label{gap:6px;display:grid}.login-card label span{color:#566786;font-size:13.5px;font-weight:600}.login-card input{font:inherit;color:inherit;background:#fff;border:1px solid #dce1ef;border-radius:14px;width:100%;padding:12px 14px;font-size:16px}.login-card input:focus-visible,.login-card button:focus-visible{outline-offset:2px;outline:2px solid #1f5fe0}.login-card button{color:#fff;background:linear-gradient(#2f6df2,#1f5fe0);border:0;border-radius:16px;margin-top:4px;padding:14px;font-size:16px;font-weight:700;box-shadow:0 6px 16px #1f5fe047}.login-card button:disabled{opacity:.6}.login-err{color:#b3262b;background:#fdeaea;border-radius:12px;padding:10px 12px;font-size:14.5px}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}button,input,select{font:inherit;color:inherit}button{cursor:pointer}[hidden]{display:none!important}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.gate{color:#f0e9db;text-align:center;background:#14231b;place-items:center;min-height:100vh;padding:24px;font-family:system-ui,sans-serif;display:grid}.gate h1{margin:16px 0 8px;font-size:22px}.gate p{opacity:.75;max-width:38ch;margin:0 auto;line-height:1.5}.gate img{width:48px;height:48px}.gate button{color:#14231b;background:#f0e9db;border:0;border-radius:8px;margin-top:20px;padding:10px 18px;font-weight:600}

.login-card>*{animation:loginItemIn .6s cubic-bezier(.2,.7,.2,1) both}
.login-card>:nth-child(1){animation-delay:.35s}.login-card>:nth-child(2){animation-delay:.42s}.login-card>:nth-child(3){animation-delay:.49s}.login-card>:nth-child(4){animation-delay:.56s}.login-card>:nth-child(5){animation-delay:.63s}.login-card>:nth-child(6){animation-delay:.7s}.login-card>:nth-child(7){animation-delay:.77s}
.login-card .crest{object-fit:contain;filter:drop-shadow(0 6px 10px #1b144033);animation:loginItemIn .6s cubic-bezier(.2,.7,.2,1) .35s both,loginFloat 6s ease-in-out 1.2s infinite}
.login-card input{transition:border-color .2s,box-shadow .2s}
.login-card input:focus{border-color:#1f5fe0;box-shadow:0 0 0 4px #1f5fe026;outline:none}
.login-card button{transition:transform .18s,box-shadow .18s,filter .18s}
.login-card button:not(:disabled):hover{transform:translateY(-1px);filter:brightness(1.05);box-shadow:0 10px 22px #1f5fe059}
.login-card button:not(:disabled):active{transform:translateY(0)}
.pw-wrap{display:block;position:relative}
.pw-wrap input{padding-right:48px}
.login-card .pw-eye{color:#566786;box-shadow:none;background:0 0;border-radius:10px;place-items:center;width:38px;height:38px;margin:0;padding:0;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}
.login-card .pw-eye:not(:disabled):hover{color:#1f5fe0;background:#eef1fb;box-shadow:none;transform:translateY(-50%);filter:none}
.login-card .pw-eye:not(:disabled):active{transform:translateY(-50%)}
.login-card .pw-eye:focus-visible{outline-offset:0}
.gate{background:#1b1440}
.gate img{box-sizing:border-box;background:#fff;border-radius:16px;width:64px;height:64px;padding:6px}
@keyframes loginBgIn{0%{opacity:0}to{opacity:1}}
@keyframes loginDrift{0%{transform:scale(1) translate3d(0,0,0)}to{transform:scale(1.1) translate3d(-1.5%,-1%,0)}}
@keyframes loginCardIn{0%{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
@keyframes loginItemIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes loginFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}
@media (prefers-reduced-motion:reduce){.login:before,.login-card,.login-card>*,.login-card .crest{animation:none!important}}
.login-card>.login-err{animation:loginErrIn .35s cubic-bezier(.2,.7,.2,1) 0s both}
@keyframes loginErrIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

.login-card{-webkit-backdrop-filter:blur(10px) saturate(1.15);backdrop-filter:blur(10px) saturate(1.15);background:#ffffffc7}
@media (min-width:900px){.login{place-items:center end;padding-right:clamp(32px,9vw,150px)}.login:before{background-position:left center}}
