:root{--bg:#f4f6f8;--surface:#fff;--surface-2:#f0f2f5;--border:#e5e7eb;--text:#111827;--text-muted:#6b7280;--primary:#84cc16;--primary-hover:#65a30d;--primary-soft:#ecfccb;--lime:#a3e635;--danger:#ef4444;--danger-soft:#fef2f2;--success:#22c55e;--success-soft:#f0fdf4;--warning:#f59e0b;--warning-soft:#fffbeb;--radius-sm:10px;--radius:16px;--radius-lg:24px;--shadow-sm:0 1px 2px #14161a0a;--shadow:0 4px 12px #14161a0f;--shadow-lg:0 12px 32px #14161a1a;--sidebar-bg:#fff;--sidebar-text:#4b5563;--sidebar-active-bg:var(--primary-soft);--sidebar-active-text:var(--primary-hover)}[data-theme=dark]{--bg:#0d0f13;--surface:#171a21;--surface-2:#1e222b;--border:#262a35;--text:#f1f3f7;--text-muted:#8b93a7;--primary:#a3e635;--primary-hover:#bef264;--primary-soft:#263315;--lime:#84cc16;--danger:#f87171;--danger-soft:#3a1e1e;--success:#4ade80;--success-soft:#14321f;--warning:#fbbf24;--warning-soft:#3a2d10;--shadow-sm:0 1px 2px #0000004d;--shadow:0 4px 12px #0006;--shadow-lg:0 12px 32px #00000080;--sidebar-bg:#12151b;--sidebar-text:#9aa3b8;--sidebar-active-bg:var(--primary-soft);--sidebar-active-text:var(--primary)}*{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5;transition:background .2s,color .2s}h1{letter-spacing:-.01em;margin:0 0 12px;font-size:24px;font-weight:700}h2{margin:24px 0 12px;font-size:16px;font-weight:600}h3{margin:0 0 8px;font-size:15px;font-weight:600}p{margin:0 0 12px}a{color:var(--primary-hover);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;padding:10px 16px;font-weight:500;transition:all .15s}button:hover:not(:disabled){background:var(--surface-2);transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#0f172a;box-shadow:0 4px 14px #84cc164d}button.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}button.danger{color:var(--danger);background:var(--danger-soft);border-color:#0000}input,select,textarea{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);outline:none;padding:10px 14px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}input::placeholder,textarea::placeholder{color:var(--text-muted)}label{color:var(--text-muted);margin-bottom:6px;font-size:12px;font-weight:500;display:block}table{border-collapse:collapse;background:0 0;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:12px 16px;font-size:11px;font-weight:600}td{border-bottom:1px solid var(--border);color:var(--text);padding:14px 16px}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--text);padding:20px}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:20px;display:flex}.filter-bar>div{flex-direction:column;gap:4px;display:flex}.muted{color:var(--text-muted)}.error-text{color:var(--danger)}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#0a0c128c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);color:var(--text);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:90vh;box-shadow:var(--shadow-lg);border:1px solid var(--border);padding:28px;overflow-y:auto}.modal h2{margin-top:0}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.print-only{display:none}.timetable-grid{border-collapse:collapse;background:var(--surface);border:2px solid var(--text);table-layout:fixed;width:100%}.timetable-grid th,.timetable-grid td{border:1px solid var(--border);color:var(--text);background:var(--surface);padding:6px;font-size:11px;line-height:1.2}.timetable-grid thead th{background:var(--surface-2);text-align:center;letter-spacing:.4px;color:var(--text);font-size:10px;font-weight:700}.timetable-grid thead th.period-column .period-time{color:var(--text-muted);margin-top:2px;font-size:9px;font-weight:400;display:block}.timetable-grid thead th.break-column{background:var(--warning-soft);color:var(--warning);letter-spacing:1px;text-align:center;vertical-align:middle;width:34px;font-size:10px;font-weight:700}.timetable-grid th.corner{background:var(--surface-2);width:50px}.timetable-grid td.day-cell{background:var(--surface-2);text-align:center;text-transform:uppercase;width:50px;color:var(--text);font-size:12px;font-weight:700}.timetable-grid td.break-cell{background:var(--warning-soft);text-align:center;vertical-align:middle;width:34px;padding:2px}.timetable-grid td.break-cell .break-text{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:3px;color:var(--warning);padding:6px 0;font-size:11px;font-weight:700;transform:rotate(180deg)}.timetable-grid td.lesson-cell{cursor:pointer;vertical-align:middle;text-align:center;height:56px;transition:background .12s}.timetable-grid td.lesson-cell:hover{background:var(--primary-soft)}.timetable-grid td.lesson-cell .lesson-content{overflow-wrap:break-word;word-break:break-word;color:var(--text);font-size:11px;font-weight:600}.timetable-grid td.lesson-cell .lesson-empty{opacity:.35;color:var(--text-muted);font-size:11px}.register-table{border-collapse:collapse;background:var(--surface);width:100%}.register-table th,.register-table td{border-bottom:1px solid var(--border);color:var(--text);background:var(--surface);padding:10px 12px;font-size:13px}.register-table thead th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:11px;font-weight:600}.report-card{background:var(--surface);color:var(--text);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:24px;padding:36px 44px;font-family:Georgia,Times New Roman,serif;font-size:13px;line-height:1.5}.rc-header{text-align:center;border-bottom:3px double var(--text);margin-bottom:20px;padding-bottom:14px}.rc-school-name{text-transform:uppercase;letter-spacing:2px;color:var(--text);margin:0;font-size:24px;font-weight:700}.rc-subtitle{color:var(--text-muted);margin:8px 0 0;font-size:14px;font-style:italic}.rc-assessment-name{color:var(--primary-hover);margin-top:10px;font-size:13px;font-style:italic;font-weight:600}.rc-title{letter-spacing:4px;text-transform:uppercase;border-top:1.5px solid var(--text);border-bottom:1.5px solid var(--text);color:var(--text);margin-top:14px;padding:8px 0;font-size:16px;font-weight:700}.rc-student{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;gap:8px 40px;margin-bottom:20px;padding:14px 0;display:grid}.rc-cell{align-items:baseline;gap:8px;display:flex}.rc-key{text-transform:uppercase;letter-spacing:.5px;min-width:90px;color:var(--text-muted);font-size:11px;font-weight:700}.rc-val{border-bottom:1px dotted var(--text-muted);color:var(--text);flex:1;padding-bottom:2px;font-size:14px}.rc-table{border-collapse:collapse;width:100%;margin-bottom:24px;font-family:Georgia,Times New Roman,serif}.rc-table th,.rc-table td{border:1px solid var(--border);color:var(--text);background:var(--surface);padding:10px 14px;font-size:13px}.rc-table thead th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.6px;color:var(--text);text-align:left;font-size:11px;font-weight:700}.rc-table td{text-align:left}.rc-table td:not(:first-child),.rc-table th:not(:first-child){text-align:center}.rc-graph{border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);margin:24px 0;padding:16px 20px}.rc-graph .rc-label{text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--border);color:var(--text);margin-bottom:10px;padding-bottom:6px;font-size:11px;font-weight:700}.rc-comment{border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface-2);margin-bottom:24px;padding:16px 20px}.rc-label{text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--border);color:var(--text);margin-bottom:10px;padding-bottom:6px;font-size:11px;font-weight:700}.rc-comment-body{white-space:pre-wrap;min-height:80px;color:var(--text);font-family:Georgia,Times New Roman,serif;font-size:13px;font-style:italic;line-height:1.7}.rc-signatures{grid-template-columns:1fr 1fr;gap:60px;margin-top:30px;display:grid}.rc-sig-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text);margin-bottom:4px;font-size:11px;font-weight:700}.rc-sig-line{border-bottom:1.5px solid var(--text);height:40px;margin-top:10px}@media print{@page{size:A4 landscape;margin:8mm}html,body{color:#000!important;background:#fff!important;margin:0!important;padding:0!important;font-size:8pt!important}main,.timetable-page,.report-card{padding:0!important}.no-print{display:none!important}.print-only{display:block!important}*{color:#000!important;box-shadow:none!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;background-color:#0000!important}.print-timetable{page-break-inside:avoid;width:100%}.print-only{text-align:center;margin-bottom:3mm}.print-only h2{margin:0 0 2mm;font-size:13pt;font-weight:700;color:#000!important}.print-only .print-subtitle{margin-bottom:1mm;font-size:9pt;font-style:italic;color:#000!important}.print-only .print-title{margin-bottom:2mm;font-size:11pt;font-weight:700;color:#000!important}.timetable-grid{table-layout:fixed;border-collapse:collapse;page-break-inside:avoid;border:1.2pt solid #000!important;width:100%!important}.timetable-grid th,.timetable-grid td{color:#000!important;background:#fff!important;border:.6pt solid #000!important;padding:1.5mm 1mm!important;font-size:7pt!important;line-height:1.1!important}.timetable-grid thead th{background:#e8e8e8!important}.timetable-grid thead th.break-column{background:#d8d8d8!important}.timetable-grid th.corner{background:#e8e8e8!important}.timetable-grid td.day-cell{font-weight:700;background:#e8e8e8!important;font-size:9pt!important}.timetable-grid td.break-cell{background:#d8d8d8!important;padding:0!important}.timetable-grid td.break-cell .break-text{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);letter-spacing:1pt!important;color:#000!important;padding:2mm 0!important;font-size:6.5pt!important}.timetable-grid td.lesson-cell{text-align:center;vertical-align:middle;height:12mm!important;padding:1mm!important}.timetable-grid td.lesson-cell .lesson-content{font-weight:600;color:#000!important;font-size:6.5pt!important}.timetable-grid td.lesson-cell .lesson-empty{display:none!important}.print-signatures{justify-content:space-between;margin-top:4mm;font-size:8pt;color:#000!important;display:flex!important}.print-signatures .sig-line{border-top:.6pt solid #000;width:60mm;margin-top:6mm}.register-print{box-shadow:none!important;border:none!important}.register-table{border:1px solid #000!important}.register-table th,.register-table td{color:#000!important;background:#fff!important;border:.6pt solid #000!important;padding:2mm!important;font-size:9pt!important}.register-table thead th{font-weight:700;background:#eaeaea!important;font-size:8pt!important}.report-card{page-break-after:always;box-shadow:none!important;color:#000!important;background:#fff!important;border:none!important;border-radius:0!important;margin:0!important;padding:0!important}.report-card:last-child{page-break-after:auto}.rc-table th,.rc-table td,.rc-table thead th{color:#000!important;background:#fff!important;border:1px solid #000!important}.rc-table thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#eee!important}.rc-graph{color:#000!important;background:#fff!important;border:1px solid #000!important}.rc-comment{color:#000!important;background:#fafafa!important;border:1px solid #000!important}.rc-sig-line{border-bottom:1px solid #000!important}}.dash-wrap{max-width:1280px;margin:0 auto;padding:20px}.dash-grid{grid-template-columns:repeat(12,1fr);gap:16px;display:grid}.dash-col-8{grid-column:span 8}.dash-col-6{grid-column:span 6}.dash-col-4{grid-column:span 4}.dash-col-12{grid-column:span 12}@media (width<=900px){.dash-col-8,.dash-col-4,.dash-col-6{grid-column:span 12}}.hero-card{background:linear-gradient(135deg, var(--primary) 0%, var(--lime) 100%);border-radius:var(--radius-lg);color:#0f172a;padding:26px;position:relative;overflow:hidden}.hero-card:after{content:"";background:#fff3;border-radius:50%;width:160px;height:160px;position:absolute;top:-40px;right:-40px}.hero-label{opacity:.9;font-size:13px;font-weight:700}.hero-value{letter-spacing:-.02em;margin:6px 0;font-size:38px;font-weight:900}.hero-delta{background:#fff6;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:700;display:inline-block}.ui-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow);height:100%;padding:20px}.ui-card-title{justify-content:space-between;align-items:center;margin:0 0 16px;font-size:15px;font-weight:700;display:flex}.ui-card-title a{color:var(--text-muted);font-size:13px;font-weight:600;text-decoration:none}.ui-card-title a:hover{color:var(--primary-hover)}.stat-big{flex-direction:column;gap:4px;display:flex}.stat-big-value{letter-spacing:-.02em;font-size:32px;font-weight:800}.stat-big-label{color:var(--text-muted);font-size:13px;font-weight:600}.list-row{border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:12px 0;display:flex}.list-row:last-child{border-bottom:none}.list-avatar{background:var(--primary-soft);width:40px;height:40px;color:var(--primary-hover);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:flex}.list-name{font-size:14px;font-weight:700}.list-meta{color:var(--text-muted);font-size:12px;font-weight:600}@media (width<=640px){.bottom-nav{background:var(--surface);border-radius:var(--radius-lg);z-index:50;justify-content:space-around;padding:10px;display:flex;position:fixed;bottom:16px;left:16px;right:16px;box-shadow:0 10px 30px #0000001a}.bottom-nav a{width:48px;height:48px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.bottom-nav a.active{background:var(--primary);color:#0f172a}}@media (width<=768px){.bottom-nav{background:var(--surface);border:1px solid var(--border);z-index:50;border-radius:999px;align-items:center;gap:4px;padding:8px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #0000001f}.bottom-nav a{width:48px;height:48px;color:var(--text-muted);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s;display:flex}.bottom-nav a.active{background:var(--primary);color:#0f172a}.sidebar-desktop,.header-desktop{display:none!important}main{padding:16px 16px 100px!important}}.login-blob{filter:blur(80px);opacity:.55;pointer-events:none;z-index:0;border-radius:50%;position:absolute}.login-blob-1{background:var(--primary);width:420px;height:420px;animation:14s ease-in-out infinite blobFloat1;top:-120px;left:-120px}.login-blob-2{background:var(--lime);width:360px;height:360px;animation:16s ease-in-out infinite blobFloat2;bottom:-140px;right:-120px}.login-blob-3{background:var(--primary-hover);opacity:.25;width:280px;height:280px;animation:18s ease-in-out infinite blobFloat3;top:40%;right:30%}@keyframes blobFloat1{0%,to{transform:translate(0)scale(1)}50%{transform:translate(60px,40px)scale(1.15)}}@keyframes blobFloat2{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-50px,-30px)scale(1.1)}}@keyframes blobFloat3{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-40px,50px)scale(.9)}}.login-card{z-index:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;padding:32px;animation:.6s cubic-bezier(.16,1,.3,1) cardRise;position:relative;box-shadow:0 20px 50px #0000001f}@keyframes cardRise{0%{opacity:0;transform:translateY(24px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.login-logo{align-items:center;gap:12px;margin-bottom:24px;display:flex}.login-logo-mark{background:linear-gradient(135deg, var(--primary) 0%, var(--lime) 100%);color:#0f172a;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;font-weight:900;animation:3s ease-in-out infinite logoPulse;display:flex;box-shadow:0 8px 20px #84cc1659}@keyframes logoPulse{0%,to{box-shadow:0 8px 20px #84cc1659}50%{box-shadow:0 8px 28px #84cc1699}}.login-brand{color:var(--text);font-size:16px;font-weight:800}.login-brand-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.login-title{letter-spacing:-.02em;margin:0 0 4px;font-size:24px;font-weight:800;animation:.6s .15s both fadeIn}.login-sub{color:var(--text-muted);margin:0 0 20px;font-size:13px;animation:.6s .25s both fadeIn}.login-field{margin-bottom:14px;animation:.5s both fadeIn}.login-field:first-child{animation-delay:.3s}.login-field:nth-child(2){animation-delay:.4s}.login-card button[type=submit]{transition:transform .15s,box-shadow .15s,background .15s;animation:.5s .5s both fadeIn}.login-card button[type=submit]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 24px #84cc1666}.login-card button[type=submit]:active:not(:disabled){transform:translateY(0)scale(.99)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.login-footer{z-index:1;color:var(--text-muted);margin-top:28px;font-size:12px;animation:.6s .6s both fadeIn;position:relative}.login-footer strong{color:var(--text);font-weight:700}.anim-in{animation:.55s cubic-bezier(.16,1,.3,1) both animIn}@keyframes animIn{0%{opacity:0;transform:translateY(16px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.hero-card:after{animation:6s ease-in-out infinite heroFloat}@keyframes heroFloat{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-15px,10px)scale(1.1)}}.dash-col-4 .ui-card{transition:transform .25s,box-shadow .25s}.dash-col-4 .ui-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px #0000001a}.ui-card [style*=width\:]{animation:.9s cubic-bezier(.16,1,.3,1) both barGrow}@keyframes barGrow{0%{width:0!important}}.bottom-nav{animation:.5s cubic-bezier(.16,1,.3,1) both navRise}@keyframes navRise{0%{opacity:0;transform:translate(-50%)translateY(30px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.bottom-nav a{transition:background .2s,color .2s,transform .15s}.bottom-nav a:active{transform:scale(.92)}.bottom-nav-icon-wrap{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.bottom-nav-icon{transition:transform .25s}.bottom-nav a.active .bottom-nav-icon{animation:.4s cubic-bezier(.34,1.56,.64,1) iconPop}@keyframes iconPop{0%{transform:scale(.6)}60%{transform:scale(1.15)}to{transform:scale(1)}}.bottom-nav-dot{background:#0f172a;border-radius:50%;width:4px;height:4px;animation:.3s dotFade;position:absolute;bottom:8px}@keyframes dotFade{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}.ai-page{max-width:900px;margin:0 auto;animation:.5s cubic-bezier(.16,1,.3,1) both animIn}.ai-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.ai-title{letter-spacing:-.02em;align-items:center;gap:10px;margin:0;font-size:24px;font-weight:800;display:flex}.ai-title-icon{background:linear-gradient(135deg, var(--primary) 0%, var(--lime) 100%);color:#0f172a;border-radius:12px;justify-content:center;align-items:center;width:38px;height:38px;display:flex;box-shadow:0 6px 18px #84cc1659}.ai-clear{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;transition:all .15s}.ai-clear:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.ai-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;height:calc(100vh - 240px);min-height:460px;display:flex;overflow:hidden}.ai-scroll{scroll-behavior:smooth;flex-direction:column;flex:1;gap:14px;padding:20px;display:flex;overflow-y:auto}.ai-empty{text-align:center;margin:auto;padding:40px 20px;animation:.6s both fadeIn}.ai-empty-icon{background:linear-gradient(135deg, var(--primary-soft) 0%, var(--lime) 100%);width:64px;height:64px;color:var(--primary-hover);border-radius:20px;justify-content:center;align-items:center;margin:0 auto;animation:3s ease-in-out infinite logoPulse;display:flex}.ai-suggestions{flex-direction:column;gap:8px;max-width:380px;margin:0 auto;display:flex}.ai-suggestion{text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;padding:12px 16px;font-size:13px;font-weight:500;transition:all .15s}.ai-suggestion:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary);transform:translate(4px)}.ai-row{align-items:flex-end;gap:10px;animation:.35s cubic-bezier(.16,1,.3,1) both msgIn;display:flex}.ai-row-user{flex-direction:row-reverse}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ai-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.ai-avatar-user{background:var(--primary-soft);color:var(--primary-hover)}.ai-avatar-bot{background:var(--surface-2);color:var(--text-muted)}.ai-bubble{white-space:pre-wrap;word-wrap:break-word;border-radius:18px;max-width:75%;padding:12px 16px;font-size:14px;line-height:1.5}.ai-bubble-user{background:var(--primary);color:#0f172a;border-bottom-right-radius:6px;font-weight:500}.ai-bubble-bot{background:var(--surface-2);color:var(--text);border-bottom-left-radius:6px}.ai-typing{align-items:center;gap:4px;display:inline-flex}.ai-typing span{background:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite typingDot}.ai-typing span:nth-child(2){animation-delay:.15s}.ai-typing span:nth-child(3){animation-delay:.3s}@keyframes typingDot{0%,80%,to{opacity:.4;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}.ai-composer{border-top:1px solid var(--border);background:var(--surface);gap:8px;padding:14px;display:flex}.ai-input{flex:1;border-radius:999px!important;padding:12px 18px!important}.ai-send{justify-content:center;align-items:center;width:44px;height:44px;transition:transform .15s;display:flex;border-radius:50%!important;padding:0!important}.ai-send:hover:not(:disabled){transform:scale(1.06)}.ai-send:active:not(:disabled){transform:scale(.94)}.badge{text-transform:lowercase;letter-spacing:.02em;border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.badge-success{background:var(--success-soft);color:var(--success)}.badge-muted{background:var(--surface-2);color:var(--text-muted)}.badge-warning{background:var(--warning-soft);color:var(--warning)}@media (width<=768px){.table-desktop{display:none}.cards-mobile{display:block}}.dash-col-3{grid-column:span 3}@media (width<=900px){.dash-col-3{grid-column:span 6}}@media (width<=500px){.dash-col-3{grid-column:span 12}}.badge-primary{background:var(--primary-soft);color:var(--primary-hover)}.table-desktop{display:block}.cards-mobile{display:none}@media (width<=768px){.table-desktop{display:none}.cards-mobile{display:block}}.badge-danger{background:var(--danger-soft);color:var(--danger)}@media print{@page{size:A4 portrait;margin:10mm}html,body{color:#000!important;background:#fff!important;font-size:9pt!important}.no-print,.sidebar-desktop,.header-desktop,.bottom-nav,.ui-card{display:none!important}main,.dash-wrap{margin:0!important;padding:0!important}.report-card{page-break-after:always;page-break-inside:avoid;box-shadow:none!important;border:none!important;margin:0!important;padding:0!important}.report-card:last-child{page-break-after:auto}.rc-school-name{margin-bottom:2mm!important;font-size:16pt!important}.rc-subtitle,.rc-assessment-name{margin:1mm 0!important;font-size:9pt!important}.rc-title{margin:2mm 0!important;padding:2mm 0!important;font-size:11pt!important}.rc-table th,.rc-table td{padding:1.5mm 2mm!important;font-size:8pt!important}.rc-graph{page-break-inside:avoid;margin:2mm 0!important;padding:2mm!important}.rc-graph svg{height:100px!important}.rc-comment{page-break-inside:avoid;margin:2mm 0!important;padding:2mm!important}.rc-comment-body{min-height:30px!important;font-size:9pt!important}.rc-signatures{gap:30mm!important;margin-top:10mm!important}.rc-sig-line{height:20px!important}}.bottom-nav{display:none}@media (width<=768px){.bottom-nav{background:var(--surface);border:1px solid var(--border);z-index:50;border-radius:999px;align-items:center;gap:4px;padding:8px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #0003}.bottom-nav a{width:48px;height:48px;color:var(--text-muted);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s;display:flex}.bottom-nav a.active{background:var(--primary);color:#0f172a}.bottom-nav-menu{cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;transition:background .2s;display:flex;background:var(--surface-2)!important;color:var(--text)!important}.bottom-nav-menu:active{transform:scale(.92)}}.drawer-backdrop{z-index:9999;background:#00000080;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.drawer-content{background:var(--surface);border-radius:24px 24px 0 0;flex-direction:column;width:100%;max-width:500px;max-height:85vh;animation:.3s cubic-bezier(.16,1,.3,1) slideUp;display:flex;box-shadow:0 -10px 40px #0003}.drawer-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.drawer-list{flex:1;padding:8px 0;overflow-y:auto}.drawer-list a{color:var(--text);align-items:center;gap:12px;padding:14px 24px;font-size:15px;font-weight:500;text-decoration:none;transition:background .1s;display:flex}.drawer-list a:hover{background:var(--surface-2)}.drawer-list a.active{background:var(--primary-soft);color:var(--primary-hover);font-weight:600}.drawer-footer{border-top:1px solid var(--border);padding:20px 24px}.bottom-nav-logout{cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;width:100%;height:48px;font-size:14px;font-weight:600;transition:background .2s;display:flex;background:var(--danger-soft)!important;color:var(--danger)!important}.bottom-nav-logout:active{transform:scale(.98)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}
