:root{--bg-0:#050914;--bg-1:#08101f;--bg-2:#0d1628;--surface-1:rgba(14,24,43,.82);--surface-2:rgba(18,29,52,.94);--surface-3:rgba(25,38,67,.86);--border:rgba(148,163,184,.14);--border-strong:rgba(151,71,255,.38);--text-1:#f8fafc;--text-2:#c1cad9;--text-3:#8490a6;--purple:#8b5cf6;--purple-2:#a855f7;--blue:#3b82f6;--cyan:#22d3ee;--green:#34d399;--amber:#f59e0b;--red:#fb7185;--shadow:0 18px 60px rgba(0,0,0,.34);--radius-xl:22px;--radius-lg:16px;--radius-md:12px;--sidebar-w:274px;--topbar-h:72px;--ease:.18s cubic-bezier(.2,.8,.2,1);--bg-deep: var(--bg-0);--bg-mid: var(--bg-1);--surface: var(--surface-1);--surface-strong: var(--surface-2);--line: var(--border);--violet: var(--purple-2);--text: var(--text-1);--muted: var(--text-3);--muted-strong: var(--text-2);--button: linear-gradient(90deg,#6d28d9,#a233e8 52%,#3b82f6);--logo: linear-gradient(100deg,#d15bf1 0%,#60a5fa 92%)}*{box-sizing:border-box}html{color-scheme:dark;min-height:100%}body{margin:0;color:var(--text-1);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:radial-gradient(circle at 82% 12%,rgba(122,58,237,.16),transparent 30%),radial-gradient(circle at 8% 92%,rgba(37,99,235,.11),transparent 35%),linear-gradient(145deg,var(--bg-0),var(--bg-1) 55%,#070b16);overflow-x:hidden;min-height:100%}button,input,select,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:3px solid rgba(96,165,250,.78);outline-offset:3px}#page-loader{position:fixed;inset:0;background-color:var(--bg-0);z-index:9999;display:flex;align-items:center;justify-content:center;transition:opacity .5s ease,visibility .5s ease}.loader-spinner{width:50px;height:50px;border:4px solid rgba(168,85,247,.2);border-top-color:var(--purple);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}body.loaded #page-loader{opacity:0;visibility:hidden;pointer-events:none}.ambient-grid{position:fixed;inset:0;pointer-events:none;opacity:.34;z-index:-1;background-image:linear-gradient(rgba(148,163,184,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.035) 1px,transparent 1px);background-size:58px 58px;-webkit-mask-image:linear-gradient(to bottom,black,transparent 94%);mask-image:linear-gradient(to bottom,black,transparent 94%)}.brand{display:grid;grid-template-columns:50px auto;grid-template-rows:auto auto;align-items:center;gap:0 12px}.brand.has-image{display:flex;align-items:center;gap:12px}.mark{grid-row:1/3;width:50px;height:50px;display:grid;place-items:center;border:1px solid #798aee59;border-radius:16px;background:linear-gradient(145deg,#1f3267,#070f25);box-shadow:0 10px 30px #1f3ea533}.mark svg{width:40px}.name{font-size:24px;font-weight:850;letter-spacing:-.05em}.name b{background:linear-gradient(90deg,#ad61ff,#4f8cff);color:transparent;background-clip:text;-webkit-background-clip:text}.tag{color:#9ca7bf;font:600 8px ui-monospace;letter-spacing:.24em}.compact{grid-template-columns:38px auto;grid-template-rows:38px;gap:10px}.compact .mark{grid-row:auto;width:38px;height:38px;border-radius:12px}.compact .mark svg{width:31px}.compact .name{font-size:18px}.teacher-logo{max-height:70px;width:auto;-o-object-fit:contain;object-fit:contain}.brand.compact .teacher-logo{max-height:38px}.twinkle{transform-box:fill-box;transform-origin:center;animation:twinkle 8s ease-in-out infinite}.twinkle.two{animation-delay:1.2s}.twinkle.dot{animation-delay:2.4s}@keyframes twinkle{0%,82%,to{opacity:1;transform:scale(1)}88%{opacity:.3;transform:scale(.72)}92%{opacity:1;transform:scale(1.18)}}.brand-role{display:block;margin-top:4px;color:#b25cff;text-transform:uppercase;font-size:10px;font-weight:820;letter-spacing:1.45px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 15px;border-radius:11px;border:1px solid rgba(148,163,184,.16);background:#ffffff0a;cursor:pointer;font-size:13px;font-weight:720;transition:transform var(--ease),border-color var(--ease),background var(--ease)}.btn:hover{transform:translateY(-1px);border-color:#a855f76b;background:#7c3aed1f}.btn.primary{border:0;background:linear-gradient(90deg,#6d28d9,#a233e8 52%,#3b82f6);box-shadow:0 10px 25px #6366f13b;color:#fff}.btn.ghost{background:transparent}.btn.danger{color:#fecdd3;border-color:#fb718540}.btn svg{width:17px;height:17px}.public-shell{min-height:100vh}.public-top{height:88px;display:flex;align-items:center;padding:0 clamp(22px,5vw,72px);border-bottom:1px solid rgba(148,163,184,.08);background:#050a157a;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.public-top .actions{margin-left:auto;display:flex;gap:10px;align-items:center;flex-shrink:0}.public-top .actions .btn{white-space:nowrap;flex-shrink:0}.auth-wrap{min-height:calc(100vh - 88px);display:grid;grid-template-columns:minmax(0,1fr) minmax(470px,.78fr);gap:clamp(34px,6vw,92px);align-items:center;max-width:1450px;margin:0 auto;padding:36px clamp(22px,6vw,86px)}.auth-copy h1{margin:16px 0 14px;font-size:clamp(42px,5vw,68px);line-height:1;letter-spacing:-3px}.auth-copy>p{color:var(--text-2);font-size:16px;line-height:1.65;max-width:620px}.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;border:1px solid rgba(168,85,247,.55);color:#d8b4fe;background:#581c871f;font-size:13px;font-weight:760}.benefit-list{display:grid;gap:9px;margin-top:24px}.benefit{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid rgba(99,102,241,.22);background:#090f1e7a;color:#e4e8f0}.benefit .b-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:#a970ff;background:#7c3aed24}.benefit .b-icon svg{width:17px;height:17px}.benefit strong{font-size:13px}.benefit small{display:block;color:var(--text-3);font-size:11px;margin-top:2px}.auth-shell{position:relative;border-radius:25px;padding:1px;background:linear-gradient(135deg,#a855f7b8,#3b82f638,#a855f780);box-shadow:0 0 70px #a855f733,0 25px 80px #00000070}.auth-card{border-radius:24px;padding:27px;background:linear-gradient(150deg,#111a33fa,#0e142bfa)}.auth-card h2{margin:0;font-size:28px;letter-spacing:-.7px}.auth-card>p{margin:6px 0 20px;color:var(--text-2);font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:12.5px;font-weight:760}.control{position:relative;display:flex;align-items:center;min-height:48px;border-radius:11px;border:1px solid rgba(148,163,184,.27);background:#070c1d5c;width:100%}.control:focus-within{border-color:#a855f7c7;box-shadow:0 0 0 4px #a855f717}.control svg{width:18px;height:18px;margin-left:14px;color:#94a3b8;flex-shrink:0}.control input,.control select{width:100%;height:46px;border:0;outline:0;color:var(--text-1);background:transparent;padding:0 14px;min-width:0}.control select option{background:#0d1628}.error-text{min-height:16px;color:#fda4af;font-size:11px}.form-help{color:var(--text-3);font-size:11.5px;line-height:1.5}.form-links{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;font-size:12px;color:#b7c0d0}.text-link{border:0;background:transparent;color:#c084fc;cursor:pointer;padding:4px}.role-request{grid-column:1/-1;border:1px solid rgba(148,163,184,.24);border-radius:14px;padding:14px;background:#080d1e59}.role-request h3{margin:0 0 4px;font-size:14px}.role-request>p{margin:0 0 12px;color:var(--text-2);font-size:11.5px}.role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.role-option{position:relative;display:grid;place-items:center;min-height:100px;padding:12px 8px;border:1px solid rgba(148,163,184,.28);border-radius:12px;background:#0a0f1f94;cursor:pointer;text-align:center}.role-option.selected{border-color:#b35cff;background:linear-gradient(160deg,#541c914f,#151836c2);box-shadow:inset 0 0 0 1px #c084fc33}.role-option input{position:absolute;opacity:0}.role-option svg{width:21px;height:21px;color:#a970ff;margin-bottom:7px}.role-option[data-role=student] svg{color:#60a5fa}.role-option[data-role=parent] svg{color:#34d399}.role-option strong{font-size:13px}.role-option small{display:block;margin-top:4px;color:#929db1;font-size:10px;line-height:1.35}.notice{margin-top:12px;padding:11px 12px;border-radius:10px;background:#f59e0b14;border:1px solid rgba(245,158,11,.16);color:#fbd38d;font-size:11px;line-height:1.5}.consent-row{grid-column:1/-1;display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:12px 13px;border:1px solid rgba(148,163,184,.18);border-radius:12px;background:#ffffff06}.consent-row input{width:20px;height:20px;margin:1px 0 0;accent-color:#a855f7}.consent-row label{color:var(--text-2);font-size:12px;line-height:1.5}.consent-row .error-text{grid-column:2;min-height:0}.activation-flow{grid-column:1/-1;padding:12px 13px;border-radius:12px;border:1px solid rgba(52,211,153,.18);background:#10b98111;color:#b8ead8;font-size:11.5px;line-height:1.55}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-3);font-size:14px;text-decoration:none;margin-bottom:16px;transition:color .2s ease;font-weight:500}.back-link:hover{color:var(--purple-2)}.password-label{display:flex;justify-content:space-between;align-items:center}.password-label a{color:#c084fc;text-decoration:none;font-size:12.5px}.control .eye{padding:6px 14px;border:0;color:#a8abbd;background:none;cursor:pointer;display:flex;align-items:center}.control .eye svg{margin:0}.remember{width:-moz-max-content;width:max-content;display:flex;align-items:center;gap:10px;margin-top:4px;margin-bottom:8px}.remember input{width:18px;height:18px;margin:0;accent-color:var(--purple)}.remember span{font-size:13px;color:var(--text-2)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;grid-column:1/-1}@media(min-width:861px)and (max-height:950px){.public-top{height:72px}.auth-wrap{min-height:calc(100vh - 72px);padding-top:14px;padding-bottom:14px}.auth-copy h1{font-size:clamp(38px,4.3vw,56px);margin:11px 0 9px}.auth-copy>p{font-size:14px;line-height:1.5}.benefit-list{gap:6px;margin-top:14px}.benefit{padding:8px 10px}.benefit .b-icon{width:28px;height:28px}.auth-card{padding:19px 21px}.auth-card h2{font-size:24px}.auth-card>p{margin:4px 0 11px}.form-grid{gap:8px 12px}.field{gap:4px}.control{min-height:42px}.control input,.control select{height:40px}.role-request{padding:9px 11px}.role-request>p{margin-bottom:7px}.role-option{min-height:74px;padding:8px}.role-option svg{width:18px;height:18px;margin-bottom:4px}.role-option small{font-size:9px}.notice{margin-top:7px;padding:7px 9px;line-height:1.35}.auth-card>.btn.primary{min-height:44px!important;margin-top:9px!important}.form-links{margin-top:7px}}@media(max-width:1180px){.auth-wrap{grid-template-columns:1fr;max-width:850px;align-items:flex-start}.auth-copy{display:none}.auth-wrap{min-height:calc(100vh - 88px);padding-top:28px;padding-bottom:40px}}@media(max-width:860px){.public-top{height:72px;padding:0 18px}.public-top .brand-word{font-size:21px}.public-top .actions .btn:not(:only-child):first-child{display:none}.auth-wrap{min-height:calc(100vh - 72px);align-items:flex-start;padding:28px 18px 40px}.auth-card{padding:22px}.form-grid{grid-template-columns:1fr}.field.full,.role-request{grid-column:1}.role-grid{grid-template-columns:1fr}.role-option{min-height:78px;grid-template-columns:32px minmax(0,1fr);place-items:center start;text-align:left;padding-left:14px}.role-option svg{margin:0}.role-option small{margin-top:2px}}@media(max-width:560px){.public-top{padding:0 12px;gap:8px;justify-content:space-between}.public-top .brand{min-width:0;max-width:calc(100% - 130px)}.public-top .actions .btn{padding:0 11px;font-size:12.5px;white-space:nowrap!important;flex-shrink:0!important}.auth-card h2{font-size:24px}.form-links{flex-direction:column;align-items:flex-start}.public-top .brand-mark{width:40px;height:40px;flex-shrink:0}.public-top .brand-mark svg{width:25px;height:25px}.public-top .brand-word{font-size:20px}.teacher-logo{max-height:56px;max-width:100%;-o-object-fit:contain;object-fit:contain}}
