:root{
  --bg:#0a0d14; --panel:#10141d; --card:#131826; --card2:#161c2c; --border:#232a3d;
  --text:#e8ebf2; --dim:#8b93a7; --dim2:#5c6478;
  --blue:#2f6bff; --blue2:#4d8dff; --cyan:#22d3ee; --green:#22c55e; --red:#ef4444; --amber:#f59e0b;
  --radius-sm:9px; --radius:13px; --radius-lg:16px;
  --font-display:'Archivo',Inter,-apple-system,BlinkMacSystemFont,sans-serif;
}

/* Light mode — every color below is consumed by components purely through
   these variables, so this single block re-themes the whole app (client CRM
   and superadmin alike) without touching component CSS. Applied via
   [data-theme="light"] on <html>, set by the inline anti-flash script in
   <head> before first paint, and toggled by the switch in the sidebar. */
html[data-theme="light"]{
  --bg:#f4f6fb; --panel:#ffffff; --card:#ffffff; --card2:#eef1f8; --border:#e1e5ee;
  --text:#1a1f2b; --dim:#5b6376; --dim2:#8a91a3;
  --blue:#2f6bff; --blue2:#2457db; --cyan:#0891b2; --green:#16a34a; --red:#dc2626; --amber:#b45309;
}
html[data-theme="light"] ::-webkit-scrollbar-thumb{background:#d6dbe8;}
html[data-theme="light"] .nav-item.active{background:rgba(47,107,255,.08);color:#1d4ed8;}
html[data-theme="light"] .stat-card,
html[data-theme="light"] .form-card,
html[data-theme="light"] .card-table,
html[data-theme="light"] .panel{box-shadow:0 1px 2px rgba(16,24,40,.04);}

/* Theme toggle switch (sun/moon) — lives in the sidebar bottom, both CRMs */
.theme-toggle{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;color:var(--dim);font-size:12.5px;font-weight:600;cursor:pointer;user-select:none;background:none;border:none;width:100%;text-align:left;}
.theme-toggle:hover{background:var(--card);color:var(--text);}
.theme-toggle .track{position:relative;width:34px;height:19px;background:var(--border);border-radius:999px;flex-shrink:0;transition:background .15s ease;}
.theme-toggle .knob{position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:var(--blue2);transition:transform .15s ease;display:flex;align-items:center;justify-content:center;font-size:9px;}
html[data-theme="light"] .theme-toggle .knob{transform:translateX(15px);}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
input,select,textarea{font-family:inherit;}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-thumb{background:#2a3142;border-radius:4px;}
:focus-visible{outline:2px solid var(--blue2);outline-offset:2px;}

.shell{display:flex;min-height:100vh;}
.sidebar{width:230px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 14px;flex-shrink:0;}
.sidebar-logo{font-family:var(--font-display);font-size:20px;font-weight:800;letter-spacing:.2px;padding:0 10px 22px;display:flex;gap:2px;}
.sidebar-logo .o{color:var(--blue2);}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--dim);font-size:13.5px;font-weight:600;margin-bottom:1px;border-left:2px solid transparent;transition:background .12s ease,color .12s ease,border-color .12s ease;}
.nav-item svg{width:17px;height:17px;flex-shrink:0;opacity:.85;}
.nav-item:hover{background:var(--card);color:var(--text);}
.nav-item.active{background:rgba(47,107,255,.12);color:#d6e4ff;border-left-color:var(--blue2);font-weight:700;}
.nav-item.active svg{opacity:1;color:var(--blue2);}
.sidebar-bottom{margin-top:auto;border-top:1px solid var(--border);padding-top:14px;}
.admin-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;}
.admin-avatar{width:34px;height:34px;border-radius:50%;background:var(--blue);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;}
.admin-name{font-size:13.5px;font-weight:700;}
.admin-role{font-size:11.5px;color:var(--dim);text-transform:capitalize;}
.logout-btn{margin-left:auto;color:var(--dim);font-size:15px;background:none;border:none;}

.main{flex:1;padding:26px 32px;overflow-y:auto;min-width:0;}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:14px;}
.topbar h1{font-family:var(--font-display);font-size:23px;font-weight:800;letter-spacing:-.2px;}
.topbar .sub{color:var(--dim);font-size:13.5px;margin-top:4px;}
.date-chip{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 14px;font-size:13px;font-weight:600;color:var(--dim);}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:22px;}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;}
.stat-top{display:flex;align-items:center;gap:10px;color:var(--dim);font-size:13px;font-weight:600;margin-bottom:14px;}
.stat-icon{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px;}
.stat-icon.blue{background:rgba(47,107,255,.15);color:var(--blue2);}
.stat-icon.green{background:rgba(34,197,94,.15);color:var(--green);}
.stat-icon.amber{background:rgba(245,158,11,.15);color:var(--amber);}
.stat-icon.cyan{background:rgba(34,211,238,.15);color:var(--cyan);}
.stat-icon.red{background:rgba(239,68,68,.15);color:var(--red);}
.stat-icon.purple{background:rgba(168,85,247,.15);color:#a855f7;}
a.stat-card{display:block;cursor:pointer;transition:transform .12s ease;}
a.stat-card:hover{transform:translateY(-2px);}
.stat-value{font-family:var(--font-display);font-size:25px;font-weight:800;letter-spacing:-.3px;}
.stat-delta{font-size:12.5px;margin-top:6px;font-weight:600;}
.stat-delta.up{color:var(--green);} .stat-delta.down{color:var(--red);}

.panel-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;margin-bottom:16px;}
@media(max-width:1100px){.panel-grid{grid-template-columns:1fr;}}
.panel-grid.trend-grid{grid-template-columns:1fr 1fr 1fr;}
@media(max-width:1100px){.panel-grid.trend-grid{grid-template-columns:1fr;}}
.panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.panel-head h3{font-size:15.5px;font-weight:700;}
.link-btn{background:var(--card2);border:1px solid var(--border);color:var(--dim);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:8px;}

