:root {
  --font: 'Inter', sans-serif;
  --navy: #203d8a;
  --navy-light: #2c4f9f;
  --navy-mid: #274689;
  --gold: #c8a43a;
  --gold-light: #ddbc59;
  --gold-dim: rgba(200,164,58,0.14);
  --red: #c61f3f;
  --green: #0f6a52;
  --teal: #0e7b67;
  --bg: #f4f7fb;
  --surface: #ffffff;
  --surface2: #eef3f9;
  --border: #d8e2ef;
  --border-light: rgba(32,61,138,0.08);
  --text: #17305f;
  --text-muted: #60728f;
  --text-dim: #94a2b8;
  --radius: 14px;
  --sidebar-w: 230px;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{
  font-family:'Inter',sans-serif;
  background:
    radial-gradient(circle at top right, rgba(200,164,58,.08), transparent 26%),
    linear-gradient(180deg, #f8fbff 0%, #f3f6fb 100%);
  color:var(--text);
  min-height:100vh;
  display:flex;
  overflow:hidden;
}
body.studio-intro-active .auth-gate,
body.studio-intro-active .sidebar,
body.studio-intro-active .main{
  opacity:0;
  pointer-events:none;
  user-select:none;
}
body.teacher-portal-mode .sidebar{display:none;}
body.teacher-portal-mode{background:linear-gradient(180deg,#f8fbff 0%,#f2f6fb 100%);color:var(--text);}
body.teacher-portal-mode .main{margin-left:0;}
body.teacher-portal-mode .main,
body.teacher-portal-mode .content{background:transparent;}
body.teacher-portal-mode .topbar{padding:18px 24px;background:rgba(255,255,255,.94);border-color:var(--border);}
body.teacher-portal-mode .topbar-title{color:var(--text);}
body.teacher-portal-mode #view-toggle,
body.teacher-portal-mode #topbar-action,
body.teacher-portal-mode .topbar-actions .btn.btn-ghost{display:none !important;}
body.teacher-portal-mode .content{padding:24px;}
body.teacher-portal-mode #page-teacherportal{max-width:1600px;margin:0 auto;}
.auth-gate{
  position:fixed;inset:0;background:rgba(243,244,246,.96);display:none;align-items:center;justify-content:center;z-index:3000;padding:24px;
}
.auth-gate.open{display:flex;}
.auth-card{
  width:min(460px,92vw);background:#fff;border:1px solid var(--border);border-radius:24px;padding:28px;box-shadow:0 24px 80px rgba(23,48,95,.12);
}
.auth-title{font-family:'Playfair Display',serif;font-size:28px;color:var(--text);margin-bottom:6px;}
.auth-sub{font-size:13px;color:var(--text-muted);line-height:1.6;margin-bottom:14px;}
.auth-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;}
.studio-intro{
  position:fixed;inset:0;z-index:5200;display:none;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#102a5f 0%,#12386b 100%);
}
.studio-intro.open{display:flex;}
.studio-intro.fade-out{animation:studioIntroFade .95s ease forwards;}
.studio-intro-stage{
  position:absolute;inset:0;overflow:hidden;
  background:
    radial-gradient(circle at 18% 52%, rgba(10,118,110,.92) 0%, rgba(10,118,110,.58) 18%, rgba(10,118,110,.16) 34%, rgba(10,118,110,0) 50%),
    radial-gradient(circle at 82% 50%, rgba(28,82,166,.94) 0%, rgba(28,82,166,.60) 18%, rgba(28,82,166,.16) 34%, rgba(28,82,166,0) 52%),
    radial-gradient(circle at 50% 16%, rgba(238,79,61,.42) 0%, rgba(238,79,61,0) 18%),
    radial-gradient(circle at 50% 84%, rgba(200,164,58,.32) 0%, rgba(200,164,58,0) 18%),
    radial-gradient(circle at 50% 50%, rgba(14,24,68,.28) 0%, rgba(14,24,68,0) 30%),
    linear-gradient(90deg, #123b65 0%, #112f66 18%, #13295f 50%, #16376c 82%, #19537c 100%);
}
.studio-intro-stage::after{
  content:'';position:absolute;inset:0;
  background:
    linear-gradient(90deg, rgba(8,19,49,.12), rgba(8,19,49,0) 16%, rgba(8,19,49,0) 84%, rgba(8,19,49,.12)),
    linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0));
  pointer-events:none;
}
.studio-intro-video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;
  image-rendering:auto;filter:contrast(1.03) saturate(1.04);
  transform:scale(1);
  transition:transform 5.6s ease, opacity .95s ease, filter .95s ease;
  will-change:transform,opacity,filter;
}
.studio-intro-video.playing{transform:scale(1.008);}
.studio-intro-video.fade-out{opacity:0;filter:contrast(1) saturate(1);}
.studio-intro-fallback{
  position:absolute;right:24px;bottom:24px;z-index:4;border:none;border-radius:999px;padding:12px 18px;
  font:600 14px 'Inter',sans-serif;background:rgba(255,255,255,.92);color:var(--navy);cursor:pointer;
  box-shadow:0 12px 30px rgba(8,18,41,.22);display:none;
}
@keyframes studioIntroFade{
  from{opacity:1;}
  to{opacity:0;visibility:hidden;}
}
/* SCROLLBAR */
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}

/* SIDEBAR */
.sidebar{
  width:var(--sidebar-w);background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-right:1px solid var(--border);
  display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;
  transition:transform .3s,width .22s ease;
  box-shadow:0 0 0 1px rgba(255,255,255,.45) inset;
}
.sidebar-logo{
  padding:18px 16px 16px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;
}
.sidebar-logo img{
  width:54px;height:54px;border-radius:50%;object-fit:cover;flex-shrink:0;
  box-shadow:0 8px 18px rgba(23,48,95,.08);
}
.sidebar-brand{flex:1;}
.brand-name{font-family:var(--font);font-size:14px;font-weight:700;color:var(--navy);line-height:1.2;letter-spacing:-.01em;}
.brand-sub{font-size:10.5px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;}
.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;}
.nav-section{font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;padding:10px 10px 5px;}
.nav-item{
  display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;
  cursor:pointer;font-size:13px;font-weight:600;color:var(--text-muted);
  transition:all .15s;border:1px solid transparent;position:relative;
}
.nav-label{flex:1;min-width:0;white-space:nowrap;}
.nav-item:hover{background:var(--surface2);color:var(--text);}
.nav-item.active{background:rgba(32,61,138,.08);color:var(--navy);border-color:rgba(32,61,138,.12);}
.nav-icon{
  width:28px;
  height:28px;
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--navy);
  background:transparent;
  transition:transform .16s ease, color .16s ease, filter .16s ease;
}
.nav-icon svg{
  width:24px;
  height:24px;
  fill:currentColor;
}
.nav-icon img{
  width:24px;
  height:24px;
  object-fit:contain;
  display:block;
}
.nav-icon-file img{
  filter:brightness(0) saturate(100%) invert(20%) sepia(60%) saturate(1280%) hue-rotate(205deg) brightness(92%) contrast(92%);
}
.nav-item:hover .nav-icon{
  transform:translateY(-1px);
  color:var(--navy);
}
.nav-item:hover .nav-icon img{
  filter:brightness(0) saturate(100%) invert(20%) sepia(60%) saturate(1280%) hue-rotate(205deg) brightness(92%) contrast(92%);
}
.nav-item.active .nav-icon{
  background:transparent;
  color:var(--navy);
}
.nav-item.active .nav-icon img{
  filter:brightness(0) saturate(100%) invert(20%) sepia(60%) saturate(1280%) hue-rotate(205deg) brightness(92%) contrast(92%);
}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:20px;min-width:18px;text-align:center;}
.sidebar-bottom{padding:14px 10px;border-top:1px solid var(--border);}
.ai-btn{
  width:100%;padding:10px 14px;border-radius:9px;
  background:linear-gradient(135deg,rgba(14,123,103,.10),rgba(32,61,138,.08));
  border:1px solid rgba(32,61,138,.12);color:var(--navy);font-size:13px;font-weight:600;
  cursor:pointer;display:flex;align-items:center;gap:8px;font-family:'Inter',sans-serif;
  transition:all .2s;
}
.ai-btn:hover{background:linear-gradient(135deg,rgba(14,123,103,.16),rgba(32,61,138,.12));}
.ai-pulse{width:7px;height:7px;border-radius:50%;background:var(--teal);animation:pulse 2s infinite;flex-shrink:0;}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}

