.login-screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;background:var(--color-surface);padding:var(--space-7)}.login-card{width:100%;max-width:440px;margin:0 auto}.login-mark{display:block;font-family:var(--font-data);font-size:12px;font-weight:700;letter-spacing:.22em;color:var(--color-primary)}.login-title{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin:var(--space-4) 0 var(--space-2)}.login-subtitle{font-family:var(--font-body);font-size:15px;line-height:1.5;color:var(--color-ink-secondary);margin:0 0 var(--space-7)}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.login-google-btn:disabled{opacity:.6;cursor:default}.login-google-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.login-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.login-fine{margin-top:var(--space-5);font-size:12.5px;line-height:1.6;color:var(--color-ink-secondary);text-align:center}.admin-login-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--color-paper);padding:var(--space-7)}.admin-login-card{width:100%;max-width:360px;padding:var(--space-7) var(--space-6);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:0 1px 2px #1324370f;text-align:center}.admin-login-mark{display:block;font-family:var(--font-data);font-size:11px;font-weight:700;letter-spacing:.18em;color:var(--color-primary)}.admin-login-title{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin:var(--space-3) 0 var(--space-6)}.admin-login-field{display:block;text-align:left;margin-bottom:var(--space-3)}.admin-login-label{display:block;font-family:var(--font-body);font-weight:600;font-size:13px;color:var(--color-ink-secondary);margin-bottom:var(--space-1)}.admin-login-input{width:100%;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px}.admin-login-btn{width:100%;min-height:var(--space-tap);margin-top:var(--space-3);border-radius:var(--radius-md);background:var(--color-ink);color:#fff;font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.admin-login-btn:disabled{opacity:.6;cursor:default}.admin-login-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.admin-login-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.test-signup-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--color-paper);padding:var(--space-7)}.test-signup-card{width:100%;max-width:360px;padding:var(--space-7) var(--space-6);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:0 1px 2px #1324370f;text-align:center}.test-signup-mark{display:block;font-family:var(--font-data);font-size:11px;font-weight:700;letter-spacing:.18em;color:var(--color-primary)}.test-signup-title{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin:var(--space-3) 0 var(--space-6)}.test-signup-field{display:block;text-align:left;margin-bottom:var(--space-3)}.test-signup-label{display:block;font-family:var(--font-body);font-weight:600;font-size:13px;color:var(--color-ink-secondary);margin-bottom:var(--space-1)}.test-signup-input{width:100%;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px}.test-signup-btn{width:100%;min-height:var(--space-tap);margin-top:var(--space-3);border-radius:var(--radius-md);background:var(--color-ink);color:#fff;font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.test-signup-btn:disabled{opacity:.6;cursor:default}.test-signup-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.test-signup-toggle{display:block;width:100%;margin-top:var(--space-4);padding:0;border:none;background:none;color:var(--color-primary);font-family:var(--font-body);font-weight:600;font-size:13.5px;cursor:pointer}.test-signup-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.test-signup-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.tab-bar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--color-surface);border-top:1px solid var(--color-line);padding-bottom:env(safe-area-inset-bottom);z-index:10}.tab-bar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:var(--space-tap);font-family:var(--font-body);font-size:11px;font-weight:500;color:var(--color-ink-secondary);text-decoration:none}.tab-bar-item-active{color:var(--color-primary)}.tab-bar-item:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}@media(min-width:960px){.tab-bar{display:none}}.nav-rail{display:none}@media(min-width:960px){.nav-rail{position:fixed;top:0;left:0;bottom:0;z-index:10;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:60px;padding-top:var(--space-4);background:var(--color-primary-deep)}}.nav-rail-item{position:relative;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);color:#fff9;text-decoration:none}.nav-rail-item-active{background:#ffffff29;color:#fff}.nav-rail-item:focus-visible{outline:2px solid #ffffff;outline-offset:-2px}.nav-rail-icon{display:flex}.nav-rail-flyout{position:absolute;left:calc(100% + var(--space-2));top:50%;z-index:5;display:flex;align-items:center;padding:var(--space-2) var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:0 4px 16px #13243729;white-space:nowrap;opacity:0;visibility:hidden;transform:translateY(-50%) translate(-4px);transition:opacity .12s ease,transform .12s ease;pointer-events:none}.nav-rail-item:hover .nav-rail-flyout,.nav-rail-item:focus-within .nav-rail-flyout{opacity:1;visibility:visible;transform:translateY(-50%) translate(0)}@media(prefers-reduced-motion:reduce){.nav-rail-flyout{transition:none}}.nav-rail-flyout-label{font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--color-ink-secondary)}.nav-rail-item-active .nav-rail-flyout-label{color:var(--color-primary);font-weight:600}.teacher-shell-content{padding-bottom:calc(var(--space-tap) + env(safe-area-inset-bottom))}@media(min-width:960px){.teacher-shell-content{padding-bottom:0;padding-left:60px}}.home-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.home-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;min-height:var(--space-tap);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.home-mark{font-family:var(--font-data);font-size:12px;font-weight:700;letter-spacing:.22em;color:var(--color-primary)}.home-signout{font-family:var(--font-body);font-size:13.5px;font-weight:600;color:var(--color-ink-secondary);min-height:var(--space-tap);padding:0 var(--space-2)}.home-empty{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.home-empty-title{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin:0 0 var(--space-2)}.home-empty-body{font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary);margin:0}.classes-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.classes-tabs{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.classes-tab{flex:1;min-height:36px;border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink-secondary);font-family:var(--font-body);font-weight:600;font-size:13px;cursor:pointer}.classes-tab.active{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.classes-tab:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.classes-header{position:sticky;top:0;padding:var(--space-4) var(--space-4) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.classes-title{font-family:var(--font-display);font-weight:700;font-size:19px;line-height:1.2;letter-spacing:-.01em;color:var(--color-ink);margin:0}.classes-subtitle{font-family:var(--font-body);font-size:12.5px;color:var(--color-ink-secondary);margin:var(--space-1) 0 0}.classes-list{list-style:none;margin:0;padding:0}.classes-row{display:flex;align-items:center;gap:var(--space-3);min-height:var(--space-tap);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line);text-decoration:none;color:inherit}.classes-row:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.classes-row.selected{background:var(--color-primary-soft);border-left:3px solid var(--color-primary);padding-left:calc(var(--space-4) - 3px)}.classes-row-avatar{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:38px;height:38px;border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-primary);font-family:var(--font-data);font-size:12px;font-weight:700;text-transform:uppercase}.classes-row-body{display:flex;flex-direction:column;min-width:0}.classes-row-name{font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--color-ink)}.classes-row-meta{font-family:var(--font-data);font-size:12.5px;color:var(--color-ink-secondary)}.classes-actions{padding:var(--space-4)}.classes-error{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.classes-error-text{font-family:var(--font-body);font-size:15px;color:var(--color-error);margin:0 0 var(--space-4)}.classes-error-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.classes-error-retry:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.classes-empty{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.classes-empty-text{font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary);margin:0 0 var(--space-4)}.classes-empty-action,.classes-add-btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;text-decoration:none}.classes-empty-action:focus-visible,.classes-add-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.split-layout-secondary{display:none}@media(min-width:960px){.classes-split-layout{display:grid;grid-template-columns:300px minmax(0,1fr);align-items:start;gap:var(--space-4);max-width:820px;margin:0 auto;padding:var(--space-4)}.split-layout-secondary{display:block}.classes-split-layout .classes-screen,.classes-split-layout .class-detail-screen,.classes-split-layout .classes-split-placeholder{min-height:0;height:calc(100vh - (var(--space-4) * 2));overflow:hidden auto;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md)}.classes-split-layout .classes-list-column{display:flex;flex-direction:column;gap:0;min-height:0;height:calc(100vh - (var(--space-4) * 2));overflow:hidden;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md)}.classes-split-layout .classes-list-column .classes-screen{flex:1;min-height:0;height:auto;border:0;border-radius:0}}.classes-split-placeholder{padding:var(--space-7) var(--space-4);text-align:center;color:var(--color-ink-secondary);font-family:var(--font-body);font-size:15px}.exams-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.exams-header{position:sticky;top:0;padding:var(--space-4) var(--space-4) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.exams-title{font-family:var(--font-display);font-weight:700;font-size:19px;line-height:1.2;letter-spacing:-.01em;color:var(--color-ink);margin:0}.exams-subtitle{font-family:var(--font-body);font-size:12.5px;color:var(--color-ink-secondary);margin:var(--space-1) 0 0}.exams-controls{margin-top:var(--space-3)}.exams-skill-filter{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-1);margin-bottom:var(--space-2);scrollbar-width:thin}.exams-skill-btn{flex-shrink:0;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ink-secondary);font-family:var(--font-body);font-weight:600;font-size:12.5px;white-space:nowrap;cursor:pointer}.exams-skill-btn.active{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.exams-skill-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.exams-search{width:100%;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px}.exams-search:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.exams-list{list-style:none;margin:0;padding:0}.exams-row{display:flex;align-items:center;gap:var(--space-3);min-height:var(--space-tap);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.exams-row-badge{display:flex;align-items:center;justify-content:center;flex-shrink:0;min-width:84px;height:26px;padding:0 var(--space-2);border-radius:var(--radius-full);background:var(--color-primary-soft);color:var(--color-primary);font-family:var(--font-data);font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.exams-row-body{display:flex;flex-direction:column;min-width:0}.exams-row-title{font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--color-ink)}.exams-row-meta{font-family:var(--font-data);font-size:12.5px;color:var(--color-ink-secondary)}.exams-error{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.exams-error-text{font-family:var(--font-body);font-size:15px;color:var(--color-error);margin:0 0 var(--space-4)}.exams-error-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.exams-error-retry:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.exams-empty{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.exams-empty-text{font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary);margin:0}.new-class-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.new-class-header{position:sticky;top:0;min-height:var(--space-tap);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.new-class-back{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;margin-left:calc(var(--space-2) * -1);border-radius:var(--radius-sm);color:var(--color-ink)}.new-class-back:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.new-class-title{font-family:var(--font-display);font-weight:700;font-size:17px;line-height:1.2;color:var(--color-ink);margin:0}.new-class-form{max-width:440px;margin:0 auto;padding:var(--space-5) var(--space-4)}.new-class-field{display:block;text-align:left;margin-bottom:var(--space-4)}.new-class-label{display:block;font-family:var(--font-body);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-secondary);margin-bottom:var(--space-2)}.new-class-input{width:100%;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px}.new-class-btn{width:100%;min-height:var(--space-tap);margin-top:var(--space-3);border-radius:var(--radius-md);background:var(--color-ink);color:#fff;font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.new-class-btn:disabled{opacity:.6;cursor:default}.new-class-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.new-class-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.class-detail-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.class-detail-header{position:sticky;top:0;display:flex;align-items:center;gap:var(--space-2);min-height:var(--space-tap);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.class-detail-back,.class-detail-add{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;border-radius:var(--radius-sm);color:var(--color-ink)}.class-detail-back{margin-left:calc(var(--space-2) * -1)}.class-detail-add{margin-right:calc(var(--space-2) * -1);color:var(--color-primary)}.class-detail-back:focus-visible,.class-detail-add:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.class-detail-heading{flex:1;min-width:0;padding:var(--space-2) 0}.class-detail-title{font-family:var(--font-display);font-weight:700;font-size:17px;line-height:1.2;color:var(--color-ink);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-detail-subtitle{font-family:var(--font-body);font-size:12.5px;color:var(--color-ink-secondary);margin:2px 0 0}.class-detail-sechead{padding:var(--space-4) var(--space-4) var(--space-2);font-family:var(--font-body);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-secondary)}.class-detail-list{list-style:none;margin:0;padding:0}.class-detail-row{display:flex;align-items:center;gap:var(--space-3);min-height:var(--space-tap);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line);text-decoration:none;color:inherit}.class-detail-row:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.class-detail-archive-bar{padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.class-detail-archive-btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:40px;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:14px;cursor:pointer}.class-detail-archive-btn:disabled{opacity:.6;cursor:default}.class-detail-archive-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.class-detail-archive-error{margin:var(--space-3) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.class-detail-row-avatar{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:38px;height:38px;border-radius:var(--radius-sm);background:var(--color-neutral-fill);color:var(--color-ink-secondary);font-family:var(--font-data);font-size:12px;font-weight:700;text-transform:uppercase}.class-detail-row-body{display:flex;flex-direction:column;min-width:0}.class-detail-row-name{font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--color-ink)}.class-detail-row-code{font-family:var(--font-data);font-size:12.5px;color:var(--color-ink-secondary)}.class-detail-error,.class-detail-empty{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.class-detail-error-text{font-family:var(--font-body);font-size:15px;color:var(--color-error);margin:0 0 var(--space-4)}.class-detail-empty-text{font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary);margin:0 0 var(--space-4)}.class-detail-error-retry,.class-detail-empty-action{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;text-decoration:none;cursor:pointer}.class-detail-error-retry:focus-visible,.class-detail-empty-action:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.add-students-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.add-students-header{position:sticky;top:0;min-height:var(--space-tap);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.add-students-back{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;margin-left:calc(var(--space-2) * -1);border-radius:var(--radius-sm);color:var(--color-ink)}.add-students-back:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.add-students-title{font-family:var(--font-display);font-weight:700;font-size:17px;line-height:1.2;color:var(--color-ink);margin:0}.add-students-body{max-width:440px;margin:0 auto;padding:var(--space-5) var(--space-4)}.add-students-field{display:block}.add-students-label{display:block;font-family:var(--font-body);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-secondary);margin-bottom:var(--space-2)}.add-students-loading{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center;font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary)}.add-students-textarea{display:block;width:100%;min-height:180px;padding:var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px;resize:vertical}.add-students-count{font-family:var(--font-body);font-size:13px;color:var(--color-ink-secondary);margin:var(--space-3) 0 var(--space-5)}.add-students-count-num{font-family:var(--font-data);color:var(--color-ink)}.add-students-submit{width:100%;min-height:var(--space-tap);border-radius:var(--radius-md);background:var(--color-ink);color:#fff;font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.add-students-submit:disabled{opacity:.6;cursor:default}.add-students-submit:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.add-students-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.add-students-load-error{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.add-students-load-error-text{font-family:var(--font-body);font-size:15px;color:var(--color-error);margin:0 0 var(--space-4)}.add-students-load-error-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.add-students-load-error-retry:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.edit-student-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.edit-student-header{position:sticky;top:0;min-height:var(--space-tap);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.edit-student-back{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;margin-left:calc(var(--space-2) * -1);border-radius:var(--radius-sm);color:var(--color-ink)}.edit-student-back:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.edit-student-title{font-family:var(--font-display);font-weight:700;font-size:17px;line-height:1.2;color:var(--color-ink);margin:0}.edit-student-loading{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center;font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary)}.edit-student-load-error{max-width:440px;margin:0 auto;padding:var(--space-7) var(--space-4);text-align:center}.edit-student-load-error-text{font-family:var(--font-body);font-size:15px;color:var(--color-error);margin:0 0 var(--space-4)}.edit-student-load-error-retry{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--space-tap);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.edit-student-load-error-retry:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.edit-student-form{max-width:440px;margin:0 auto;padding:var(--space-5) var(--space-4)}.edit-student-field{display:block;text-align:left;margin-bottom:var(--space-4)}.edit-student-label{display:block;font-family:var(--font-body);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-secondary);margin-bottom:var(--space-2)}.edit-student-input{width:100%;min-height:var(--space-tap);padding:0 var(--space-3);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:15px}.edit-student-btn{width:100%;min-height:var(--space-tap);margin-top:var(--space-3);border-radius:var(--radius-md);background:var(--color-ink);color:#fff;font-family:var(--font-body);font-weight:600;font-size:15px;cursor:pointer}.edit-student-btn:disabled{opacity:.6;cursor:default}.edit-student-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.edit-student-error{margin:var(--space-4) 0 0;padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-error-soft);color:var(--color-error);font-family:var(--font-body);font-size:13.5px;text-align:center}.admin-home-screen{min-height:100vh;min-height:100dvh;background:var(--color-paper)}.admin-home-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;min-height:var(--space-tap);padding:var(--space-3) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.admin-home-mark{font-family:var(--font-data);font-size:12px;font-weight:700;letter-spacing:.18em;color:var(--color-primary)}.admin-home-signout{font-family:var(--font-body);font-size:13.5px;font-weight:600;color:var(--color-ink-secondary);min-height:var(--space-tap);padding:0 var(--space-2)}.admin-home-empty{max-width:960px;margin:0 auto;padding:var(--space-7) var(--space-6);text-align:center}.admin-home-empty-title{font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1.2;letter-spacing:-.02em;color:var(--color-ink);margin:0 0 var(--space-2)}.admin-home-empty-body{font-family:var(--font-body);font-size:15px;color:var(--color-ink-secondary);margin:0}:root{--color-paper: #eff3f7;--color-surface: #ffffff;--color-ink: #132437;--color-ink-secondary: #5a6c82;--color-ink-tertiary: #93a2b4;--color-line: #e4ebf2;--color-line-strong: #cedae6;--color-primary: #1b57a4;--color-primary-soft: #e8f0fa;--color-primary-deep: #0e2e56;--color-success: #2b7a56;--color-success-soft: #e5f2eb;--color-error: #c23a31;--color-error-soft: #fbeae8;--color-warning: #a5700e;--color-warning-soft: #fbf1de;--color-diagnostic: #6b5bd2;--color-diagnostic-soft: #efecfb;--color-neutral-fill: #d1dbe5;--font-display: "Bricolage Grotesque", "Be Vietnam Pro", system-ui, sans-serif;--font-body: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--font-data: "JetBrains Mono", ui-monospace, Consolas, monospace;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-tap: 44px;color-scheme:light;color:var(--color-ink);background:var(--color-paper);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:15px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