.legend-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:12px;}
.legend-left{display:flex;align-items:center;gap:9px;color:var(--dim);}
.dot-sw{width:9px;height:9px;border-radius:50%;}
.legend-val{font-weight:700;}

.activity-item{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border);}
.activity-item:last-child{border-bottom:none;}
.act-icon{width:34px;height:34px;border-radius:50%;background:var(--card2);display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--blue2);flex-shrink:0;}
.act-title{font-size:13.5px;font-weight:700;}
.act-desc{font-size:12.5px;color:var(--dim);margin-top:1px;}
.act-time{font-size:11.5px;color:var(--dim2);margin-left:auto;white-space:nowrap;}

table{width:100%;border-collapse:collapse;font-size:13.5px;}
th{text-align:left;color:var(--dim);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.3px;padding:0 10px 10px;border-bottom:1px solid var(--border);}
td{padding:12px 10px;border-bottom:1px solid var(--border);vertical-align:middle;}
tr:last-child td{border-bottom:none;}
.pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:700;}
.pill.active{background:rgba(34,197,94,.15);color:var(--green);}
.pill.expired{background:rgba(239,68,68,.15);color:var(--red);}
.pill.pending{background:rgba(245,158,11,.15);color:var(--amber);}
.pill.cancelled{background:rgba(139,147,167,.15);color:var(--dim);}
.pill.frozen{background:rgba(34,211,238,.15);color:var(--cyan);}
.plan-badge{width:26px;height:26px;border-radius:7px;background:var(--blue);color:#fff;font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center;margin-right:8px;}

.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px;flex-wrap:wrap;}
.toolbar-left{display:flex;gap:10px;flex-wrap:wrap;}
.tb-search,.tb-select{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:9px 14px;color:var(--text);font-size:13.5px;outline:none;}
.btn-add{background:var(--blue);border:none;color:#fff;padding:10px 18px;border-radius:10px;font-size:13.5px;font-weight:700;display:inline-flex;align-items:center;gap:7px;}
.card-table{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:8px 20px;overflow-x:auto;}
.icon-btn{background:none;border:none;color:var(--dim);font-size:15px;padding:5px;border-radius:6px;}
.icon-btn:hover{color:var(--text);background:var(--card2);}
.icon-btn.danger:hover{color:var(--red);}
.member-cell{display:flex;align-items:center;gap:10px;}
.avatar-sm{width:34px;height:34px;border-radius:50%;background:var(--blue);color:#fff;font-weight:700;font-size:12.5px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}
.avatar-sm img{width:100%;height:100%;object-fit:cover;}
.cell-name{font-weight:700;font-size:13.5px;}
.cell-sub{font-size:12px;color:var(--dim);}
.empty-state{text-align:center;padding:50px 20px;color:var(--dim);}
.empty-state .ic{font-size:34px;margin-bottom:12px;color:var(--dim2);}
.empty-state .t{font-weight:700;color:var(--text);margin-bottom:4px;}

.plans-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;}
.plan-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;position:relative;}
.plan-price{font-size:26px;font-weight:800;margin:14px 0 2px;}
.plan-price span{font-size:13px;color:var(--dim);font-weight:600;}
.plan-dur{color:var(--dim);font-size:12.5px;margin-bottom:14px;}
.plan-stats{display:flex;justify-content:space-between;border-top:1px solid var(--border);padding-top:12px;font-size:12.5px;color:var(--dim);}
.plan-actions{display:flex;gap:6px;position:absolute;top:16px;right:16px;}

