*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:light;--auth-page: #faf9f5;--auth-panel: rgba(255, 253, 249, .96);--auth-surface: #fffdf9;--auth-surface-soft: #f5f0e8;--auth-border: #e6dfd8;--auth-border-strong: #d8d0c2;--auth-text: #141413;--auth-text-secondary: #3d3d3a;--auth-text-tertiary: #6c6a64;--auth-accent: #cc785c;--auth-accent-soft: rgba(204, 120, 92, .1);--auth-danger: #d92d20;--auth-danger-soft: rgba(217, 45, 32, .08);--auth-shadow: 0 1px 2px rgba(20, 20, 19, .04), 0 12px 32px -18px rgba(20, 20, 19, .18);--auth-ease: .24s cubic-bezier(.25, .1, .25, 1);--auth-glow-primary: rgba(204, 120, 92, .13);--auth-glow-secondary: rgba(204, 120, 92, .06);--auth-radius-shell: 20px;--auth-radius-field: 10px;--auth-radius-control: 10px;--auth-radius-button: 8px;--auth-wallpaper: radial-gradient(circle at 8% 12%, var(--auth-glow-primary), transparent 28rem), radial-gradient(circle at 92% 90%, var(--auth-glow-secondary), transparent 27rem), var(--auth-page);--auth-wallpaper-position: center}html.dark{color-scheme:dark;--auth-page: #0e1116;--auth-panel: rgba(23, 28, 36, .97);--auth-surface: #1a1e26;--auth-surface-soft: rgba(235, 239, 245, .08);--auth-border: rgba(235, 239, 245, .12);--auth-border-strong: rgba(235, 239, 245, .2);--auth-text: #f4f2ee;--auth-text-secondary: rgba(244, 242, 238, .68);--auth-text-tertiary: rgba(244, 242, 238, .46);--auth-accent: #e5a189;--auth-accent-soft: rgba(229, 161, 137, .15);--auth-danger: #ff6961;--auth-danger-soft: rgba(255, 105, 97, .09);--auth-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 20px 44px -20px rgba(0, 0, 0, .32);--auth-glow-primary: rgba(229, 161, 137, .18);--auth-glow-secondary: rgba(204, 120, 92, .08)}html.dark[data-theme=glass]{--auth-page: #090914;--auth-panel: rgba(20, 21, 34, .82);--auth-surface: #171827;--auth-accent: #8f7cff;--auth-accent-soft: rgba(143, 124, 255, .16);--auth-glow-primary: rgba(113, 94, 255, .25);--auth-glow-secondary: rgba(49, 191, 255, .15)}html.dark[data-theme=cherry]{--auth-page: #1a0d16;--auth-panel: rgba(38, 18, 29, .88);--auth-surface: #29131f;--auth-accent: #ef8f74;--auth-accent-soft: rgba(239, 143, 116, .16);--auth-glow-primary: rgba(239, 143, 116, .27);--auth-glow-secondary: rgba(255, 201, 180, .13);--auth-wallpaper: linear-gradient(180deg, rgba(8, 10, 15, .3), rgba(12, 8, 13, .68)), url(../images/wallpapers/scenic-sakura-lake-v1.webp);--auth-wallpaper-position: center 42%}html.dark[data-theme=ocean]{--auth-page: #04111f;--auth-panel: rgba(7, 27, 47, .88);--auth-surface: #092139;--auth-accent: #31c8ff;--auth-accent-soft: rgba(49, 200, 255, .15);--auth-glow-primary: rgba(49, 200, 255, .24);--auth-glow-secondary: rgba(38, 112, 255, .18);--auth-wallpaper: linear-gradient(180deg, rgba(3, 10, 19, .24), rgba(3, 10, 18, .64)), url(../images/wallpapers/scenic-blue-coast-v1.webp);--auth-wallpaper-position: center 40%}html.dark[data-theme=forest]{--auth-page: #08150f;--auth-panel: rgba(13, 33, 23, .88);--auth-surface: #10291c;--auth-accent: #4fd99b;--auth-accent-soft: rgba(79, 217, 155, .15);--auth-glow-primary: rgba(79, 217, 155, .21);--auth-glow-secondary: rgba(183, 217, 122, .12);--auth-wallpaper: linear-gradient(180deg, rgba(5, 14, 10, .28), rgba(5, 13, 9, .68)), url(../images/wallpapers/scenic-mist-forest-v1.webp);--auth-wallpaper-position: center 36%}html.dark[data-theme=aurora]{--auth-page: #09051a;--auth-panel: rgba(23, 13, 48, .86);--auth-surface: #1c1138;--auth-accent: #a78bfa;--auth-accent-soft: rgba(167, 139, 250, .17);--auth-glow-primary: rgba(167, 139, 250, .28);--auth-glow-secondary: rgba(69, 229, 189, .16);--auth-wallpaper: linear-gradient(180deg, rgba(5, 5, 18, .2), rgba(6, 4, 17, .68)), url(../images/wallpapers/scenic-aurora-snow-v1.webp);--auth-wallpaper-position: center 30%}html.dark[data-theme=sunset]{--auth-page: #160d08;--auth-panel: rgba(39, 23, 11, .88);--auth-surface: #2d1a0d;--auth-accent: #ffb454;--auth-accent-soft: rgba(255, 180, 84, .16);--auth-glow-primary: rgba(255, 180, 84, .27);--auth-glow-secondary: rgba(255, 117, 109, .16);--auth-wallpaper: linear-gradient(180deg, rgba(18, 10, 5, .24), rgba(18, 9, 4, .68)), url(../images/wallpapers/scenic-golden-dunes-v1.webp);--auth-wallpaper-position: center 44%}html,body{min-height:100%}body{--auth-pointer-x: 50%;--auth-pointer-y: 12%;--auth-shift-x: 0px;--auth-shift-y: 0px;display:block;min-height:100vh;min-height:100dvh;color:var(--auth-text);background:var(--auth-wallpaper);background-position:var(--auth-wallpaper-position);background-size:cover;background-attachment:fixed;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.ambient{position:fixed;z-index:-1;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(520px circle at var(--auth-pointer-x) var(--auth-pointer-y),var(--auth-glow-primary),transparent 72%)}.ambient:before,.ambient:after{content:"";position:absolute;width:26rem;height:26rem;border-radius:50%;filter:blur(4px);opacity:.5}.ambient:before{top:-17rem;right:8%;background:var(--auth-glow-primary)}.ambient:after{bottom:-20rem;left:4%;background:var(--auth-glow-secondary)}.auth-page{position:relative;z-index:1;width:100%;max-width:1240px;min-height:100vh;min-height:100dvh;margin:0 auto;padding:28px clamp(20px,4vw,54px) 36px;display:flex;flex-direction:column;justify-content:center;gap:20px}.home-link{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 11px;margin-left:-11px;border-radius:10px;color:var(--auth-text-secondary);font-size:13px;font-weight:600;text-decoration:none;transition:color var(--auth-ease),background var(--auth-ease),transform var(--auth-ease)}.home-link svg{width:15px;height:15px}.home-link:hover{color:var(--auth-text);background:var(--auth-surface-soft);transform:translate(-2px)}.home-link:focus-visible,button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid rgba(204,120,92,.3);outline-offset:2px}.auth-shell{width:100%;min-height:min(720px,calc(100vh - 112px));min-height:min(720px,calc(100dvh - 112px));display:grid;grid-template-columns:minmax(0,1.08fr) minmax(400px,.92fr);overflow:hidden;border:1px solid var(--auth-border);border-radius:var(--auth-radius-shell);background:var(--auth-panel);box-shadow:var(--auth-shadow);animation:shellEnter .62s cubic-bezier(.16,1,.3,1) both}.auth-showcase{position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(36px,5vw,66px);color:#fff;background:radial-gradient(circle at 92% 8%,rgba(204,120,92,.52),transparent 34%),radial-gradient(circle at 12% 94%,rgba(239,143,116,.2),transparent 32%),linear-gradient(145deg,#1d1815,#2b1f19 54%,#33231c)}.auth-showcase:before{content:"";position:absolute;z-index:-1;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:54px 54px;mask-image:linear-gradient(to bottom right,black,transparent 72%);transform:translate3d(var(--auth-shift-x),var(--auth-shift-y),0);transition:transform .8s cubic-bezier(.22,1,.36,1)}.auth-showcase:after{content:"";position:absolute;z-index:-1;width:280px;height:280px;top:31%;right:-150px;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 52px #ffffff06,0 0 0 104px #ffffff05}.brand-lockup{display:inline-flex;align-items:center;gap:12px;font-size:15px;font-weight:700;letter-spacing:-.01em}.brand-mark{width:40px;height:40px;display:grid;place-items:center}.brand-mark img{width:100%;height:100%;display:block;object-fit:contain}.showcase-copy{max-width:560px;margin:64px 0 52px}.showcase-kicker{display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;color:#ffffffad;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.showcase-kicker:before{content:"";width:22px;height:1px;background:#ef9a7a}.showcase-copy h1{max-width:530px;color:#fff;font-size:clamp(38px,4.4vw,64px);font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",STSong,Georgia,Times New Roman,serif;font-weight:600;line-height:1.12;letter-spacing:-.02em}.showcase-copy>p:last-child{max-width:490px;margin-top:22px;color:#ffffffad;font-size:clamp(14px,1.4vw,17px);line-height:1.68}.feature-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.feature-item{min-width:0;padding:14px;border:1px solid rgba(250,249,245,.14);border-radius:12px;background:#faf9f50d;transition:transform .28s cubic-bezier(.22,1,.36,1),border-color .22s ease,background-color .22s ease}.feature-icon{width:29px;height:29px;display:grid;place-items:center;margin-bottom:10px;border-radius:9px;color:#f2b8a0;background:#cc785c38}.feature-icon svg{width:15px;height:15px}.feature-item strong{display:block;font-size:12px;font-weight:700;letter-spacing:-.01em}.feature-item span{display:block;margin-top:4px;color:#ffffff80;font-size:10px;line-height:1.4}.auth-panel{min-width:0;display:flex;flex-direction:column;padding:clamp(24px,3.6vw,48px);background:var(--auth-panel)}.panel-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:34px}.portal-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--auth-border);border-radius:var(--auth-radius-control);background:var(--auth-surface-soft)}.portal-switch button{min-width:74px;height:29px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--auth-text-secondary);font:inherit;font-size:11px;font-weight:700;cursor:pointer;transition:color var(--auth-ease),background var(--auth-ease),box-shadow var(--auth-ease)}.portal-switch button span{margin-left:3px;color:var(--auth-accent);font-size:8px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.portal-switch button.active{color:var(--auth-text);background:var(--auth-surface);box-shadow:0 1px 3px #14141314}.auth-lang-switch{display:inline-flex;justify-content:initial;gap:0;margin:0;padding:3px;border:1px solid var(--auth-border);border-radius:var(--auth-radius-control);background:var(--auth-surface-soft)}.auth-lang-switch button{min-width:64px;height:29px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--auth-text-secondary);font:inherit;font-size:11px;font-weight:700;cursor:pointer;transition:color var(--auth-ease),background var(--auth-ease),box-shadow var(--auth-ease)}.auth-lang-switch button.active{color:var(--auth-text);border-color:transparent;background:var(--auth-surface);box-shadow:0 1px 3px #14141314}.auth-card{width:100%;max-width:420px;margin:auto;padding:30px 0 18px;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.auth-brand{margin-bottom:28px;text-align:left}.auth-brand svg{width:auto;height:auto;margin:0;filter:none}.form-kicker{margin-bottom:9px;color:var(--auth-accent);font-size:11px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.auth-brand h2{color:var(--auth-text);font-size:clamp(30px,3vw,40px);font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",STSong,Georgia,Times New Roman,serif;font-weight:600;line-height:1.12;letter-spacing:-.015em}.auth-brand p{max-width:360px;margin-top:11px;color:var(--auth-text-secondary);font-size:14px;line-height:1.55}.auth-context{display:none;align-items:flex-start;gap:11px;margin-bottom:20px;padding:12px 13px;border:1px solid rgba(204,120,92,.2);border-radius:var(--auth-radius-field);background:var(--auth-accent-soft);color:var(--auth-text-secondary)}.auth-context.dashboard-gate,.auth-context.teacher-gate{display:flex}.auth-context.teacher-gate{border-color:#5856d633;background:#5856d614}.auth-context.teacher-gate svg{color:#5856d6}.auth-context svg{flex:0 0 auto;width:17px;height:17px;margin-top:1px;color:var(--auth-accent)}.auth-note{max-width:none;margin:0;color:var(--auth-text-secondary);font-size:11px;line-height:1.55;text-align:left;opacity:1}.sync-note{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:17px;color:var(--auth-text-tertiary);font-size:10px;line-height:1.5;text-align:center}.sync-note svg{flex:0 0 auto;width:13px;height:13px;color:#21a65b}.panel-footer{display:flex;justify-content:center;gap:8px;color:var(--auth-text-tertiary);font-size:10px;letter-spacing:.01em}.panel-footer a{color:var(--auth-accent, #a9583e);text-decoration:none}.panel-footer a:hover{text-decoration:underline}.consent-group{margin:2px 0 4px}.auth-consent{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.5;color:var(--auth-text-secondary);cursor:pointer}.auth-consent input[type=checkbox]{flex:0 0 auto;width:15px;height:15px;margin:2px 0 0;accent-color:var(--auth-accent, #a9583e);cursor:pointer}.auth-consent a{color:var(--auth-accent, #a9583e)}.auth-tabs{display:flex;gap:0;margin-bottom:22px;padding:3px;border:1px solid var(--auth-border);border-radius:var(--auth-radius-control);background:var(--auth-surface-soft)}.auth-tabs[hidden]{display:none}.auth-tab{flex:1;min-height:44px;padding:0 10px;border:0;border-radius:10px;background:transparent;color:var(--auth-text-secondary);font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:color var(--auth-ease),background var(--auth-ease),box-shadow var(--auth-ease)}.auth-tab.active{color:var(--auth-text);background:var(--auth-surface);box-shadow:0 1px 3px #14141314}.auth-tab:hover:not(.active){color:var(--auth-text);background:transparent}.auth-form{display:flex;flex-direction:column;gap:15px}.auth-field-group{display:flex;flex-direction:column;gap:7px}.auth-field-group.hidden{display:none}.auth-field-hint{margin:0 2px;color:var(--auth-text-tertiary);font-size:10px;line-height:1.45}.auth-label{margin-left:2px;color:var(--auth-text-secondary);font-size:12px;font-weight:700;letter-spacing:0;text-transform:none}.input-wrap{position:relative}.input-wrap:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:1px;border-radius:999px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--auth-accent),transparent);opacity:0;transform:scaleX(.35);transition:opacity .18s ease,transform .28s cubic-bezier(.22,1,.36,1)}.input-wrap:focus-within:after{opacity:.9;transform:scaleX(1)}.input-wrap:focus-within .input-icon{color:var(--auth-accent)}.input-icon{position:absolute;left:14px;top:50%;width:17px;height:17px;color:var(--auth-text-tertiary);pointer-events:none;transform:translateY(-50%);transition:color var(--auth-ease)}.auth-input{width:100%;height:48px;padding:0 44px;border:1px solid var(--auth-border-strong);border-radius:var(--auth-radius-field);background:var(--auth-surface);color:var(--auth-text);font:inherit;font-size:14px;outline:none;transition:border-color var(--auth-ease),box-shadow var(--auth-ease),background var(--auth-ease)}.auth-input:focus{border-color:var(--auth-accent);box-shadow:0 0 0 4px #cc785c24}.auth-input::placeholder{color:var(--auth-text-tertiary);opacity:.72}.auth-input:-webkit-autofill{-webkit-text-fill-color:var(--auth-text);box-shadow:0 0 0 100px var(--auth-surface) inset}.password-toggle{position:absolute;top:50%;right:4px;width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--auth-text-tertiary);cursor:pointer;transform:translateY(-50%);transition:color var(--auth-ease),background var(--auth-ease)}.password-toggle:hover{color:var(--auth-text);background:var(--auth-surface-soft)}.password-toggle svg{width:17px;height:17px}.password-toggle .eye-off,.password-toggle.is-visible .eye-on{display:none}.password-toggle.is-visible .eye-off{display:block}.auth-error{min-height:18px;padding:0 2px;color:var(--auth-danger);font-size:11px;line-height:1.4}.auth-error:not(:empty){padding:9px 11px;border-radius:10px;background:var(--auth-danger-soft)}.auth-submit{position:relative;isolation:isolate;overflow:hidden;width:100%;min-height:48px;margin:0;padding:0 16px;border:0;border-radius:var(--auth-radius-button);background:linear-gradient(180deg,#cc785c,#a9583e);color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 8px 20px #cc785c42,inset 0 1px #ffffff2e;transition:transform var(--auth-ease),box-shadow var(--auth-ease),filter var(--auth-ease)}.auth-submit:after{content:"";position:absolute;z-index:-1;inset:-80% -30%;pointer-events:none;opacity:0;background:linear-gradient(110deg,transparent 38%,rgba(255,255,255,.28) 48%,transparent 58%);transform:translate(-55%) rotate(8deg);transition:opacity .18s ease,transform .72s cubic-bezier(.22,1,.36,1)}.auth-submit:hover:after{opacity:1;transform:translate(55%) rotate(8deg)}.auth-submit:hover{background:linear-gradient(180deg,#cc785c,#a9583e);transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 11px 26px #cc785c4d}.auth-submit:active{transform:translateY(0)}.auth-submit:disabled{opacity:.52;cursor:not-allowed;transform:none;box-shadow:none}@keyframes shellEnter{0%{opacity:0;transform:scale(.994)}to{opacity:1;transform:scale(1)}}.spinner{border-color:#ffffff6b;border-top-color:#fff}@media(max-width:900px){.auth-page{justify-content:flex-start;padding:18px;gap:13px}.auth-shell{min-height:0;grid-template-columns:1fr;backdrop-filter:none;-webkit-backdrop-filter:none}.auth-showcase{min-height:230px;padding:28px 30px}.showcase-copy{margin:32px 0 0}.showcase-copy h1{max-width:580px;font-size:clamp(32px,7vw,48px)}.showcase-copy>p:last-child{max-width:590px;margin-top:14px}.feature-list{display:none}.auth-panel{padding:24px clamp(22px,7vw,54px) 28px}.auth-card{padding-top:20px}}@media(max-width:560px){.auth-page{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.home-link{font-size:12px}.auth-shell{border-radius:16px}.auth-showcase{min-height:176px;padding:22px}.brand-mark{width:34px;height:34px}.brand-mark img{width:100%;height:100%}.brand-lockup{gap:10px;font-size:13px}.showcase-copy{margin:26px 0 0}.showcase-kicker{display:none}.showcase-copy h1{max-width:340px;font-size:30px;line-height:1.08}.showcase-copy>p:last-child{display:none}.auth-panel{padding:18px 20px 24px}.panel-topbar{min-height:32px;flex-wrap:wrap}.portal-switch{order:2;width:100%}.portal-switch button{flex:1}.auth-lang-switch{margin-left:auto}.auth-lang-switch button{min-width:58px}.auth-card{max-width:none;padding:18px 0 8px}.auth-brand{margin-bottom:23px}.auth-brand h2{font-size:29px}.auth-brand p{font-size:13px}.auth-context{margin-bottom:17px}.panel-footer{padding-top:2px}}@media(max-height:760px)and (min-width:901px){.auth-page{padding-top:18px;padding-bottom:22px}.auth-shell{min-height:620px}.showcase-copy{margin-top:42px;margin-bottom:34px}.auth-card{padding-top:18px;padding-bottom:8px}.auth-brand{margin-bottom:22px}.auth-brand h2{font-size:34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes authContentEnter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes authModeSwitch{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:translate(0)}}.brand-lockup,.showcase-kicker,.showcase-copy h1,.showcase-copy>p:last-child,.feature-item,.panel-topbar,.auth-card,.panel-footer{animation:authContentEnter .48s cubic-bezier(.22,1,.36,1) both}.showcase-kicker{animation-delay:80ms}.showcase-copy h1{animation-delay:.13s}.showcase-copy>p:last-child{animation-delay:.18s}.feature-item:nth-child(1){animation-delay:.23s}.feature-item:nth-child(2){animation-delay:.28s}.feature-item:nth-child(3){animation-delay:.33s}.panel-topbar{animation-delay:90ms}.auth-card{animation-delay:.15s}.panel-footer{animation-delay:.22s}.auth-card.mode-switching .auth-brand,.auth-card.mode-switching .auth-form{animation:authModeSwitch .24s cubic-bezier(.22,1,.36,1) both}.auth-card.mode-switching .auth-form{animation-delay:28ms}@media(max-width:560px){.auth-input{font-size:16px}}@media(hover:hover)and (pointer:fine){.feature-item:hover{transform:translateY(-3px);border-color:#ef8f744d;background:#faf9f517}}@media(hover:none),(pointer:coarse){.auth-submit:after{display:none}}@media(prefers-reduced-motion:reduce){.brand-lockup,.showcase-kicker,.showcase-copy h1,.showcase-copy>p:last-child,.feature-item,.panel-topbar,.auth-card,.panel-footer,.auth-card.mode-switching .auth-brand,.auth-card.mode-switching .auth-form{animation:none!important;animation-delay:0ms!important;transform:none!important;opacity:1!important}.ambient,.auth-showcase:before,.input-wrap:after,.auth-submit:after,.feature-item{animation:none!important;transition:none!important;transform:none!important}}
