/* ═══════════════════════════════════════════════════════════════
   WEBSINK TUTORING — MANAGEMENT DASHBOARD (Light Edition)
   ═══════════════════════════════════════════════════════════════ */
:root {
  /* Page surfaces */
  --bg:#F1F5F9;
  --surface:#FFFFFF;
  --surface2:#F8FAFC;
  --surface3:#F1F5F9;
  /* Borders */
  --border:#E2E8F0;
  --border2:#CBD5E1;
  --border3:#94A3B8;
  /* Text */
  --text:#0F172A;
  --text2:#475569;
  --text3:#94A3B8;
  /* Accent — purple/violet (owner identity) */
  --accent:#7C3AED;
  --accent2:#6D28D9;
  --accent3:#8B5CF6;
  /* Status */
  --green:#10B981;
  --green-bg:rgba(16,185,129,.1);
  --green-glow:rgba(16,185,129,.25);
  --amber:#F59E0B;
  --amber-bg:rgba(245,158,11,.1);
  --red:#EF4444;
  --red-bg:rgba(239,68,68,.1);
  --red-glow:rgba(239,68,68,.2);
  --blue-bg:rgba(124,58,237,.1);
  --blue-glow:rgba(124,58,237,.25);
  --purple:#8B5CF6;
  --purple-bg:rgba(139,92,246,.1);
  --purple-glow:rgba(139,92,246,.2);
  /* Sidebar (always dark) */
  --sb-bg:#0F172A;
  --sb-border:rgba(255,255,255,.07);
  --sb-text:rgba(255,255,255,.55);
  /* Radius */
  --radius:10px;
  --radius-lg:14px;
  --radius-xl:18px;
  /* Shadows */
  --shadow-sm:0 1px 4px rgba(0,0,0,.06),0 2px 8px rgba(0,0,0,.04);
  --shadow:0 4px 16px rgba(0,0,0,.08),0 1px 4px rgba(0,0,0,.04);
  --shadow-lg:0 10px 40px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.06);
  --transition:.18s cubic-bezier(.4,0,.2,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);font-size:14px;min-height:100vh;-webkit-font-smoothing:antialiased}

/* ── Scrollbar ── */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:10px}
::-webkit-scrollbar-thumb:hover{background:var(--border3)}

/* ── Layout ── */
.shell{display:flex;height:100vh;overflow:hidden;position:relative}
.sidebar{width:234px;background:var(--sb-bg);display:flex;flex-direction:column;flex-shrink:0;transition:transform var(--transition);z-index:50}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.content{flex:1;overflow-y:auto;padding:24px;overflow-x:hidden}

/* ── Sidebar ── */
.sb-logo{padding:18px 16px 14px;border-bottom:1px solid var(--sb-border)}
.sb-brand{font-size:15px;font-weight:700;letter-spacing:-.4px;color:#fff;display:flex;align-items:center;gap:8px}
.sb-brand-icon{width:28px;height:28px;background:linear-gradient(135deg,var(--accent),var(--accent2));border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;flex-shrink:0;box-shadow:0 2px 8px rgba(124,58,237,.4)}
.sb-tagline{font-size:10px;color:rgba(255,255,255,.32);margin-top:2px;letter-spacing:.3px}
.sb-nav{padding:10px 8px;flex:1;overflow-y:auto}
.sb-section{font-size:10px;font-weight:700;color:rgba(255,255,255,.28);letter-spacing:1.2px;padding:4px 10px 8px;text-transform:uppercase}
.sb-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius);cursor:pointer;color:var(--sb-text);font-size:13px;margin-bottom:2px;transition:all var(--transition);border:1px solid transparent;position:relative}
.sb-item:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.85)}
.sb-item.active{background:linear-gradient(135deg,rgba(124,58,237,.85),rgba(109,40,217,.75));color:#fff;border-color:rgba(124,58,237,.3);font-weight:500;box-shadow:0 4px 12px rgba(124,58,237,.25)}
.sb-item svg{width:15px;height:15px;flex-shrink:0;opacity:.55;transition:opacity var(--transition)}
.sb-item.active svg{opacity:1}
.sb-item:hover svg{opacity:.8}
.sb-footer{padding:12px 10px;border-top:1px solid var(--sb-border);font-size:12px;color:rgba(255,255,255,.32)}
.sb-clock{font-family:'DM Mono',monospace;font-size:15px;color:rgba(255,255,255,.75);margin-top:2px;letter-spacing:.5px}
.sb-nav-owner,.sb-nav-teacher,.sb-nav-parent{display:none}
#sbUser{display:none;align-items:center;justify-content:space-between;padding:8px 0 0;margin-top:6px;border-top:1px solid var(--sb-border)}
.sb-user-name{font-size:12px;color:rgba(255,255,255,.8);font-weight:600}
.sb-user-role{font-size:10px;color:rgba(255,255,255,.32);margin-top:1px}

/* ── Hamburger ── */
.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:8px;border-radius:var(--radius);border:1px solid var(--border);background:transparent;transition:all var(--transition)}
.hamburger:hover{background:var(--surface2)}
.hamburger span{display:block;width:18px;height:2px;background:var(--text2);border-radius:2px;transition:all var(--transition)}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:49;backdrop-filter:blur(2px)}

