@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";.slideover-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0f172a73;justify-content:flex-end;display:flex;position:fixed;inset:0}.slideover-panel{background:#fff;flex-direction:column;max-width:100%;height:100vh;animation:.25s slideOverIn;display:flex;box-shadow:-20px 0 50px #0f172a2e}@keyframes slideOverIn{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}.slideover-header{border-bottom:1px solid #edf2f7;justify-content:space-between;align-items:flex-start;padding:24px 28px;display:flex}.slideover-header h2{color:#0f172a;margin:0;font-size:22px}.slideover-header p{color:#64748b;margin:6px 0 0;font-size:14px}.slideover-close{cursor:pointer;background:#fff;border:1px solid #dbe4ef;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.slideover-content{flex:1;padding:24px 28px;overflow-y:auto}.slideover-footer{background:#fff;border-top:1px solid #edf2f7;justify-content:flex-end;gap:12px;padding:18px 28px;display:flex}.confirm-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1200;background:#0f172a7a;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{text-align:center;background:#fff;border-radius:20px;width:420px;max-width:calc(100% - 32px);padding:26px;box-shadow:0 24px 60px #0f172a38}.confirm-icon{color:#dc2626;background:#fef2f2;border-radius:16px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto 16px;display:flex}.confirm-dialog h2{color:#0f172a;margin:0;font-size:20px}.confirm-dialog p{color:#64748b;margin:10px 0 22px;font-size:14px;line-height:1.6}.confirm-actions{justify-content:center;gap:12px;display:flex}.confirm-cancel-btn,.confirm-delete-btn{cursor:pointer;border-radius:12px;height:42px;padding:0 18px;font-size:14px;font-weight:600}.confirm-cancel-btn{color:#334155;background:#fff;border:1px solid #dbe4ef}.confirm-delete-btn{color:#fff;background:#dc2626;border:none}.confirm-delete-btn:hover{background:#b91c1c}.confirm-cancel-btn:disabled,.confirm-delete-btn:disabled{cursor:not-allowed;opacity:.65}.prompt-dialog{text-align:left}.prompt-dialog .confirm-icon,.prompt-dialog h2,.prompt-dialog>p{text-align:center}.prompt-field-label{color:#334155;margin-bottom:7px;font-size:13px;font-weight:700;display:block}.prompt-reason-input{resize:vertical;color:#0f172a;width:100%;min-height:96px;font:inherit;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:12px;outline:none;padding:11px 12px;line-height:1.5}.prompt-reason-input.is-error{border-color:#dc2626}.prompt-field-error{color:#dc2626;margin-top:6px;font-size:12px;display:block}.prompt-dialog .confirm-actions{margin-top:20px}.action-menu{justify-content:center;display:flex;position:relative}.action-menu-trigger{cursor:pointer;background:#fff;border:1px solid #dbe4ef;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.action-menu-dropdown{z-index:999;background:#fff;border:1px solid #edf2f7;border-radius:14px;width:180px;padding:6px;position:absolute;top:42px;right:0;box-shadow:0 18px 38px #0f172a29}.action-menu-dropdown button{color:#334155;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;grid-template-columns:18px 1fr;align-items:center;gap:8px;width:100%;height:38px;padding:0 10px;font-size:13px;font-weight:600;display:grid}.action-menu-dropdown button:hover{background:#f8fafc}.action-menu-dropdown button.danger{color:#dc2626}.action-menu-dropdown button.danger:hover{background:#fef2f2}.action-menu-dropdown button{text-align:left!important;white-space:nowrap!important;background:0 0!important;border:none!important;border-radius:10px!important;grid-template-columns:18px 1fr!important;justify-content:flex-start!important;align-items:center!important;gap:8px!important;width:100%!important;height:38px!important;margin:0!important;padding:0 10px!important;display:grid!important}.action-menu-dropdown{width:190px!important}:root{--accent:#2563eb;--accent-hover:#1e50c8;--accent-soft:#eaf1fe;--bg:#f7f8fa;--surface:#fff;--text:#1a2433;--text-muted:#667085;--text-faint:#98a2b3;--border:#eceff3;--ok-bg:#e6f7ec;--ok-text:#15803d;--err-bg:#fde8e8;--err-text:#d92d20;--warn-bg:#fef3e2;--warn-text:#b45309;--info-bg:#eaf1fe;--info-text:#2563eb;--mute-bg:#f1f3f5;--mute-text:#6b7280;--chip-blue-bg:#eaf1fe;--chip-blue:#2563eb;--chip-green-bg:#e6f7ec;--chip-green:#15803d;--chip-purple-bg:#f0ebfe;--chip-purple:#7c3aed;--chip-amber-bg:#fef3e2;--chip-amber:#c77700;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;--shadow-sm:0 1px 2px #1018280a, 0 1px 3px #1018280f;--shadow-md:0 2px 8px #1018280d, 0 6px 18px #1018280a;--shadow-lg:0 12px 32px #1018281a;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;font-size:14px;line-height:1.5}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}.t-display{letter-spacing:-.01em;font-size:32px;font-weight:700}.t-h1{letter-spacing:-.01em;font-size:24px;font-weight:700}.t-h2{font-size:18px;font-weight:600}.t-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.t-muted{color:var(--text-muted)}.t-faint{color:var(--text-faint)}.brand{align-items:center;gap:10px;display:flex}.brand b{letter-spacing:-.01em;font-size:18px}.logo{border-radius:var(--r-md);background:var(--accent);color:#fff;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;font-weight:700;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.btn{border-radius:var(--r-md);border:none;padding:10px 18px;font-size:14px;font-weight:600;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-soft{background:var(--accent-soft);color:var(--accent)}.btn-soft:hover{background:#dce8fd}.btn-ghost{background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.btn-ghost:hover{background:var(--bg)}.btn-block{width:100%;padding:12px}.pill{border-radius:var(--r-pill);align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.pill.ok{background:var(--ok-bg);color:var(--ok-text)}.pill.err{background:var(--err-bg);color:var(--err-text)}.pill.warn{background:var(--warn-bg);color:var(--warn-text)}.pill.info{background:var(--info-bg);color:var(--info-text)}.pill.mute{background:var(--mute-bg);color:var(--mute-text)}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--s5)}.stat .top{margin-bottom:var(--s4);justify-content:space-between;align-items:flex-start;display:flex}.stat .label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.stat .num{letter-spacing:-.01em;margin-top:var(--s1);color:#2a3342;font-size:30px;font-weight:700}.ic-chip{border-radius:var(--r-md);justify-content:center;align-items:center;width:40px;height:40px;display:flex}.ic-chip svg{width:20px;height:20px}.ic-chip.blue{background:var(--chip-blue-bg);color:var(--chip-blue)}.ic-chip.green{background:var(--chip-green-bg);color:var(--chip-green)}.ic-chip.purple{background:var(--chip-purple-bg);color:var(--chip-purple)}.ic-chip.amber{background:var(--chip-amber-bg);color:var(--chip-amber)}.delta{border-radius:var(--r-pill);padding:3px 8px;font-size:12px;font-weight:600}.delta.up{background:var(--ok-bg);color:var(--ok-text)}.delta.down{background:var(--err-bg);color:var(--err-text)}.nav-item{border-radius:var(--r-pill);color:var(--text-muted);cursor:pointer;align-items:center;gap:12px;margin-bottom:2px;padding:10px 12px;font-weight:500;display:flex}.nav-item .gi{justify-content:center;align-items:center;width:18px;display:flex}.nav-item .gi svg{width:18px;height:18px;display:block}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-item:not(.active):hover{background:var(--bg);color:var(--text)}.tbl-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);overflow:hidden}table{border-collapse:collapse;width:100%}thead th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);padding:10px var(--s5);font-size:11px;font-weight:600}tbody td{padding:12px var(--s5);border-top:1px solid var(--border);font-size:13px}tbody tr:hover{background:var(--bg)}.avatar{background:var(--accent-soft);width:32px;height:32px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.field{margin-bottom:var(--s4)}.field label{letter-spacing:.03em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--r-sm);width:100%;color:var(--text);background:#fff;padding:11px 13px;font-size:14px;transition:all .15s}.field input::placeholder{color:var(--text-faint)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.form-error{background:var(--err-bg);color:var(--err-text);border-radius:var(--r-sm);margin-bottom:var(--s4);padding:10px 13px;font-size:13px}.demo-note{background:var(--bg);border:1px dashed var(--border);border-radius:var(--r-md);color:var(--text-muted);margin-bottom:var(--s5);padding:11px 14px;font-size:12px;line-height:1.7}.demo-note b{color:var(--text)}.slot{border-radius:var(--r-md);min-height:62px;padding:10px;font-size:12px}.slot .s-title{font-size:13px;font-weight:600}.slot .s-meta{opacity:.85;margin-top:3px}.slot .s-tag{border-radius:var(--r-pill);background:#fff9;margin-top:6px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.slot.blue{background:var(--chip-blue-bg);color:#1e3a8a}.slot.green{background:var(--ok-bg);color:#14532d}.slot.purple{background:var(--chip-purple-bg);color:#4c1d95}.slot.conflict{background:var(--err-bg);color:var(--err-text);border:1px solid #f7b9b3}.slot.empty{border:1.5px dashed var(--border);color:var(--text-faint);background:0 0;justify-content:center;align-items:center;font-weight:500;display:flex}.auth{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);min-height:100vh;display:grid}.panel{padding:var(--s10);text-align:center;justify-content:center;align-items:center;gap:var(--s6);background:linear-gradient(165deg,#eaf1fe 0%,#f4f7fd 55%,#fbfcfe 100%);flex-direction:column;display:flex;position:relative;overflow:hidden}.panel .head{align-items:center;gap:var(--s3);flex-direction:column;display:flex}.panel .brand{justify-content:center}.panel .head h2{letter-spacing:-.02em;max-width:360px;font-size:30px;font-weight:700;line-height:1.2}.panel .head p{color:var(--text-muted);max-width:330px;font-size:15px}.feats{align-items:center;gap:var(--s2);flex-direction:column;display:flex}.feat{color:var(--text-muted);align-items:center;gap:10px;font-size:13px;display:inline-flex}.feat .dot{background:var(--ok-bg);width:22px;height:22px;color:var(--ok-text);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.feat .dot svg{width:13px;height:13px}.formside{padding:var(--s10) var(--s8);background:var(--surface);justify-content:center;align-items:center;display:flex}.formbox{width:100%;max-width:380px}.formbox .welcome{letter-spacing:-.01em;margin-top:var(--s6);font-size:26px;font-weight:700}.formbox .sub{color:var(--text-muted);margin-top:6px;margin-bottom:var(--s6)}.motif{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--s4);max-width:360px}.motif .m-top{margin-bottom:var(--s3);justify-content:space-between;align-items:center;display:flex}.motif .m-top span{color:var(--text-muted);font-size:12px;font-weight:600}.m-grid{gap:var(--s2);grid-template-columns:repeat(3,1fr);display:grid}.cell{border-radius:var(--r-sm);min-height:46px;padding:8px;font-size:10px;font-weight:600}.cell .who{opacity:.8;margin-top:2px;font-weight:500}.cell.blue{background:var(--accent-soft);color:#1e3a8a}.cell.green{background:var(--ok-bg);color:#14532d}.cell.purple{background:var(--chip-purple-bg);color:#4c1d95}.cell.empty{border:1.5px dashed var(--border);background:0 0}.cell.drop-target{border:1.5px dashed var(--border);z-index:1;background:0 0;position:relative;overflow:visible}.drag-block{border-radius:var(--r-sm);background:var(--accent-soft);color:#1e3a8a;box-shadow:var(--shadow-sm);z-index:3;padding:8px;font-size:10px;font-weight:600;position:absolute;inset:0}.drag-block .who{opacity:.8;margin-top:2px;font-weight:500}@media (prefers-reduced-motion:no-preference){.rise{animation:.5s both rise}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.drag-block{animation:4.6s ease-in-out infinite dropIn}.cell.drop-target{animation:4.6s ease-in-out infinite dropZone}@keyframes dropIn{0%{opacity:0;box-shadow:var(--shadow-lg);transform:translate(30px,-50px)scale(1.06)rotate(-3deg)}16%{opacity:1;box-shadow:var(--shadow-lg);transform:translate(30px,-50px)scale(1.06)rotate(-3deg)}52%{opacity:1;box-shadow:var(--shadow-lg);transform:translate(0)scale(1.05)rotate(0)}66%{opacity:1;box-shadow:var(--shadow-sm);transform:translate(0)scale(1)rotate(0)}88%{opacity:1;box-shadow:var(--shadow-sm);transform:translate(0)scale(1)rotate(0)}to{opacity:0;box-shadow:var(--shadow-sm);transform:translate(0)scale(1)rotate(0)}}@keyframes dropZone{0%,38%{border-color:var(--border)}42%,60%{border-color:var(--accent)}64%,to{border-color:#0000}}}@media (width<=880px){.auth{grid-template-columns:1fr}.panel{display:none}.formside{padding:var(--s8) var(--s5)}}:is(.dashboard-layout,.slideover-overlay,.confirm-overlay) :is(.add-teacher-btn,.add-room-btn,.add-batch-btn,.modal-primary-btn,.settings-primary-button,.timetable-primary-button,.btn-primary){background:var(--accent);color:#fff;border-radius:var(--r-md);box-shadow:var(--shadow-sm)}:is(.dashboard-layout,.slideover-overlay) :is(.add-teacher-btn,.add-room-btn,.add-batch-btn,.modal-primary-btn,.settings-primary-button,.timetable-primary-button,.btn-primary):hover:not(:disabled){background:var(--accent-hover);box-shadow:var(--shadow-sm)}:is(.dashboard-layout,.slideover-overlay,.confirm-overlay) button:disabled{cursor:not-allowed;opacity:.6}:is(.dashboard-layout,.slideover-overlay,.confirm-overlay) button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:is(.teacher-stat-card,.room-stat-card,.batch-stat-card,.timetable-stat-card,.teachers-table-card,.rooms-table-card,.batches-table-card,.settings-content-card,.modal-form-card,.rl-report-card){border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.confirm-dialog{border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);max-height:calc(100dvh - 32px);overflow-y:auto}.confirm-icon{border-radius:var(--r-md)}.confirm-primary .confirm-icon{background:var(--accent-soft);color:var(--accent)}.confirm-primary .confirm-delete-btn{background:var(--accent)}.confirm-primary .confirm-delete-btn:hover{background:var(--accent-hover)}.confirm-actions{flex-wrap:wrap}.slideover-panel{height:100dvh}.slideover-close,.modal-close-btn,.modal-secondary-btn{border-radius:var(--r-md)}.prompt-reason-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.route-loading{min-height:100vh;color:var(--text-muted,#64748b);background:var(--bg,#f8fafc);place-content:center;justify-items:center;gap:12px;padding:24px;font-size:14px;display:grid}.route-loading-spinner{border:3px solid var(--border,#e2e8f0);border-top-color:var(--accent,#2563eb);border-radius:999px;width:28px;height:28px;animation:.7s linear infinite route-loading-spin}@keyframes route-loading-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.route-loading-spinner{animation:none}}
