:root{color-scheme:light dark;--bg:#f6f7fb;--panel:#fff;--ink:#202531;--muted:#5d6472;--line:#dedfe8;--accent:#5754d9;--accent-hover:#4642bc;--focus:#5754d9;--field:#fff;--error:#a52232;--success:#1a6a45;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.55}button,input,select,textarea{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}::selection{color:#fff;background:var(--accent)}:focus-visible{outline:3px solid var(--focus);outline-offset:4px}input{caret-color:var(--accent)}a,button{text-underline-offset:4px}button{transition:background-color .15s ease,color .15s ease}svg{display:block}.auth-page{max-width:1440px;min-height:100svh;margin:auto;padding:36px 64px 24px;display:flex;flex-direction:column}.site-header,.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{display:inline-flex;align-items:center;gap:10px;text-decoration:none;font-size:23px;letter-spacing:-.03em;font-weight:700}.wordmark svg{width:34px;height:34px;color:var(--accent)}.header-caption,.site-footer{font-size:14px;color:var(--muted)}.auth-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,440px);align-items:center;gap:clamp(48px,8vw,130px);flex:1;padding:72px 0 88px}.auth-intro h1{font-size:clamp(42px,5.1vw,70px);line-height:1.12;letter-spacing:-.035em;font-weight:600;margin:0 0 28px;text-wrap:balance}.auth-intro h1 span{color:var(--accent)}.auth-intro>p{font-size:18px;color:var(--muted);max-width:390px;margin:0}.intro-rule{width:48px;height:1px;background:var(--line);margin:36px 0 24px}.auth-intro .intro-note{font-size:14px}.auth-panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px}.form-heading{margin-bottom:28px}.form-heading h2{font-size:26px;line-height:1.25;letter-spacing:-.025em;margin:0 0 10px;font-weight:600}.form-heading p{color:var(--muted);margin:0;font-size:15px}.auth-form{display:grid;gap:20px}.input-field{display:grid;gap:8px;font-size:14px;font-weight:600}.input-field input,.input-field select{min-height:48px;width:100%;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink);padding:11px 13px;font-size:16px;font-weight:400}.input-field input:focus{outline:2px solid var(--accent);outline-offset:1px}.input-field small,.setup-email small{color:var(--muted);font-size:12px;font-weight:400;line-height:1.5}.password-field{position:relative;display:block}.password-field input{padding-right:48px}.password-toggle{display:grid;place-items:center;position:absolute;right:4px;top:2px;width:44px;height:44px;border:0;background:transparent;color:var(--muted);border-radius:6px}.password-toggle svg{width:21px;height:21px}.password-toggle:hover{background:var(--bg)}.form-options{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.check-field{display:flex;align-items:center;gap:8px;cursor:pointer}.check-field input{width:17px;height:17px;accent-color:var(--accent);margin:0}.text-button{border:0;padding:6px 0;background:transparent;color:var(--accent);text-align:left;font-size:inherit;min-height:32px}.text-button:hover{text-decoration:underline}.primary-button{width:100%;min-height:48px;padding:12px 18px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:15px;font-weight:600}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.form-footer{text-align:center;font-size:13px;color:var(--muted);margin:24px 0 0}.form-message{margin:0 0 20px;padding:12px 14px;border-radius:8px;font-size:14px;overflow-wrap:anywhere}.form-message.error{color:var(--error);background:color-mix(in srgb,var(--error) 7%,var(--panel))}.form-message.success{color:var(--success);background:color-mix(in srgb,var(--success) 7%,var(--panel))}.form-message.neutral{color:var(--muted);background:var(--bg);margin:0}.setup-email{display:grid;gap:3px;font-size:13px;overflow-wrap:anywhere}.setup-email span{color:var(--muted)}.setup-email strong{font-weight:500}.loading-line{color:var(--muted);font-size:14px}.waiting-actions{display:grid;gap:12px}.site-footer{border-top:1px solid var(--line);padding-top:18px;font-size:12px}.access-page{max-width:960px;margin:0 auto;padding:32px 24px 80px}.access-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:32px}.access-header a{font-size:14px;color:var(--accent)}.access-page h1{font-size:32px;line-height:1.2;letter-spacing:-.025em;margin:0 0 10px}.access-page h2{font-size:20px;margin:0 0 20px}.access-section{padding:28px 0;border-bottom:1px solid var(--line)}.access-section>p{color:var(--muted);max-width:65ch}.access-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line)}.access-row:last-child{border:0}.access-row strong{display:block;font-weight:600}.access-row small{display:block;color:var(--muted)}.access-actions{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.access-actions button{min-height:44px}.access-row select{max-width:220px;min-height:44px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px}.access-code{font-size:22px;font-variant-numeric:tabular-nums;letter-spacing:.1em}.share-link{display:grid;gap:12px;margin:18px 0;max-width:100%}.share-link input{width:100%;font:inherit;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}.password-form{max-width:420px;display:grid;gap:18px}
@media(prefers-color-scheme:dark){:root{--bg:#171922;--panel:#20232f;--ink:#eceef6;--muted:#b0b6c8;--line:#3d4256;--accent:#aeaaff;--accent-hover:#bfbcff;--focus:#aeaaff;--field:#1b1e29;--error:#ffabb6;--success:#8cd8b5}.primary-button{background:#625de1;color:#fff}.primary-button:hover:not(:disabled){background:#7772ec}}
@media(max-width:900px){.auth-page{padding:28px 32px 20px}.auth-layout{gap:40px;grid-template-columns:minmax(0,1fr) minmax(320px,410px)}.auth-intro h1{font-size:46px}.auth-panel{padding:28px}}
@media(max-width:700px){.auth-page{padding:22px 20px 18px}.header-caption{font-size:12px}.wordmark{font-size:21px}.auth-layout{display:block;padding:48px 0;max-width:440px;width:100%;margin:auto}.auth-intro{display:none}.auth-panel{padding:28px 24px}.form-heading h2{font-size:25px}.form-options{gap:8px;font-size:12px}.text-button{min-height:44px}.site-footer{font-size:11px;gap:12px}.access-row{align-items:flex-start;flex-direction:column}.access-actions{width:100%;justify-content:space-between}.access-row select{max-width:100%}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!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}

.invitation-code{overflow-wrap:anywhere;font-variant-numeric:tabular-nums;letter-spacing:.04em}.access-row>div{min-width:0}.access-row .access-actions{flex-shrink:0}.access-section h3{margin-top:28px}.access-section>.primary-button{width:auto;padding-inline:20px}.share-link{padding-block:16px;border-block:1px solid var(--line)}
.access-actions{max-width:60%}.cabinet-removal{padding:20px 0;border-block:1px solid var(--line);margin-top:20px}.cabinet-removal h3{margin-top:0}.cabinet-removal p{max-width:65ch}.cabinet-removal .access-actions{max-width:100%}@media(max-width:700px){.access-actions{max-width:100%}}
.student-access-info{flex:1}.student-invitation{display:grid;gap:8px;margin-top:12px}.student-invitation label{font-size:14px}.student-invitation-code{width:100%;max-width:32ch;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink);font-variant-numeric:tabular-nums}.student-invitation .access-actions{max-width:100%}@media(max-width:700px){.student-access-info{width:100%}.student-invitation-code{max-width:100%}}
.recovery-help p{max-width:65ch;margin:0 0 18px}.recovery-help .primary-button{margin-top:4px}.form-heading h2:focus:not(:focus-visible){outline:none}.cabinet-removal .form-message{margin-block:16px}
