.auth-document{scroll-snap-type:none!important}.auth-page{min-height:100svh;background:radial-gradient(ellipse at 22% 54%,#6a1bc775,transparent 57%),radial-gradient(ellipse at 84% 15%,#631bb344,transparent 50%),var(--stage);overflow-x:clip}.auth-header{height:100px;display:flex;align-items:center;justify-content:space-between;gap:20px}.back-home{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px;color:var(--muted);transition:color .2s}.back-home:hover{color:white}.back-home span{font-size:23px}.auth-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:70px;align-items:center;min-height:calc(100svh - 180px);padding-block:24px 40px;max-width:1150px}.auth-story{position:relative;align-self:stretch;padding-top:24px;display:flex;flex-direction:column}.auth-story .kicker{font-size:12px}.auth-story h1{text-transform:none;font-size:clamp(35px,3.35vw,49px);line-height:1.14;letter-spacing:-1.5px;margin:0 0 18px}.auth-story>p{color:var(--muted);font-size:18px;line-height:1.5}.auth-illustration{position:relative;height:330px;min-height:300px;flex:1;margin-top:10px;isolation:isolate}.auth-illustration .mascot-stage{height:100%;max-height:380px;left:27%;top:auto;bottom:0}.auth-mascot{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(1.1) drop-shadow(-5px 0 16px #b55cff66);animation:mascot-in .7s var(--ease) both}.auth-illustration .orbit{inset:90px 5px 75px;z-index:-1}.auth-formula{position:absolute;left:0;top:55px;color:#b872ee99;font:italic 27px Georgia;transform:rotate(-12deg)}.auth-illustration>.sphere{width:50px;height:50px;right:15px;top:75px}.auth-sticker{position:absolute;left:0;top:49%;background:#fff2ff;border-radius:14px 14px 0 14px;padding:11px 15px;color:#6217a9;font-size:13px;font-weight:800;transform:rotate(-7deg);box-shadow:0 8px 28px #16003344}.auth-card{position:relative;z-index:2;width:100%;padding:32px;border:1px solid #a353dc;border-radius:30px;background:linear-gradient(140deg,#6529a966,#321071d9);box-shadow:inset 0 1px #e6bfff25,0 25px 75px #13042a44;animation:mascot-in .65s var(--ease) both}.auth-tabs{display:flex;padding:5px;gap:5px;border:1px solid #b16cdb44;border-radius:99px;background:#21065366}.auth-tabs a{display:grid;place-items:center;width:50%;min-height:43px;border-radius:99px;font-size:14px;font-weight:700;color:#d2b6ee;transition:background .2s,color .2s}.auth-tabs a[aria-current=page]{background:linear-gradient(#9447e9,#7222c7);box-shadow:inset 0 1px #dfb0ff55,0 3px 10px #18033344;color:white}.auth-tabs a:hover{color:white;background-color:#8440c84d}.form-heading{margin:25px 0 23px}.form-kicker{display:block;color:#d4a3ff;text-transform:uppercase;letter-spacing:1.6px;font-size:10px;font-weight:700;margin-bottom:9px}.form-heading h2{font-size:28px;line-height:1.2;letter-spacing:-.9px}.form-heading>p{font-size:14px;color:var(--muted);line-height:1.5;margin-top:9px}.field{margin-bottom:16px}.field>label{display:block;font-size:13px;font-weight:700;margin-bottom:7px}.input-wrap{position:relative}.field input{display:block;width:100%;min-height:48px;border:1px solid #af75d57a;border-radius:12px;background:#21074f80;color:white;padding:11px 14px;font:16px Arial,sans-serif;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}.field input:focus{border-color:#e1acff;background:#250955;box-shadow:0 0 0 3px #bd76ff24}.field input[aria-invalid=true]{border-color:#ffb4a9}.field input:is([type=password],[autocomplete=new-password],[autocomplete=current-password]){padding-right:55px}.field input:-webkit-autofill{-webkit-text-fill-color:white;box-shadow:0 0 0 1000px #341260 inset;caret-color:white}.password-toggle{position:absolute;right:3px;top:2px;width:44px;height:44px;display:grid;place-items:center;color:#c4a0e4;border-radius:9px}.password-toggle:hover{background:#965ada33;color:white}.password-toggle svg{width:21px;height:21px}.eye-slash{display:none}.password-toggle[aria-pressed=true] .eye-slash{display:block}.field-hint{font-size:11px;color:#c4a5df;margin-top:6px}.field-error{font-size:12px;color:#ffc5b9;line-height:1.45;margin-top:5px}.field-error:empty{display:none}.auth-submit{width:100%;margin-top:7px;min-height:53px;font-size:16px}.auth-switch{text-align:center;font-size:13px;color:var(--muted);margin-top:20px}.auth-switch a,.text-link{color:#ffbc64;font-weight:700;text-decoration:underline;text-underline-offset:4px}.auth-switch a:hover,.text-link:hover{color:#ffdb9e}.preview-note{font-size:11px;line-height:1.5;color:#c3a3dc;text-align:center;margin:14px auto 0;max-width:335px}.form-status{margin-top:17px;padding:13px 15px;border:1px solid #ae6ada;border-radius:13px;background:#36105d;color:#f1dfff;font-size:13px;line-height:1.6}.form-status[hidden]{display:none}.password-help{margin:0 0 15px;color:var(--muted);font-size:13px}.password-help summary{cursor:pointer;width:fit-content;min-height:36px;display:flex;align-items:center;color:#e3c7ff;text-decoration:underline;text-underline-offset:4px}.password-help p{padding:8px 0;line-height:1.5}.auth-footer{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:#b291cf;min-height:70px;align-items:center}.auth-page .stage-floor{opacity:.8}
@media(min-width:1024px) and (max-height:1000px){.auth-header{height:85px}.auth-layout{gap:65px;padding-block:12px 28px}.auth-card{padding:24px 30px}.auth-tabs a{min-height:38px}.form-heading{margin:20px 0}.field{margin-bottom:13px}.field input{min-height:44px}.password-toggle{height:40px}.auth-illustration{height:260px;min-height:260px}.auth-story h1{font-size:43px}.auth-story{padding-top:10px}.auth-footer{min-height:55px}.auth-switch{margin-top:16px}}
@media(max-width:1023px){.auth-layout{gap:35px}.auth-card{padding:25px}.auth-story h1{font-size:34px}.auth-story>p{font-size:16px}.auth-illustration .mascot-stage{left:10%}.auth-sticker{left:-10px;top:60%;font-size:11px}.auth-illustration>.sphere{right:-10px}.auth-formula{font-size:23px}.form-heading h2{font-size:25px}}
@media(max-width:850px){.auth-header{height:90px}.auth-layout{display:block;max-width:530px;padding:15px 0 35px;min-height:calc(100svh - 155px)}.auth-story{display:none}.auth-card{padding:30px}.auth-footer{min-height:65px}.auth-footer>span:last-child{display:none}.auth-footer{justify-content:center}}
@media(max-width:560px){.auth-header{height:85px}.back-home{font-size:12px;gap:7px}.back-home span{font-size:20px}.auth-layout{padding-top:8px}.auth-card{padding:22px 18px;border-radius:24px}.form-heading h2{font-size:25px}.form-heading>p{font-size:13px}.form-heading{margin:22px 0}.auth-tabs a{font-size:13px}.field>label{font-size:13px}.auth-switch{font-size:12px}.preview-note{font-size:11px}.auth-submit{font-size:15px}.auth-footer{font-size:11px}}
@media(prefers-reduced-motion:reduce){.auth-card,.auth-mascot{animation:none}}
.auth-fields{min-width:0;border:0;padding:0;margin:0}

.auth-mascot{animation:none}
.auth-card>.form-heading{margin-top:0}.role-options{padding:0;margin:0 0 21px;border:0;min-width:0}.role-options legend{font-size:13px;font-weight:700;margin-bottom:9px}.role-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.role-choices label{position:relative;cursor:pointer}.role-choices input{position:absolute;opacity:0;width:1px;height:1px}.role-choices span{display:grid;place-items:center;min-height:46px;border:1px solid #a864dd70;border-radius:13px;background:#270852;color:#ceb3e5;font-size:14px;font-weight:700;transition:background .2s,border-color .2s}.role-choices input:checked+span{border-color:#d797ff;background:linear-gradient(130deg,#8c39dd,#6520b3);color:white;box-shadow:inset 0 1px #e3b7ff44}.role-choices input:focus-visible+span{outline:3px solid #ffbf76;outline-offset:3px}.name-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field[hidden]{display:none}.field input::placeholder{color:#aa83cc;font-size:14px}#access-code{padding-right:55px}.auth-page .auth-mascot{transition:filter .3s}.auth-document{scroll-padding-top:0}
@media(max-width:370px){.name-fields{grid-template-columns:1fr;gap:0}}
/* A stable viewport and reserved field/feedback slots prevent role and error layout shifts. */
.auth-page{height:100dvh;min-height:0;display:grid;grid-template-rows:64px minmax(0,1fr) 30px;overflow:hidden}
.auth-header{height:64px;min-height:0}.auth-footer{height:30px;min-height:0;font-size:11px}
.auth-layout{height:100%;min-height:0;padding-block:10px;align-items:center;gap:60px}
.auth-card{height:630px;max-height:100%;padding:22px 28px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#9954ce transparent;scrollbar-gutter:stable;animation:none}
.auth-story{height:100%;min-height:0;padding-top:12px;overflow:hidden}.auth-story h1{font-size:40px}.auth-story>p{font-size:17px}.auth-illustration{height:auto;min-height:0;flex:1}
.auth-illustration .mascot-stage{max-height:360px}
.auth-card>.form-heading{margin:0 0 16px}.form-heading h2{font-size:25px}.form-heading>p{font-size:13px;line-height:1.4;margin-top:7px}
.role-options{margin:0 0 16px}.role-options legend{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.role-choices span{min-height:44px}
.name-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.field{margin:0;height:85px}.field>label{font-size:12px;margin-bottom:5px;line-height:17px}.field input{min-height:44px;height:44px;padding-block:10px}
.field-error,.field-error:empty{display:block;min-height:17px;height:17px;line-height:17px;margin:2px 0 0;font-size:11px;white-space:nowrap}
.class-slot{height:85px;position:relative}.parent-class-note{height:66px;margin:0;display:flex;align-items:center;padding:12px 15px;border:1px dashed #a866d555;border-radius:12px;font-size:12px;line-height:1.5;color:#c9a6e5}.parent-class-note[hidden]{display:none}
.password-toggle{height:40px}.password-help{height:28px;margin:2px 0 8px;position:relative;font-size:12px}.password-help summary{min-height:28px}.password-help p{position:absolute;top:28px;left:0;right:0;z-index:5;margin:0;padding:14px 16px;background:#351069;border:1px solid #ba7cef;border-radius:12px;box-shadow:0 12px 30px #18032e80;font-size:13px}
.auth-submit{margin-top:0;min-height:48px;height:48px;font-size:15px}
.form-feedback{position:relative;height:62px;margin-top:12px}.preview-note{margin:0;font-size:11px;padding:4px 0;line-height:1.5}.form-status{position:absolute;inset:0;margin:0;padding:8px 12px;font-size:12px;line-height:1.45}.form-feedback:has(.form-status:not([hidden])) .preview-note{visibility:hidden}
@media(max-width:1023px){.auth-layout{gap:25px}.auth-story h1{font-size:33px}.auth-card{padding:20px}.auth-story>p{font-size:15px}}
@media(max-width:850px){.auth-layout{display:flex;align-items:center;justify-content:center;max-width:510px;padding-block:10px}.auth-story{display:none}.auth-card{flex:none}.auth-footer{height:30px;min-height:0}.auth-header{height:64px}}
@media(max-width:560px){.auth-page{grid-template-rows:64px minmax(0,1fr) 26px}.auth-layout{padding-block:8px;width:calc(100% - 28px)}.auth-card{padding:18px 16px;height:620px;border-radius:22px}.auth-card>.form-heading{margin-bottom:14px}.form-heading h2{font-size:23px}.form-heading>p{font-size:12px}.auth-footer{height:26px;font-size:10px}.role-options{margin-bottom:14px}.name-fields{gap:10px}.field-error{font-size:10px}.form-feedback{height:62px}.back-home{font-size:11px}}
@media(max-height:550px){.auth-story{display:none}.auth-layout{display:flex;justify-content:center;max-width:510px}.auth-card{height:100%;padding:18px}.auth-page{grid-template-rows:55px minmax(0,1fr) 24px}.auth-header{height:55px}.auth-footer{height:24px}}
.auth-card{padding:18px 26px}.auth-card>.form-heading{margin-bottom:12px}.form-heading>p{margin-top:5px}.role-options{margin-bottom:12px}.field,.class-slot{height:78px}.field>label{line-height:16px;margin-bottom:4px}.field-error,.field-error:empty{height:14px;min-height:14px;line-height:14px;margin:0;font-size:10px}.password-help{height:24px;margin:0 0 4px}.password-help summary{min-height:24px}.password-help p{top:24px}.form-feedback{height:52px;margin-top:8px}
@media(max-width:560px){.auth-card{padding:16px}.auth-card>.form-heading{margin-bottom:12px}.role-options{margin-bottom:12px}}
.teacher-entry{margin:8px 0 0;text-align:center;font-size:12px;color:var(--muted)}
.teacher-entry a,.teacher-entry button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;color:inherit;transition:color .2s}
.teacher-entry a:hover,.teacher-entry button:hover{color:#ffbc64}
.teacher-entry :focus-visible{outline:2px solid #ffbc64;outline-offset:4px;border-radius:6px}
.teacher-auth-card{height:430px;display:flex;flex-direction:column;justify-content:center}
.teacher-auth-card>.form-heading{margin-bottom:26px}
.teacher-home-card{height:auto;max-height:100%;padding:28px}
.teacher-home-card h2{font-size:30px;line-height:1.15}
.teacher-intro{color:var(--muted);font-size:15px;line-height:1.6;margin-top:15px}
.teacher-outline{margin:24px 0;display:grid;gap:18px}
.teacher-outline p{display:grid;gap:5px}
.teacher-outline strong{font-size:16px}
.teacher-outline span{font-size:13px;color:var(--muted);line-height:1.5}
.teacher-home-card .preview-note{margin:14px auto 0}
@media(max-height:560px){.teacher-auth-card{display:block}}
/* Content-sized cards keep the secondary sign-in link close to the form. */
.auth-page .auth-card{height:auto;max-height:100%;padding-block:22px 14px}
.auth-page .form-feedback{height:38px;margin-top:8px}
.auth-page .teacher-entry{margin:0;line-height:1.4}
.auth-page .teacher-entry a{min-height:36px}
.auth-page .teacher-auth-card{display:block;padding-block:26px 18px}
.auth-page .teacher-auth-card>.form-heading{margin-bottom:22px}
