:root{--color-primary: #4338ca;--color-primary-hover: #3730a3;--color-primary-light: #eef2ff;--color-primary-rgb: 67, 56, 202;--color-success: #16a34a;--color-warning: #f59e0b;--color-danger: #dc2626;--color-text: #1e293b;--color-text-secondary: #475569;--color-text-muted: #64748b;--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-hover: #f1f5f9;--color-border: #e2e8f0;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 2px 6px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .1), 0 2px 4px rgba(0, 0, 0, .05);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}@media(prefers-color-scheme:dark){:root{--color-primary: #818cf8;--color-primary-hover: #6366f1;--color-primary-light: #1e1b4b;--color-primary-rgb: 129, 140, 248;--color-success: #4ade80;--color-warning: #fbbf24;--color-danger: #f87171;--color-text: #e2e8f0;--color-text-secondary: #cbd5e1;--color-text-muted: #94a3b8;--color-bg: #0f172a;--color-surface: #1e293b;--color-surface-hover: #334155;--color-border: #334155;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 2px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased}h1{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}h2{font-size:1.25rem;font-weight:600;letter-spacing:-.01em}h3{font-size:1rem;font-weight:600}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:all .15s ease}.btn:hover{background:var(--color-surface-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.875rem;padding:.25rem}.btn-link:hover{text-decoration:underline}label{display:block;margin-bottom:1rem;font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}input,select,textarea{display:block;width:100%;margin-top:.25rem;padding:.5rem .75rem;font-size:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);transition:border-color .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.15)}.badge{display:inline-block;padding:.15rem .5rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-sm)}.badge-verified{background:#dcfce7;color:#166534}.badge-pending{background:#fef3c7;color:#92400e}.badge-lapsed{background:#fee2e2;color:#991b1b}.role-badge{display:inline-block;padding:.15rem .5rem;font-size:.7rem;font-weight:500;background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);margin-left:.5rem}@media(prefers-color-scheme:dark){.badge-verified{background:#166534;color:#dcfce7}.badge-pending{background:#92400e;color:#fef3c7}.badge-lapsed{background:#991b1b;color:#fee2e2}}.error{color:var(--color-danger);font-size:.85rem;margin-top:.25rem}.loading{display:flex;align-items:center;justify-content:center;min-height:100vh;font-size:1.1rem;color:var(--color-text-muted)}.login-page{max-width:400px;margin:15vh auto;padding:2rem;text-align:center}.login-page h1{font-size:2rem;margin-bottom:.5rem}.login-page p{color:var(--color-text-secondary);margin-bottom:1.5rem}.login-page .btn{width:100%;justify-content:center;padding:.75rem;font-size:1rem}.login-note{font-size:.85rem;color:var(--color-text-muted);margin-top:1.5rem}.login-note a{color:var(--color-primary)}.waiting-spinner{padding:1rem;color:var(--color-primary);font-weight:500;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.no-school-page{max-width:480px;margin:8vh auto;padding:2rem}.no-school-page h1{margin-bottom:.5rem}.no-school-page>p{color:var(--color-text-secondary);margin-bottom:2rem}.no-school-page h2{margin-bottom:1rem}.no-school-page form{background:var(--color-surface);padding:1.5rem;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.no-school-page form button[type=submit]{width:100%;margin-top:.5rem}.no-school-page>.btn-link{margin-top:2rem}.dashboard{max-width:960px;margin:0 auto;padding:0 1rem 2rem}.dashboard-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:1.25rem 0;border-bottom:1px solid var(--color-border);margin-bottom:2rem}.dashboard-header h1{display:inline;margin-right:.5rem}.header-actions{display:flex;align-items:center;gap:.75rem;font-size:.85rem;color:var(--color-text-muted)}.header-actions select{width:auto;padding:.3rem .5rem;font-size:.8rem}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.class-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.class-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.25rem;transition:box-shadow .15s ease,border-color .15s ease;cursor:pointer}.class-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.class-card h3{margin-bottom:.25rem}.class-card .year{font-size:.8rem;color:var(--color-text-muted);margin-left:.5rem}.class-card p{font-size:.85rem;color:var(--color-text-secondary);margin-top:.5rem}.create-class-form{display:flex;gap:.5rem;align-items:end;margin-bottom:1.5rem;padding:1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.create-class-form input{flex:1}.create-class-form label{margin-bottom:0;flex:1}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-muted);font-size:.95rem}.class-detail{max-width:960px;margin:0 auto;padding:0 1rem 2rem}.class-detail-header{display:flex;align-items:center;gap:1rem;padding:1.25rem 0;border-bottom:1px solid var(--color-border);margin-bottom:1.5rem}.class-detail-header h1{margin:0}.tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:1.5rem}.tab{padding:.6rem 1rem;font-size:.875rem;font-weight:500;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--color-text-muted);cursor:pointer;transition:all .15s ease}.tab:hover{color:var(--color-text)}.tab-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab-content{min-height:200px}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.6rem .75rem;font-weight:600;color:var(--color-text-secondary);border-bottom:2px solid var(--color-border);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.data-table td{padding:.6rem .75rem;border-bottom:1px solid var(--color-border)}.data-table tbody tr:hover{background:var(--color-surface-hover)}.invite-section{max-width:400px}.invite-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.5rem;text-align:center}.invite-code{font-size:2.5rem;font-weight:700;letter-spacing:.2em;font-family:SF Mono,Fira Code,monospace;color:var(--color-primary);padding:1rem;cursor:pointer;-webkit-user-select:all;user-select:all;transition:background .15s ease;border-radius:var(--radius-sm)}.invite-code:hover{background:var(--color-primary-light)}.invite-meta{font-size:.8rem;color:var(--color-text-muted);margin:.75rem 0}.invite-actions{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.invite-help{font-size:.85rem;color:var(--color-text-muted);margin-top:1.5rem}.homework-list{display:flex;flex-direction:column;gap:.75rem}.homework-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem 1.25rem}.homework-card h3{display:inline;margin-right:.5rem}.homework-card p{font-size:.85rem;color:var(--color-text-secondary);margin-top:.35rem}.assign-panel{background:var(--color-primary-light);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.25rem;margin-bottom:1.5rem}.assign-panel h3{margin-bottom:.75rem}.deletion-banner{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-md);padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#991b1b}@media(prefers-color-scheme:dark){.deletion-banner{background:#450a0a;border-color:#7f1d1d;color:#fca5a5}}.student-notice-page{max-width:480px;margin:10vh auto;padding:2rem;text-align:center}.student-notice-page h1{margin-bottom:1.5rem}.student-notice-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:2rem;text-align:left}.student-notice-email{font-size:.85rem;color:var(--color-text-muted);margin-bottom:1rem}.student-notice-card h2{margin-bottom:.5rem}.student-notice-card>p{color:var(--color-text-secondary);margin-bottom:1.25rem}.student-notice-classes{background:var(--color-bg);border-radius:var(--radius-sm);padding:.75rem 1rem;margin-bottom:1.25rem}.student-notice-classes h3{font-size:.85rem;margin-bottom:.4rem}.student-notice-classes ul{list-style:none;padding:0}.student-notice-classes li{padding:.25rem 0;font-size:.875rem;color:var(--color-text-secondary)}.student-notice-actions{display:flex;align-items:center;gap:1rem}.verification-banner{padding:1.25rem;border-radius:var(--radius-md);margin-bottom:1.5rem;border:1px solid}.verification-pending{border-color:var(--color-warning);background:#fffbeb}.verification-lapsed{border-color:var(--color-danger);background:#fef2f2}@media(prefers-color-scheme:dark){.verification-pending{background:#451a03}.verification-lapsed{background:#450a0a}}.verification-header{margin-bottom:1rem}.verification-header strong{display:block;margin-bottom:.25rem}.verification-header p{font-size:.875rem;color:var(--color-text-secondary)}.verification-steps{margin-top:1rem}.verification-step{font-size:.875rem;margin-bottom:.5rem}.dns-record{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1rem;margin:.75rem 0}.dns-field{margin-bottom:.5rem}.dns-label{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.15rem}.dns-field code{display:block;font-size:.85rem;padding:.4rem .6rem;background:var(--color-bg);border-radius:var(--radius-sm);cursor:pointer;word-break:break-all;transition:background .15s}.dns-field code:hover{background:var(--color-primary-light)}.dns-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:.5rem}.verification-success{color:var(--color-success);font-weight:600;margin-top:.75rem}.verification-pending{color:var(--color-warning);font-size:.875rem;margin-top:.75rem}@media(max-width:640px){.dashboard-header{flex-direction:column;align-items:flex-start}.header-actions{flex-wrap:wrap}.create-class-form{flex-direction:column}.create-class-form input{width:100%}.class-list{grid-template-columns:1fr}}