/* ── Topbar ── */
.tb-title{font-size:16px;font-weight:600;letter-spacing:-.2px;color:var(--text)}
.tb-right{display:flex;align-items:center;gap:8px}
.tb-badge{background:var(--surface2);border:1px solid var(--border);padding:5px 12px;border-radius:20px;font-size:12px;color:var(--text2)}

/* ── Metrics row ── */
.metric-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:20px}
.metric{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;position:relative;overflow:hidden;transition:all var(--transition);cursor:default;box-shadow:var(--shadow-sm)}
.metric:hover{transform:translateY(-2px);border-color:var(--border2);box-shadow:var(--shadow)}
.metric::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:0}
.metric.blue::before{background:linear-gradient(90deg,#2563EB,#3B82F6)}
.metric.green::before{background:linear-gradient(90deg,#10B981,#34D399)}
.metric.red::before{background:linear-gradient(90deg,#EF4444,#F87171)}
.metric.amber::before{background:linear-gradient(90deg,#F59E0B,#FCD34D)}
.metric.purple::before{background:linear-gradient(90deg,#7C3AED,#8B5CF6)}
.metric-val{font-size:30px;font-weight:700;line-height:1;margin-bottom:4px;letter-spacing:-1px;font-family:'DM Mono',monospace}
.metric-val.blue{color:#2563EB}
.metric-val.green{color:#10B981}
.metric-val.red{color:#EF4444}
.metric-val.amber{color:#F59E0B}
.metric-val.purple{color:#7C3AED}
.metric-lbl{font-size:12px;color:var(--text2);font-weight:500}
.metric-delta{font-size:11px;margin-top:6px}
.delta-up{color:var(--green)}
.delta-dn{color:var(--red)}

/* ── Cards ── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow-sm);transition:border-color var(--transition),box-shadow var(--transition)}
.card:hover{border-color:var(--border2);box-shadow:var(--shadow)}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px}
.card-title{font-size:12px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.8px}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.2px}
.badge-green{background:rgba(16,185,129,.1);color:#059669;border:1px solid rgba(16,185,129,.2)}
.badge-amber{background:rgba(245,158,11,.1);color:#D97706;border:1px solid rgba(245,158,11,.2)}
.badge-red{background:rgba(239,68,68,.1);color:#DC2626;border:1px solid rgba(239,68,68,.2)}
.badge-blue{background:rgba(124,58,237,.1);color:var(--accent);border:1px solid rgba(124,58,237,.2)}
.badge-gray{background:var(--surface2);color:var(--text2);border:1px solid var(--border)}
.badge-purple{background:rgba(139,92,246,.1);color:#7C3AED;border:1px solid rgba(139,92,246,.2)}

/* ── Table ── */
.tbl-wrap{overflow-x:auto;border-radius:var(--radius)}
table{width:100%;border-collapse:collapse;min-width:400px}
th{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;padding:10px 14px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;background:var(--surface2)}
td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle;color:var(--text2);transition:background var(--transition)}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--surface2)}
.td-name{color:var(--text);font-weight:500}

/* ── Forms ── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group.full{grid-column:span 2}
label{font-size:11px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.7px;display:flex;align-items:center;gap:4px}
input,select,textarea{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 13px;font-size:13px;color:var(--text);font-family:'Inter',sans-serif;outline:none;transition:border-color var(--transition),box-shadow var(--transition)}
input:hover,select:hover,textarea:hover{border-color:var(--border2)}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,58,237,.12);background:var(--surface)}
select option{background:var(--surface);color:var(--text)}
input::placeholder,textarea::placeholder{color:var(--text3)}
textarea{resize:vertical;line-height:1.6}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:var(--radius);border:1px solid var(--border2);background:var(--surface);cursor:pointer;font-size:13px;color:var(--text2);font-family:'Inter',sans-serif;transition:all var(--transition);font-weight:500;white-space:nowrap}
.btn:hover{background:var(--surface2);color:var(--text);border-color:var(--border3)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent;box-shadow:0 2px 10px rgba(124,58,237,.25)}
.btn-primary:hover{background:linear-gradient(135deg,var(--accent3),var(--accent));border-color:transparent;box-shadow:0 4px 18px rgba(124,58,237,.35);transform:translateY(-1px)}
.btn-primary:active{transform:translateY(0)}
.btn-danger{color:var(--red);border-color:rgba(239,68,68,.25)}
.btn-danger:hover{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.35)}
.btn-sm{padding:5px 12px;font-size:12px}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* ── Avatar ── */
.avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
.av0{background:rgba(37,99,235,.12);color:#2563EB}
.av1{background:rgba(124,58,237,.12);color:#7C3AED}
.av2{background:rgba(16,185,129,.12);color:#059669}
.av3{background:rgba(245,158,11,.12);color:#D97706}
.av4{background:rgba(239,68,68,.12);color:#DC2626}
.av5{background:rgba(37,99,235,.12);color:#2563EB}
.av6{background:rgba(124,58,237,.12);color:#7C3AED}
.av7{background:rgba(16,185,129,.12);color:#059669}
.av8{background:rgba(245,158,11,.12);color:#D97706}
.av9{background:rgba(239,68,68,.12);color:#DC2626}

/* ── Views ── */
.view{display:none;opacity:0;transform:translateY(6px)}
.view.active{display:block;animation:viewIn .22s var(--transition) forwards}
@keyframes viewIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ── Teacher shell / shift banner ── */
.teacher-shell{max-width:560px;margin:0 auto}
.shift-banner{background:linear-gradient(135deg,#1E1B4B,#312E81);border:1px solid rgba(124,58,237,.3);border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center;position:relative;overflow:hidden}
.shift-banner::before{content:'';position:absolute;top:-40px;right:-40px;width:160px;height:160px;border-radius:50%;background:rgba(124,58,237,.12);pointer-events:none}
.shift-time{font-family:'DM Mono',monospace;font-size:32px;font-weight:500;color:#fff;letter-spacing:-1px}

/* ── Lesson cards ── */
.lesson-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:10px;transition:all var(--transition);box-shadow:var(--shadow-sm)}
.lesson-card:hover{border-color:var(--border2);box-shadow:var(--shadow)}
.lesson-card.active-lc{border-color:rgba(16,185,129,.4);background:rgba(16,185,129,.03)}
.lesson-card.done-lc{opacity:.5}
.lc-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.lc-student{font-size:15px;font-weight:600;color:var(--text)}
.lc-meta{font-size:12px;color:var(--text3);margin-top:3px}
.lc-btns{display:flex;gap:8px;margin-top:8px}
.lc-btn{flex:1;padding:10px;border-radius:var(--radius);border:1px solid var(--border);background:transparent;cursor:pointer;font-size:13px;color:var(--text2);font-family:'Inter',sans-serif;transition:all var(--transition);font-weight:500}
.lc-btn:hover{background:var(--surface2);border-color:var(--border2)}
.lc-btn.joined{background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.3);color:#059669}
.lc-btn.absent{background:rgba(239,68,68,.06);border-color:rgba(239,68,68,.25);color:var(--red)}

/* ── Month row / sub-tabs ── */
.month-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.m-btn{padding:6px 16px;border-radius:20px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:12px;color:var(--text2);font-family:'Inter',sans-serif;transition:all var(--transition);font-weight:500;box-shadow:var(--shadow-sm)}
.m-btn:hover{background:var(--surface2);border-color:var(--border2);color:var(--text)}
.m-btn.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-color:transparent;box-shadow:0 2px 10px rgba(124,58,237,.3)}
.sub-tabs{display:flex;gap:4px;margin-bottom:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px;width:fit-content;box-shadow:var(--shadow-sm)}
.s-tab{padding:6px 16px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--text2);transition:all var(--transition);font-weight:500}
.s-tab:hover{color:var(--text);background:var(--surface2)}
.s-tab.active{background:var(--accent);color:#fff;font-weight:600;box-shadow:0 2px 8px rgba(124,58,237,.25)}
.sub-view{display:none}
.sub-view.active{display:block}

/* ── Progress ── */
.prog-bg{background:var(--surface2);border-radius:4px;height:5px;overflow:hidden;margin-top:5px}
.prog-fill{height:5px;border-radius:4px;transition:width .6s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}
.prog-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.35) 50%,transparent 100%);animation:shimmer 2s infinite}
@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(200%)}}

/* ── Grid layouts ── */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.three-col{display:grid;grid-template-columns:7fr 5fr;gap:16px}

/* ── Notifications ── */
.notify{padding:11px 15px;border-radius:var(--radius);font-size:13px;margin-bottom:14px;display:flex;align-items:center;gap:9px;font-weight:500}
.notify-info{background:rgba(124,58,237,.08);border:1px solid rgba(124,58,237,.2);color:var(--accent)}
.notify-success{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);color:#059669;display:none}
.notify-warn{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.2);color:#D97706}

/* ── Modal ── */
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:100;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.modal-bg.open{display:flex;animation:fadeIn .15s ease forwards}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px;width:500px;max-width:95vw;position:relative;box-shadow:var(--shadow-lg);animation:modalIn .2s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-title{font-size:17px;font-weight:700;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;color:var(--text)}
.modal-close{background:none;border:1px solid var(--border);cursor:pointer;color:var(--text2);font-size:18px;line-height:1;padding:4px 8px;border-radius:7px;transition:all var(--transition)}
.modal-close:hover{background:var(--surface2);color:var(--text);border-color:var(--border2)}

/* ── Calendar ── */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:8px}
.cal-day-hdr{font-size:9px;font-weight:700;color:var(--text3);text-align:center;padding:5px 0;text-transform:uppercase;letter-spacing:.5px}
.cal-cell{border-radius:7px;padding:5px 3px;text-align:center;font-size:11px;min-height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid transparent;transition:all var(--transition)}
.cal-cell.present{background:rgba(16,185,129,.1);border-color:rgba(16,185,129,.25);cursor:pointer}
.cal-cell.present:hover{background:rgba(16,185,129,.2);transform:scale(1.05)}
.cal-cell.absent{background:rgba(239,68,68,.07);border-color:rgba(239,68,68,.15)}
.cal-cell.empty{opacity:0;pointer-events:none}
.cal-dot{width:5px;height:5px;border-radius:50%}

/* ── Student report card (kept dark for print contrast) ── */
.report-card{background:linear-gradient(135deg,#1E1B4B,#1E3A5F);border:1px solid rgba(124,58,237,.25);border-radius:var(--radius-xl);padding:26px;margin-bottom:16px;box-shadow:var(--shadow-lg)}
.rc-header{display:flex;align-items:center;gap:16px;margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.08)}
.rc-avatar{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;flex-shrink:0;box-shadow:0 0 20px rgba(0,0,0,.3)}
.rc-name{font-size:20px;font-weight:700;color:#fff}
.rc-sub{font-size:13px;color:rgba(255,255,255,.45);margin-top:3px}
.rc-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}
.rc-metric{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);border-radius:var(--radius);padding:14px;text-align:center;transition:all var(--transition)}
.rc-metric:hover{background:rgba(255,255,255,.1)}
.rc-metric-val{font-size:24px;font-weight:700;font-family:'DM Mono',monospace;letter-spacing:-1px}
.rc-metric-lbl{font-size:11px;color:rgba(255,255,255,.4);margin-top:4px;font-weight:500}

/* ── Attendance strip ── */
.att-strip{display:flex;gap:3px;flex-wrap:wrap;margin-top:8px}
.att-dot{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;cursor:pointer;position:relative;transition:all var(--transition)}
.att-dot.p{background:rgba(16,185,129,.15);color:#059669;border:1px solid rgba(16,185,129,.3)}
.att-dot.a{background:rgba(239,68,68,.1);color:var(--red);border:1px solid rgba(239,68,68,.2)}
.att-dot:hover{transform:scale(1.2);z-index:2}
.att-dot:hover::after{content:attr(title);position:absolute;bottom:26px;left:50%;transform:translateX(-50%);background:var(--text);color:#fff;border-radius:6px;padding:4px 10px;font-size:10px;white-space:nowrap;z-index:99;pointer-events:none;min-width:90px;text-align:center;box-shadow:var(--shadow)}

/* ── Free slots / Parent portal ── */
.slot-free{border:1.5px dashed rgba(16,185,129,.3);border-radius:var(--radius-lg);padding:13px 18px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;background:rgba(16,185,129,.03);transition:all var(--transition)}
.slot-free:hover{border-color:rgba(16,185,129,.5);background:rgba(16,185,129,.06)}
.class-link-box{background:rgba(124,58,237,.06);border:1px solid rgba(124,58,237,.2);border-radius:var(--radius);padding:12px 15px;font-family:'DM Mono',monospace;font-size:13px;color:var(--accent);word-break:break-all;margin-bottom:12px}
.hw-box{background:rgba(245,158,11,.05);border:1px solid rgba(245,158,11,.2);border-radius:var(--radius);padding:16px;font-size:13px;color:var(--text);line-height:1.8;white-space:pre-wrap}

/* ── Tab counter ── */
.tab-count{background:rgba(124,58,237,.1);color:var(--accent);border-radius:10px;padding:1px 7px;font-size:10px;font-weight:700;margin-left:auto;border:1px solid rgba(124,58,237,.2)}

/* ── Animations ── */
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.spinner{width:20px;height:20px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin .65s linear infinite;display:inline-block}

/* ══════════════════════════════════════════
   LOGIN OVERLAY — split panel
   ══════════════════════════════════════════ */
#loginOverlay{position:fixed;inset:0;background:var(--bg);z-index:9999;display:flex;align-items:center;justify-content:center;overflow:hidden}
#loginOverlay::before{
  content:'';position:absolute;inset:-50%;
  background-image:linear-gradient(rgba(124,58,237,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(124,58,237,.05) 1px,transparent 1px);
  background-size:48px 48px;
  animation:gridMove 20s linear infinite;pointer-events:none
}
#loginOverlay::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse 80% 60% at 30% 50%,rgba(124,58,237,.08) 0%,transparent 70%),
             radial-gradient(ellipse 60% 50% at 80% 60%,rgba(16,185,129,.05) 0%,transparent 60%);
  pointer-events:none
}
@keyframes gridMove{0%{transform:translateY(0)}100%{transform:translateY(48px)}}

.login-split{display:flex;width:100%;max-width:920px;min-height:530px;border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-lg),0 0 0 1px var(--border);margin:20px;position:relative;z-index:1}

/* Left — brand panel */
.login-brand-panel{flex:1;background:linear-gradient(150deg,#3730A3 0%,#4C1D95 50%,#1E1B4B 100%);padding:52px 48px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;border-right:1px solid rgba(124,58,237,.2)}
.login-brand-panel::before{content:'';position:absolute;top:-100px;right:-100px;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(124,58,237,.2) 0%,transparent 70%);pointer-events:none;animation:orb1 8s ease-in-out infinite alternate}
.login-brand-panel::after{content:'';position:absolute;bottom:-80px;left:-80px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(16,185,129,.1) 0%,transparent 70%);pointer-events:none;animation:orb2 10s ease-in-out infinite alternate}
@keyframes orb1{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.2) translate(-20px,20px)}}
@keyframes orb2{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.15) translate(20px,-15px)}}
.login-brand-content{position:relative;z-index:1}
.login-brand-logo{display:flex;align-items:center;gap:16px;margin-bottom:30px}
.login-brand-tag{font-size:12px;font-weight:700;color:rgba(167,139,250,.9);letter-spacing:1.2px;text-transform:uppercase;margin-bottom:16px}
.login-brand-desc{font-size:14px;color:rgba(255,255,255,.5);line-height:1.8;margin-bottom:30px;max-width:290px}
.login-brand-features{list-style:none;padding:0;margin:0 0 40px;display:flex;flex-direction:column;gap:14px}
.login-brand-features li{display:flex;align-items:center;gap:12px;font-size:13px;color:rgba(255,255,255,.7);transition:color var(--transition)}
.login-brand-features li:hover{color:rgba(255,255,255,.95)}
.lbf-icon{width:22px;height:22px;background:rgba(16,185,129,.15);border:1px solid rgba(16,185,129,.35);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#10B981;flex-shrink:0}
.login-brand-footer a{font-size:12px;color:rgba(255,255,255,.25);text-decoration:none;letter-spacing:.4px;transition:color var(--transition)}
.login-brand-footer a:hover{color:rgba(255,255,255,.6)}

/* Right — form panel */
.login-form-panel{flex:1;background:var(--surface);padding:52px 50px;display:flex;align-items:center;justify-content:center}
.login-form-inner{width:100%;max-width:340px}

/* Shared login */
.login-error{color:var(--red);font-size:12px;margin:8px 0 0;display:none;padding:10px 14px;background:var(--red-bg);border-radius:var(--radius);border:1px solid rgba(239,68,68,.2);animation:slideDown .2s ease}
@keyframes slideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.login-logo{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.login-title{font-size:22px;font-weight:700;color:var(--text);margin-bottom:4px}
.login-sub{font-size:13px;color:var(--text3);margin-bottom:28px}

/* Mobile: stack */
@media(max-width:680px){
  .login-split{flex-direction:column;max-width:420px;min-height:auto}
  .login-brand-panel{padding:28px 28px 20px}
  .login-brand-features,.login-brand-desc{display:none}
  .login-form-panel{padding:28px}
}

/* ── Loading overlay ── */
#loadingOverlay{position:fixed;inset:0;background:rgba(241,245,249,.92);z-index:9998;display:none;align-items:center;justify-content:center;flex-direction:column;gap:16px;backdrop-filter:blur(8px)}
#loadingOverlay.show{display:flex;animation:fadeIn .15s ease}
.loading-text{font-size:14px;color:var(--text2);font-weight:500}

/* ── Toast ── */
#toast{position:fixed;bottom:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast-item{background:var(--text);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);padding:12px 18px;font-size:13px;color:#fff;max-width:320px;box-shadow:var(--shadow-lg);animation:toastIn .25s cubic-bezier(.34,1.56,.64,1);pointer-events:auto;font-weight:500}
.toast-item.success{background:#064E3B;border-color:rgba(16,185,129,.4);color:#6EE7B7}
.toast-item.error{background:#7F1D1D;border-color:rgba(239,68,68,.4);color:#FCA5A5}
@keyframes toastIn{from{opacity:0;transform:translateX(24px) scale(.95)}to{opacity:1;transform:translateX(0) scale(1)}}

/* ── Empty state ── */
.empty-state{text-align:center;padding:52px 24px;color:var(--text3)}
.empty-state-icon{font-size:40px;margin-bottom:14px}
.empty-state-title{font-size:16px;font-weight:600;color:var(--text2);margin-bottom:6px}
.empty-state-desc{font-size:13px;line-height:1.7;color:var(--text3)}

/* ── Manage Accounts steps ── */
.setup-step{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--border)}
.setup-step:last-child{border-bottom:none}
.step-num{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;box-shadow:0 2px 8px rgba(124,58,237,.3)}

/* ── Print ── */
@media print{
  .sidebar,.topbar,.no-print{display:none!important}
  .content{padding:0}
  .report-card{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ── Responsive ── */
@media(max-width:900px){
  .metric-row{grid-template-columns:repeat(3,1fr)}
  .two-col{grid-template-columns:1fr}
  .three-col{grid-template-columns:1fr}
}
@media(max-width:768px){
  .hamburger{display:flex}
  .sidebar{position:fixed;top:0;left:0;height:100%;transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
  .sidebar-overlay.open{display:block}
  .content{padding:16px}
  .metric-row{grid-template-columns:repeat(2,1fr)}
  #teacherGrid,#studentGrid{grid-template-columns:repeat(2,1fr)!important}
}
@media(max-width:500px){
  .metric-row{grid-template-columns:1fr 1fr}
  #teacherGrid,#studentGrid{grid-template-columns:1fr!important}
  .rc-metrics{grid-template-columns:1fr 1fr}
  .topbar{padding:0 16px}
}

/* ── Grid card hover lift ── */
#teacherGrid>div,#studentGrid>div{transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)!important;will-change:transform}
#teacherGrid>div:hover,#studentGrid>div:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.1)!important}

/* ── Skeleton loader ── */
.skeleton{background:linear-gradient(90deg,var(--surface2) 25%,var(--border) 50%,var(--surface2) 75%);background-size:200% 100%;animation:skeletonPulse 1.5s ease-in-out infinite;border-radius:6px}
@keyframes skeletonPulse{0%{background-position:200% 0}100%{background-position:-200% 0}}