.trainer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;}
.trainer-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;}
.trainer-top{display:flex;gap:12px;align-items:center;}
.trainer-avatar{width:48px;height:48px;border-radius:50%;background:var(--blue);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:16px;overflow:hidden;flex-shrink:0;}
.trainer-avatar img{width:100%;height:100%;object-fit:cover;}
.trainer-name{font-weight:700;font-size:14.5px;}
.trainer-spec{font-size:12.5px;color:var(--dim);}
.trainer-status{margin-top:14px;padding:10px;border-radius:10px;font-size:12.5px;text-align:center;font-weight:700;}
.trainer-status.in{background:rgba(34,197,94,.12);color:var(--green);}
.trainer-status.out{background:rgba(139,147,167,.12);color:var(--dim);}
.trainer-btn-row{display:flex;gap:8px;margin-top:10px;}
.trainer-btn{flex:1;border:1px solid var(--border);background:var(--card2);color:var(--text);border-radius:8px;padding:8px;font-size:12.5px;font-weight:700;}
.trainer-btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;}
.trainer-btn:disabled{opacity:.4;cursor:not-allowed;}

.form-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px;max-width:520px;}
.form-row{margin-bottom:14px;}
.form-row label{display:block;font-size:12.5px;color:var(--dim);font-weight:600;margin-bottom:6px;}
.form-row input,.form-row select,.form-row textarea{width:100%;background:var(--card2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;color:var(--text);font-size:13.5px;outline:none;}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{border-color:var(--blue);}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.btn-secondary{background:var(--card2);border:1px solid var(--border);color:var(--text);padding:11px 18px;border-radius:10px;font-weight:700;font-size:13.5px;}
.btn-confirm{background:var(--blue);border:none;color:#fff;padding:11px 18px;border-radius:10px;font-weight:700;font-size:13.5px;}
.btn-danger-solid{background:var(--red);border:none;color:#fff;padding:11px 18px;border-radius:10px;font-weight:700;font-size:13.5px;}

.alert{padding:12px 16px;border-radius:10px;font-size:13.5px;margin-bottom:16px;}
.alert.ok{background:rgba(34,197,94,.12);color:var(--green);}
.alert.err{background:rgba(239,68,68,.12);color:var(--red);}

.cam-wrap{background:#000;border-radius:12px;overflow:hidden;position:relative;aspect-ratio:4/3;margin-bottom:14px;display:flex;align-items:center;justify-content:center;max-width:340px;}
.cam-wrap video,.cam-wrap img{width:100%;height:100%;object-fit:cover;}
.cam-wrap .cam-placeholder{color:var(--dim2);font-size:13px;}

.locked-note{background:var(--card);border:1px dashed var(--border);border-radius:var(--radius);padding:40px;text-align:center;color:var(--dim);}
.locked-note .ic{font-size:30px;margin-bottom:10px;color:var(--dim2);}

.mobile-menu-btn{display:none;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--border);color:var(--text);width:38px;height:38px;border-radius:10px;font-size:16px;flex-shrink:0;}
.sidebar-overlay{display:none;}

@media(max-width:820px){
  .sidebar{position:fixed;left:-260px;top:0;bottom:0;z-index:60;transition:left .2s ease;width:230px;box-shadow:none;}
  .sidebar.open{left:0;box-shadow:0 0 40px rgba(0,0,0,.5);}
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:55;}
  .sidebar-overlay.show{display:block;}
  .mobile-menu-btn{display:block;}
  .main{padding:16px;}
  .topbar{flex-wrap:wrap;}
  .form-2col{grid-template-columns:1fr;}
  .stat-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));}
  .search-box input{width:100%;}
  .toolbar,.toolbar-left{width:100%;}
  .card-table{padding:8px 10px;}
  table{font-size:12.5px;}
  th,td{padding:8px 6px;}
  .quick-grid{grid-template-columns:1fr 1fr;}
  .topbar form{width:100%;}
  .topbar form .tb-search{width:100% !important;}
}

@media(max-width:480px){
  .topbar h1{font-size:19px;}
  .date-chip{display:none;}
  .stat-grid{grid-template-columns:1fr 1fr;}
}