/* MAIN */
.main{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;overflow:hidden;height:100vh;transition:margin-left .22s ease;}
.topbar{
  padding:14px 24px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  background:rgba(255,255,255,.92);backdrop-filter:blur(14px);flex-shrink:0;gap:12px;
}
.topbar-left{display:flex;align-items:center;gap:16px;}
.sidebar-toggle{
  width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:#fff;color:var(--navy);font-size:17px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 20px rgba(23,48,95,.06);transition:all .16s;
}
.sidebar-toggle:hover{background:#f8fbff;border-color:rgba(32,61,138,.18);}
.topbar-title{font-family:var(--font);font-size:18px;font-weight:700;color:var(--text);letter-spacing:-.01em;}
.view-toggle{display:flex;background:var(--surface2);border-radius:10px;padding:3px;gap:2px;border:1px solid var(--border);}
.view-btn{
  padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;
  border:none;background:none;color:var(--text-muted);font-family:'Inter',sans-serif;
  transition:all .15s;
}
.view-btn.active{background:#fff;color:var(--navy);box-shadow:0 6px 18px rgba(23,48,95,.08);}
.topbar-actions{display:flex;gap:8px;align-items:center;}
.revenue-mode .topbar-actions .btn.btn-ghost{display:none;}
.btn{
  padding:8px 16px;border-radius:10px;font-size:12.5px;font-weight:600;
  cursor:pointer;border:none;font-family:'Inter',sans-serif;
  transition:all .15s;display:flex;align-items:center;gap:6px;
}
.btn-primary{background:var(--navy);color:#fff;box-shadow:0 10px 24px rgba(32,61,138,.14);}
.btn-primary:hover{background:var(--navy-light);}
.btn-ghost{background:#fff;color:var(--text);border:1px solid var(--border);}
.btn-ghost:hover{border-color:var(--navy);color:var(--navy);background:#f8fbff;}
.btn-sm{padding:6px 12px;font-size:12px;}
.btn-teal{background:rgba(14,123,103,.10);color:var(--teal);border:1px solid rgba(14,123,103,.16);}
.btn-teal:hover{background:rgba(14,123,103,.16);}
.btn-green{background:rgba(15,106,82,.10);color:var(--green);border:1px solid rgba(15,106,82,.16);}
.btn-red{background:rgba(198,31,63,.08);color:var(--red);border:1px solid rgba(198,31,63,.16);}

/* CONTENT */
.content{flex:1;overflow-y:auto;padding:20px 24px;}
.page{display:none;animation:fadeIn .2s ease;}
.page.active{display:block;}

/* Archived Hub — deliberately separate from the accidental-removal Recycle Bin. */
.archive-hub-shell{display:flex;flex-direction:column;gap:16px;min-height:calc(100vh - 132px)}
.archive-hub-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:24px 26px;border:1px solid var(--border);border-radius:18px;background:var(--surface)}
.archive-hub-head h2{margin:5px 0 7px;font-family:'Playfair Display',serif;font-size:30px;color:var(--text)}
.archive-hub-head p{margin:0;max-width:780px;color:var(--text-muted);line-height:1.6}
.archive-hub-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.archive-hub-switch{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.archive-hub-switch-btn{border:0;border-radius:9px;background:transparent;color:var(--text-muted);padding:9px 14px;font:600 12px 'Inter',sans-serif;cursor:pointer}
.archive-hub-switch-btn.active{background:var(--navy);color:#fff;box-shadow:0 6px 16px rgba(27,61,126,.18)}
.archive-hub-notice{padding:11px 14px;border:1px solid rgba(44,111,220,.2);border-radius:12px;background:rgba(44,111,220,.07);color:var(--text-muted);font-size:12px;font-weight:600}
.archive-hub-table-wrap{min-height:260px}
.archive-ready-pill,.archive-pending-pill,.archive-state-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}
.archive-ready-pill{background:rgba(23,151,91,.1);color:#147a4e}
.archive-pending-pill{background:rgba(202,143,35,.12);color:#9a6411}
.archive-state-pill{background:rgba(44,111,220,.1);color:#245cb5}
.archive-confirm-summary{margin-bottom:16px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface2);line-height:1.6;color:var(--text)}
.archive-confirm-check{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid rgba(195,73,73,.22);border-radius:12px;background:rgba(195,73,73,.06);font-size:12px;line-height:1.5;color:var(--text)}
.archive-confirm-check input{margin-top:2px}
.archive-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:18px}
.archive-detail-stat{padding:13px 14px;border:1px solid var(--border);border-radius:13px;background:var(--surface2)}
.archive-detail-stat span{display:block;margin-bottom:4px;color:var(--text-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em}
.archive-detail-stat strong{font-size:14px;color:var(--text)}
.archive-detail-section{margin-top:18px}
.archive-detail-section h3{margin:0 0 9px;font-size:14px;color:var(--text)}
.archive-detail-list{display:flex;flex-direction:column;gap:7px}
.archive-detail-row{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(110px,.8fr) minmax(90px,.6fr);gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-size:12px;color:var(--text)}
@media(max-width:720px){.archive-hub-head{padding:18px;flex-direction:column}.archive-detail-row{grid-template-columns:1fr}.archive-hub-controls{align-items:stretch}.archive-hub-switch{width:100%}.archive-hub-switch-btn{flex:1}}
@keyframes fadeIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}

/* STUDIO HOME */
.studio-home{
  display:flex;
  flex-direction:column;
  gap:14px;
}
.studio-home-head{
  min-height:94px;
  border:1px solid var(--border);
  border-radius:18px;
  background:
    radial-gradient(circle at 96% 12%, rgba(200,164,58,.18), transparent 28%),
    linear-gradient(135deg, #ffffff 0%, #f7fbff 58%, #eef6f4 100%);
  box-shadow:0 18px 45px rgba(23,48,95,.07);
  padding:18px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  position:relative;
  overflow:hidden;
}
.studio-home-head::before{
  content:'';
  position:absolute;
  left:0;
  top:22px;
  bottom:22px;
  width:5px;
  border-radius:0 999px 999px 0;
  background:linear-gradient(180deg,var(--red),var(--gold),var(--teal));
}
.studio-home-kicker{
  font-size:11px;
  font-weight:800;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gold);
  margin-bottom:8px;
}
.studio-home-head h1{
  font-size:28px;
  line-height:1;
  letter-spacing:-.04em;
  color:var(--text);
  margin-bottom:6px;
}
.studio-home-head p{
  color:var(--text-muted);
  font-size:13px;
  font-weight:500;
}
.studio-home-date{
  flex-shrink:0;
  border:1px solid rgba(32,61,138,.12);
  background:rgba(255,255,255,.72);
  color:var(--navy);
  font-size:12px;
  font-weight:700;
  border-radius:999px;
  padding:9px 14px;
  box-shadow:0 8px 20px rgba(23,48,95,.05);
}
.studio-home-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
}
.monthly-close-status{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 18px;border:1px solid #b9d8c7;border-radius:16px;background:#f0faf5;color:#174f35;}
.monthly-close-status.attention{border-color:#efc56d;background:#fff8e6;color:#734d00;}
.monthly-close-status.failed{border-color:#ef9aa8;background:#fff1f3;color:#8b1f35;}
.monthly-close-status-copy{display:flex;flex-direction:column;gap:3px;min-width:0;}
.monthly-close-status-copy strong{font-size:14px;}
.monthly-close-status-copy span{font-size:12px;line-height:1.45;}
.master-lineage-alert{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);gap:18px;align-items:start;margin-bottom:14px;padding:14px 16px;border:1px solid #efc56d;border-radius:14px;background:#fff8e6;color:#734d00;}
.master-lineage-alert strong{font-size:14px;}
.master-lineage-alert #admin-master-lineage-copy{font-size:12px;line-height:1.45;margin-top:3px;}
.master-lineage-alert details{font-size:12px;}
.master-lineage-alert summary{cursor:pointer;font-weight:800;}
.master-lineage-alert-actions{display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
#admin-master-lineage-list{max-height:220px;overflow:auto;margin-top:9px;display:grid;gap:6px;}
.master-lineage-record{padding:8px 10px;border-radius:9px;background:rgba(255,255,255,.72);border:1px solid rgba(115,77,0,.18);}
.master-lineage-record strong{display:block;font-size:12px;}
.master-lineage-record span{display:block;margin-top:2px;color:#795f25;}
.master-needs-linking{margin-bottom:16px;border:1px solid #b9cbea;border-radius:18px;background:#f8fbff;padding:18px;box-shadow:0 10px 28px rgba(25,67,130,.06);}
.master-needs-linking-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:14px;border-bottom:1px solid #d7e3f5;}
.master-needs-linking-head h3{margin:3px 0 5px;color:var(--navy);font-size:22px;}
.master-needs-linking-head p{max-width:760px;margin:0;color:var(--text-muted);font-size:13px;line-height:1.5;}
.master-needs-linking-status{margin:14px 0;padding:11px 13px;border-radius:11px;background:#eaf2ff;color:#234f91;font-size:12px;line-height:1.45;}
.master-needs-linking-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.master-needs-linking-toolbar input{flex:1;min-width:0;height:42px;border:1px solid #c8d8ef;border-radius:10px;background:#fff;padding:0 13px;color:var(--text);font:inherit;}
.master-needs-linking-toolbar span{white-space:nowrap;color:var(--text-muted);font-size:12px;font-weight:800;}
.master-needs-linking-list{display:grid;gap:10px;}
.master-needs-linking-row{display:grid;grid-template-columns:minmax(260px,1fr) minmax(320px,1.2fr) auto;gap:14px;align-items:center;padding:13px;border:1px solid #d5e1f2;border-radius:13px;background:#fff;}
.master-needs-linking-row.is-saving{opacity:.7;pointer-events:none;}
.master-needs-linking-identity strong{display:block;color:var(--navy);font-size:14px;}
.master-needs-linking-identity span,.master-needs-linking-identity small{display:block;margin-top:3px;color:var(--text-muted);font-size:12px;line-height:1.35;}
.master-needs-linking-choice select{width:100%;height:42px;border:1px solid #b8cae5;border-radius:9px;background:#fff;padding:0 10px;color:var(--text);font:inherit;font-size:13px;}
.master-needs-linking-choice small{display:block;margin-top:4px;color:#7a5a17;font-size:11px;}
.master-needs-linking-badge{display:inline-flex!important;width:max-content;padding:3px 8px;border-radius:999px;background:#e7efff;color:#2459a6!important;font-size:10px!important;font-weight:800;text-transform:uppercase;letter-spacing:.05em;}
@media(max-width:900px){
  .master-needs-linking-head,.master-needs-linking-toolbar{align-items:stretch;flex-direction:column;}
  .master-needs-linking-row{grid-template-columns:1fr;}
}
.studio-home-card{
  min-height:126px;
  border:1px solid var(--border);
  border-radius:16px;
  background:#fff;
  padding:14px 16px;
  text-align:left;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:7px;
  font-family:var(--font);
  color:var(--text);
  box-shadow:0 16px 38px rgba(23,48,95,.055);
  position:relative;
  overflow:hidden;
  transition:transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.studio-home-card::after{
  content:'';
  position:absolute;
  inset:auto 0 0 0;
  height:4px;
  background:var(--home-accent,var(--navy));
  opacity:.88;
}
.studio-home-card:hover{
  transform:translateY(-3px);
  border-color:rgba(32,61,138,.22);
  box-shadow:0 22px 46px rgba(23,48,95,.09);
}
.studio-home-icon{
  width:34px;
  height:34px;
  border-radius:11px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:17px;
  font-weight:800;
  color:var(--home-accent,var(--navy));
  background:color-mix(in srgb, var(--home-accent,var(--navy)) 10%, white);
  border:1px solid color-mix(in srgb, var(--home-accent,var(--navy)) 16%, white);
}
.studio-home-card-title{
  font-size:16px;
  font-weight:800;
  letter-spacing:-.03em;
  color:var(--text);
}
.studio-home-card-meta{
  font-size:11.5px;
  line-height:1.45;
  color:var(--text-muted);
  min-height:32px;
}
.studio-home-count{
  margin-top:auto;
  display:inline-flex;
  align-items:center;
  gap:5px;
  border-radius:999px;
  padding:5px 9px;
  background:var(--surface2);
  color:var(--text-muted);
  font-size:10.5px;
  font-weight:700;
}
.studio-home-count strong{
  color:var(--home-accent,var(--navy));
  font-size:12.5px;
}
.studio-home-card.revenue{--home-accent:var(--gold);}
.studio-home-card.teachers{--home-accent:var(--navy);}
.studio-home-card.students{--home-accent:var(--teal);}
.studio-home-card.assignments{--home-accent:#7c5bb8;}
.studio-home-card.teacherapp{--home-accent:#2364aa;}
.studio-home-card.leads{--home-accent:var(--red);}

.studio-announcements{
  border:1px solid var(--border);
  border-radius:18px;
  background:#fff;
  box-shadow:0 16px 38px rgba(23,48,95,.055);
  overflow:hidden;
}
.studio-announcements-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:14px 18px;
  border-bottom:1px solid var(--border);
  background:linear-gradient(90deg,#f8fbff 0%,#fff 58%,#fff8df 100%);
}
.studio-announcements-title{
  font-size:18px;
  font-weight:900;
  letter-spacing:-.03em;
  color:var(--text);
}
.studio-announcements-sub{
  margin-top:2px;
  color:var(--text-muted);
  font-size:12px;
  font-weight:600;
}
.studio-announcements-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.studio-announcements-badge{
  border-radius:999px;
  background:#eaf6f0;
  color:#0f766e;
  padding:5px 10px;
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.studio-announcement-composer{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:start;
  padding:14px 18px;
  border-bottom:1px solid var(--border);
}
.studio-announcement-targeting{grid-column:1/-1;display:flex;gap:12px;flex-wrap:wrap}
.studio-announcement-targeting label{display:grid;gap:5px;color:var(--text-muted);font-size:11px;font-weight:800;min-width:180px}
.studio-announcement-targeting select,.studio-announcement-manual input{border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text);font:inherit;padding:9px 11px;outline:none}
.studio-announcement-manual{grid-column:1/-1;border:1px solid var(--border);border-radius:12px;background:#fbfdff;padding:10px}
.studio-announcement-manual-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.studio-announcement-manual-head input{flex:1;min-width:0}
.studio-announcement-manual-head span{color:var(--text-muted);font-size:11px;font-weight:800;white-space:nowrap}
.studio-announcement-recipient-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;max-height:190px;overflow:auto}
.studio-announcement-recipient{display:flex;align-items:center;gap:8px;border:1px solid rgba(216,226,240,.9);border-radius:9px;background:#fff;padding:8px;cursor:pointer}
.studio-announcement-recipient strong,.studio-announcement-recipient small{display:block}.studio-announcement-recipient strong{font-size:12px}.studio-announcement-recipient small{color:var(--text-muted);font-size:10px;margin-top:2px}
.studio-announcement-post{align-self:start}
.studio-announcement-composer textarea{
  width:100%;
  min-height:72px;
  resize:vertical;
  border:1px solid var(--border);
  border-radius:12px;
  padding:11px 12px;
  font-family:var(--font);
  font-size:13px;
  color:var(--text);
  background:#fbfdff;
  outline:none;
}
.studio-announcement-composer textarea:focus{
  border-color:rgba(32,61,138,.34);
  box-shadow:0 0 0 3px rgba(32,61,138,.08);
}
.studio-announcements-list{
  display:grid;
  gap:10px;
  min-height:210px;
  align-content:start;
  padding:16px 18px 28px;
}
.studio-announcement-row{
  display:grid;
  grid-template-columns:10px minmax(0,1fr) auto;
  gap:10px;
  align-items:start;
  border:1px solid rgba(216,226,240,.9);
  border-radius:14px;
  padding:12px;
  background:#fff;
}
.studio-announcement-dot{
  width:8px;
  height:8px;
  border-radius:50%;
  background:var(--gold);
  margin-top:6px;
}
.studio-announcement-message{
  color:var(--text);
  font-size:13px;
  font-weight:650;
  line-height:1.45;
  white-space:pre-wrap;
}
.studio-announcement-time{
  margin-top:4px;
  color:var(--text-muted);
  font-size:11px;
  font-weight:700;
}
.studio-announcement-audience{display:inline-block;margin-top:6px;border-radius:999px;background:#eef4ff;color:var(--navy);padding:3px 7px;font-size:10px;font-weight:850}
.studio-announcement-delete{
  border:none;
  background:rgba(198,31,63,.08);
  color:var(--red);
  border-radius:10px;
  padding:7px 9px;
  cursor:pointer;
  font-weight:900;
}
.studio-announcement-delete:hover{background:rgba(198,31,63,.14);}
.studio-announcement-empty{
  color:var(--text-muted);
  font-size:13px;
  font-weight:650;
  padding:12px 0;
}
.studio-home-footer{
  margin-top:2px;
}
.ibl-signature-banner {
  width:100%;
  margin:0 auto;
  background:#fff;
  font-family:Inter, Arial, Helvetica, sans-serif;
  border:1px solid var(--border);
  border-radius:18px;
  color:#061f4f;
  overflow:hidden;
  box-shadow:0 14px 36px rgba(23,48,95,.07);
}
.banner-main {
  display:grid;
  grid-template-columns:148px minmax(0,1fr) 214px 72px;
  align-items:stretch;
  min-height:148px;
  position:relative;
  background:
    radial-gradient(circle at 92% 18%, rgba(247,181,0,.09), transparent 28%),
    linear-gradient(90deg,#fff 0%,#fbfdff 76%,#fffaf0 100%);
}
.logo-section {
  display:flex;
  justify-content:center;
  align-items:center;
  border-right:1px solid rgba(247,181,0,.74);
  height:64%;
  align-self:center;
}
.logo-section img {
  width:112px;
  max-width:82%;
}
.info-section {
  padding:4px 26px 22px;
  border-right:1px solid rgba(6,31,79,.18);
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.info-section h1 {
  font-size:38px;
  line-height:1;
  margin:0;
  font-family:"Arial Black", Inter, Arial, Helvetica, sans-serif;
  font-weight:900;
  letter-spacing:.6px;
  color:#063763;
}
.info-section h1 span { color:#c8102e; }
.info-section h3 {
  font-size:15px;
  margin:8px 0 22px;
  letter-spacing:3px;
  color:#061f4f;
  font-weight:900;
}
.footer-contact-line{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  color:#172033;
  font-size:16px;
  font-weight:500;
}
.footer-contact-line a{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:#17305f;
  font-weight:500;
  text-decoration:none;
  white-space:nowrap;
}
.footer-contact-line a:hover{color:#c8102e}
.footer-contact-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#203d8a;
  font-size:17px;
  line-height:1;
}
.footer-contact-icon svg{
  width:16px;
  height:16px;
  display:block;
  fill:currentColor;
}
.footer-contact-separator{color:#c8a43a;font-weight:950}
.quote-section {
  padding:16px 18px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
}
.quote-section h2 {
  font-size:21px;
  line-height:1.28;
  font-weight:900;
  font-style:italic;
  margin:0;
  color:#061f4f;
  position:relative;
  display:inline-block;
  padding:12px 14px;
}
.quote-section h2 span { color:#d00012; }
.quote-section h2 .quote-mark { color:#061f4f; }
.quote-section h2 em {
  color:#f7b500;
  font-style:italic;
}
.quote-mark {
  position:absolute;
  font-size:30px;
  font-weight:900;
  color:#061f4f;
  line-height:1;
  opacity:.9;
  pointer-events:none;
}
.quote-mark.start{left:-13px;top:-4px;}
.quote-mark.end{
  position:static;
  display:inline-block;
  margin-left:7px;
  transform:translateY(7px);
}
.pattern-section {
  background:linear-gradient(180deg,#061f4f 0%,#092c68 100%);
  height:100%;
  position:relative;
  border-left:4px solid #f7b500;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:space-around;
  padding:0 0 8px;
}
.circle {
  width:58px;
  height:58px;
  border-radius:50%;
  margin:0;
}
.circle.red {
  background:#d00012;
  transform:translateY(-9px);
}
.circle.yellow { background:#f7b500; }
.circle.half { background:linear-gradient(to right, #d00012 50%, #f7b500 50%); }
.program-strip {
  border-top:2px solid #061f4f;
  border-bottom:1px solid #ddd;
  text-align:center;
  padding:10px 14px;
  font-size:15px;
  font-weight:900;
  letter-spacing:3px;
  color:#061f4f;
}
.program-strip span {
  color:#c8102e;
  margin:0 12px;
}
.footer-strip {
  background:#061f4f;
  color:#fff;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  padding:16px 42px;
}
.socials {
  width:fit-content;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
}
.socialContainer {
  width:44px;
  height:44px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  transition-duration:.3s;
  text-decoration:none;
  flex:0 0 auto;
  box-shadow:0 8px 18px rgba(0,0,0,.14);
}
.containerOne { background:radial-gradient(circle at 28% 108%, #fdf497 0 20%, #fd5949 42%, #d6249f 68%, #285AEB 100%); }
.containerTwo { background-color:#1877f2; }
.containerThree { background-color:#0072b1; }
.containerFour { background-color:#25d366; }
.containerOne:hover,.containerTwo:hover,.containerThree:hover,.containerFour:hover {
  filter:brightness(1.08);
  transform:translateY(-1px);
  transition-duration:.3s;
}
.socialContainer:active {
  transform:scale(.9);
  transition-duration:.3s;
}
.socialSvg { width:18px; }
.socialSvg path { fill:#fff; }
.socialContainer:hover .socialSvg { animation:slide-in-top .3s both; }
@keyframes slide-in-top {
  0% { transform:translateY(-50px); opacity:0; }
  100% { transform:translateY(0); opacity:1; }
}
.highlight-box {
  background:#fff;
  color:#061f4f;
  padding:11px 22px;
  border-radius:12px;
  text-transform:uppercase;
  font-weight:800;
  letter-spacing:1.4px;
  text-align:center;
  font-size:12px;
  line-height:1.45;
}
.bottom-line {
  text-align:center;
  padding:11px 16px;
  font-size:13.5px;
  font-weight:800;
  color:#061f4f;
}
.bottom-line span {
  color:#c8102e;
  margin:0 12px;
}

/* STATS */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
.stat-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px 18px;
}
.stat-label{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;}
.stat-val{font-family:var(--font);font-size:22px;font-weight:700;letter-spacing:-.02em;}
.stat-sub{font-size:11px;color:var(--text-dim);margin-top:3px;}
.stat-gold .stat-val{color:var(--gold-light);}
.stat-teal .stat-val{color:var(--teal);}
.stat-red .stat-val{color:var(--red);}
.stat-green .stat-val{color:var(--green);}

/* TABLE VIEW */
.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:18px;overflow:hidden;box-shadow:0 10px 30px rgba(23,48,95,.05);}
.table-toolbar{
  padding:14px 18px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.table-toolbar-title{font-weight:700;font-size:13px;flex-shrink:0;}
.filter-chips{display:flex;gap:6px;flex-wrap:wrap;}
.chip{
  padding:4px 11px;border-radius:20px;font-size:11.5px;font-weight:500;cursor:pointer;
  border:1px solid var(--border);background:transparent;color:var(--text-muted);
  font-family:'Inter',sans-serif;transition:all .15s;
}
.chip.active,.chip:hover{background:rgba(32,61,138,.09);color:var(--navy);border-color:rgba(32,61,138,.12);}
.search-box{position:relative;margin-left:auto;}
.search-box input{
  background:var(--surface2);border:1px solid var(--border);border-radius:8px;
  padding:7px 14px 7px 34px;color:var(--text);font-size:12.5px;
  font-family:'Inter',sans-serif;outline:none;width:200px;transition:border-color .15s;
}
.search-box input:focus{border-color:var(--gold);}
.search-box::before{content:"🔍";position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:13px;pointer-events:none;}
table{width:100%;border-collapse:collapse;}
th{
  font-size:10.5px;font-weight:600;color:var(--text-muted);text-transform:uppercase;
  letter-spacing:.07em;padding:11px 16px;text-align:left;
  border-bottom:1px solid var(--border);background:#f7fafe;
}
td{padding:12px 16px;font-size:13px;border-bottom:1px solid #edf2f8;vertical-align:middle;}
tr:last-child td{border-bottom:none;}
tr:hover td{background:#f9fbfe;cursor:pointer;}
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;}
.badge-new{background:rgba(44,79,159,.10);color:var(--navy);}
.badge-contacted{background:rgba(200,164,58,.12);color:#8c6d12;}
.badge-demo{background:rgba(14,123,103,.10);color:var(--teal);}
.badge-enrolled{background:rgba(15,106,82,.10);color:var(--green);}
.badge-lost{background:rgba(198,31,63,.08);color:var(--red);}
.frozen-status-pill{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-height:24px;padding:4px 10px;border:1px solid rgba(25,88,210,.18);border-radius:999px;background:#1f5fd2;color:#fff;font-size:10.5px;font-weight:850;line-height:1;letter-spacing:.025em;white-space:nowrap;box-shadow:0 4px 12px rgba(31,95,210,.16);pointer-events:none;user-select:none;}
.frozen-status-pill.compact{min-height:20px;padding:3px 8px;font-size:9.5px;box-shadow:none;}
.frozen-status-pill.pending{border-color:rgba(173,119,12,.2);background:#fff5d9;color:#805b09;box-shadow:none;}
.master-row-action .frozen-status-pill{min-width:72px;background:#1f5fd2!important;color:#fff!important;border-color:#1f5fd2!important;box-shadow:0 4px 12px rgba(31,95,210,.18)!important;}
.avatar{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;margin-right:8px;flex-shrink:0;}
.name-cell{display:flex;align-items:center;}

/* KANBAN */
.kanban-board{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;align-items:start;}
.kanban-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.kanban-header{
  padding:12px 14px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
}
.kanban-title{font-size:12.5px;font-weight:600;}
.kanban-count{background:var(--surface2);color:var(--text-muted);font-size:11px;font-weight:600;padding:2px 7px;border-radius:20px;}
.kanban-cards{padding:10px;display:flex;flex-direction:column;gap:8px;min-height:80px;}
.kanban-card{
  background:var(--surface2);border:1px solid var(--border);border-radius:9px;
  padding:12px 13px;cursor:pointer;transition:all .15s;
}
.kanban-card:hover{border-color:var(--gold);transform:translateY(-1px);}
.kcard-name{font-size:13px;font-weight:600;margin-bottom:4px;}
.kcard-subject{font-size:11.5px;color:var(--text-muted);margin-bottom:6px;line-height:1.4;}
.kcard-actions{display:flex;gap:4px;}
.kcard-action{
  flex:1;padding:5px 6px;border-radius:6px;font-size:10.5px;font-weight:600;
  border:1px solid var(--border);background:transparent;color:var(--text-muted);
  cursor:pointer;font-family:'Inter',sans-serif;text-align:center;transition:all .15s;
}
.kcard-action.wa{color:var(--teal);border-color:rgba(46,173,168,.3);background:rgba(46,173,168,.08);}
.kcard-action.wa:hover{background:rgba(46,173,168,.18);}
.kcard-action.demo{color:var(--gold-light);border-color:rgba(201,163,42,.3);background:rgba(201,163,42,.08);}
.kcard-action.demo:hover{background:rgba(201,163,42,.18);}
.kcard-demo-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--teal);background:rgba(46,173,168,.1);padding:2px 6px;border-radius:10px;margin-bottom:6px;}

/* DRAWER */
.drawer-overlay{position:fixed;inset:0;background:rgba(23,48,95,.18);backdrop-filter:blur(4px);z-index:300;display:none;}
.drawer-overlay.open{display:block;}
.drawer{
  position:fixed;right:0;top:0;bottom:0;width:420px;
  background:#fff;border-left:1px solid var(--border);
  z-index:400;display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);
  box-shadow:-18px 0 60px rgba(23,48,95,.12);
}
.drawer.open{transform:translateX(0);}
#teacherdb-pane-overlay{display:none !important;pointer-events:none;background:transparent;backdrop-filter:none;}
#teacherdb-pane{width:min(620px,78vw);min-width:520px;max-width:82vw;z-index:450;}
#studentdb-pane-overlay{display:none !important;pointer-events:none;background:transparent;backdrop-filter:none;}
#studentdb-pane{width:min(620px,78vw);min-width:520px;max-width:82vw;z-index:440;}
.drawer-resizer{
  position:absolute;left:0;top:0;bottom:0;width:12px;cursor:col-resize;
  background:linear-gradient(90deg, rgba(32,61,138,.10), transparent 70%);
}
.drawer-resizer::after{
  content:'';position:absolute;left:5px;top:50%;transform:translateY(-50%);
  width:2px;height:68px;border-radius:999px;background:rgba(32,61,138,.14);
}
.drawer-header{
  padding:18px 20px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;
}
.drawer-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex-shrink:0;}
.drawer-name{font-family:'Playfair Display',serif;font-size:17px;font-weight:600;}
.teacher-pane-header-subject{font-size:12px;color:var(--text-muted);font-weight:700;margin-top:3px;line-height:1.25;}
.drawer-status{margin-left:auto;display:flex;align-items:center;gap:6px;}
.drawer-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:18px;padding:4px;margin-left:4px;}
.drawer-close:hover{color:var(--text);}
.drawer-body{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:16px;}
.drawer-section{background:#f7fafe;border:1px solid var(--border);border-radius:14px;padding:14px 16px;}
.drawer-section-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:10px;}
.info-row{display:grid;grid-template-columns:96px minmax(0,1fr);align-items:start;gap:8px;margin-bottom:6px;font-size:13px;}
.info-row:last-child{margin-bottom:0;}
.info-key{color:var(--text-muted);min-width:80px;flex-shrink:0;}
.info-val{color:var(--text);font-weight:500;min-width:0;word-break:normal;overflow-wrap:anywhere;}
.wa-link{color:var(--teal);text-decoration:none;display:flex;align-items:center;gap:4px;}
.wa-link:hover{text-decoration:underline;}
.action-title{font-size:12px;font-weight:600;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.06em;}
.action-flow{display:flex;flex-direction:column;gap:8px;}
.action-step{
  background:var(--surface);border:1px solid var(--border);border-radius:9px;
  padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.action-step-info{flex:1;}
.action-step-label{font-size:12.5px;font-weight:600;margin-bottom:2px;}
.action-step-desc{font-size:11.5px;color:var(--text-muted);}
.action-step.highlight{border-color:rgba(201,163,42,.3);background:rgba(201,163,42,.05);}
.demo-form{display:flex;flex-direction:column;gap:10px;margin-top:8px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.form-group{display:flex;flex-direction:column;gap:4px;}
.form-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;}
.form-input,.form-select{
  background:#fff;border:1px solid var(--border);border-radius:10px;
  padding:8px 11px;color:var(--text);font-size:12.5px;font-family:'Inter',sans-serif;
  outline:none;width:100%;transition:border-color .15s;
}
.form-input:focus,.form-select:focus{border-color:var(--navy);box-shadow:0 0 0 4px rgba(32,61,138,.08);}
.form-select option{background:#fff;}
.msg-preview{
  background:var(--bg);border:1px solid var(--border);border-radius:7px;
  padding:10px 12px;font-size:12px;color:var(--text-muted);line-height:1.6;
  margin-top:6px;white-space:pre-wrap;
}
.copy-btn{
  width:100%;padding:9px;border-radius:8px;background:var(--teal);color:#0f1626;
  font-weight:700;font-size:12.5px;border:none;cursor:pointer;font-family:'Inter',sans-serif;
  transition:all .2s;margin-top:6px;display:flex;align-items:center;justify-content:center;gap:6px;
}
.copy-btn:hover{background:#26b8b3;}
.copy-btn.copied{background:var(--green);color:#fff;}
.stage-progress{display:flex;gap:4px;margin-top:8px;}
.stage-dot{flex:1;height:4px;border-radius:2px;background:var(--border);}
.stage-dot.filled{background:var(--gold);}
.stage-dot.active-dot{background:var(--teal);}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:600;display:none;align-items:center;justify-content:center;}
.modal-overlay.open{display:flex;}
.modal{background:#fff;border:1px solid var(--border);border-radius:22px;width:480px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 26px 80px rgba(23,48,95,.16);}
.modal-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.modal-title{font-family:'Playfair Display',serif;font-size:17px;font-weight:600;}
.modal-body{padding:20px 22px;display:flex;flex-direction:column;gap:12px;}
.modal-footer{padding:14px 22px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.payment-entry-modal{width:min(560px,96vw);max-width:96vw;}
.payment-entry-modal .modal-header{padding:16px 20px;}
.payment-entry-modal .modal-footer{padding:12px 20px;}
.payment-entry-body{padding:14px 16px 12px;gap:10px;}
.payment-form-section{border:1px solid transparent;border-radius:15px;padding:12px 13px;}
.payment-form-grid{display:grid;gap:9px 10px;align-items:start;}
.payment-assignment-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.payment-subject-field{grid-column:1 / -1;}
.payment-fees-grid,.payment-confirmation-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.payment-wide-field{grid-column:1 / -1;}
.payment-assignment-section{background:linear-gradient(135deg,#e1e9f8,#edf2fb);border-color:#9eb2dc;}
.payment-fees-section{background:linear-gradient(135deg,#f9dfe6,#fcecef);border-color:#e5a5b5;}
.payment-confirmation-section{background:linear-gradient(135deg,#e8e3f3,#f3e9f0);border-color:#b9a9d1;}
.payment-form-section .form-input,.payment-form-section .form-select{background:rgba(255,255,255,.94);}
.payment-number-input{-moz-appearance:textfield;appearance:textfield;}
.payment-number-input::-webkit-outer-spin-button,.payment-number-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.payment-confirmation-section .fin-mini-note{font-size:9.5px;line-height:1.3;margin-top:1px;}
.payment-remark-group{padding:0 2px;}
.payment-remark-group .form-textarea{min-height:64px;background:#fff;}
@media (max-width:560px){
  .payment-entry-modal{width:96vw;max-width:96vw;}
  .payment-assignment-grid,.payment-fees-grid,.payment-confirmation-grid{grid-template-columns:1fr;}
  .payment-subject-field,.payment-wide-field{grid-column:auto;}
}
.assignment-editor-stack{display:flex;flex-direction:column;gap:10px;}
.assignment-editor-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(130px,.8fr) 120px 130px 44px;gap:8px;align-items:center;}
.assignment-editor-empty{padding:12px 14px;border:1px dashed var(--border);border-radius:12px;background:var(--surface2);color:var(--text-muted);font-size:12px;}
.assignment-card-list{display:flex;flex-direction:column;gap:12px;}
.assignment-inline-empty{padding:14px;border:1px dashed var(--border);border-radius:12px;background:var(--surface2);color:var(--text-muted);font-size:13px;text-align:center;}
.assignment-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:700;background:rgba(46,173,168,.08);color:var(--teal);border:1px solid rgba(46,173,168,.18);}
.assignment-hub-header{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px;}
.assignment-hub-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.topbar-assignment-switch{margin-left:8px;white-space:nowrap;}
.topbar-assignment-actions{white-space:nowrap;}
.topbar-assignment-actions .btn{min-height:34px;padding:0 14px;}
.assignment-refresh-status{font-size:11.5px;color:var(--text-muted);}
.assignment-switch{display:flex;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:4px;width:fit-content;}
.assignment-switch-btn{border:none;background:transparent;color:var(--text-muted);font-weight:700;font-size:12px;padding:7px 12px;border-radius:6px;cursor:pointer;transition:all .18s ease;}
.assignment-switch-btn.active{background:#fff;color:var(--navy);box-shadow:0 4px 12px rgba(23,48,95,.08);}
.assignment-workspace{display:grid;grid-template-columns:270px minmax(0,1fr);gap:14px;align-items:start;}
.assignment-workspace.assignment-pane-workspace .assignment-detail{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 16px 18px;}
.assignment-workspace.assignment-pane-workspace .assignment-detail-head{margin-bottom:14px;}
.assignment-workspace.assignment-pane-workspace .assignment-detail-title{font-size:22px;}
.assignment-workspace.assignment-pane-workspace .assignment-detail-sub{margin-top:4px;color:var(--text-muted);font-size:13px;}
.assignment-pane-shell{display:block;}
.assignment-directory{border:1px solid var(--border);border-radius:10px;background:#fff;padding:10px;display:flex;flex-direction:column;gap:10px;min-height:460px;}
.assignment-directory-tools{display:flex;flex-direction:column;gap:8px;}
.assignment-directory-search{width:100%;min-height:38px;border:1px solid var(--border);border-radius:8px;background:var(--surface2);padding:0 12px;font-size:13px;color:var(--text);}
.assignment-directory-search:focus{outline:none;border-color:rgba(32,61,138,.22);background:#fff;box-shadow:0 0 0 3px rgba(32,61,138,.06);}
.directory-status-filters{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:0 2px;min-height:22px;}
.assignment-directory-filters{display:flex;gap:6px;flex-wrap:wrap;}
.assignment-directory-filter{border:1px solid var(--border);background:#fff;color:var(--text-muted);border-radius:8px;padding:6px 10px;font-size:11px;font-weight:700;cursor:pointer;transition:all .18s ease;}
.assignment-directory-filter.active{background:var(--navy);border-color:var(--navy);color:#fff;}
.assignment-directory-list{display:flex;flex-direction:column;gap:6px;max-height:520px;overflow:auto;padding-right:2px;}
.assignment-directory-empty{padding:16px 10px;border:1px dashed var(--border);border-radius:8px;background:var(--surface2);font-size:12px;color:var(--text-muted);text-align:center;}
.assignment-directory-item{border:1px solid transparent;border-radius:8px;background:transparent;padding:10px 12px;cursor:pointer;transition:all .18s ease;}
.assignment-directory-item:hover{border-color:var(--border);background:var(--surface2);}
.assignment-directory-item.active{background:#eef4ff;border-color:rgba(32,61,138,.16);box-shadow:none;}
.assignment-directory-name{font-weight:800;color:var(--navy);font-size:13px;line-height:1.25;margin-bottom:2px;}
.assignment-directory-meta{font-size:11px;color:var(--text-muted);line-height:1.35;}
.assignment-detail{border:1px solid var(--border);border-radius:10px;background:#fff;padding:12px 14px;}
.assignment-detail-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid rgba(23,48,95,.08);}
.assignment-detail-title{font-size:20px;font-weight:800;color:var(--navy);line-height:1.1;letter-spacing:-.02em;}
.assignment-detail-sub{font-size:12px;color:var(--text-muted);margin-top:4px;}
.assignment-detail-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center;}
.assignment-detail-actions .btn{min-height:36px;padding:0 14px;}
.assignment-track-list{display:flex;flex-direction:column;gap:8px;}
.assignment-track-table-head{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.95fr) minmax(0,.95fr) 118px 122px 82px 66px 104px;gap:8px;align-items:center;padding:0 8px 6px;color:var(--text-muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;}
.assignment-track-name{font-weight:800;color:var(--navy);font-size:14px;margin-bottom:4px;}
.assignment-track-meta{font-size:12px;color:var(--text-muted);}
.assignment-save-status{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;font-size:10px;font-weight:800;border:1px solid var(--border);background:#fff;color:var(--text-muted);min-width:112px;justify-content:center;white-space:nowrap;}
.assignment-save-status.saved{background:rgba(61,186,126,.08);border-color:rgba(61,186,126,.18);color:#1a7d4f;}
.assignment-save-status.pending{background:rgba(201,163,42,.10);border-color:rgba(201,163,42,.22);color:#946d10;}
.assignment-save-status.saving{background:rgba(32,61,138,.08);border-color:rgba(32,61,138,.18);color:var(--navy);}
.assignment-track-editor{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.95fr) minmax(0,.95fr) 118px 122px 82px 66px 104px;gap:8px;align-items:center;padding:8px;border:1px solid var(--border);border-radius:12px;background:#fff;}
.assignment-track-editor .form-select,
.assignment-track-editor .form-input{background:#fff;min-height:38px;padding-top:7px;padding-bottom:7px;border-radius:10px;font-size:13px;}
.assignment-track-editor.saved-row{background:#fbfdff;border-color:rgba(32,61,138,.10);}
.assignment-track-editor.saved-row .form-select,
.assignment-track-editor.saved-row .form-input{border-color:rgba(46,117,224,.16);background:rgba(255,255,255,.96);}
.assignment-track-editor.draft-row{background:#fffbf2;border-color:rgba(201,163,42,.20);}
.assignment-track-editor.draft-row .form-select,
.assignment-track-editor.draft-row .form-input{border-color:rgba(201,163,42,.22);background:#fffdfa;}
.assignment-row-state{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:800;border:1px solid transparent;white-space:nowrap;}
.assignment-row-state.saved{background:rgba(61,186,126,.08);border-color:rgba(61,186,126,.18);color:#1a7d4f;}
.assignment-row-state.draft{background:rgba(201,163,42,.10);border-color:rgba(201,163,42,.22);color:#946d10;}
.assignment-row-hours{font-weight:800;color:var(--navy);font-size:13px;white-space:nowrap;text-align:right;padding-right:4px;}
.assignment-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;}
@media (max-width:1100px){#assignment-hub-layout{grid-template-columns:1fr !important;}}
@media (max-width:980px){.assignment-workspace{grid-template-columns:1fr;}.assignment-directory{min-height:auto;}.assignment-directory-list{max-height:240px;}}
@media (max-width:880px){.assignment-detail-head{align-items:flex-start;flex-direction:column;}.assignment-detail-actions{width:100%;justify-content:flex-start;}.assignment-track-table-head,.assignment-track-editor{grid-template-columns:1fr;}.assignment-track-table-head{display:none;}.assignment-row-hours{text-align:left;padding-right:0;}.assignment-row-actions{justify-content:flex-start;}}

/* FINANCE HUB */
.financehub-shell{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start;}
.financehub-directory,.financehub-detail{border:1px solid var(--border);border-radius:10px;background:#fff;}
.financehub-directory{padding:12px;display:flex;flex-direction:column;gap:10px;min-height:560px;}
.financehub-directory-list{display:flex;flex-direction:column;gap:6px;max-height:680px;overflow:auto;padding-right:2px;}
.financehub-directory-item{width:100%;display:flex;align-items:center;gap:10px;border:1px solid transparent;border-radius:8px;background:transparent;padding:10px;text-align:left;cursor:pointer;transition:background .16s ease,border-color .16s ease;}
.financehub-directory-item:hover{background:var(--surface2);border-color:var(--border);}
.financehub-directory-item.active{background:#eef4ff;border-color:rgba(32,61,138,.18);}
.financehub-directory-avatar{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;background:#203d8a;color:#fff;font-size:11px;font-weight:800;}
.financehub-directory-avatar.student{background:#148677;}
.financehub-directory-copy{display:flex;flex-direction:column;min-width:0;gap:2px;}
.financehub-directory-copy strong{color:var(--navy);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.financehub-directory-copy small{color:var(--text-muted);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.financehub-detail{padding:18px;min-height:560px;}
.financehub-detail-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--border);}
.financehub-detail-head h2{margin:0;color:#1d3a75;font-size:25px;font-weight:700;line-height:1.15;letter-spacing:-.025em;}
.financehub-detail-head p{margin:5px 0 0;color:#66738c;font-size:12.5px;font-weight:500;}
.financehub-detail-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;}
.financehub-view-switch{display:flex;align-items:center;padding:3px;border:1px solid var(--border);border-radius:7px;background:var(--surface2);}
.financehub-view-switch button{border:0;border-radius:5px;background:transparent;color:#66738c;font-size:11.5px;font-weight:700;padding:6px 10px;cursor:pointer;}
.financehub-view-switch button.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(23,48,95,.08);}
.financehub-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0;}
.financehub-kpis>div{border:1px solid var(--border);border-radius:8px;background:var(--surface2);padding:12px 14px;display:flex;flex-direction:column;gap:4px;}
.financehub-kpis span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:800;}
.financehub-kpis strong{font-size:18px;color:var(--navy);}
.financehub-month-kpis{grid-template-columns:repeat(4,minmax(0,1fr));}
.financehub-month-kpis>div:last-child strong{color:#9a6510;}
.financehub-section-head{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px;}
.financehub-section-head h3{margin:0;color:var(--navy);font-size:16px;}
.financehub-section-head p{margin:3px 0 0;color:var(--text-muted);font-size:11px;}
.financehub-table-wrap{border:1px solid var(--border);border-radius:8px;overflow:auto;}
.financehub-table{width:100%;border-collapse:collapse;min-width:680px;}
.financehub-table th,.financehub-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;font-size:12px;vertical-align:middle;}
.financehub-table th{background:var(--surface2);color:var(--text-muted);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;}
.financehub-table tr:last-child td{border-bottom:none;}
.financehub-table .amount{text-align:right;font-weight:800;color:var(--navy);white-space:nowrap;}
.financehub-table .number{text-align:right;white-space:nowrap;}
.financehub-payment-history-table{min-width:940px;}
.financehub-payment-history-table .financehub-payment-toggle-head{width:78px;padding-left:4px;padding-right:4px;}
.financehub-payment-main-row td{transition:background .16s ease;}
.financehub-payment-main-row.is-open td{background:rgba(32,61,138,.035);border-bottom-color:transparent;}
.financehub-payment-toggle-cell{width:78px;text-align:center !important;padding-left:4px !important;padding-right:4px !important;}
.financehub-payment-row-actions{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:nowrap;}
.financehub-payment-row-actions .app-edit-btn{width:28px;height:28px;}
.financehub-payment-row-actions .app-edit-icon{width:12px;}
.financehub-payment-row-actions .student-delete-btn{width:28px;height:28px;}
.financehub-payment-row-actions .student-delete-top{width:11px;}
.financehub-payment-row-actions .student-delete-bottom{width:9px;}
.financehub-payment-toggle{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(32,61,138,.18);border-radius:8px;background:#fff;color:var(--navy);cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease;}
.financehub-payment-toggle:hover{background:#eef4ff;border-color:rgba(32,61,138,.30);}
.financehub-payment-chevron{display:block;font-size:20px;line-height:1;transform:translateY(-2px);transition:transform .18s ease;}
.financehub-payment-toggle[aria-expanded="true"] .financehub-payment-chevron{transform:translateY(2px) rotate(180deg);}
.financehub-payment-detail-row[hidden]{display:none;}
.financehub-payment-detail-row td{padding:0 !important;background:#f7f9fd;border-bottom:1px solid var(--border);}
.financehub-payment-detail-grid{display:grid;grid-template-columns:150px 180px minmax(220px,1fr);gap:12px;padding:12px 16px;border-top:1px dashed rgba(32,61,138,.16);}
.financehub-payment-detail-grid>div{display:flex;flex-direction:column;gap:4px;min-width:0;}
.financehub-payment-detail-grid span{font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);}
.financehub-payment-detail-grid strong{font-size:12px;line-height:1.4;color:var(--navy);font-weight:700;overflow-wrap:anywhere;}
.financehub-payment-detail-grid .remark strong{white-space:pre-wrap;}
.financehub-status{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;border:1px solid var(--border);font-size:9.5px;font-weight:800;}
.financehub-status.verified{background:rgba(61,186,126,.08);border-color:rgba(61,186,126,.20);color:#18754b;}
.financehub-status.pending{background:rgba(201,163,42,.10);border-color:rgba(201,163,42,.22);color:#8a6812;}
.financehub-hours-table{min-width:760px;}
.financehub-hour-status{display:inline-flex;align-items:center;justify-content:center;min-width:76px;padding:5px 9px;border:1px solid var(--border);border-radius:999px;font-size:9.5px;font-weight:800;white-space:nowrap;}
.financehub-hour-status.on-track{background:rgba(32,61,138,.07);border-color:rgba(32,61,138,.20);color:#203d8a;}
.financehub-hour-status.low{background:rgba(201,163,42,.10);border-color:rgba(201,163,42,.25);color:#8a6812;}
.financehub-hour-status.overused,.financehub-hour-status.error{background:#fff0f2;border-color:#f2a5b1;color:#b4233d;}
.financehub-hour-status.completed{background:rgba(61,186,126,.08);border-color:rgba(61,186,126,.20);color:#18754b;}
.financehub-hour-status.no-package{background:rgba(90,105,135,.08);border-color:rgba(90,105,135,.18);color:var(--text-muted);}
.financehub-hour-status.inactive{background:rgba(90,105,135,.08);border-color:rgba(90,105,135,.18);color:#53627e;}
.all-hour-status-head{align-items:flex-end;}
.all-hour-status-tools{display:flex;flex-direction:column;align-items:flex-end;gap:8px;width:min(460px,100%);}
.all-hour-status-search{width:min(360px,100%);}
.all-hour-status-filters{justify-content:flex-end;}
.all-hour-status-table-wrap{background:#fff;}
.all-hour-status-table{min-width:900px;}
@media (max-width:760px){
  .financehub-payment-detail-grid{grid-template-columns:1fr;}
  .all-hour-status-head{align-items:stretch;}
  .all-hour-status-tools{align-items:stretch;width:100%;}
  .all-hour-status-search{width:100%;}
  .all-hour-status-filters{justify-content:flex-start;}
}
.financehub-empty{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;color:var(--text-muted);border:1px dashed var(--border);border-radius:8px;background:var(--surface2);padding:24px;}
.financehub-empty strong{color:var(--navy);font-size:15px;}
.financehub-empty-small{padding:20px 10px;text-align:center;color:var(--text-muted);font-size:12px;}
.financehub-month-intro{display:flex;align-items:center;justify-content:space-between;margin:14px 0 9px;}
.financehub-month-intro>div{display:flex;align-items:baseline;gap:8px;}
.financehub-month-intro strong{color:var(--navy);font-size:14px;}
.financehub-month-intro span{color:var(--text-muted);font-size:10.5px;}
.financehub-month-columns,.financehub-month-summary{grid-template-columns:repeat(4,minmax(120px,1fr)) 58px;gap:12px;align-items:center;}
.financehub-month-columns{display:grid;padding:0 13px 7px;color:#66738c;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.financehub-month-columns span:nth-child(2),.financehub-month-columns span:nth-child(3){text-align:right;}
.financehub-month-columns span:nth-child(4),.financehub-month-columns span:nth-child(5){text-align:center;}
.financehub-month-list{display:flex;flex-direction:column;gap:7px;}
.financehub-month-card{border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden;}
.financehub-month-card.open{border-color:#a9bfe6;background:#f3f7fd;box-shadow:0 7px 20px rgba(23,48,95,.09);}
.financehub-month-summary{width:100%;min-height:52px;display:grid;padding:8px 13px;border:0;background:#fff;text-align:left;cursor:pointer;color:var(--text);}
.financehub-month-summary:hover{background:#fbfcff;}
.financehub-month-card.open .financehub-month-summary{background:#eaf1fb;}
.financehub-month-card.open .financehub-month-summary:hover{background:#e5edf9;}
.financehub-month-name{font-size:14.5px;font-weight:700;color:#1d3a75;letter-spacing:-.01em;}
.financehub-month-value{text-align:right;color:#1d3a75;font-size:14px;font-weight:700;white-space:nowrap;letter-spacing:-.01em;}
.financehub-month-value.amount{font-size:15px;}
.financehub-month-metric{display:flex;flex-direction:column;gap:1px;align-items:flex-end;}
.financehub-month-metric small{font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:800;}
.financehub-month-metric strong{font-size:12.5px;color:var(--navy);}
.financehub-month-metric.amount strong{font-size:14px;}
.financehub-month-status{display:inline-flex;align-items:center;justify-content:center;width:max-content;min-width:76px;padding:4px 9px;border-radius:999px;font-size:10.5px;font-weight:700;border:1px solid var(--border);}
.financehub-month-summary .financehub-month-status{justify-self:center;}
.financehub-month-status.paid{background:rgba(61,186,126,.08);border-color:rgba(61,186,126,.20);color:#18754b;}
.financehub-month-status.partial{background:rgba(201,163,42,.10);border-color:rgba(201,163,42,.25);color:#8a6812;}
.financehub-month-status.unpaid{background:rgba(206,40,70,.06);border-color:rgba(206,40,70,.20);color:#c91f3e;}
.financehub-month-status.overpaid{background:#fff0f2;border-color:#ef9aaa;color:#b51132;}
.financehub-month-status.credit{background:#edf4ff;border-color:#b8cdf4;color:#2259aa;}
.financehub-month-status.missing{background:rgba(90,105,135,.08);border-color:rgba(90,105,135,.18);color:var(--text-muted);}
.financehub-month-expand{width:28px;height:28px;display:grid;place-items:center;justify-self:center;border:1px solid rgba(32,61,138,.16);border-radius:7px;background:#fff;}
.financehub-month-card.open .financehub-month-expand{border-color:#9db5df;background:#f8fbff;box-shadow:0 2px 7px rgba(32,61,138,.08);}
.financehub-month-chevron{display:block;width:15px;height:15px;object-fit:contain;transition:transform .16s ease;}
.financehub-month-card.open .financehub-month-chevron{transform:rotate(180deg);}
.financehub-month-body{padding:12px 13px 13px;background:#f3f7fd;border-top:1px solid #c3d2eb;}
.financehub-month-body .financehub-table-wrap{background:#fff;}
.financehub-month-table{min-width:640px;}
.financehub-month-footer{display:flex;align-items:flex-end;justify-content:flex-end;gap:14px;padding-top:10px;}
.financehub-month-paid-summary{display:flex;align-items:stretch;gap:8px;}
.financehub-month-paid-summary>span{min-width:104px;display:flex;flex-direction:column;gap:2px;padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:#fff;}
.financehub-month-paid-summary small{color:var(--text-muted);font-size:8px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;}
.financehub-month-paid-summary strong{color:var(--navy);font-size:12px;}
.financehub-month-paid-summary .pending strong{color:#9a6510;}
.financehub-monthly-empty{margin-top:14px;}
.financehub-student-columns,.financehub-student-summary{grid-template-columns:minmax(190px,1.45fr) minmax(100px,.72fr) minmax(150px,.9fr) 58px;gap:12px;align-items:center;}
.financehub-student-columns{display:grid;padding:0 13px 7px;color:#66738c;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.financehub-student-columns span:nth-child(2),.financehub-student-columns span:nth-child(3){text-align:right;}
.financehub-student-columns span:last-child{text-align:center;}
.financehub-student-payment-list{display:flex;flex-direction:column;gap:7px;}
.financehub-student-payment{border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden;}
.financehub-student-payment.open{border-color:#a9bfe6;background:#f3f7fd;box-shadow:0 7px 20px rgba(23,48,95,.09);}
.financehub-student-summary{width:100%;min-height:56px;display:grid;padding:8px 13px;border:0;background:#fff;text-align:left;cursor:pointer;color:var(--text);}
.financehub-student-summary:hover{background:#fbfcff;}
.financehub-student-payment.open .financehub-student-summary{background:#eaf1fb;}
.financehub-student-payment.open .financehub-student-summary:hover{background:#e5edf9;}
.financehub-student-main{display:flex;flex-direction:column;gap:3px;min-width:0;}
.financehub-student-main strong{color:#1d3a75;font-size:14.5px;font-weight:700;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.financehub-student-main small{color:#66738c;font-size:11px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.financehub-student-value{text-align:right;color:#1d3a75;font-size:14px;font-weight:700;white-space:nowrap;letter-spacing:-.01em;}
.financehub-student-value.amount{font-size:15px;}
.financehub-student-expand{width:28px;height:28px;display:grid;place-items:center;justify-self:center;border:1px solid rgba(32,61,138,.16);border-radius:7px;background:#fff;}
.financehub-student-payment.open .financehub-student-expand{border-color:#9db5df;background:#f8fbff;box-shadow:0 2px 7px rgba(32,61,138,.08);}
.financehub-student-payment.open .financehub-month-chevron{transform:rotate(180deg);}
.financehub-student-months{padding:12px 13px 13px;background:#f3f7fd;border-top:1px solid #c3d2eb;}
.financehub-student-months .financehub-table-wrap{background:#fff;}
.financehub-student-month-table{min-width:780px;}
.financehub-student-month-table .status-cell{text-align:center;white-space:nowrap;}
.financehub-student-month-table .financehub-month-status{margin:auto;}
.financehub-student-footer{display:flex;justify-content:flex-end;padding-top:10px;}
.financehub-student-month-empty{padding:16px;text-align:center;color:var(--text-muted);font-size:11px;}
.financehub-sort-button{display:inline-flex;align-items:center;gap:6px;border:0;padding:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;}
.financehub-sort-button:hover,.financehub-sort-button.active{color:#1d3a75;}
.financehub-sort-chevron{width:11px;height:11px;object-fit:contain;opacity:.38;transition:transform .16s ease,opacity .16s ease;}
.financehub-sort-button.active .financehub-sort-chevron{opacity:1;}
.financehub-sort-chevron.asc{transform:rotate(180deg);}
@media (max-width:980px){.financehub-shell{grid-template-columns:1fr;}.financehub-directory{min-height:auto;}.financehub-directory-list{max-height:250px;}.financehub-detail{min-height:auto;}}
@media (max-width:780px){.financehub-month-columns,.financehub-month-summary{grid-template-columns:minmax(120px,1fr) 70px 90px 82px 38px;gap:7px;}.financehub-student-columns,.financehub-student-summary{grid-template-columns:minmax(140px,1fr) 70px 105px 38px;gap:7px;}}
@media (max-width:680px){.financehub-kpis{grid-template-columns:1fr 1fr;}.financehub-detail-head{align-items:flex-start;flex-direction:column;}.financehub-detail-actions{justify-content:flex-start;}.financehub-month-columns,.financehub-student-columns{display:none;}.financehub-month-summary{grid-template-columns:minmax(105px,1fr) 52px 74px 34px;}.financehub-month-summary .financehub-month-status{display:none;}.financehub-month-footer{align-items:flex-start;flex-direction:column;}.financehub-month-paid-summary{width:100%;flex-wrap:wrap;}.financehub-month-paid-summary>span{flex:1 1 90px;}.financehub-student-summary{grid-template-columns:minmax(120px,1fr) 58px 82px 34px;}.financehub-student-footer .financehub-month-paid-summary{width:100%;}}

/* Revenue uses the same student-finance workspace as Finance Hub. */
#fin-payments-panel .revenue-student-finance-shell{min-height:560px;}
#fin-payments-panel .financehub-directory,
#fin-payments-panel .financehub-detail{min-height:560px;}

/* LINKS HUB */
.links-hub{max-width:1120px;margin:0 auto;}
.links-hub-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:16px;padding:2px 2px 14px;border-bottom:1px solid var(--border);}
.links-hub-kicker{color:#b28b1b;font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;margin-bottom:5px;}
.links-hub-head h2{margin:0;color:var(--navy);font-size:25px;line-height:1.15;letter-spacing:0;}
.links-hub-head p{margin:6px 0 0;color:var(--text-muted);font-size:12px;line-height:1.5;}
.links-hub-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--text-muted);font-size:10px;font-weight:700;white-space:nowrap;}
.links-hub-legend span{display:inline-flex;align-items:center;gap:5px;}
.links-hub-legend i{width:7px;height:7px;border-radius:50%;display:block;}
.links-hub-legend i.private{background:#c91f3e;}
.links-hub-legend i.restricted{background:#b88911;}
.links-hub-legend i.public{background:#148677;}
.portal-directory{display:flex;flex-direction:column;gap:10px;}
.portal-directory-item{border:1px solid var(--border);border-radius:8px;background:#fff;padding:14px 16px;box-shadow:0 5px 16px rgba(23,48,95,.035);}
.portal-directory-item.is-coming-soon{background:#fbfcff;}
.portal-directory-intro{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:start;gap:11px;}
.portal-directory-number{display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(32,61,138,.16);border-radius:7px;background:#eef3fb;color:var(--navy);font-size:10px;font-weight:800;}
.portal-directory-intro h3{margin:1px 0 0;color:var(--navy);font-size:15px;line-height:1.2;}
.portal-directory-intro p{margin:4px 0 0;color:var(--text-muted);font-size:10.5px;line-height:1.4;}
.portal-access-badge{display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:0 9px;border:1px solid var(--border);border-radius:999px;font-size:9px;font-weight:800;white-space:nowrap;}
.portal-access-badge.private{background:rgba(206,40,70,.06);border-color:rgba(206,40,70,.18);color:#bd1f3c;}
.portal-access-badge.restricted{background:rgba(201,163,42,.09);border-color:rgba(201,163,42,.22);color:#8a6812;}
.portal-access-badge.public{background:rgba(20,134,119,.07);border-color:rgba(20,134,119,.18);color:#0e7466;}
.portal-access-badge.pending{background:rgba(90,105,135,.07);border-color:rgba(90,105,135,.16);color:#64738d;}
.portal-primary-link{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;margin:12px 0 9px 45px;padding:10px 12px;border-left:3px solid #27478d;background:#f7f9fd;}
.portal-link-copy{display:flex;flex-direction:column;gap:3px;min-width:0;}
.portal-link-copy span,.portal-secondary-title{color:var(--text-muted);font-size:8.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;}
.portal-link-copy a{color:#203d8a;font-size:14px;font-weight:800;text-decoration:none;overflow-wrap:anywhere;}
.portal-link-copy a:hover{text-decoration:underline;}
.portal-link-actions{display:flex;align-items:center;gap:7px;}
.portal-copy-btn{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--navy);font-size:16px;cursor:pointer;}
.portal-copy-btn:hover{border-color:rgba(32,61,138,.30);background:#eef3fb;}
.portal-secondary-links{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;margin-left:45px;padding:2px 0;}
.portal-secondary-links a{color:#4d638a;font-size:10.5px;font-weight:700;text-decoration:none;overflow-wrap:anywhere;}
.portal-secondary-links a:hover{color:var(--navy);text-decoration:underline;}
.portal-sharing-note{margin:9px 0 0 45px;padding-left:9px;border-left:2px solid var(--border);color:var(--text-muted);font-size:9.5px;line-height:1.4;}
.portal-sharing-note.private{border-color:rgba(206,40,70,.38);}
.portal-sharing-note.restricted{border-color:rgba(201,163,42,.52);}
.portal-sharing-note.public{border-color:rgba(20,134,119,.42);}
.portal-coming-soon{display:flex;align-items:baseline;gap:9px;margin:12px 0 0 45px;padding:10px 12px;border-left:3px solid #a7b2c5;background:#f4f6fa;}
.portal-coming-soon strong{color:#53627d;font-size:12px;}
.portal-coming-soon span{color:var(--text-muted);font-size:10.5px;line-height:1.4;}
@media (max-width:760px){
  .links-hub-head{align-items:flex-start;flex-direction:column;gap:10px;}
  .portal-directory-intro{grid-template-columns:34px minmax(0,1fr);}
  .portal-access-badge{grid-column:2;justify-self:start;}
  .portal-primary-link{grid-template-columns:1fr;margin-left:0;}
  .portal-link-actions{justify-content:flex-start;}
  .portal-secondary-links,.portal-sharing-note,.portal-coming-soon{margin-left:0;}
  .portal-coming-soon{align-items:flex-start;flex-direction:column;}
}

/* Revenue navigation and payroll controls. */
.topbar-left{min-width:0;}
.topbar-revenue-tabs{margin:0!important;flex-wrap:nowrap!important;overflow-x:auto;max-width:min(72vw,920px);scrollbar-width:none;}
.topbar-revenue-tabs::-webkit-scrollbar{display:none;}
.topbar-revenue-tabs .fin-tab{white-space:nowrap;padding:7px 11px;font-size:11px;}
.payroll-period-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;}
.payroll-period-toolbar .fin-month-nav{display:flex;align-items:center;gap:7px;}
.payroll-period-toolbar .fin-month-nav button{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--navy);font-size:20px;cursor:pointer;}
.payroll-period-toolbar .fin-month-label{min-width:132px;color:var(--navy);font-size:16px;font-weight:800;text-align:center;}
.payroll-period-selectors{display:flex;align-items:center;gap:7px;}
#payroll-month-select{width:132px;min-height:34px;}
#payroll-year-select{width:88px;min-height:34px;}
.payroll-recalculate-status{min-height:18px;flex:1 1 260px;color:#6d82a7;font:700 10.5px/1.35 var(--font);}
.payroll-recalculate-status[data-state="working"]{color:#0f7f6f;}
.payroll-recalculate-status[data-state="success"]{color:#08735f;}
.payroll-recalculate-status[data-state="error"]{color:var(--red);}
.payroll-history-section{margin-top:14px;border:1px solid var(--border);border-radius:10px;background:#fff;overflow:hidden;}
.payroll-history-toggle{width:100%;display:flex;align-items:center;gap:10px;border:0;background:#fff;padding:12px 14px;color:var(--navy);font:800 12px/1.2 var(--font);cursor:pointer;text-align:left;}
.payroll-history-toggle:hover{background:var(--surface2);}
.payroll-history-toggle-meta{margin-left:auto;color:var(--text-muted);font-size:10.5px;font-weight:600;}
.payroll-history-chevron{color:var(--text-muted);font-size:16px;transition:transform .16s ease;}
.payroll-history-chevron.open{transform:rotate(180deg);}
.payroll-history-panel{border-top:1px solid var(--border);padding:10px;}

.payroll-action-table{border:1px solid rgba(69,95,148,.13);border-radius:10px;background:#fff;overflow:hidden;}
.payroll-action-table-head,.payroll-action-table-row{display:grid;grid-template-columns:minmax(240px,1.45fr) 132px 112px 106px 106px;gap:14px;align-items:center;}
.payroll-action-table-head{padding:9px 12px;background:var(--surface2);color:var(--text-muted);font:800 9px/1.1 var(--font);letter-spacing:.08em;text-transform:uppercase;}
.payroll-action-table-head .amount,.payroll-action-table-head .action{text-align:right;}
.payroll-action-table-row{width:100%;min-height:62px;border:0;border-top:1px solid rgba(69,95,148,.10);background:#fff;padding:10px 12px;color:var(--text);text-align:left;cursor:pointer;transition:background .15s ease,box-shadow .15s ease;}
.payroll-action-table-row:hover{background:#fbfcff;}
.payroll-action-table-row:focus-visible{outline:2px solid rgba(32,61,138,.35);outline-offset:-2px;}
.payroll-action-table-teacher{display:flex;align-items:center;gap:9px;min-width:0;}
.payroll-action-category{display:inline-flex;align-items:center;justify-content:center;width:max-content;padding:4px 7px;border-radius:999px;font:700 9.5px/1 var(--font);}
.payroll-action-category.attention{background:rgba(206,40,70,.07);color:#c91f3e;}
.payroll-action-category.ready{background:rgba(201,163,42,.11);color:#8a6812;}
.payroll-action-category.settled{background:rgba(61,186,126,.09);color:#18754b;}
.payroll-action-category.frozen{background:#1f5fd2;color:#fff;box-shadow:0 4px 12px rgba(31,95,210,.14);}
.payroll-action-table .payroll-action-amount{text-align:right;color:var(--navy);font-size:12px;}
.payroll-action-status{display:flex;align-items:center;}
.payroll-action-payment{display:flex;align-items:center;justify-content:flex-end;}
.payroll-action-pay-btn{min-width:94px;justify-content:center;}
.payroll-action-no-action{color:var(--text-muted);font-weight:700;}

@media (max-width:920px){
  .topbar-revenue-tabs{max-width:62vw;}
  .payroll-action-table-head{display:none;}
  .payroll-action-table-row{grid-template-columns:minmax(0,1fr) auto auto;gap:9px 12px;}
  .payroll-action-table-teacher{grid-column:1/-1;}
  .payroll-action-table .payroll-action-amount{text-align:left;}
  .payroll-action-payment{grid-column:1/-1;justify-content:flex-end;}
}
.form-textarea{
  background:var(--bg);border:1px solid var(--border);border-radius:7px;
  padding:8px 11px;color:var(--text);font-size:12.5px;font-family:'Inter',sans-serif;
  outline:none;width:100%;transition:border-color .15s;resize:vertical;min-height:70px;
}
.form-textarea:focus{border-color:var(--gold);}

/* AI PANEL */
.ai-panel{
  position:fixed;right:0;top:0;bottom:0;width:380px;
  background:var(--surface);border-left:1px solid var(--border);
  display:flex;flex-direction:column;z-index:500;
  transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);
}
.ai-panel.open{transform:translateX(0);}
.ai-header{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.ai-info{display:flex;align-items:center;gap:10px;}
.ai-av{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--teal),#2e6da4);display:flex;align-items:center;justify-content:center;font-size:15px;}
.ai-n{font-weight:600;font-size:13.5px;}
.ai-s{font-size:11px;color:var(--teal);}
.ai-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;}
.msg{max-width:92%;padding:10px 13px;border-radius:11px;font-size:12.5px;line-height:1.55;}
.msg-ai{background:var(--surface2);color:var(--text);align-self:flex-start;border-bottom-left-radius:3px;}
.msg-user{background:rgba(201,163,42,.12);color:var(--text);align-self:flex-end;border-bottom-right-radius:3px;border:1px solid rgba(201,163,42,.2);}
.msg-sys{background:rgba(46,173,168,.08);color:var(--teal);align-self:center;text-align:center;font-size:11.5px;border:1px solid rgba(46,173,168,.2);border-radius:7px;padding:7px 12px;max-width:100%;}
.ai-input-area{padding:12px 14px;border-top:1px solid var(--border);}
.upload-zone{
  border:2px dashed var(--border);border-radius:8px;padding:11px;
  text-align:center;cursor:pointer;transition:all .2s;margin-bottom:8px;
  color:var(--text-muted);font-size:12px;
}
.upload-zone:hover{border-color:var(--teal);color:var(--teal);}
.upload-zone input{display:none;}
.ai-row{display:flex;gap:7px;align-items:flex-end;}
.ai-input{
  flex:1;background:var(--surface2);border:1px solid var(--border);border-radius:8px;
  padding:9px 12px;color:var(--text);font-size:12.5px;font-family:'Inter',sans-serif;
  resize:none;outline:none;min-height:38px;max-height:90px;transition:border-color .15s;
}
.ai-input:focus{border-color:var(--teal);}
.ai-send{background:var(--teal);color:#0f1626;border:none;border-radius:8px;width:38px;height:38px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;}
.ai-send:hover{background:#26b8b3;}
.extracted-card{background:var(--surface2);border:1px solid rgba(46,173,168,.3);border-radius:9px;padding:11px 13px;margin-top:6px;font-size:12px;}
.ext-row{display:flex;gap:5px;margin-bottom:3px;}
.ext-k{color:var(--text-muted);min-width:65px;}
.ext-v{color:var(--text);font-weight:500;}
.add-lead-btn{width:100%;margin-top:8px;padding:8px;border-radius:7px;background:var(--teal);color:#0f1626;font-weight:700;font-size:12.5px;border:none;cursor:pointer;font-family:'Inter',sans-serif;transition:all .2s;}
.add-lead-btn:hover{background:#26b8b3;}
.typing{display:flex;gap:4px;align-items:center;padding:10px 13px;}
.typing span{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:typing .9s infinite;}
.typing span:nth-child(2){animation-delay:.2s;}
.typing span:nth-child(3){animation-delay:.4s;}
@keyframes typing{0%,80%,100%{transform:scale(1);opacity:.5}40%{transform:scale(1.3);opacity:1}}

/* DATABASE PAGE */
.db-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.section-title{font-family:'Playfair Display',serif;font-size:15px;font-weight:600;margin-bottom:14px;}
.teacher-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px 18px;transition:border-color .15s;
}
.teacher-card:hover{border-color:var(--gold);}
.teacher-name{font-weight:600;font-size:14px;margin-bottom:4px;}
.teacher-subjects{font-size:12px;color:var(--text-muted);margin-bottom:8px;}
.teacher-meet{font-size:12px;color:var(--teal);display:flex;align-items:center;gap:4px;word-break:break-all;}
.teacher-actions{display:flex;gap:6px;margin-top:10px;}
.subject-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(37,52,89,.5);}
.subject-row:last-child{border-bottom:none;}
.subject-name{font-size:13px;font-weight:500;}
.subject-level{font-size:11.5px;color:var(--text-muted);}
.subject-price{font-family:'Playfair Display',serif;font-size:15px;color:var(--gold-light);}
.empty-state{text-align:center;padding:40px;color:var(--text-muted);}
.empty-state .ei{font-size:36px;margin-bottom:10px;}
.empty-state p{font-size:13px;}

/* ── TEACHER CARDS ── */
.teachers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;}
.teacher-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:all .2s;}
.teacher-card:hover{border-color:rgba(201,163,42,.4);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.3);}
.tc-header{padding:16px 18px 12px;display:flex;align-items:flex-start;gap:12px;border-bottom:1px solid var(--border);}
.tc-avatar{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex-shrink:0;font-family:'Playfair Display',serif;}
.tc-name{font-family:'Playfair Display',serif;font-size:15px;font-weight:600;margin-bottom:2px;}
.tc-subjects{font-size:11.5px;color:var(--text-muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tc-body{padding:12px 18px;display:flex;flex-direction:column;gap:7px;}
.tc-row{display:flex;align-items:center;gap:8px;font-size:12.5px;}
.tc-row a{color:var(--teal);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tc-row a:hover{text-decoration:underline;}
.tc-footer{padding:10px 18px;border-top:1px solid var(--border);display:flex;gap:5px;flex-wrap:wrap;}
/* DB TOPBAR */
.db-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px;}
.db-topbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.db-search{position:relative;}
.db-search input{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:7px 14px 7px 32px;color:var(--text);font-size:12.5px;font-family:'Inter',sans-serif;outline:none;width:200px;transition:border-color .15s;}
.db-search input:focus{border-color:var(--gold);}
.db-search::before{content:"🔍";position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:12px;pointer-events:none;}
.db-view-toggle{display:flex;background:#f7fafe;border-radius:10px;padding:2px;border:1px solid var(--border);}
.db-vbtn{padding:5px 12px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;border:none;background:none;color:var(--text-muted);font-family:'Inter',sans-serif;transition:all .15s;}
.db-vbtn.active{background:#fff;color:var(--navy);box-shadow:0 6px 18px rgba(23,48,95,.08);}
.studentdb-filterbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:-6px 0 16px;}
.studentdb-filter-btn{
  min-height:36px;padding:7px 11px;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--text-muted);
  font:700 12px 'Inter',sans-serif;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:all .15s;
}
.studentdb-filter-btn:hover{border-color:rgba(32,122,110,.25);color:var(--teal);background:#f8fbff;}
.studentdb-filter-btn.active{background:rgba(32,122,110,.1);border-color:rgba(32,122,110,.18);color:var(--teal);}
.studentdb-filter-count{min-width:21px;height:21px;padding:0 6px;border-radius:999px;background:#f2f6fb;color:var(--navy);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;}
.studentdb-filter-btn.active .studentdb-filter-count{background:#fff;color:var(--teal);}
.student-source-badge{display:inline-flex;align-items:center;margin-left:8px;padding:3px 7px;border-radius:999px;background:rgba(201,163,42,.13);color:#9a7318;font-size:10.5px;font-weight:800;vertical-align:middle;white-space:nowrap;}
.student-status-btn{border:0;cursor:pointer;font:800 11.5px 'Inter',sans-serif;}
.student-status-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(23,48,95,.1);}
.student-registration-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:flex-start;}
.db-action-menu{position:relative;}
.db-action-menu-btn{width:38px;height:38px;padding:0;justify-content:center;border-radius:10px;font-size:18px;line-height:1;}
.db-action-menu-list{
  position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:#fff;border:1px solid var(--border);
  border-radius:14px;box-shadow:0 18px 38px rgba(23,48,95,.12);padding:8px;display:none;z-index:90;
}
.db-action-menu.open .db-action-menu-list{display:flex;flex-direction:column;gap:6px;}
.db-action-item{
  width:100%;display:flex;align-items:center;gap:8px;padding:10px 12px;border:none;background:#fff;color:var(--text);
  border-radius:10px;font:600 12.5px 'Inter',sans-serif;cursor:pointer;text-align:left;
}
.db-action-item:hover{background:#f8fbff;color:var(--navy);}
.teacher-pane-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center;}
.teacher-pane-quick-card{background:var(--surface2);}
.teacher-pane-header-main{flex:1;min-width:0;}
.teacher-pane-header-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0;}
.meet-mini-link{
  width:38px;height:38px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  color:#1b6fd8;background:#fff;border:1px solid var(--border);box-shadow:0 8px 18px rgba(23,48,95,.08);
  transition:transform .18s ease, background .18s ease, color .18s ease;
}
.meet-mini-link svg{width:21px;height:21px;}
.meet-mini-link:hover{background:#1b6fd8;color:#fff;transform:translateY(-1px);}
.teacher-pane-link{
  display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--border);border-radius:12px;background:#fff;
  color:var(--navy);font-size:12.5px;font-weight:600;text-decoration:none;
}
.teacher-pane-link:hover{background:#f8fbff;}
.teacher-pane-status{
  display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2);
  color:var(--text-muted);font-size:12px;font-weight:700;
}
.teacher-pane-status.ok{color:var(--green);border-color:rgba(15,106,82,.16);background:rgba(15,106,82,.08);}
.teacher-pane-status.miss{color:var(--red);border-color:rgba(198,31,63,.16);background:rgba(198,31,63,.08);}
.teacher-pane-status.inactive{color:var(--text-muted);border-color:rgba(37,52,89,.14);background:rgba(37,52,89,.06);}
.assignment-integrity-banner{
  display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;padding:12px 15px;border:1px solid var(--border);
  border-radius:12px;background:#f7f9fc;color:var(--text);
}
.assignment-integrity-banner strong{font-size:13px;}
.assignment-integrity-banner span{font-size:12px;line-height:1.45;color:var(--text-muted);}
.assignment-integrity-banner.checking{border-color:rgba(36,63,140,.18);background:#f4f7ff;}
.assignment-integrity-banner.ok{border-color:rgba(15,106,82,.18);background:rgba(15,106,82,.06);}
.assignment-integrity-banner.ok strong{color:var(--green);}
.assignment-integrity-banner.alert{border-color:rgba(198,31,63,.22);background:rgba(198,31,63,.06);}
.assignment-integrity-banner.alert strong{color:var(--red);}
.teacher-pane-mapping-layout{display:flex;flex-direction:column;gap:14px;}
.teacher-pane-composer{
  padding:14px;border:1px solid var(--border);border-radius:18px;background:#fff;
  box-shadow:0 8px 22px rgba(23,48,95,.04);
}
.teacher-pane-composer-grid{
  display:grid;grid-template-columns:minmax(150px,.9fr) minmax(140px,.75fr) 120px 130px 44px 132px;
  gap:8px;align-items:center;
}
.assign-primary-field{min-height:40px;font-size:13px;padding:0 11px;}
.assign-status-field{min-height:40px;font-size:13px;padding:0 10px;}
.teacher-pane-composer-title{font-size:12px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;}
.teacher-pane-composer-note{font-size:11.5px;color:var(--text-muted);font-weight:600;}
.teacher-pane-composer-actions{display:none;}
.teacher-pane-mapping-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.teacher-pane-mapping-summary-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.teacher-pane-mapping-count{font-size:11.5px;color:var(--text-muted);font-weight:700;letter-spacing:.08em;text-transform:uppercase;}
.teacher-pane-filter{
  appearance:none;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);
  padding:7px 30px 7px 10px;font:600 12px 'Inter',sans-serif;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--navy) 50%),linear-gradient(135deg,var(--navy) 50%,transparent 50%);
  background-position:calc(100% - 16px) calc(50% - 1px),calc(100% - 11px) calc(50% - 1px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}
.teacher-pane-mapping-head{
  display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr) 120px 110px 120px;
  gap:12px;padding:4px 16px 8px;border-bottom:1px solid rgba(37,52,89,.08);
  font-size:11px;color:var(--text-muted);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
}
.teacher-pane-mapping-list{display:flex;flex-direction:column;gap:8px;}
.teacher-pane-mapping-item{
  display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr) 120px 110px 120px;
  gap:12px;align-items:center;padding:9px 16px;border:1px solid var(--border);border-radius:8px;background:#fff;
}
.teacher-pane-mapping-head > div:last-child{justify-self:end;}
.teacher-pane-mapping-actions{justify-self:end;}
.teacher-pane-mapping-main,.teacher-pane-mapping-subject,.teacher-pane-mapping-tab,.teacher-pane-mapping-rate{min-width:0;}
.teacher-pane-mapping-student,.teacher-pane-mapping-subject-text,.teacher-pane-mapping-tab-text,.teacher-pane-mapping-rate-text{
  font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.teacher-pane-mapping-tab-text{font-weight:600;color:var(--navy-light);}
.teacher-pane-mapping-rate-text{font-weight:600;color:var(--green);}
.teacher-pane-mapping-badge{
  display:inline-flex;align-items:center;padding:2px 7px;border-radius:7px;
  background:var(--surface2);border:1px solid var(--border);font-size:10.5px;font-weight:700;color:var(--text-muted);
}
.teacher-pane-mapping-badge.active{color:var(--green);border-color:rgba(15,106,82,.16);background:rgba(15,106,82,.08);}
.teacher-pane-mapping-badge.inactive{color:var(--text-muted);border-color:rgba(37,52,89,.14);background:rgba(37,52,89,.06);}
.teacher-pane-mapping-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.teacher-pane-mapping-item.editing{background:#fbfdff;border-color:rgba(36,63,140,.24);}
.mapping-inline-input{min-height:36px;font-size:12px;padding:6px 9px;}
.teacher-pane-mapping-empty{
  padding:16px 14px;border:1px dashed var(--border);border-radius:8px;background:var(--surface2);
  color:var(--text-muted);font-size:12.5px;
}
.student-pane-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center;}
.student-parent-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.student-parent-card{padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:#fff;}
.student-parent-title{font:700 12px 'Inter',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--navy-light);margin-bottom:10px;}
.student-learning-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.student-learning-row:last-child{border-bottom:none;padding-bottom:0;}
.student-learning-subject{font-weight:700;color:var(--text);}
.student-learning-meta{font-size:12px;color:var(--text-muted);margin-top:4px;}
.student-learning-empty{font-size:12.5px;color:var(--text-muted);padding:10px 0;}
.mapping-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px;align-items:center;}
.mapping-status{
  margin-right:auto;font-size:11.5px;font-weight:600;color:var(--text-muted);padding:8px 10px;border-radius:10px;background:var(--surface2);border:1px solid var(--border);
}
.mapping-status.pending{color:#8c6d12;border-color:rgba(201,163,42,.18);background:rgba(201,163,42,.08);}
.mapping-status.saved{color:var(--green);border-color:rgba(15,106,82,.16);background:rgba(15,106,82,.08);}
.assign-row.teacher-map-row{grid-template-columns:minmax(0,1.2fr) minmax(0,.95fr) minmax(0,.95fr) 130px 90px auto;}
.assign-remove-btn{
  width:38px;height:38px;border-radius:12px;border:1px solid rgba(198,31,63,.16);background:rgba(198,31,63,.08);color:var(--red);
  display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px;font-weight:700;
}
.assign-remove-btn:hover{background:rgba(198,31,63,.14);}
.link-cell{display:flex;align-items:center;gap:8px;max-width:100%;}
.link-cell a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--teal);text-decoration:none;}
.copy-link-btn{
  opacity:0;pointer-events:none;transition:opacity .16s ease;flex-shrink:0;width:28px;height:28px;border-radius:8px;border:1px solid var(--border);
  background:#fff;color:var(--navy);display:flex;align-items:center;justify-content:center;font-size:13px;cursor:pointer;
}
.link-cell:hover .copy-link-btn,.portal-pop:hover .copy-link-btn,.portal-pop[open] .copy-link-btn{opacity:1;pointer-events:auto;}
.portal-pop{position:relative;}
.portal-pop summary{
  list-style:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;border:1px solid var(--border);
  background:#fff;color:var(--navy);cursor:pointer;font-size:16px;
}
.portal-pop summary::-webkit-details-marker{display:none;}
.portal-pop-card{
  position:absolute;right:0;top:42px;z-index:20;width:280px;padding:14px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.99);
  box-shadow:0 22px 42px rgba(23,48,95,.14);display:flex;flex-direction:column;gap:12px;
}
.portal-pop-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.portal-pop-title{font:700 13px 'Inter',sans-serif;color:var(--navy);letter-spacing:.08em;text-transform:uppercase;}
.portal-pop-chip{display:inline-flex;align-items:center;justify-content:center;padding:5px 9px;border-radius:999px;background:rgba(40,77,154,.08);color:var(--navy);font:700 10px 'Inter',sans-serif;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.portal-pop-secret{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:14px;border:1px solid var(--border);background:linear-gradient(180deg,#fbfdff 0%,#f4f8ff 100%);}
.portal-secret-text{font:700 14px 'Inter',sans-serif;color:var(--text);letter-spacing:.04em;word-break:break-all;}
.portal-pop-toggle{padding:7px 10px;border-radius:10px;}
.portal-pop-title{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);font-weight:800;}
.portal-pop-chip{padding:4px 8px;border-radius:999px;background:rgba(32,61,138,.08);color:var(--navy);font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;}
.portal-pop-row{display:flex;flex-direction:column;gap:3px;}
.portal-pop-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-weight:700;}
.portal-pop-value{font-size:13px;color:var(--text);word-break:break-word;}
.portal-pop-secret{
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid var(--border);background:var(--surface2);
}
.portal-secret-text{font-size:15px;font-weight:700;color:var(--navy);letter-spacing:.06em;}
.portal-pop-note{font-size:11px;color:var(--text-muted);line-height:1.45;}
.row-icon-actions{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;}
.row-icon-btn{
  width:34px;height:34px;border-radius:10px;border:1px solid var(--border);background:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:15px;color:var(--navy);
}
.row-icon-btn:hover{background:#f8fbff;}
.row-icon-btn.delete{color:var(--red);border-color:rgba(198,31,63,.16);}
.app-edit-btn{
  width:32px;
  height:32px;
  border-radius:50%;
  background:#141414;
  border:none;
  font-weight:600;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 0 16px rgba(0,0,0,.164);
  cursor:pointer;
  transition-duration:.3s;
  overflow:hidden;
  position:relative;
  text-decoration:none !important;
  flex-shrink:0;
}
.app-edit-icon{
  width:14px;
  transition-duration:.3s;
}
.app-edit-icon path{
  fill:#fff;
}
.app-edit-btn:hover{
  background:var(--navy);
}
.app-edit-btn:hover .app-edit-icon{
  width:16px;
  transform:rotate(360deg);
}
.pane-action-row{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
  margin-top:12px;
}
.inline-edit{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text);font:inherit;}
body.sidebar-collapsed{--sidebar-w:78px;}
body.sidebar-collapsed .sidebar-logo{justify-content:center;padding:18px 12px;}
body.sidebar-collapsed .sidebar-brand,
body.sidebar-collapsed .nav-section,
body.sidebar-collapsed .nav-label,
body.sidebar-collapsed .ai-btn .ai-label{display:none;}
body.sidebar-collapsed .sidebar-nav{padding:12px 8px;}
body.sidebar-collapsed .nav-item{justify-content:center;padding:10px;gap:0;}
body.sidebar-collapsed .nav-badge{position:absolute;top:6px;right:6px;margin-left:0;}
body.sidebar-collapsed .sidebar-bottom{padding:12px 8px;}
body.sidebar-collapsed .ai-btn{justify-content:center;padding:10px;}
@media (max-width:1280px){
  body:not(.teacher-portal-mode){--sidebar-w:78px;}
  body:not(.teacher-portal-mode) .sidebar-logo{justify-content:center;padding:18px 12px;}
  body:not(.teacher-portal-mode) .sidebar-brand,
  body:not(.teacher-portal-mode) .nav-section,
  body:not(.teacher-portal-mode) .nav-label,
  body:not(.teacher-portal-mode) .ai-btn .ai-label{display:none;}
  body:not(.teacher-portal-mode) .sidebar-nav{padding:12px 8px;}
  body:not(.teacher-portal-mode) .nav-item{justify-content:center;padding:10px;gap:0;}
  body:not(.teacher-portal-mode) .nav-badge{position:absolute;top:6px;right:6px;margin-left:0;}
  body:not(.teacher-portal-mode) .sidebar-bottom{padding:12px 8px;}
  body:not(.teacher-portal-mode) .ai-btn{justify-content:center;padding:10px;}
  .topbar{padding-inline:14px;}
  .topbar-left{min-width:0;overflow-x:auto;scrollbar-width:thin;}
  .topbar-title{flex:0 0 auto;}
}
/* SYNC STATUS PILL */
.sync-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:600;cursor:pointer;}
.sync-pill.connected{background:rgba(15,106,82,.08);color:var(--green);border:1px solid rgba(15,106,82,.14);}
.sync-pill.disconnected{background:rgba(198,31,63,.06);color:var(--red);border:1px solid rgba(198,31,63,.14);}
.sync-pill.syncing{background:rgba(200,164,58,.10);color:#8c6d12;border:1px solid rgba(200,164,58,.18);}
.sync-dot2{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.sync-dot2.c{background:var(--green);animation:pulse 2s infinite;}
.sync-dot2.d{background:var(--red);}
.sync-dot2.s{background:var(--gold);animation:pulse .6s infinite;}
/* WIZARD */
.wizard-steps{display:flex;gap:5px;margin-bottom:20px;}
.wstep{flex:1;height:3px;border-radius:2px;background:var(--border);}
.wstep.done{background:var(--green);}.wstep.cur{background:var(--gold);}
.wiz-section{display:none;}.wiz-section.active{display:block;}
.wiz-title{font-family:'Playfair Display',serif;font-size:16px;font-weight:600;margin-bottom:6px;}
.wiz-desc{font-size:13px;color:var(--text-muted);line-height:1.6;margin-bottom:14px;}
.step-list{list-style:none;display:flex;flex-direction:column;gap:10px;margin-bottom:14px;}
.step-list li{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--text-muted);}
.step-num{width:22px;height:22px;border-radius:50%;background:rgba(201,163,42,.15);color:var(--gold-light);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.copy-row{display:flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:7px 10px;font-size:12px;color:var(--teal);font-family:monospace;margin-bottom:12px;word-break:break-all;}
.copy-row button{margin-left:auto;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-size:11px;color:var(--text-muted);cursor:pointer;font-family:'Inter',sans-serif;}
.alert-box{border-radius:8px;padding:10px 13px;font-size:12.5px;line-height:1.5;margin-bottom:10px;}
.ab-info{background:rgba(32,61,138,.07);border:1px solid rgba(32,61,138,.14);color:var(--navy);}
.ab-warn{background:rgba(201,163,42,.08);border:1px solid rgba(201,163,42,.2);color:var(--gold-light);}
.ab-ok{background:rgba(15,106,82,.08);border:1px solid rgba(15,106,82,.14);color:var(--green);}
.ab-err{background:rgba(198,31,63,.08);border:1px solid rgba(198,31,63,.16);color:var(--red);}
/* TOAST */
.toast-container{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:7px;pointer-events:none;}
.toast{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 16px;font-size:13px;display:flex;align-items:center;gap:8px;min-width:250px;pointer-events:all;animation:fadeIn .2s ease;}
.toast.ok{border-color:rgba(15,106,82,.18);color:var(--green);}
.toast.err{border-color:rgba(198,31,63,.2);color:var(--red);}
.toast.inf{border-color:rgba(46,173,168,.3);color:var(--teal);}
/* GOOGLE AUTH BTN */
.g-btn{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:10px;background:#fff;color:var(--text);border:1px solid var(--border);cursor:pointer;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;width:100%;justify-content:center;transition:all .15s;box-shadow:0 8px 22px rgba(23,48,95,.05);}
.g-btn:hover{background:#f8fbff;border-color:rgba(32,61,138,.2);box-shadow:0 12px 26px rgba(23,48,95,.08);}
.g-logo{width:18px;height:18px;flex-shrink:0;}
.loader{display:inline-block;width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;}
@keyframes spin{to{transform:rotate(360deg)}}


/* ── WHATSAPP MESSAGE HUB ── */
.wa-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:700;display:none;align-items:center;justify-content:center;}
.wa-modal-overlay.open{display:flex;}
.wa-hub{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:560px;max-width:96vw;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;}
.wa-hub-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.wa-hub-title{font-family:'Playfair Display',serif;font-size:17px;font-weight:600;}
.wa-lead-info{display:flex;align-items:center;gap:10px;margin-bottom:0;}
.wa-tabs{display:flex;gap:3px;padding:12px 16px 0;border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto;}
.wa-tab{
  padding:7px 14px;border-radius:8px 8px 0 0;font-size:12.5px;font-weight:600;
  cursor:pointer;border:1px solid transparent;border-bottom:none;
  background:transparent;color:var(--text-muted);font-family:'Inter',sans-serif;
  transition:all .15s;white-space:nowrap;position:relative;bottom:-1px;
}
.wa-tab.active{background:var(--surface2);color:var(--text);border-color:var(--border);}
.wa-tab .wa-sent-dot{width:6px;height:6px;border-radius:50%;background:var(--green);display:inline-block;margin-left:5px;vertical-align:middle;}
.wa-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:12px;}
.wa-msg-area{
  background:var(--surface2);border:1px solid var(--border);border-radius:10px;
  padding:12px 14px;font-size:13px;line-height:1.65;color:var(--text);
  min-height:160px;resize:vertical;width:100%;font-family:'Inter',sans-serif;
  outline:none;transition:border-color .15s;
}
.wa-msg-area:focus{border-color:var(--teal);}
.wa-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.wa-send-web{background:var(--green);color:#fff;border:none;border-radius:10px;padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:'Inter',sans-serif;display:flex;align-items:center;gap:7px;transition:all .15s;}
.wa-send-web:hover{background:#0d5b47;transform:translateY(-1px);}
.wa-send-app{background:rgba(15,106,82,.08);color:var(--green);border:1px solid rgba(15,106,82,.18);border-radius:10px;padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:'Inter',sans-serif;display:flex;align-items:center;gap:7px;transition:all .15s;}
.wa-send-app:hover{background:rgba(15,106,82,.14);}
.wa-copy{background:var(--surface2);color:var(--text-muted);border:1px solid var(--border);border-radius:9px;padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;transition:all .15s;}
.wa-copy:hover{border-color:var(--gold);color:var(--gold);}
.wa-copy.copied{background:rgba(15,106,82,.08);color:var(--green);border-color:rgba(15,106,82,.18);}
.wa-reset{background:none;border:none;color:var(--text-dim);font-size:12px;cursor:pointer;font-family:'Inter',sans-serif;margin-left:auto;padding:4px 8px;border-radius:5px;transition:all .15s;}
.wa-reset:hover{color:var(--text-muted);}
/* History tab */
.wa-history-empty{text-align:center;padding:30px;color:var(--text-muted);font-size:13px;}
.wa-history-item{background:var(--surface2);border:1px solid var(--border);border-radius:9px;padding:11px 14px;margin-bottom:8px;}
.wa-hist-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px;}
.wa-hist-type{font-size:12px;font-weight:600;color:var(--teal);}
.wa-hist-time{font-size:11px;color:var(--text-dim);}
.wa-hist-preview{font-size:12px;color:var(--text-muted);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
/* Quick send popup on cards */
.wa-quick-popup{
  position:absolute;background:var(--surface);border:1px solid var(--border);border-radius:10px;
  padding:8px;z-index:200;min-width:180px;box-shadow:0 8px 24px rgba(0,0,0,.4);
  display:none;flex-direction:column;gap:3px;
}
.wa-quick-popup.open{display:flex;}
.wa-qitem{padding:8px 12px;border-radius:7px;font-size:12.5px;cursor:pointer;color:var(--text-muted);transition:all .12s;display:flex;align-items:center;gap:8px;}
.wa-qitem:hover{background:var(--surface2);color:var(--text);}
/* Sent indicator on lead row */
.wa-sent-count{background:rgba(15,106,82,.08);color:var(--green);border:1px solid rgba(15,106,82,.18);border-radius:20px;font-size:10px;font-weight:700;padding:2px 7px;}
/* History tab in drawer */
.msg-hist-item{background:var(--surface2);border-left:3px solid var(--teal);border-radius:0 8px 8px 0;padding:9px 12px;margin-bottom:7px;}
.msg-hist-label{font-size:11.5px;font-weight:600;color:var(--teal);margin-bottom:3px;}
.msg-hist-time{font-size:10.5px;color:var(--text-dim);margin-bottom:4px;}
.msg-hist-text{font-size:12px;color:var(--text-muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}


/* ══ FINANCE DASHBOARD ══════════════════════════════════════ */
.fin-tabs{display:flex;gap:3px;background:var(--surface2);border-radius:9px;padding:3px;width:fit-content;max-width:100%;margin-bottom:20px;border:1px solid var(--border);flex-wrap:wrap;}
.fin-tab{padding:7px 16px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;border:none;background:none;color:var(--text-muted);font-family:'Inter',sans-serif;transition:all .15s;}
.fin-tab.active{background:var(--surface);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.3);}
.entry-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;}
.entry-filters .form-select,.entry-filters .form-input{width:100%;}
.entry-meta{font-size:11px;color:var(--text-muted);}
.assign-builder{display:flex;flex-direction:column;gap:8px;}
.assign-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;gap:8px;align-items:center;}
.assign-row .btn{justify-content:center;}
@media (max-width:900px){
  .entry-filters{grid-template-columns:1fr 1fr;}
}
@media (max-width:640px){
  .entry-filters{grid-template-columns:1fr;}
  .assign-row{grid-template-columns:1fr;}
  .assign-row.teacher-map-row{grid-template-columns:1fr;}
  .teacher-pane-composer-grid{grid-template-columns:1fr;}
  .teacher-pane-mapping-head{display:none;}
  .teacher-pane-mapping-item{grid-template-columns:1fr;gap:8px;}
  .teacher-pane-mapping-actions{width:100%;justify-content:flex-end;}
  .mapping-actions{justify-content:stretch;}
  .mapping-status{margin-right:0;width:100%;}
}

/* P&L cards */
.pnl-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px;}
.pnl-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:16px 18px;position:relative;overflow:hidden;box-shadow:0 12px 28px rgba(23,48,95,.05);}
.pnl-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius) var(--radius) 0 0;}
.pnl-gold::before{background:var(--gold);}
.pnl-red::before{background:var(--red);}
.pnl-green::before{background:var(--green);}
.pnl-teal::before{background:var(--teal);}
.pnl-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px;}
.pnl-val{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;margin-bottom:2px;}
.pnl-sub{font-size:11px;color:var(--text-dim);}

/* Section headers */
.fin-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:8px;}
.fin-section-title{font-family:'Playfair Display',serif;font-size:16px;font-weight:600;}
.fin-month-nav{display:flex;align-items:center;gap:8px;}
.fin-month-nav button{background:#fff;border:1px solid var(--border);border-radius:10px;padding:5px 10px;color:var(--text-muted);cursor:pointer;font-size:14px;transition:all .15s;}
.fin-month-nav button:hover{color:var(--navy);border-color:var(--navy);background:#f8fbff;}
.fin-month-label{font-size:13px;font-weight:600;min-width:100px;text-align:center;}

/* Student package cards */
.pkg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;}
.pkg-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:16px 18px;transition:all .2s;box-shadow:0 12px 28px rgba(23,48,95,.05);}
.pkg-card:hover{border-color:rgba(32,61,138,.18);box-shadow:0 18px 36px rgba(23,48,95,.09);}
.pkg-card.low-sessions{border-color:rgba(198,31,63,.24);background:rgba(198,31,63,.03);}
.pkg-card.low-sessions .pkg-remaining{color:var(--red);}
.pkg-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.pkg-avatar{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0;font-family:'Playfair Display',serif;}
.pkg-name{font-weight:600;font-size:14px;}
.pkg-subject{font-size:12px;color:var(--text-muted);}
.pkg-progress{margin-bottom:10px;}
.pkg-prog-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
.pkg-prog-label{font-size:12px;color:var(--text-muted);}
.pkg-remaining{font-size:18px;font-weight:700;font-family:'Playfair Display',serif;color:var(--green);}
.pkg-bar{height:6px;background:var(--surface2);border-radius:3px;overflow:hidden;}
.pkg-bar-fill{height:6px;border-radius:3px;transition:width .4s;}
.pkg-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);margin-bottom:10px;}
.pkg-footer{display:flex;gap:6px;}
.low-badge{display:inline-flex;align-items:center;gap:4px;background:rgba(198,31,63,.08);color:var(--red);border:1px solid rgba(198,31,63,.16);border-radius:20px;font-size:11px;font-weight:600;padding:3px 9px;margin-bottom:8px;}
.pkg-detail-list{display:flex;flex-direction:column;gap:6px;margin:10px 0 12px;}
.pkg-detail-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--text-muted);}
.pkg-detail-row strong{color:var(--text);font-weight:600;}
.finance-cta-btn{min-width:156px;justify-content:center;font-size:13px;font-weight:700;box-shadow:none;border-radius:12px;}
.student-finance-shell{display:flex;flex-direction:column;gap:18px;}
.student-finance-top{display:grid;grid-template-columns:minmax(240px,320px) 1fr;gap:18px;align-items:start;}
.student-finance-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 14px 30px rgba(23,48,95,.05);}
.student-finance-profile{display:flex;align-items:center;gap:14px;margin-bottom:14px;}
.student-finance-avatar{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:#102247;}
.student-finance-name{font-family:'Playfair Display',serif;font-size:26px;color:var(--text);line-height:1.1;}
.student-finance-sub{font-size:12px;color:var(--text-muted);margin-top:4px;}
.student-finance-meta{display:grid;gap:8px;}
.student-finance-meta .info-row{margin:0;}
.student-finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.student-finance-kpi{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:16px 18px;}
.student-finance-kpi-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;}
.student-finance-kpi-value{font-family:'Playfair Display',serif;font-size:28px;color:var(--text);}
.student-finance-kpi-sub{font-size:12px;color:var(--text-muted);margin-top:4px;}
.student-finance-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;}
.student-finance-section-title{font-size:16px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--navy);}
.student-finance-table{width:100%;border-collapse:collapse;}
.student-finance-table th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);text-align:left;padding:12px 10px;border-bottom:1px solid var(--border);}
.student-finance-table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:middle;}
.student-finance-table tr:last-child td{border-bottom:none;}
.student-finance-track{font-weight:700;color:var(--text);}
.student-finance-track-sub{font-size:12px;color:var(--text-muted);margin-top:3px;}
.student-finance-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid var(--border);background:#fff;}
.student-finance-chip.verified{background:rgba(15,118,110,.08);border-color:rgba(15,118,110,.16);color:#0f766e;}
.student-finance-chip.unverified{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.24);color:#b45309;}
.student-finance-chip.low{background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.24);color:#b45309;}
.student-finance-chip.overused,.student-finance-chip.error{background:#fff0f2;border-color:#f2a5b1;color:#b4233d;}
.student-finance-chip.closed{background:rgba(15,23,42,.05);border-color:rgba(15,23,42,.12);color:#475569;}
.student-finance-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;}
.student-finance-empty{padding:28px 18px;border:1px dashed var(--border);border-radius:16px;text-align:center;color:var(--text-muted);}
.student-finance-row-highlight{background:rgba(32,61,138,.04);}
.payment-voided-row{opacity:.68;background:rgba(15,23,42,.025);}
.student-finance-verify-btn{padding:8px 12px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--navy);font-size:12px;font-weight:700;cursor:pointer;}
.student-finance-verify-btn:hover{border-color:rgba(32,61,138,.22);background:rgba(32,61,138,.04);}
.payment-status-pop{position:relative;display:inline-block;}
.payment-status-pop summary{list-style:none;cursor:pointer;}
.payment-status-pop summary::-webkit-details-marker{display:none;}
.payment-note-pop{position:relative;display:inline-block;}
.payment-note-pop summary{list-style:none;cursor:pointer;}
.payment-note-pop summary::-webkit-details-marker{display:none;}
.payment-note-btn{
  width:32px;height:32px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--navy);
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 18px rgba(23,48,95,.06);
}
.payment-note-btn:hover{background:#f8fbff;}
.payment-note-btn svg{width:15px;height:15px;display:block;}
.payment-status-chip{cursor:pointer;}
.payment-status-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;background:#fff;border:1px solid var(--border);border-radius:16px;padding:10px;box-shadow:0 18px 36px rgba(23,48,95,.14);display:flex;flex-direction:column;gap:8px;z-index:20;}
.payment-status-title{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);}
.payment-status-option{border:1px solid var(--border);background:#fff;color:var(--navy);border-radius:12px;padding:10px 12px;text-align:left;font-weight:700;cursor:pointer;}
.payment-status-option:hover{border-color:rgba(32,61,138,.22);background:rgba(32,61,138,.04);}
.payment-status-option.active{background:rgba(32,61,138,.08);border-color:rgba(32,61,138,.18);}
.payment-note-card{
  position:absolute;right:0;bottom:calc(100% + 8px);width:260px;max-width:min(260px,72vw);
  padding:12px 14px;border:1px solid var(--border);border-radius:16px;background:#fff;
  box-shadow:0 18px 36px rgba(23,48,95,.14);z-index:20;
}
.payment-note-title{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px;}
.payment-note-body{font-size:12.5px;line-height:1.5;color:var(--text);white-space:normal;word-break:break-word;}
.master-payments-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.master-payments-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.master-payments-table td .student-finance-chip{font-size:11px;padding:5px 10px;}
.master-finance-shell{display:flex;flex-direction:column;gap:12px;}
.master-finance-students{
  position:relative;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  background:rgba(40,77,154,.05);
  box-sizing:border-box;
  box-shadow:inset 0 0 0 1px rgba(40,77,154,.08);
  padding:8px;
  width:100%;
  border-radius:12px;
}
.master-finance-student-tab{
  flex:0 0 auto;
  display:flex;
  cursor:pointer;
  align-items:center;
  justify-content:center;
  border-radius:10px;
  border:none;
  padding:8px 14px;
  color:rgba(51,65,85,1);
  background:transparent;
  font-size:13px;
  font-weight:700;
  transition:all .15s ease-in-out;
}
.master-finance-student-tab:hover{background:rgba(255,255,255,.7);color:var(--navy);}
.master-finance-student-tab.active{
  background:#fff;
  color:var(--navy);
  box-shadow:none;
}
.master-finance-subtabs{display:flex;gap:8px;flex-wrap:wrap;}
.master-finance-subtab{border:1px solid var(--border);background:#fff;color:var(--text-muted);border-radius:10px;padding:6px 12px;font-weight:700;font-size:12px;cursor:pointer;}
.master-finance-subtab.active{background:#eef3fb;color:var(--navy);border-color:rgba(32,61,138,.16);}
.master-finance-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;box-shadow:none;}
.master-finance-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;padding-bottom:10px;border-bottom:1px solid rgba(23,48,95,.08);}
.master-finance-header-main{display:flex;align-items:center;gap:14px;min-width:0;}
.master-finance-title{font-size:20px;font-weight:800;line-height:1.1;color:var(--text);}
.master-finance-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-muted);margin-left:auto;}
.master-finance-meta span strong{color:var(--text);font-weight:700;}
.master-finance-section-label{display:none;}
.master-finance-panel .student-finance-table{table-layout:auto;}
.master-finance-panel .student-finance-table th{padding:10px 8px;font-size:10px;letter-spacing:.07em;white-space:nowrap;}
.master-finance-panel .student-finance-table th.payment-term-heading{white-space:normal;line-height:1.2;}
.master-finance-panel .student-finance-table td{padding:10px 8px;font-size:13px;line-height:1.28;}
.master-finance-panel .student-finance-table td.col-flow,
.master-finance-panel .student-finance-table td.col-cost,
.master-finance-panel .student-finance-table td.col-profit{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-finance-panel .student-finance-track{font-size:13px;}
.master-finance-panel .student-finance-track-sub{font-size:11px;margin-top:2px;}
.master-finance-panel .student-finance-chip{padding:5px 10px;font-size:11px;}
.master-finance-panel .student-finance-actions{gap:6px;justify-content:flex-start;}
.master-finance-panel .app-edit-btn,
.master-finance-panel .student-delete-btn{transform:scale(.82);transform-origin:center;}
.master-finance-panel .wa-action-btn{width:24px;height:24px;}
.master-finance-panel .wa-action-sign svg{width:14px;}
.master-finance-panel .payment-status-menu{min-width:160px;padding:8px;}
.master-finance-panel .payment-status-option{padding:8px 10px;font-size:12px;}
.master-finance-panel .payment-note-btn{width:26px;height:26px;border-radius:9px;}
.master-finance-panel .payment-note-btn svg{width:13px;height:13px;}
.master-finance-panel .payment-note-card{width:220px;padding:10px 12px;}
.master-finance-panel .student-finance-table th.col-flow,
.master-finance-panel .student-finance-table td.col-flow{background:rgba(32,61,138,.03);}
.master-finance-panel .student-finance-table th.col-cost,
.master-finance-panel .student-finance-table td.col-cost{background:rgba(46,173,168,.06);}
.master-finance-panel .student-finance-table th.col-profit,
.master-finance-panel .student-finance-table td.col-profit{background:rgba(61,186,126,.08);}
.master-finance-panel .student-finance-table td.col-flow{color:#224073;font-weight:700;}
.master-finance-panel .student-finance-table td.col-cost{color:#0f6a65;font-weight:700;}
.master-finance-panel .student-finance-table td.col-profit{color:#177a4d;font-weight:800;}
.revenue-home-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;}
.revenue-home-panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 12px 28px rgba(23,48,95,.05);}
.revenue-home-panel-title{font-family:'Playfair Display',serif;font-size:18px;color:var(--text);margin-bottom:6px;}
.revenue-home-panel-sub{font-size:12px;color:var(--text-muted);margin-bottom:14px;}
.revenue-home-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.revenue-home-action{border:1px solid var(--border);border-radius:16px;background:#fff;padding:16px;text-align:left;cursor:pointer;transition:.18s ease;}
.revenue-home-action:hover{border-color:rgba(32,61,138,.22);transform:translateY(-1px);box-shadow:0 10px 24px rgba(23,48,95,.08);}
.revenue-home-action-title{font-weight:800;color:var(--navy);margin-bottom:4px;}
.revenue-home-action-sub{font-size:12px;color:var(--text-muted);line-height:1.5;}
.revenue-home-alert-list{display:flex;flex-direction:column;gap:10px;}
.revenue-home-alert-item{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;background:#fff;border:1px solid var(--border);}
.revenue-home-alert-item strong{color:var(--text);}
@media (max-width: 980px){
  .revenue-home-grid{grid-template-columns:1fr;}
  .master-finance-header{align-items:flex-start;}
  .master-finance-header-main{width:100%;}
  .master-finance-meta{margin-left:0;width:100%;}
}
@media (max-width: 640px){
  .master-finance-student-tab{padding:7px 12px;font-size:13px;}
  .master-finance-subtab{padding:6px 11px;font-size:12px;}
  .master-finance-panel{padding:12px;}
  .master-finance-header{margin-bottom:10px;}
  .master-finance-meta{gap:10px;}
  .master-finance-panel .student-finance-table th,
  .master-finance-panel .student-finance-table td{padding:8px 6px;}
}
@media (max-width: 980px){
  .student-finance-top{grid-template-columns:1fr;}
  .student-finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width: 640px){
  .student-finance-kpis{grid-template-columns:1fr;}
}
.fin-master-wrap{background:var(--surface);border:1px solid var(--border);border-radius:18px;overflow:hidden;margin-bottom:16px;box-shadow:0 12px 28px rgba(23,48,95,.05);}
.fin-master-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.fin-master-sub{font-size:12px;color:var(--text-muted);line-height:1.5;max-width:760px;}
.fin-master-table{width:100%;border-collapse:collapse;}
.fin-master-table th,.fin-master-table td{padding:12px 16px;font-size:12.5px;border-bottom:1px solid #edf2f8;vertical-align:top;}
.fin-master-table th{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;background:#f7fafe;}
.fin-master-table tr:last-child td{border-bottom:none;}
.fin-master-table td strong{display:block;font-size:13px;}
.fin-master-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid var(--border);background:#f7fafe;color:var(--text-muted);}
.fin-master-chip.low{border-color:rgba(198,31,63,.18);background:rgba(198,31,63,.08);color:var(--red);}
.fin-master-chip.overused,.fin-master-chip.error{border-color:rgba(198,31,63,.28);background:rgba(198,31,63,.12);color:var(--red);}
.fin-master-chip.ok{border-color:rgba(15,106,82,.18);background:rgba(15,106,82,.08);color:var(--green);}
.fin-mini-note{font-size:11px;color:var(--text-dim);margin-top:3px;line-height:1.4;}
.history-list{display:flex;flex-direction:column;gap:10px;}
.history-card{background:#f7fafe;border:1px solid var(--border);border-radius:14px;padding:12px 14px;}
.history-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap;}
.history-card-title{font-weight:600;font-size:13px;}
.history-card-sub{font-size:11.5px;color:var(--text-muted);line-height:1.5;}
.history-card-amt{font-family:'Playfair Display',serif;font-size:18px;color:var(--navy);font-weight:700;}
.sdb-link-btn{background:none;border:none;color:var(--text);font:inherit;font-weight:600;cursor:pointer;padding:0;text-align:left;}
.sdb-link-btn:hover{color:var(--teal);text-decoration:underline;}
.student-delete-cell{width:56px;text-align:right;}
.student-delete-head{width:56px;}
.student-action-head{width:156px;}
.student-action-cell{width:156px;text-align:right;}
.student-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;}
.studentdb-contact-col{min-width:190px;}
.studentdb-contact-cell{display:flex;flex-direction:column;gap:4px;line-height:1.2;}
.studentdb-contact-phone{color:var(--green);white-space:nowrap;font-weight:650;}
.studentdb-contact-email{font-size:12px;color:var(--text-muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.studentdb-contact-email a{color:var(--text-muted);text-decoration:none;}
.studentdb-contact-email a:hover{color:var(--teal);text-decoration:underline;}
.studentdb-contact-edit{display:grid;gap:6px;}
.phone-hover-wrap{
  display:inline-flex;
  align-items:center;
  gap:6px;
  white-space:nowrap;
  max-width:100%;
}
.phone-hover-text{
  color:inherit;
  white-space:nowrap;
}
.wa-action-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  border:none;
  border-radius:50%;
  cursor:pointer;
  position:relative;
  transition:all .3s ease;
  box-shadow:0 4px 10px rgba(0,0,0,.2);
  background-color:#00d757;
  overflow:visible;
  flex-shrink:0;
  text-decoration:none;
  opacity:0;
  pointer-events:none;
  transform:scale(.92);
}
.phone-hover-wrap:hover .wa-action-btn,
.phone-hover-wrap:focus-within .wa-action-btn{
  opacity:1;
  pointer-events:auto;
  transform:scale(1);
}
.wa-action-btn.always-show{
  opacity:1;
  pointer-events:auto;
  transform:scale(1);
}
.wa-action-sign{
  width:100%;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .3s ease;
}
.wa-action-sign svg{
  width:16px;
  display:block;
}
.wa-action-sign svg path{
  fill:#fff;
}
.wa-action-btn:hover .wa-action-sign{
  width:100%;
  padding:0;
  transform:scale(1.1);
}
.wa-action-btn::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:50%;
  background-color:#00d757;
  opacity:0;
  z-index:-1;
}
.wa-action-btn:hover::before{
  animation:wa-sonar 1.2s infinite;
}
@keyframes wa-sonar{
  0%{transform:scale(1);opacity:.6;}
  100%{transform:scale(2.2);opacity:0;}
}
.logbook-mini-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  text-decoration:none;
}
.logbook-book-icon{
  width:28px;
  height:28px;
  display:block;
  transition:transform .25s ease, filter .25s ease;
  filter:drop-shadow(0 6px 10px rgba(130,18,24,.18));
}
.logbook-mini-link:hover .logbook-book-icon{
  transform:translateY(-2px) rotate(-4deg);
  filter:drop-shadow(0 10px 16px rgba(130,18,24,.24));
}
#db-teachers-panel #db-table-view .table-wrap{
  overflow:auto;
}
#db-teachers-panel #db-table-view thead th:last-child,
#db-teachers-panel #db-table-view tbody td:last-child{
  position:sticky;
  right:0;
  background:var(--surface);
}
#db-teachers-panel #db-table-view thead th:last-child{
  z-index:4;
  box-shadow:-10px 0 18px rgba(23,48,95,.05);
}
#db-teachers-panel #db-table-view tbody td:last-child{
  z-index:3;
  box-shadow:-10px 0 18px rgba(23,48,95,.05);
}
.teacher-profile-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 12px;
}
.teacher-profile-form label{
  display:flex;
  flex-direction:column;
  gap:5px;
  font-size:11px;
  color:var(--text-muted);
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.teacher-profile-form textarea{resize:vertical;min-height:72px;}
.teacher-profile-form .field-span-2{grid-column:1 / -1;}
.teacher-profile-phone-row{
  display:grid;
  grid-template-columns:112px minmax(0,1fr);
  gap:8px;
}
.teacher-profile-form input[type="hidden"]{display:none;}
.profile-link-btn{
  border:0;
  background:transparent;
  color:var(--navy);
  font-weight:800;
  cursor:pointer;
  padding:0;
  text-align:left;
}
.profile-link-btn:hover{color:var(--teal);text-decoration:underline;}
.teacher-profile-list-page{display:block;}
.teacher-profile-detail-page{display:none;}
.teacher-profile-cards{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:16px;
}
.teacher-profile-card{
  min-height:112px;
  border:0;
  border-radius:12px;
  color:#fff;
  cursor:pointer;
  padding:18px 20px;
  text-align:left;
  box-shadow:0 12px 26px rgba(23,48,95,.12);
  transition:transform .22s ease, box-shadow .22s ease;
  position:relative;
}
.teacher-profile-card>.frozen-status-pill{position:absolute;top:10px;right:10px;border-color:rgba(255,255,255,.5);}
.teacher-profile-card:hover{
  transform:translateY(-3px);
  box-shadow:0 18px 32px rgba(23,48,95,.18);
}
.teacher-profile-card:focus-visible{
  outline:3px solid rgba(32,61,138,.28);
  outline-offset:3px;
}
.teacher-profile-card .tip{
  margin:0 0 8px;
  font-size:18px;
  font-weight:850;
  line-height:1.2;
}
.teacher-profile-card .second-text{
  margin:0;
  font-size:13px;
  font-weight:650;
  line-height:1.35;
  opacity:.92;
}
.teacher-profile-card.red{background:#c61f3f;}
.teacher-profile-card.blue{background:#203d8a;}
.teacher-profile-card.green{background:#0f7a68;}
.teacher-profile-card.gold{background:#b18412;}
.teacher-profile-card.slate{background:#40516f;}
.student-profile-list-page{display:block;}
.student-profile-detail-page{display:none;}
.student-profile-cards{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.student-profile-card{
  min-height:82px;
  border:0;
  border-radius:10px;
  color:#fff;
  cursor:pointer;
  padding:13px 14px;
  text-align:left;
  box-shadow:0 10px 22px rgba(23,48,95,.12);
  transition:transform .18s ease, box-shadow .18s ease;
}
.student-profile-card:hover{
  transform:translateY(-2px);
  box-shadow:0 15px 26px rgba(23,48,95,.18);
}
.student-profile-card:focus-visible{
  outline:3px solid rgba(32,61,138,.26);
  outline-offset:3px;
}
.student-profile-card .tip{
  margin:0 0 7px;
  font-size:14px;
  font-weight:850;
  line-height:1.18;
}
.student-profile-card .second-text{
  margin:0;
  font-size:11px;
  font-weight:650;
  line-height:1.3;
  opacity:.92;
}
.student-profile-card.red{background:#c61f3f;}
.student-profile-card.blue{background:#203d8a;}
.student-profile-card.green{background:#0f7a68;}
.student-profile-card.gold{background:#b18412;}
.student-profile-card.slate{background:#40516f;}
.student-profile-card.teal{background:#16877a;}
.student-profile-page-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
  flex-wrap:wrap;
}
.student-profile-page-title{
  font-size:28px;
  font-weight:850;
  color:var(--navy);
  line-height:1.15;
}
.student-profile-page-sub{
  font-size:13px;
  color:var(--text-muted);
  margin-top:4px;
}
.student-profile-section-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;
  padding:16px;
  margin-bottom:14px;
  box-shadow:0 10px 24px rgba(23,48,95,.05);
}
.student-profile-section-title{
  font-size:13px;
  font-weight:850;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--navy);
  margin-bottom:12px;
}
.student-profile-field-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 12px;
}
.student-profile-field{
  min-height:64px;
  border:1px solid var(--border);
  border-radius:12px;
  background:#f8fafc;
  padding:10px 12px;
}
.student-profile-field-label{
  font-size:11px;
  color:var(--text-muted);
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
  margin-bottom:7px;
}
.student-profile-field-value{
  color:var(--navy);
  font-size:15px;
  font-weight:750;
  line-height:1.35;
  white-space:pre-wrap;
  word-break:break-word;
}
@media(max-width:760px){
  .teacher-profile-cards,
  .student-profile-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
  .student-profile-field-grid{grid-template-columns:1fr;}
}
.teacher-profile-page-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
  flex-wrap:wrap;
}
.teacher-profile-page-title{
  font-size:28px;
  font-weight:850;
  color:var(--navy);
  line-height:1.15;
}
.teacher-profile-page-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.teacher-profile-page-sub{
  font-size:13px;
  color:var(--text-muted);
  margin-top:4px;
}
.teacher-profile-section-card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:16px;
  padding:16px;
  margin-bottom:14px;
  box-shadow:0 10px 24px rgba(23,48,95,.05);
}
.teacher-profile-section-title{
  font-size:13px;
  font-weight:850;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--navy);
  margin-bottom:12px;
}
.teacher-profile-form.is-readonly input,
.teacher-profile-form.is-readonly textarea,
.teacher-profile-form.is-readonly select{
  pointer-events:none;
  background:#f8fafc;
  color:var(--text);
}
/* Match the completed teacher-registration summary in read-only profile view. */
.teacher-profile-section-card:has(.teacher-profile-form.is-readonly){
  padding:0;
  border-radius:10px;
  box-shadow:none;
  overflow:hidden;
  background:#fbfdff;
}
.teacher-profile-section-card:has(.teacher-profile-form.is-readonly) .teacher-profile-section-title{
  margin:0;
  padding:14px 16px;
  border-bottom:1px solid var(--border);
  background:var(--surface);
  color:var(--blue);
  font-size:13px;
  font-weight:900;
}
.teacher-profile-form.is-readonly{gap:0}
.teacher-profile-form.is-readonly label{
  min-height:82px;
  padding:15px 16px;
  gap:7px;
  border-top:1px solid rgba(219,229,241,.72);
  color:var(--text-muted);
  font-size:11px;
  font-weight:900;
  letter-spacing:.08em;
}
.teacher-profile-form.is-readonly label:nth-child(-n+2){border-top:0}
.teacher-profile-form.is-readonly label:not(.field-span-2):nth-child(odd){border-right:1px solid rgba(219,229,241,.72)}
.teacher-profile-form.is-readonly input,
.teacher-profile-form.is-readonly textarea,
.teacher-profile-form.is-readonly select{
  width:100%;
  min-height:0;
  height:auto;
  padding:0;
  border:0;
  border-radius:0;
  outline:0;
  background:transparent;
  box-shadow:none;
  color:var(--navy);
  font-size:14px;
  font-weight:800;
  line-height:1.45;
  resize:none;
  opacity:1;
  -webkit-text-fill-color:var(--navy);
}
.teacher-profile-form.is-readonly textarea{min-height:21px;overflow:hidden}
.teacher-profile-form.is-readonly .teacher-profile-phone-row{grid-template-columns:auto 1fr;gap:5px}
.teacher-profile-form.is-readonly .teacher-profile-phone-row input:first-child{width:auto}
@media(max-width:760px){.teacher-profile-form{grid-template-columns:1fr;}}
.student-delete-btn{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  width:32px;
  height:32px;
  border-radius:50%;
  background:#111;
  cursor:pointer;
  border:1.5px solid #2a2a2a;
  transition:background-color .3s,border-color .3s,transform .3s;
  position:relative;
  overflow:hidden;
  flex-shrink:0;
}
.student-delete-bottom{width:11px;z-index:2;}
.student-delete-top{width:13px;transform-origin:right;transition:transform .3s;z-index:2;}
.student-delete-garbage{
  position:absolute;
  width:10px;
  height:auto;
  z-index:1;
  opacity:0;
  transition:all .3s;
}
.student-delete-btn:hover .student-delete-top{transform:rotate(45deg);}
.student-delete-btn:hover,
.student-delete-btn:focus-visible{
  background:#ff0000;
  border-color:#ffc9c9;
}
.student-delete-btn:focus-visible{outline:2px solid rgba(255,0,0,.22);outline-offset:2px;}
.student-delete-btn:active{transform:scale(.9);}
.student-delete-btn:hover .student-delete-garbage{animation:student-delete-throw .4s linear;}
@keyframes student-delete-throw{
  from{transform:translate(-400%,-700%);opacity:0;}
  to{transform:translate(0%,0%);opacity:1;}
}
.neo-toggle-container{
  --toggle-width:34px;
  --toggle-height:18px;
  --toggle-bg:#102044;
  --toggle-off-color:#c8102e;
  --toggle-on-color:#21468f;
  --toggle-transition:.22s ease;
  position:relative;
  display:inline-flex;
  flex-direction:column;
  font-family:Inter, Arial, sans-serif;
  user-select:none;
  flex-shrink:0;
  margin:0 0 9px;
}
.neo-toggle-input{position:absolute;opacity:0;width:0;height:0;}
.neo-toggle{
  position:relative;
  width:var(--toggle-width);
  height:var(--toggle-height);
  display:block;
  cursor:pointer;
  transform:translateZ(0);
}
.neo-toggle-input:disabled + .neo-toggle{opacity:.55;cursor:not-allowed;}
.neo-track{
  position:absolute;
  inset:0;
  border-radius:calc(var(--toggle-height) / 2);
  overflow:hidden;
  box-shadow:0 2px 7px rgba(0,0,0,.2), inset 0 0 0 1px rgba(255,255,255,.12);
}
.neo-background-layer{
  position:absolute;
  inset:0;
  background:
    linear-gradient(135deg,#163879,#21468f),
    var(--toggle-bg);
  transition:all var(--toggle-transition);
}
.neo-toggle-input:not(:checked) + .neo-toggle .neo-background-layer{
  background:
    linear-gradient(135deg,#c8102e,#8b1026),
    var(--toggle-off-color);
}
.neo-grid-layer{
  position:absolute;
  inset:0;
  background-image:linear-gradient(to right,rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:5px 5px;
  display:none;
  opacity:0;
  transition:opacity var(--toggle-transition);
}
.neo-track-highlight{
  position:absolute;
  inset:1px;
  border-radius:calc(var(--toggle-height) / 2);
  background:linear-gradient(90deg,transparent,rgba(54,249,199,0));
  opacity:0;
  transition:all var(--toggle-transition);
}
.neo-spectrum-analyzer{
  position:absolute;
  bottom:5px;
  right:8px;
  height:9px;
  display:none;
  align-items:flex-end;
  gap:2px;
  opacity:0;
  transition:opacity var(--toggle-transition);
}
.neo-spectrum-bar{
  width:2px;
  height:3px;
  background-color:#36f9c7;
  opacity:.82;
}
.neo-thumb{
  position:absolute;
  top:2px;
  left:2px;
  width:14px;
  height:14px;
  border-radius:50%;
  transition:transform var(--toggle-transition);
  z-index:1;
}
.neo-thumb-ring{
  position:absolute;
  inset:0;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.16);
  background:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,.24);
  transition:all var(--toggle-transition);
}
.neo-thumb-core{
  position:absolute;
  inset:2px;
  border-radius:50%;
  background:linear-gradient(135deg,rgba(255,255,255,.48),rgba(255,255,255,.06));
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
}
.neo-thumb-icon{position:relative;width:5px;height:5px;}
.neo-thumb-wave{
  position:absolute;
  top:50%;
  left:50%;
  width:5px;
  height:2px;
  border-radius:2px;
  background:var(--toggle-off-color);
  transform:translate(-50%,-50%);
  transition:all var(--toggle-transition);
}
.neo-thumb-pulse{
  position:absolute;
  inset:0;
  border-radius:50%;
  border:1px solid var(--toggle-off-color);
  transform:scale(0);
  opacity:0;
  transition:all var(--toggle-transition);
}
.neo-gesture-area{position:absolute;inset:-8px;z-index:0;}
.neo-status{
  position:absolute;
  bottom:-13px;
  left:0;
  width:100%;
  display:flex;
  justify-content:center;
}
.neo-status-indicator{display:flex;align-items:center;gap:4px;}
.neo-status-dot{
  width:4px;
  height:4px;
  border-radius:50%;
  background-color:var(--toggle-off-color);
  transition:all var(--toggle-transition);
}
.neo-status-text{
  font-size:6px;
  font-weight:800;
  color:var(--toggle-off-color);
  letter-spacing:.7px;
  text-transform:uppercase;
  transition:all var(--toggle-transition);
}
.neo-toggle-input:checked + .neo-toggle .neo-thumb{transform:translateX(calc(var(--toggle-width) - 18px));}
.neo-toggle-input:checked + .neo-toggle .neo-background-layer{
  background:linear-gradient(135deg,#163879,#21468f);
}
.neo-toggle-input:checked + .neo-toggle .neo-thumb-ring{
  background-color:#fff;
  border-color:rgba(33,70,143,.26);
  box-shadow:0 1px 6px rgba(0,0,0,.2);
}
.neo-toggle-input:checked + .neo-toggle .neo-thumb-wave{
  height:5px;
  width:5px;
  border-radius:50%;
  background:transparent;
  border:1px solid #fff;
}
.neo-toggle-input:checked + .neo-toggle .neo-thumb-pulse{
  display:none;
  animation:none;
}
.neo-toggle-input:checked + .neo-toggle .neo-track-highlight{
  background:linear-gradient(90deg,transparent,rgba(54,249,199,.22));
  opacity:1;
}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-analyzer{opacity:0;}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-bar:nth-child(1){animation:neo-spectrum .9s infinite;}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-bar:nth-child(2){animation:neo-spectrum .8s .1s infinite;}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-bar:nth-child(3){animation:neo-spectrum 1.1s .2s infinite;}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-bar:nth-child(4){animation:neo-spectrum .7s .1s infinite;}
.neo-toggle-input:checked + .neo-toggle .neo-spectrum-bar:nth-child(5){animation:neo-spectrum .9s .15s infinite;}
.neo-toggle-input:checked + .neo-toggle .neo-status-dot{
  background-color:var(--toggle-on-color);
  box-shadow:0 0 6px rgba(33,70,143,.34);
}
.neo-toggle-input:checked + .neo-toggle .neo-status-text{color:var(--toggle-on-color);}
.neo-toggle-input:checked + .neo-toggle .neo-status-text::before{content:"Active";}
.neo-toggle-input:not(:checked) + .neo-toggle .neo-status-dot{
  background-color:var(--toggle-off-color);
  box-shadow:0 0 8px rgba(200,16,46,.42);
}
.neo-toggle-input:not(:checked) + .neo-toggle .neo-status-text::before{content:"Inactive";}
.neo-toggle:hover .neo-thumb-ring{transform:none;}
@keyframes neo-pulse{
  0%{transform:scale(1);opacity:.5;}
  50%{transform:scale(1.5);opacity:.2;}
  100%{transform:scale(1);opacity:.5;}
}
@keyframes neo-spectrum{
  0%{height:3px;}
  50%{height:8px;}
  100%{height:3px;}
}
.student-pane-subject{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid rgba(37,52,89,.45);font-size:13px;}
.student-pane-subject:last-child{border-bottom:none;padding-bottom:0;}
.student-pane-subject:first-child{padding-top:0;}
.student-pane-hours{font-weight:700;color:var(--teal);white-space:nowrap;}
.student-pane-empty{font-size:12px;color:var(--text-dim);line-height:1.6;}
.portal-card{background:#fff;border:1px solid var(--border);border-radius:22px;padding:22px;box-shadow:0 18px 36px rgba(23,48,95,.08);}
.auth-gate{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:36px;
  background:
    radial-gradient(900px 520px at 12% 18%, rgba(210,26,55,.12), transparent 62%),
    radial-gradient(820px 460px at 86% 72%, rgba(16,77,149,.12), transparent 56%),
    linear-gradient(180deg, #f6f1ea 0%, #efe6dc 100%);
  z-index:999;
}
.auth-gate.open{display:flex;}
.auth-shell{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1.12fr) minmax(440px,.84fr);
  gap:14px;
  width:min(980px, 86vw);
  min-height:min(560px, calc(100vh - 140px));
  padding:14px;
  border-radius:30px;
  overflow:hidden;
  background:rgba(255,255,255,.8);
  border:1px solid rgba(27,56,112,.06);
  box-shadow:0 34px 82px rgba(23,37,68,.14);
  backdrop-filter:blur(4px);
}
.auth-brand{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:100%;
  padding:0;
  border-radius:22px;
  overflow:hidden;
  background:#fff8ef;
}
.auth-brand-art{
  width:100%;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  border-radius:22px;
  background:#ffffff;
  box-shadow:none;
}
.auth-brand-art img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  background:#ffffff;
}
.auth-card{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-self:stretch;
  min-height:100%;
  width:100%;
  padding:42px 38px 36px;
  background:#ffffff;
  color:#173162;
  box-sizing:border-box;
  border-radius:22px;
  border:1px solid rgba(194,207,234,.75);
  box-shadow:none;
}
.auth-card-ganesha{
  width:92px;
  height:92px;
  border-radius:50%;
  overflow:hidden;
  align-self:center;
  margin:0 0 18px;
  border:3px solid #ffffff;
  background:#ffffff;
  box-shadow:0 12px 26px rgba(25,42,82,.12);
}
.auth-card-ganesha img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  background:#ffffff;
}
.auth-card-rule{
  width:64px;
  height:4px;
  border-radius:999px;
  background:#28498b;
  margin-bottom:16px;
}
.auth-card-title{
  font-size:28px;
  line-height:1;
  font-weight:800;
  letter-spacing:-.05em;
  margin-bottom:14px;
  color:#1c376f;
}
.auth-card .form-group{
  width:100%;
  margin-bottom:16px;
}
.auth-card .form-label{
  display:block;
  margin-bottom:6px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#8391ab;
}
.auth-card .form-input{
  height:46px;
  background:#f7f8fc;
  border:1px solid #d4dcef;
  border-radius:12px;
  padding:0 16px;
  color:#20345d;
  font-size:14px;
  box-shadow:none;
}
.auth-card .form-input::placeholder{color:#97a3bb;}
.auth-card .form-input:focus{
  border-color:#8fb1ff;
  box-shadow:0 0 0 4px rgba(68,109,201,.12);
}
.auth-actions{margin-top:12px;}
.auth-actions{width:100%;}
.auth-actions .btn{
  width:100%;
  min-height:46px;
  border-radius:10px;
  font-size:15px;
  font-weight:700;
  letter-spacing:.01em;
  background:#213d73;
  border-color:#213d73;
  box-shadow:none;
}
.auth-actions .btn:hover{
  background:#1b335f;
  border-color:#1b335f;
}
.auth-card .form-input:disabled{opacity:.66;cursor:wait;}
.auth-actions .btn:disabled{opacity:.72;cursor:wait;}
.auth-loading{display:none;justify-content:center;align-items:center;min-height:126px;padding-top:20px;}
.auth-gate.is-loading .auth-loading{display:flex;}
#wifi-loader{
  --front-color:#c61f3f;
  --front-color-in:#203d8a;
  --back-color:#d8e2ef;
  --text-color:#203d8a;
  width:64px;height:64px;border-radius:50px;position:relative;display:flex;justify-content:center;align-items:center;
}
#wifi-loader svg{position:absolute;display:flex;justify-content:center;align-items:center;}
#wifi-loader svg circle{position:absolute;fill:none;stroke-width:6px;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-100deg);transform-origin:center;}
#wifi-loader svg circle.back{stroke:var(--back-color);}
#wifi-loader svg circle.front{stroke:var(--front-color);}
#wifi-loader svg.circle-outer{height:86px;width:86px;}
#wifi-loader svg.circle-outer circle{stroke-dasharray:62.75 188.25;}
#wifi-loader svg.circle-outer circle.back{animation:circle-outer135 1.8s ease infinite .3s;}
#wifi-loader svg.circle-outer circle.front{animation:circle-outer135 1.8s ease infinite .15s;}
#wifi-loader svg.circle-middle{height:60px;width:60px;}
#wifi-loader svg.circle-middle circle{stroke:var(--front-color-in);stroke-dasharray:42.5 127.5;}
#wifi-loader svg.circle-middle circle.back{animation:circle-middle6123 1.8s ease infinite .25s;}
#wifi-loader svg.circle-middle circle.front{animation:circle-middle6123 1.8s ease infinite .1s;}
#wifi-loader .text{position:absolute;bottom:-42px;display:flex;justify-content:center;align-items:center;white-space:nowrap;font-weight:700;font-size:12px;letter-spacing:.2px;}
#wifi-loader .text::before,#wifi-loader .text::after{content:attr(data-text);}
#wifi-loader .text::before{color:var(--text-color);}
#wifi-loader .text::after{color:var(--front-color);animation:text-animation76 3.6s ease infinite;position:absolute;left:0;}
@keyframes circle-outer135{0%{stroke-dashoffset:25}25%{stroke-dashoffset:0}65%{stroke-dashoffset:301}80%,100%{stroke-dashoffset:276}}
@keyframes circle-middle6123{0%{stroke-dashoffset:17}25%{stroke-dashoffset:0}65%{stroke-dashoffset:204}80%,100%{stroke-dashoffset:187}}
@keyframes text-animation76{0%{clip-path:inset(0 100% 0 0)}50%{clip-path:inset(0)}100%{clip-path:inset(0 0 0 100%)}}
@media (prefers-reduced-motion:reduce){#wifi-loader svg circle,#wifi-loader .text::after{animation-duration:4s;}}
@media (max-width:1120px){
  .auth-shell{
    grid-template-columns:1fr;
    gap:14px;
    min-height:auto;
  }
  .auth-brand{
    min-height:340px;
  }
  .auth-card{
    padding:36px 28px 30px;
  }
}
@media (max-width:860px){
  .auth-gate{padding:18px;}
  .auth-shell{
    width:min(100%, 540px);
    padding:12px;
  }
  .auth-brand{
    padding:0;
  }
  .auth-brand-art{
    min-height:220px;
  }
  .auth-card{
    padding:28px 18px 22px;
  }
  .auth-card-ganesha{
    width:76px;
    height:76px;
    margin-bottom:14px;
  }
  .auth-card-title{
    font-size:24px;
  }
}
.portal-login{max-width:760px;margin:24px auto 0;}
.portal-title{font-family:'Playfair Display',serif;font-size:28px;font-weight:600;margin-bottom:6px;color:var(--text);}
.portal-sub{font-size:13px;color:var(--text-muted);line-height:1.6;}
.portal-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:rgba(32,61,138,.08);color:var(--navy);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;}
.portal-login-row{display:grid;grid-template-columns:minmax(260px,420px);gap:10px;margin:14px 0;}
.portal-table-wrap{background:#fff;border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:0 12px 28px rgba(23,48,95,.05);}
.portal-table{width:100%;border-collapse:collapse;}
.portal-input,.portal-select,.portal-textarea{width:100%;background:#fff;border:1px solid var(--border);border-radius:10px;color:var(--text);padding:9px 10px;font-size:12px;font-family:'Inter',sans-serif;outline:none;}
.portal-input:focus,.portal-select:focus,.portal-textarea:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(32,61,138,.08);}
.portal-textarea{min-height:38px;resize:vertical;}
.portal-empty{padding:24px 18px;text-align:center;color:var(--text-muted);font-size:13px;background:#fff;}
.portal-sheet-shell{background:#ffffff;border:1px solid var(--border);border-radius:24px;padding:20px;box-shadow:0 18px 40px rgba(23,48,95,.06);}
.portal-sheet-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 6px 14px;flex-wrap:wrap;}
.portal-sheet-brand{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--navy);}
.portal-sheet-meta{font-size:13px;color:var(--text-muted);margin-top:4px;}
.portal-tabs-bar{display:flex;align-items:flex-start;justify-content:flex-start;gap:12px;padding:6px 0 12px;flex-wrap:wrap;}
.portal-tabs{display:flex;gap:6px;overflow:auto;flex:1;min-width:280px;padding-bottom:2px;}
.portal-tab{background:#f4f7fb;border:1px solid var(--border);border-radius:10px;padding:9px 14px;font-size:13px;font-weight:600;color:#415167;cursor:pointer;white-space:nowrap;}
.portal-tab.active{background:rgba(32,61,138,.08);border-color:rgba(32,61,138,.14);color:var(--navy);}
.portal-sheet-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:14px;align-items:start;}
.portal-info-table{width:100%;border:1px solid var(--border);border-bottom:none;background:#fff;margin-bottom:14px;border-radius:16px 16px 0 0;overflow:hidden;}
.portal-info-row{display:grid;grid-template-columns:260px 1fr;}
.portal-info-label,.portal-info-value{padding:10px 14px;border-bottom:1px solid var(--border);font-size:14px;}
.portal-info-label{background:#eaf2fb;font-weight:700;color:var(--text);text-align:center;}
.portal-info-value{color:var(--text);background:#fff;}
.portal-sheet-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#f7fafe;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.portal-sheet-caption{font-size:13px;font-weight:600;color:var(--text-muted);}
.portal-gsheet th,.portal-gsheet td{padding:0;border:1px solid var(--border);font-size:13px;vertical-align:middle;background:#fff;}
.portal-gsheet th{padding:10px 12px;font-size:11px;text-transform:none;letter-spacing:0;font-weight:700;color:var(--text);background:#eef6f3;}
.portal-gsheet th:nth-child(1){background:#f6f8fb;}
.portal-gsheet th:nth-child(4),.portal-gsheet th:nth-child(7){background:#fdf1f3;}
.portal-gsheet th:nth-child(5),.portal-gsheet th:nth-child(8){background:#edf4fd;}
.portal-gsheet th:nth-child(6){background:#eef6f3;}
.portal-gsheet th:nth-child(1){width:52px;}
.portal-gsheet th:nth-child(2){width:170px;}
.portal-gsheet th:nth-child(3){width:150px;}
.portal-gsheet th:nth-child(4){width:130px;}
.portal-gsheet th:nth-child(5){width:130px;}
.portal-gsheet th:nth-child(6){width:120px;}
.portal-gsheet th:nth-child(7){width:128px;}
.portal-gsheet th:nth-child(8){width:auto;min-width:320px;}
.portal-gsheet th:nth-child(9){width:78px;}
.portal-gsheet td .portal-input,.portal-gsheet td .portal-select,.portal-gsheet td .portal-textarea{border:none;border-radius:0;box-shadow:none;background:transparent;padding:11px 10px;min-height:42px;}
.portal-gsheet td .portal-input:focus,.portal-gsheet td .portal-select:focus,.portal-gsheet td .portal-textarea:focus{background:#f8fbff;outline:2px solid rgba(32,61,138,.12);}
.portal-gsheet td.portal-day-cell,.portal-gsheet td.portal-sn-cell{padding:11px 10px;text-align:center;color:#334155;background:#fbfcfd;}
.portal-gsheet td.portal-fixed-cell{padding:11px 10px;color:#334155;background:#fff;}
.portal-gsheet td.portal-delete-cell{text-align:center;background:#fbfcfd;}
.portal-gsheet th:nth-child(1),
.portal-gsheet th:nth-child(2),
.portal-gsheet th:nth-child(3),
.portal-gsheet th:nth-child(6),
.portal-gsheet th:nth-child(7){text-align:center;}
.portal-gsheet td:nth-child(1),
.portal-gsheet td:nth-child(2),
.portal-gsheet td:nth-child(3),
.portal-gsheet td:nth-child(6),
.portal-gsheet td:nth-child(7){text-align:center;vertical-align:middle;}
.portal-gsheet td:nth-child(2),
.portal-gsheet td:nth-child(3),
.portal-gsheet td:nth-child(6),
.portal-gsheet td:nth-child(7){font-weight:600;}
.portal-side-sheet{display:flex;flex-direction:column;gap:14px;}
.portal-summary-sheet{background:#fff;border:1px solid #d9e0e7;border-radius:14px;overflow:hidden;}
.portal-side-table{width:100%;border-collapse:collapse;}
.portal-side-table th,.portal-side-table td{border:1px solid var(--border);padding:7px 9px;font-size:11.5px;background:#fff;color:var(--text);vertical-align:top;}
.portal-side-table th{background:#eef6f3;font-weight:700;letter-spacing:.02em;}
.master-logbook-shell{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start;}
.master-logbook-shell > .master-teachers-strip{min-height:560px;}
.master-logbook-detail{min-width:0;min-height:560px;padding:18px;border:1px solid var(--border);border-radius:10px;background:#fff;display:block!important;}
.master-logbook-shell #admin-master-teachers{width:100%;}
.master-logbook-shell #admin-master-student-tabs .portal-tab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
.master-logbook-shell #admin-master-student-tabs .portal-tab small{font-size:11px;color:var(--text-muted);}
.master-assignment-strip{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 8px!important;}
.master-assignment-filters{display:flex;gap:7px;flex-wrap:wrap;}
.master-summary-toggle{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;white-space:nowrap;color:var(--text-muted);font-size:12px;font-weight:800;cursor:pointer;}
.master-summary-toggle input{width:17px;height:17px;accent-color:var(--navy);}
.master-filter-btn{border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--text-muted);padding:8px 12px;font:inherit;font-size:12px;font-weight:800;cursor:pointer;}
.master-filter-btn.active{background:#e8f6f2;border-color:#a9d4ca;color:#087765;}
.master-filter-btn span{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:5px;border-radius:50%;background:rgba(255,255,255,.8);}
.master-logbook-tools{display:flex;align-items:center;gap:8px;}
.master-logbook-tools .form-select{min-width:220px;}
.master-top-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:2px;}
.master-title{font-size:16px;font-weight:700;color:var(--navy);}
.master-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.master-teacher-controls{display:flex;align-items:center;gap:14px;width:100%;padding:0 2px;}
.master-check-filter{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:12px;font-weight:700;color:var(--text-muted);cursor:pointer;}
.master-check-filter input{width:16px;height:16px;accent-color:var(--navy);}
.master-strip{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:7px 8px;margin-bottom:8px;}
.master-assignment-strip,.master-students-strip{border:0;border-radius:0;background:transparent;padding:0;}
.master-students-strip{display:block!important;min-height:0!important;height:auto!important;margin:0 0 10px!important;}
.master-students-strip .master-tabs{width:100%;}
.master-strip-label{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--text-muted);text-transform:uppercase;white-space:nowrap;padding-left:2px;}
.master-tabs{gap:8px;min-width:0;padding-bottom:0;}
.master-logbook-shell .portal-tab{border-radius:9px;padding:9px 14px;font-size:13px;font-weight:700;}
.master-logbook-shell .portal-sheet-layout{display:block!important;margin:0!important;}
.master-month-summary{display:none;margin:12px 0 0 auto;width:min(100%,540px);}
.master-month-summary.visible{display:block;}
.master-student-strip{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:8px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:10px 12px;margin-bottom:10px;}
.master-student-item{display:flex;align-items:center;gap:8px;min-width:0;}
.master-student-key{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);font-weight:700;}
.master-student-val{font-size:23px;font-weight:700;color:var(--navy);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.master-student-val.secondary{font-size:18px;font-weight:600;}
.master-logbook-shell .portal-table-wrap{border-radius:10px;}
.master-logbook-shell .portal-sheet-table{overflow:hidden;}
.master-logbook-shell .portal-gsheet{width:100%;min-width:0;table-layout:fixed;}
.master-logbook-shell .portal-gsheet th{height:42px;padding:7px;color:var(--navy);font-size:14px;font-weight:800;letter-spacing:.025em;text-align:center;}
.master-logbook-shell .portal-gsheet tbody td{height:44px!important;padding:0 8px;font-size:15px!important;line-height:1.2;}
.master-logbook-shell .portal-gsheet tbody td .portal-input,.master-logbook-shell .portal-gsheet tbody td .portal-textarea{height:42px!important;min-height:42px!important;padding:5px 8px!important;font-size:15px!important;line-height:18px;}
.master-logbook-shell .portal-gsheet tbody td .portal-textarea{max-height:42px!important;}
.master-logbook-shell .portal-gsheet th:nth-child(1),.master-logbook-shell .portal-gsheet td:nth-child(1){width:6%;}
.master-logbook-shell .portal-gsheet th:nth-child(2),.master-logbook-shell .portal-gsheet td:nth-child(2){width:18%;}
.master-logbook-shell .portal-gsheet th:nth-child(3),.master-logbook-shell .portal-gsheet td:nth-child(3){width:16%;}
.master-logbook-shell .portal-gsheet th:nth-child(4),.master-logbook-shell .portal-gsheet td:nth-child(4){width:14%;text-align:center;}
.master-logbook-shell .portal-gsheet th:nth-child(5),.master-logbook-shell .portal-gsheet td:nth-child(5){width:12%;text-align:center;}
.master-logbook-shell .portal-gsheet th:nth-child(6),.master-logbook-shell .portal-gsheet td:nth-child(6){width:20%;min-width:0;text-align:left;}
.master-logbook-shell .portal-gsheet th:nth-child(7),.master-logbook-shell .portal-gsheet td:nth-child(7){width:14%;text-align:center;}
.master-logbook-shell .portal-gsheet td .portal-input,.master-logbook-shell .portal-gsheet td .portal-textarea{min-width:0;}
.master-logbook-shell .portal-gsheet .master-date-display{font-variant-numeric:tabular-nums;white-space:nowrap;}
.master-logbook-shell .portal-gsheet .portal-session-cell{font-weight:700;color:var(--navy);}
.master-logbook-shell .portal-gsheet th:not(:nth-child(6)),.master-logbook-shell .portal-gsheet td:not(:nth-child(6)){text-align:center;}
.master-logbook-shell .portal-gsheet td:not(:nth-child(6)) .portal-input{text-align:center;}
.master-logbook-shell .portal-gsheet th:nth-child(6),.master-logbook-shell .portal-gsheet td:nth-child(6),.master-logbook-shell .portal-gsheet td:nth-child(6) .portal-textarea{text-align:left;}
.master-logbook-shell .portal-gsheet td .portal-textarea{resize:none;overflow:hidden;}
.master-logbook-shell .master-topic-readonly{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:42px;color:var(--text);}
.master-row-action{vertical-align:middle!important;text-align:center!important;}
.master-row-action .student-delete-btn{width:30px;height:30px;margin:auto;border-radius:50%;background:#202020;border:0;}
.master-frozen-actions{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;padding:4px 0;}
.master-frozen-actions.editing{flex-direction:column;align-items:stretch;}
.master-frozen-correct-btn{color:#1f5fc4;border-color:rgba(31,95,196,.28);background:#eef5ff;}
.master-logbook-shell .portal-gsheet tr.is-correcting-frozen td{height:auto!important;min-height:88px;background:#f7fbff;}
.master-logbook-shell .portal-gsheet tr.is-correcting-frozen td .portal-textarea{height:46px!important;max-height:70px!important;min-height:46px!important;resize:vertical;}
.master-logbook-shell .portal-gsheet tr.is-correcting-frozen .master-frozen-correction-reason{height:34px!important;min-height:34px!important;margin:5px 0 7px;border:1px solid #a9c7ef;border-radius:7px;background:#fff;text-align:left!important;font-size:12px!important;}
.modal:focus{outline:none;}
.assignment-directory-item:focus-visible,.kanban-card:focus-visible,tr[role="button"]:focus-visible{outline:3px solid rgba(32,61,138,.28);outline-offset:2px;}
.master-logbook-shell .portal-summary-sheet{border-radius:10px;}
.master-logbook-shell .portal-sheet-tools{padding:8px 10px;}
@media (max-width:1100px){
  .master-logbook-shell{grid-template-columns:1fr;}
  .master-logbook-shell > .master-teachers-strip{min-height:auto;}
  .master-logbook-shell #admin-master-teachers{max-height:250px;}
  .portal-sheet-layout{grid-template-columns:1fr;}
  .master-student-strip{grid-template-columns:1fr;}
  .master-student-val{font-size:20px;}
}
@media (max-width:760px){
  .portal-login-row{grid-template-columns:1fr;}
  .portal-info-row{grid-template-columns:1fr;}
  .student-pane-links{flex-direction:column;align-items:stretch;}
  .student-parent-grid{grid-template-columns:1fr;}
}

/* Teacher payroll */
.payroll-table .ptr{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:10px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.payroll-table .ptr:hover{border-color:rgba(201,163,42,.3);}
.ptr-avatar{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;}
.ptr-info{flex:1;min-width:120px;}
.ptr-name{font-weight:600;font-size:14px;}
.ptr-rate{font-size:12px;color:var(--text-muted);}
.ptr-sessions{text-align:center;min-width:70px;}
.ptr-sess-num{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--teal);}
.ptr-sess-label{font-size:11px;color:var(--text-muted);}
.ptr-amount{text-align:right;min-width:90px;}
.ptr-amt-num{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:var(--gold-light);}
.ptr-amt-label{font-size:11px;color:var(--text-muted);}
.ptr-status{display:flex;flex-direction:column;align-items:flex-end;gap:5px;}
.paid-badge{background:rgba(15,106,82,.10);color:#0f6a52;border:1px solid rgba(15,106,82,.22);border-radius:999px;font-size:12px;font-weight:600;padding:4px 12px;font-family:var(--font);}
.unpaid-badge{background:rgba(198,31,63,.10);color:#c61f3f;border:1px solid rgba(198,31,63,.2);border-radius:999px;font-size:12px;font-weight:600;padding:4px 12px;font-family:var(--font);}
.partial-badge{background:rgba(201,163,42,.12);color:#946d10;border:1px solid rgba(201,163,42,.24);border-radius:999px;font-size:12px;font-weight:600;padding:4px 12px;font-family:var(--font);}
.overpaid-badge{display:inline-flex;align-items:center;background:#fff0f2;color:#b51132;border:1px solid #ef9aaa;border-radius:999px;font-size:12px;font-weight:700;padding:4px 12px;font-family:var(--font);}
.credit-badge{display:inline-flex;align-items:center;background:#edf4ff;color:#2259aa;border:1px solid #b8cdf4;border-radius:999px;font-size:12px;font-weight:700;padding:4px 12px;font-family:var(--font);}
.voided-badge{display:inline-flex;align-items:center;background:#f0f2f5;color:#657086;border:1px solid #d4dae4;border-radius:999px;font-size:10px;font-weight:700;padding:3px 8px;}
.payroll-review-history-amount.voided,.payroll-voided-amount{text-decoration:line-through;color:#7d8799!important;}

/* Payment history table */
.pay-hist-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid rgba(37,52,89,.4);font-size:13px;}
.pay-hist-row:last-child{border-bottom:none;}
.pay-method-tag{background:var(--surface2);border:1px solid var(--border);border-radius:5px;padding:2px 8px;font-size:11px;color:var(--text-muted);}

/* Currency selector */
.cur-sel{background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:7px 10px;color:var(--text);font-size:13px;font-family:'Inter',sans-serif;outline:none;cursor:pointer;}
.cur-sel:focus{border-color:var(--gold);}

/* Alert banner */
.alert-banner{background:rgba(198,31,63,.08);border:1px solid rgba(198,31,63,.16);border-radius:10px;padding:12px 16px;margin-bottom:16px;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--red);}
.alert-banner-icon{font-size:18px;flex-shrink:0;}


/* ── LOGBOOK SYNC ── */
.lb-sync-bar{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:13px 18px;margin-bottom:16px;flex-wrap:wrap;gap:10px;}
.lb-sync-info{display:flex;align-items:center;gap:10px;font-size:13px;}
.lb-sync-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.lb-sync-dot.ok{background:var(--green);animation:pulse 2s infinite;}
.lb-sync-dot.idle{background:var(--text-dim);}
.lb-sync-dot.busy{background:var(--gold-light);animation:pulse .5s infinite;}
.lb-sync-dot.err{background:var(--red);}
.lb-sync-text{color:var(--text-muted);}
.lb-sync-time{font-size:11px;color:var(--text-dim);}
.lb-debug{margin-top:8px;font-size:11px;color:var(--text-dim);line-height:1.4;white-space:pre-wrap;}
.lb-teacher-row{display:flex;align-items:center;gap:8px;padding:7px 14px;border-bottom:1px solid rgba(37,52,89,.4);font-size:13px;}
.lb-teacher-row:last-child{border-bottom:none;}
.lb-t-name{font-weight:600;flex:1;}
.lb-t-status{font-size:11.5px;}
.lb-t-status.ok{color:var(--green);}
.lb-t-status.err{color:var(--red);}
.lb-t-status.busy{color:var(--gold-light);}
.lb-t-status.skip{color:var(--text-dim);}
.payroll-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;overflow:hidden;}
.pb-header{padding:12px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.pb-teacher{font-family:'Playfair Display',serif;font-size:15px;font-weight:600;}
.pb-month{font-size:12px;color:var(--text-muted);}
.pb-rows{padding:0;}
.pb-row{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid rgba(37,52,89,.35);font-size:13px;}
.pb-row:last-child{border-bottom:none;}
.pb-student{flex:1;font-weight:500;}
.pb-hours{min-width:70px;text-align:center;color:var(--teal);font-weight:600;}
.pb-amount{min-width:100px;text-align:right;color:var(--gold-light);font-weight:700;font-family:'Playfair Display',serif;}
.pb-total-row{background:var(--surface2);display:flex;align-items:center;gap:12px;padding:10px 18px;border-top:1px solid var(--border);}
.pb-total-row .pb-student{color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em;}
.pb-status-row{padding:10px 18px;display:flex;align-items:center;justify-content:space-between;background:rgba(0,0,0,.15);}
.pb-paid-tag{background:rgba(15,106,82,.08);color:var(--green);border:1px solid rgba(15,106,82,.18);border-radius:20px;font-size:11.5px;font-weight:600;padding:4px 12px;}
.pb-inprocess-tag{background:rgba(201,163,42,.1);color:var(--gold-light);border:1px solid rgba(201,163,42,.2);border-radius:20px;font-size:11.5px;font-weight:600;padding:4px 12px;}
.lb-progress{height:3px;background:var(--surface2);border-radius:2px;margin-bottom:10px;overflow:hidden;}
.lb-progress-fill{height:3px;background:var(--gold);border-radius:2px;transition:width .3s;}


/* collapsible sync detail */
.lb-detail-toggle{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:5px;transition:all .15s;margin-left:4px;}
.lb-detail-toggle:hover{color:var(--text);background:var(--surface2);}
.lb-detail-arrow{display:inline-block;transition:transform .2s;}
.lb-detail-arrow.open{transform:rotate(90deg);}
/* collapsible payroll rows */
.pb-rows-wrap{overflow:hidden;transition:max-height .25s ease;}
.pb-toggle{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;padding:0;margin-left:8px;transition:all .15s;}
.pb-toggle:hover{color:var(--text);}
.pb-toggle-arrow{display:inline-block;transition:transform .2s;font-size:10px;}
.pb-toggle-arrow.open{transform:rotate(90deg);}


/* ── PAYROLL SINGLE LINE CARDS ── */
.pb2-card{background:var(--surface);border:1px solid rgba(69,95,148,.22);border-radius:12px;margin-bottom:12px;overflow:hidden;transition:border-color .15s,box-shadow .15s;}
.pb2-card:hover{border-color:rgba(39,71,141,.35);box-shadow:0 6px 20px rgba(23,39,84,.08);}
.pb2-main{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto auto;align-items:center;gap:14px;padding:14px 18px;cursor:pointer;user-select:none;}
.pb2-avatar{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;font-family:var(--font);}
.pb2-info{min-width:0;}
.pb2-titleline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.pb2-name{font-weight:700;font-size:16px;line-height:1.25;font-family:var(--font);color:#1f376a;}
.pb2-subject{font-size:13px;color:#5e7398;margin-top:2px;font-family:var(--font);}
.pb2-status-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;font-family:var(--font);}
.pb2-status-btn:focus-visible{outline:2px solid rgba(32,61,138,.28);outline-offset:2px;}
.pb2-hrs{min-width:92px;text-align:right;font-size:16px;color:#0f7f6f;font-weight:700;flex-shrink:0;font-family:var(--font);}
.pb2-amt{min-width:154px;text-align:right;font-family:var(--font);font-size:18px;font-weight:700;color:#20407f;flex-shrink:0;}
.pb2-chevron{color:var(--text-dim);font-size:11px;transition:transform .2s;flex-shrink:0;margin-left:4px;}
.pb2-chevron.open{transform:rotate(90deg);}
.pb2-detail{max-height:0;overflow:hidden;transition:max-height .25s ease;}
.pb2-detail.open{max-height:1200px;}
.pb2-cols-head{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(120px,.9fr) 92px 130px 140px;align-items:center;gap:14px;padding:12px 18px 0 68px;color:#6a7ea4;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;}
.pb2-rows{border-top:1px solid rgba(69,95,148,.18);margin-top:10px;}
.pb2-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(120px,.9fr) 92px 130px 140px;align-items:center;gap:14px;padding:12px 18px 12px 68px;border-bottom:1px solid rgba(69,95,148,.14);font-size:14px;}
.pb2-row:last-child{border-bottom:none;}
.pb2-row-student{color:#344f7d;font-weight:600;font-family:var(--font);}
.pb2-row-subject{color:#5d739a;font-weight:600;font-family:var(--font);}
.pb2-row-hrs{color:#0f7f6f;font-weight:700;font-family:var(--font);text-align:right;}
.pb2-row-rate,.pb2-row-amt{color:#315596;font-weight:700;font-family:var(--font);text-align:right;}
.pb2-footer{padding:12px 18px;border-top:1px solid rgba(69,95,148,.18);display:flex;align-items:flex-start;justify-content:space-between;gap:14px;background:rgba(208,220,244,.25);}
.pb2-footer-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pb2-footer-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end;}
.pb2-total{display:flex;align-items:center;gap:10px;font-weight:700;color:#1f376a;}
.pb2-total-label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#5d739a;font-weight:700;}
.pb2-total-value{font-size:18px;font-weight:700;font-family:var(--font);}
.pb2-payments{padding:14px 18px 16px 68px;border-top:1px solid rgba(69,95,148,.18);background:#fff;}
.pb2-payments-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
.pb2-payments-title{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#5d739a;}
.pb2-payments-total{font-size:13px;font-weight:700;color:#1f376a;}
.pb2-payment-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid rgba(69,95,148,.12);}
.pb2-payment-row:first-of-type{border-top:none;}
.pb2-payment-main{min-width:0;display:flex;flex-direction:column;gap:4px;}
.pb2-payment-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pb2-payment-amount{font-weight:700;color:#1f376a;}
.pb2-payment-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
@media (max-width:1100px){
  .pb2-main{grid-template-columns:38px minmax(0,1fr) auto auto;}
  .pb2-chevron{grid-row:1 / span 2;grid-column:4;}
}
@media (max-width:760px){
  .pb2-main{grid-template-columns:38px minmax(0,1fr) auto;align-items:flex-start;}
  .pb2-hrs,.pb2-amt{text-align:left;min-width:0;}
  .pb2-chevron{grid-row:auto;grid-column:auto;justify-self:end;}
  .pb2-cols-head{display:none;}
  .pb2-row{grid-template-columns:1fr;padding-left:18px;}
  .pb2-row-hrs,.pb2-row-rate,.pb2-row-amt{text-align:left;}
  .pb2-footer{flex-direction:column;align-items:flex-start;}
  .pb2-footer-main{justify-content:flex-start;}
  .pb2-payments{padding-left:18px;}
}

/* ── PAYROLL REDESIGN: ACTION + REVIEW VIEWS ── */
.payroll-v3{display:flex;flex-direction:column;gap:8px;}
.payroll-viewbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.payroll-mode-switch{display:inline-flex;align-items:center;gap:3px;padding:3px;background:#f4f7fc;border:1px solid rgba(69,95,148,.12);border-radius:999px;}
.payroll-mode-btn{border:none;background:transparent;color:#64789d;font:600 10.5px/1.1 var(--font);padding:6px 10px;border-radius:999px;cursor:pointer;transition:all .15s;}
.payroll-mode-btn:hover{color:#244786;}
.payroll-mode-btn.active{background:#fff;color:#203d8a;box-shadow:0 4px 12px rgba(26,44,93,.06);}
.payroll-view-summary{font:600 10.5px/1.4 var(--font);color:#7083a5;}
.payroll-view-summary strong{font-weight:700;color:#1f376a;}

.payroll-action-stack{display:flex;flex-direction:column;gap:10px;}
.payroll-action-section{background:var(--surface);border:1px solid rgba(69,95,148,.12);border-radius:13px;padding:9px 11px;display:flex;flex-direction:column;gap:7px;}
.payroll-action-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;}
.payroll-action-head-main{display:flex;flex-direction:column;gap:3px;}
.payroll-action-title{font:700 12px/1.2 var(--font);color:#1f376a;}
.payroll-action-note{font:500 10px/1.35 var(--font);color:#7b8fb2;}
.payroll-action-count{font:700 10px/1 var(--font);color:#6a7ea4;background:#eef3fb;border-radius:999px;padding:5px 8px;}
.payroll-action-list{display:flex;flex-direction:column;gap:6px;}
.payroll-action-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 64px 104px auto;align-items:center;gap:10px;padding:8px 0;border-top:1px solid rgba(69,95,148,.09);cursor:pointer;transition:opacity .15s;}
.payroll-action-row:first-child{border-top:none;padding-top:2px;}
.payroll-action-row:hover{opacity:.88;}
.payroll-action-avatar{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font:700 10px/1 var(--font);}
.payroll-action-copy{min-width:0;display:flex;flex-direction:column;gap:2px;}
.payroll-action-name{font:700 12px/1.2 var(--font);color:#203d8a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.payroll-action-meta{font:500 10px/1.35 var(--font);color:#7287ab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.payroll-action-hours{font:700 11.5px/1 var(--font);color:#0f7f6f;text-align:right;}
.payroll-action-amount{font:700 11.5px/1.1 var(--font);color:#244786;text-align:right;}
.payroll-action-review{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;background:#eef3fb;color:#244786;font:700 10px/1 var(--font);}
.payroll-action-empty{padding:10px 0 2px;font:500 11px/1.45 var(--font);color:#8395b5;}

.payroll-review-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:10px;align-items:start;}
.payroll-review-list{background:var(--surface);border:1px solid rgba(69,95,148,.12);border-radius:13px;padding:7px;display:flex;flex-direction:column;gap:8px;position:sticky;top:14px;}
.payroll-review-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 4px 5px;}
.payroll-review-list-title{font:700 11.5px/1.2 var(--font);color:#1f376a;}
.payroll-review-list-sub{font:600 10px/1 var(--font);color:#6b7ea1;background:#eef3fb;border-radius:999px;padding:5px 7px;}
.payroll-review-items{display:flex;flex-direction:column;gap:5px;}
.payroll-review-item{width:100%;display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 8px;border:none;border-radius:11px;background:#fbfcff;border:1px solid transparent;cursor:pointer;text-align:left;transition:all .15s;}
.payroll-review-item:hover{border-color:rgba(39,71,141,.16);background:#fff;}
.payroll-review-item.active{border-color:rgba(39,71,141,.24);background:#fff;box-shadow:0 8px 14px rgba(26,44,93,.05);}
.payroll-review-item-copy{min-width:0;display:flex;flex-direction:column;gap:2px;}
.payroll-review-item-name{font:700 11.5px/1.2 var(--font);color:#203d8a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.payroll-review-item-meta{font:500 10px/1.35 var(--font);color:#7186aa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.payroll-review-item-amount{font:700 11px/1.1 var(--font);color:#244786;text-align:right;}

.payroll-review-panel{background:var(--surface);border:1px solid rgba(69,95,148,.12);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px;}
.payroll-review-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;}
.payroll-review-identity{display:flex;align-items:center;gap:10px;min-width:0;}
.payroll-review-avatar{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font:700 10.5px/1 var(--font);}
.payroll-review-titlewrap{min-width:0;}
.payroll-review-name{font:700 15px/1.1 var(--font);color:#1f376a;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.payroll-review-meta{margin-top:3px;font:500 10.5px/1.4 var(--font);color:#6d82a7;}
.payroll-review-link{color:#2c5aa0;font-size:10px;font-weight:700;text-decoration:none;}
.payroll-review-link:hover{text-decoration:underline;}
.payroll-review-metrics{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;justify-content:flex-end;}
.payroll-review-state-stack{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end;}
.payroll-review-metric{display:flex;flex-direction:column;gap:3px;min-width:72px;}
.payroll-review-metric-label{font:700 9.5px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:#7b8fb2;}
.payroll-review-metric-value{font:700 13px/1.15 var(--font);color:#203d8a;}
.payroll-review-metric-value.hours{color:#0f7f6f;}
.payroll-review-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.payroll-review-chips{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.payroll-review-actions .btn{min-height:30px;font-size:11px;padding:0 11px;}

.payroll-detail-table{border:1px solid rgba(69,95,148,.12);border-radius:12px;overflow:hidden;background:#fff;}
.payroll-detail-head,.payroll-detail-row{display:grid;grid-template-columns:minmax(180px,1.15fr) minmax(120px,.85fr) 82px 120px 120px;gap:10px;align-items:center;}
.payroll-detail-head{padding:9px 11px;background:#f8fafd;border-bottom:1px solid rgba(69,95,148,.1);font:800 9px/1.1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:#6d82a7;}
.payroll-detail-row{padding:9px 11px;border-bottom:1px solid rgba(69,95,148,.08);font-size:11.5px;}
.payroll-detail-row:last-child{border-bottom:none;}
.payroll-detail-student{font:700 11.5px/1.25 var(--font);color:#314d7b;}
.payroll-detail-subject{font:600 10.5px/1.3 var(--font);color:#5c7399;}
.payroll-detail-mini{display:block;margin-top:3px;font:500 10px/1.3 var(--font);color:#8a9bbb;}
.payroll-detail-hours{font:700 11px/1 var(--font);color:#0f7f6f;text-align:right;}
.payroll-detail-rate,.payroll-detail-amount{font:700 11px/1 var(--font);color:#315596;text-align:right;}
.payroll-detail-rate.is-missing,.payroll-detail-amount.is-missing{color:#c2410c;}

.payroll-review-history{border:1px solid rgba(69,95,148,.12);border-radius:12px;background:#fff;padding:10px 12px;}
.payroll-review-history-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.payroll-review-history-title{font:800 9.5px/1.1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:#6d82a7;}
.payroll-review-history-total{font:700 12px/1.1 var(--font);color:#1f376a;}
.payroll-review-history-list{display:flex;flex-direction:column;gap:7px;}
.payroll-review-history-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-top:7px;border-top:1px solid rgba(69,95,148,.08);}
.payroll-review-history-row:first-child{border-top:none;padding-top:0;}
.payroll-review-history-main{min-width:0;display:flex;flex-direction:column;gap:3px;}
.payroll-review-history-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.payroll-review-history-amount{font:700 12px/1.1 var(--font);color:#1f376a;}
.payroll-review-history-note{font:500 10.5px/1.4 var(--font);color:#7b8fb2;}
.payroll-recalc-note{display:inline-flex;margin-top:4px;padding:4px 8px;border-radius:999px;border:1px solid rgba(198,31,63,.18);background:rgba(198,31,63,.08);color:var(--red);}
.payroll-review-history-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.payroll-review-empty{padding:14px 4px 2px;font:500 11px/1.5 var(--font);color:#7a8fb2;text-align:center;}

#page-revenue .fin-tabs{gap:4px;padding:4px 5px;border-radius:12px;margin-bottom:14px;}
#page-revenue .fin-tab{padding:6px 11px;border-radius:9px;font-size:11px;font-weight:600;}
#page-revenue .fin-section-title{font-family:var(--font);font-size:13px;font-weight:700;letter-spacing:.01em;color:#1f376a;}
#fin-payroll-panel .lb-sync-bar{padding:14px 18px;border-radius:16px;}
#fin-payroll-panel .lb-sync-text{font-size:13px;line-height:1.3;font-weight:600;}
#fin-payroll-panel .lb-sync-time{font-size:11px;line-height:1.35;}
#fin-payroll-panel .fin-month-nav{gap:6px;}
#fin-payroll-panel .fin-month-nav button{width:34px;height:34px;font-size:18px;}
#fin-payroll-panel .fin-month-label{font-size:17px;font-weight:700;}
#fin-payroll-panel .btn.btn-teal.btn-sm{height:34px;padding:0 12px;font-size:11.5px;}

.auth-title,.brand-name,.topbar-title,.drawer-name,.modal-title,.section-title,.tc-name,.wiz-title,.wa-hub-title,
.pnl-val,.fin-section-title,.pkg-remaining,.student-finance-name,.student-finance-kpi-value,.revenue-home-panel-title,
.history-card-amt,.portal-title,.portal-sheet-brand,.ptr-sess-num,.ptr-amt-num,.pb-teacher,.subject-price{
  font-family:var(--font);
}
.drawer-name,.modal-title,.section-title,.tc-name,.fin-section-title,.revenue-home-panel-title{letter-spacing:-.01em;}
.section-title{font-size:14px;}
.fin-section-title{font-size:14px;}
.drawer-name,.modal-title,.tc-name{font-size:16px;}
.student-finance-name{font-size:22px;}
.student-finance-kpi-value{font-size:24px;}
.pnl-val{font-size:20px;}
.history-card-amt,.pkg-remaining,.ptr-amt-num,.ptr-sess-num{font-size:17px;}
.portal-title{font-size:24px;}
.portal-sheet-brand{font-size:20px;}
.ai-panel{display:none !important;}

@media (max-width:1120px){
  .studio-home-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .banner-main{grid-template-columns:130px 1fr}
  .logo-section{border-right:2px solid #f7b500;border-bottom:0;height:100%}
  .info-section{border-right:none;padding:22px}
  .quote-section,.pattern-section{display:none}
  .footer-strip{flex-direction:column;align-items:flex-start;gap:14px;padding:18px}
  .highlight-box{width:100%}
  .info-section h1{font-size:28px}
  .program-strip{font-size:12px;letter-spacing:1.5px;line-height:1.8}
  .payroll-review-layout{grid-template-columns:1fr;}
  .payroll-review-list{position:static;}
}
@media (max-width:920px){
  .studio-home-head{align-items:flex-start;flex-direction:column;}
  .monthly-close-status{align-items:flex-start;flex-direction:column;}
  .master-lineage-alert{grid-template-columns:1fr;}
  .studio-home-head h1{font-size:28px;}
  .studio-home-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .studio-announcement-composer{grid-template-columns:1fr;}
  .payroll-action-row{grid-template-columns:30px minmax(0,1fr) auto;align-items:flex-start;}
  .payroll-action-hours,.payroll-action-amount,.payroll-action-review{grid-column:2 / span 2;text-align:left;}
  .payroll-detail-head,.payroll-detail-row{grid-template-columns:1fr;}
  .payroll-detail-hours,.payroll-detail-rate,.payroll-detail-amount{text-align:left;}
}
/* Studio report exports */
.studio-export-pagebar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;padding:12px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
.studio-export-pagebar>div{display:flex;flex-direction:column;gap:2px}.studio-export-pagebar span{font-size:12px;color:var(--text-muted)}
.studio-export-fields,.studio-export-filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.studio-export-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.studio-export-format{display:flex;align-items:center;gap:18px;margin:4px 0 14px;padding:12px;border:1px solid var(--border);border-radius:12px}.studio-export-format legend{padding:0 6px;font-size:12px;font-weight:800;color:var(--text-muted)}.studio-export-format label{display:flex;align-items:center;gap:7px;font-weight:700}
.studio-export-warning{padding:12px 14px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;color:#1e3a8a;font-size:12px;font-weight:700;line-height:1.45}
#export-print-view{display:none}
@media(max-width:720px){.studio-export-pagebar{align-items:flex-start;flex-direction:column}.studio-export-fields,.studio-export-filter-grid{grid-template-columns:1fr}}
@media print{
  body.export-print-active>*:not(#export-print-view){display:none!important}
  body.export-print-active #export-print-view{display:block!important;position:static!important;width:100%!important;background:#fff;color:#111}
  .export-print-document{font-family:Arial,sans-serif;padding:0 8mm}.export-print-document header{margin-bottom:12px}.export-print-document h1{font-size:20px;margin:0 0 4px}.export-print-document p{font-size:10px;margin:3px 0}.export-print-confidential{color:#7f1d1d;font-weight:700}
  .export-print-document table{width:100%;border-collapse:collapse;font-size:8px;table-layout:auto}.export-print-document th,.export-print-document td{border:1px solid #aaa;padding:4px;text-align:left;vertical-align:top;word-break:break-word}.export-print-document th{background:#eaf0f8;font-weight:700}.export-print-document footer{margin-top:10px;font-size:8px;color:#555}
  @page{size:landscape;margin:10mm}
}
