/* ============================================================
   Q9BOT Hub — member/admin portal
   Accents from q9bot.com: lime #AEE317, cyan #1ED3F3.
   Two themes; the boot script in <head> stamps data-theme on <html>.
   ============================================================ */

:root,
:root[data-theme="dark"]{
  --lime:#AEE317;
  --cyan:#1ED3F3;

  --bg:#0E151B;
  --panel:#18222B;
  --panel-2:#1F2B35;
  --panel-3:#141D25;
  --card-bg:linear-gradient(180deg,#18222B 0%,#141D25 100%);
  --ref-bg:linear-gradient(120deg,#17251B,#152530);
  --topbar-bg:rgba(14,21,27,.92);
  --tabbar-bg:rgba(24,34,43,.97);

  --border:rgba(174,227,23,.18);
  --border-soft:rgba(255,255,255,.10);
  --border-strong:rgba(255,255,255,.24);
  --row-border:rgba(255,255,255,.07);
  --row-hover:rgba(255,255,255,.035);

  --heading:#FFFFFF;
  --text:#C4CFD8;
  --label:#DFE6EB;
  --muted:#8E9BA5;
  --placeholder:#6B7883;

  --link:#1ED3F3;
  --link-hover:#AEE317;
  --grad-1:#AEE317;
  --grad-2:#1ED3F3;

  --ok-bg:rgba(174,227,23,.12);
  --ok-fg:#C3DC6E;
  --info-bg:rgba(30,211,243,.12);
  --info-fg:#5FDDF7;
  --danger:#FF6B6B;
  --danger-bg:rgba(255,77,79,.09);
  --danger-border:rgba(255,77,79,.38);
  --danger-fg:#FF9A9A;
  --chip-bg:rgba(255,255,255,.06);

  --shadow:0 24px 60px -30px rgba(0,0,0,.8);
  --radius:16px;
  --sidebar-w:250px;
}

:root[data-theme="light"]{
  --bg:#F2F6F8;
  --panel:#FFFFFF;
  --panel-2:#F4F8FA;
  --panel-3:#EAF0F4;
  --card-bg:#FFFFFF;
  --ref-bg:linear-gradient(120deg,#F0F8E4,#E6F6FB);
  --topbar-bg:rgba(255,255,255,.94);
  --tabbar-bg:rgba(255,255,255,.97);

  --border:rgba(23,52,66,.14);
  --border-soft:rgba(23,52,66,.13);
  --border-strong:rgba(23,52,66,.28);
  --row-border:rgba(23,52,66,.09);
  --row-hover:rgba(23,52,66,.035);

  --heading:#10212B;
  --text:#4A5B67;
  --label:#22333E;
  --muted:#6C7C88;
  --placeholder:#93A2AD;

  /* the neon accents need darkening to stay readable on white */
  --link:#0B7E9B;
  --link-hover:#5B8A0C;
  --grad-1:#5B8A0C;
  --grad-2:#0B7E9B;

  --ok-bg:rgba(106,142,10,.14);
  --ok-fg:#4A7008;
  --info-bg:rgba(11,126,155,.13);
  --info-fg:#0A6980;
  --danger:#D9403F;
  --danger-bg:rgba(217,64,63,.08);
  --danger-border:rgba(217,64,63,.32);
  --danger-fg:#B62D2C;
  --chip-bg:rgba(23,52,66,.055);

  --shadow:0 20px 44px -28px rgba(16,33,43,.45);
}

*,*::before,*::after{box-sizing:border-box;}

html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:"Urbanist","Plus Jakarta Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

a{color:var(--link);text-decoration:none;transition:color .25s ease;}
a:hover{color:var(--link-hover);}
h1,h2,h3,h4,h5{color:var(--heading);font-weight:700;margin:0 0 12px;line-height:1.25;}
h1{font-size:31px;}
h2{font-size:25px;}
h3{font-size:21px;}
h4{font-size:18px;}
p{margin:0 0 14px;}
img{max-width:100%;height:auto;}

/* ---------- wordmark ---------- */
.wordmark{
  font-weight:800;font-size:27px;letter-spacing:-.5px;line-height:1;
  display:inline-block;text-decoration:none;white-space:nowrap;
}
.wordmark .q9{
  background:linear-gradient(180deg,var(--grad-2) 0%,#3055EB 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.wordmark .bot{color:var(--grad-1);}
.wordmark .hub{color:var(--muted);font-weight:600;font-size:16px;margin-left:6px;letter-spacing:0;}

/* ---------- theme toggle ---------- */
.theme-toggle{
  width:42px;height:42px;flex:0 0 42px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--panel-2);border:1px solid var(--border-soft);border-radius:12px;
  color:var(--label);cursor:pointer;padding:0;transition:all .25s ease;
}
.theme-toggle:hover{border-color:var(--link);color:var(--link);}
.theme-toggle .moon{display:none;}
:root[data-theme="dark"] .theme-toggle .sun{display:none;}
:root[data-theme="dark"] .theme-toggle .moon{display:block;}
.auth-toggle{position:absolute;top:20px;right:20px;z-index:5;}

/* ============================================================
   AUTH PAGES
   ============================================================ */
.auth-wrap{
  min-height:100vh;min-height:100dvh;
  display:flex;align-items:center;justify-content:center;
  padding:32px 18px;position:relative;overflow:hidden;
}
.auth-wrap::before{
  content:"";position:absolute;top:-200px;left:50%;transform:translateX(-50%);
  width:760px;height:520px;pointer-events:none;
  background:radial-gradient(circle at 50% 40%,rgba(30,211,243,.14),transparent 65%);
}
.auth-card{
  position:relative;width:100%;max-width:450px;
  background:var(--card-bg);
  border:1px solid var(--border);border-radius:22px;
  padding:38px 32px;box-shadow:var(--shadow);
}
.auth-head{text-align:center;margin-bottom:26px;}
.auth-head .wordmark{font-size:33px;margin-bottom:14px;}
.auth-head h1{font-size:25px;margin-bottom:8px;}
.auth-head p{color:var(--text);font-size:16px;margin:0;}
.auth-foot{text-align:center;margin-top:22px;font-size:15.5px;color:var(--text);}
.auth-foot a{font-weight:600;}

/* ============================================================
   FORMS
   ============================================================ */
.field{margin-bottom:18px;}
.field label{
  display:block;color:var(--label);font-size:15px;font-weight:600;
  margin-bottom:7px;letter-spacing:.2px;
}
.field .hint{color:var(--muted);font-size:14px;margin-top:7px;line-height:1.55;}

input[type=text],input[type=email],input[type=password],input[type=tel],
input[type=search],input[type=file],select,textarea{
  width:100%;
  background:var(--panel-2);
  border:1px solid var(--border-soft);
  border-radius:12px;
  color:var(--heading);
  /* 16px keeps iOS from zooming the viewport on focus */
  font-size:16px;
  font-family:inherit;
  padding:13px 15px;
  min-height:48px;
  transition:border-color .25s ease,box-shadow .25s ease;
  appearance:none;
}
textarea{min-height:110px;resize:vertical;}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--link);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--link) 22%,transparent);
}
input::placeholder,textarea::placeholder{color:var(--placeholder);}
input:disabled,input[readonly]{background:var(--panel-3);color:var(--muted);cursor:not-allowed;}
select{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 4.5l4 4 4-4' stroke='%238E9BA5' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:12px;
  padding-right:38px;
}
input[type=file]{padding:10px 12px;font-size:15px;color:var(--text);}
input[type=file]::file-selector-button{
  background:var(--ok-bg);color:var(--ok-fg);border:0;border-radius:8px;
  padding:8px 14px;margin-right:12px;font-family:inherit;font-weight:600;cursor:pointer;
}

.check{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none;padding:6px 0;}
.check input[type=checkbox]{
  width:21px;height:21px;min-height:0;flex:0 0 auto;margin:0;padding:0;cursor:pointer;
  /* appearance:none is required — the native box ignores background and renders stark white */
  appearance:none;-webkit-appearance:none;
  background:var(--panel-2);border:1px solid var(--border-strong);border-radius:5px;
  transition:background .2s ease,border-color .2s ease;
}
.check input[type=checkbox]:hover{border-color:var(--link);}
.check input[type=checkbox]:focus-visible{
  outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--link) 22%,transparent);
}
.check input[type=checkbox]:checked{
  background:var(--lime);border-color:var(--lime);
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3.2 3.2L13 5' stroke='%23070C0F' stroke-width='2.2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-size:14px;background-position:center;background-repeat:no-repeat;
}
.check span{font-size:15.5px;color:var(--text);}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:0 26px;border-radius:67px;border:1px solid transparent;
  font-family:inherit;font-size:15.5px;font-weight:700;line-height:1;
  cursor:pointer;transition:all .25s ease;text-align:center;white-space:nowrap;
}
.btn-primary{background:linear-gradient(135deg,var(--lime),var(--cyan));color:#070C0F;}
.btn-primary:hover{color:#070C0F;filter:brightness(1.06);box-shadow:0 14px 34px -16px rgba(30,211,243,.7);}
.btn-ghost{background:transparent;border-color:var(--border-strong);color:var(--label);}
.btn-ghost:hover{border-color:var(--link);color:var(--link);}
.btn-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-fg);}
.btn-danger:hover{border-color:var(--danger);color:var(--danger);}
.btn-block{width:100%;}
.btn-sm{min-height:38px;padding:0 16px;font-size:14.5px;}

/* ---------- alerts / errors ---------- */
.alert{
  border-radius:12px;padding:14px 18px;margin-bottom:20px;font-size:15px;
  display:flex;gap:10px;align-items:flex-start;line-height:1.55;
}
.alert-success{background:var(--ok-bg);border:1px solid var(--border);color:var(--ok-fg);}
.alert-error{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger-fg);}
.alert ul{margin:0;padding-left:18px;}
.err{color:var(--danger);font-size:14px;margin-top:6px;display:block;}

/* ============================================================
   APP SHELL
   ============================================================ */
.shell{display:flex;min-height:100vh;min-height:100dvh;}

/* ---------- sidebar (desktop) ---------- */
.sidebar{
  width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
  background:var(--panel);border-right:1px solid var(--border-soft);
  padding:24px 16px;display:flex;flex-direction:column;gap:6px;
  position:fixed;top:0;bottom:0;left:0;z-index:60;overflow-y:auto;
}
.sidebar .brand{padding:0 10px 22px;display:flex;align-items:center;justify-content:space-between;}
.sidebar .nav-label{
  color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1.2px;
  font-weight:700;padding:16px 12px 8px;
}
.nav-link{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border-radius:12px;min-height:46px;
  color:var(--text);font-size:15.5px;font-weight:600;
  transition:background .2s ease,color .2s ease;
}
.nav-link:hover{background:var(--panel-2);color:var(--heading);}
.nav-link.active{background:var(--ok-bg);color:var(--ok-fg);}
.nav-link .ic{width:20px;text-align:center;flex:0 0 20px;}
.sidebar form{margin:0;}
.sidebar .spacer{flex:1;}

/* ---------- main column ---------- */
.main{
  flex:1;min-width:0;margin-left:var(--sidebar-w);
  display:flex;flex-direction:column;
}
.topbar{
  position:sticky;top:0;z-index:50;
  background:var(--topbar-bg);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border-soft);
  padding:14px 22px;display:flex;align-items:center;gap:12px;
}
.topbar h1{font-size:20px;margin:0;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.burger{
  display:none;width:44px;height:44px;flex:0 0 44px;
  align-items:center;justify-content:center;
  background:var(--panel-2);border:1px solid var(--border-soft);border-radius:12px;
  color:var(--label);cursor:pointer;padding:0;
}
.topbar .avatar{flex:0 0 auto;}
.content{padding:26px 22px 34px;flex:1;}

/* ---------- avatar ---------- */
.avatar{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,var(--lime),var(--cyan));
  color:#070C0F;font-weight:800;font-size:15px;
  display:inline-flex;align-items:center;justify-content:center;
  overflow:hidden;flex:0 0 auto;
}
.avatar img{width:100%;height:100%;object-fit:cover;}
.avatar-lg{width:82px;height:82px;font-size:28px;}

/* ---------- cards / panels ---------- */
.card{
  background:var(--card-bg);
  border:1px solid var(--border);border-radius:var(--radius);
  padding:24px;margin-bottom:20px;box-shadow:var(--shadow);
}
.card-head{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin-bottom:18px;
}
.card-head h3{margin:0;}
.card-head .sub{color:var(--muted);font-size:15px;margin:3px 0 0;line-height:1.5;}

.grid{display:grid;gap:18px;}
.grid.c2{grid-template-columns:repeat(2,1fr);}
.grid.c3{grid-template-columns:repeat(3,1fr);}
.grid.c4{grid-template-columns:repeat(4,1fr);}

/* ---------- stat tiles ---------- */
.stat{
  background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);padding:20px;
  transition:transform .3s ease,border-color .3s ease;
}
.stat:hover{transform:translateY(-4px);border-color:var(--link);}
.stat .ic{
  width:42px;height:42px;border-radius:11px;margin-bottom:14px;
  background:linear-gradient(135deg,var(--lime),var(--cyan));color:#070C0F;
  display:flex;align-items:center;justify-content:center;
}
.stat .num{font-size:33px;font-weight:800;color:var(--heading);line-height:1;}
.stat .lbl{color:var(--muted);font-size:13.5px;text-transform:uppercase;
  letter-spacing:.8px;margin-top:9px;font-weight:700;}

/* ---------- referral link box ---------- */
.ref-box{
  background:var(--ref-bg);
  border:1px solid var(--border);border-radius:18px;
  padding:26px;margin-bottom:20px;position:relative;overflow:hidden;
}
.ref-box > *{position:relative;}
.ref-label{
  color:var(--muted);font-size:13.5px;text-transform:uppercase;
  letter-spacing:1px;font-weight:700;
}
.ref-code{
  font-size:32px;font-weight:800;letter-spacing:2px;
  background:linear-gradient(135deg,var(--grad-1),var(--grad-2));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  margin:4px 0 16px;word-break:break-all;
}
.ref-note{color:var(--muted);font-size:14.5px;margin:16px 0 0;line-height:1.6;}
.copy-row{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap;}
.copy-row input{flex:1 1 240px;font-size:15px;min-height:46px;}
.copy-row .btn{flex:0 0 auto;}

/* ---------- tables → cards on mobile ---------- */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table{width:100%;border-collapse:collapse;font-size:15.5px;}
thead th{
  text-align:left;color:var(--muted);font-size:12.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:1px;
  padding:0 14px 12px;border-bottom:1px solid var(--border-soft);white-space:nowrap;
}
tbody td{padding:14px;border-bottom:1px solid var(--row-border);color:var(--text);vertical-align:middle;}
tbody tr:last-child td{border-bottom:0;}
tbody tr{transition:background .2s ease;}
tbody tr:hover{background:var(--row-hover);}
td .name{color:var(--heading);font-weight:600;}
.user-cell{display:flex;align-items:center;gap:12px;min-width:0;}
.user-cell .meta{min-width:0;}
.user-cell .meta div{overflow:hidden;text-overflow:ellipsis;}
.user-cell small{color:var(--muted);font-size:14px;display:block;}

/* ---------- badges / chips ---------- */
.badge{
  display:inline-block;font-size:12px;font-weight:700;text-transform:uppercase;
  letter-spacing:.5px;padding:5px 11px;border-radius:30px;white-space:nowrap;
}
.badge-active{background:var(--ok-bg);color:var(--ok-fg);}
.badge-suspended{background:var(--danger-bg);color:var(--danger-fg);}
.badge-admin{background:var(--info-bg);color:var(--info-fg);}
.badge-level{background:var(--chip-bg);color:var(--text);}
.code-chip{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;
  background:var(--chip-bg);border:1px solid var(--border-soft);
  padding:4px 9px;border-radius:7px;color:var(--text);white-space:nowrap;
}

/* ---------- filter bar ---------- */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px;}
.filters input[type=search]{flex:1 1 220px;min-width:0;}
.filters select{flex:0 1 160px;}
.filters .btn{flex:0 0 auto;}

/* ---------- empty state ---------- */
.empty{text-align:center;padding:44px 20px;color:var(--muted);}
.empty .ic{color:var(--link);opacity:.4;margin-bottom:14px;width:36px;height:36px;}
.empty p{margin:0 0 6px;font-size:16px;}
.empty .hint-text{font-size:14.5px;}

/* ---------- genealogy tree ---------- */
.tree-legend{
  display:flex;gap:18px;flex-wrap:wrap;align-items:center;
  font-size:14px;color:var(--text);margin-bottom:14px;
}
.tree-legend .dot{
  display:inline-block;width:10px;height:10px;border-radius:50%;
  margin-right:7px;vertical-align:middle;
}
.tree-legend .dot-you{background:linear-gradient(135deg,var(--lime),var(--cyan));}
.tree-legend .dot-active{background:var(--link);}
.tree-legend .dot-suspended{background:var(--danger);}

.tree-scroll{
  overflow:auto;-webkit-overflow-scrolling:touch;
  background:var(--panel-2);border:1px solid var(--border-soft);
  border-radius:14px;padding:8px;max-height:70vh;
}
.tree-scroll:focus-visible{outline:2px solid var(--link);outline-offset:2px;}
.tree-svg{display:block;font-family:inherit;}

.tree-links path{stroke:var(--border-strong);stroke-width:1.6;}

.tree-node rect{
  fill:var(--panel);stroke:var(--border-soft);stroke-width:1;
  transition:stroke .2s ease,fill .2s ease;
}
.tree-node .pip{fill:var(--link);}
.tree-node .pip-text{fill:var(--panel);font-size:12px;font-weight:800;}
.tree-node .name{fill:var(--heading);font-size:14px;font-weight:700;}
.tree-node .meta{fill:var(--muted);font-size:11.5px;font-weight:600;}

.tree-node.is-root rect{stroke:var(--lime);stroke-width:1.8;}
.tree-node.is-root .pip{fill:url(#treeYou);}
.tree-node.is-suspended .pip{fill:var(--danger);}
.tree-node.is-suspended .name{fill:var(--muted);}

a.tree-node{cursor:pointer;}
a.tree-node:hover rect{stroke:var(--link);fill:var(--panel-3);}

.tree-note{color:var(--muted);font-size:14px;margin:12px 0 0;}

/* ---------- level section (collapsible) ---------- */
.level-card{padding:0;overflow:hidden;}
.level-card + .level-card{margin-top:-8px;}

.level-head{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin:0;padding:16px 20px;cursor:pointer;list-style:none;
  min-height:56px;user-select:none;transition:background .2s ease;
}
.level-head::-webkit-details-marker{display:none;}
.level-head:hover{background:var(--row-hover);}
.level-head:focus-visible{outline:2px solid var(--link);outline-offset:-2px;}
.level-head h3{margin:0;font-size:19px;flex:1;min-width:0;}

.level-head .chev{
  display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;flex:0 0 26px;border-radius:8px;
  background:var(--chip-bg);color:var(--muted);
  transition:transform .25s ease,color .2s ease;
}
.level-card[open] .level-head .chev{transform:rotate(90deg);color:var(--link);}
.level-card[open] .level-head{border-bottom:1px solid var(--border-soft);}

/* Long levels scroll inside the card instead of stretching the page. */
.level-body{
  max-height:min(58vh,420px);overflow-y:auto;
  padding:14px 20px 18px;
}
.level-body thead th{position:sticky;top:0;background:var(--panel);z-index:1;padding-top:6px;}

/* ---------- pagination ---------- */
.pagination{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;
  margin-top:22px;padding:0;list-style:none;}
.pagination a,.pagination span{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:42px;height:42px;padding:0 12px;border-radius:11px;
  background:var(--panel-2);border:1px solid var(--border-soft);
  color:var(--text);font-size:15px;font-weight:600;
}
.pagination a:hover{border-color:var(--link);color:var(--link);}
.pagination .active span{background:var(--ok-bg);border-color:var(--border);color:var(--ok-fg);}
.pagination .disabled span{opacity:.35;}

/* ---------- misc ---------- */
.muted{color:var(--muted);}
.divider{height:1px;background:var(--border-soft);margin:24px 0;border:0;}
.stack-gap{display:flex;gap:12px;flex-wrap:wrap;}
.kv{display:grid;grid-template-columns:140px 1fr;gap:11px 16px;font-size:15.5px;}
.kv dt{color:var(--muted);}
.kv dd{margin:0;color:var(--label);overflow-wrap:anywhere;}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(14px);
  background:var(--panel-2);border:1px solid var(--border);border-radius:30px;
  padding:11px 22px;color:var(--ok-fg);font-size:15px;font-weight:600;
  opacity:0;pointer-events:none;transition:all .3s ease;z-index:200;white-space:nowrap;
  box-shadow:var(--shadow);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ---------- mobile drawer bits (hidden on desktop) ---------- */
.backdrop{display:none;}
.tabbar{display:none;}

/* ============================================================
   RESPONSIVE — the portal is used mostly on phones
   ============================================================ */
@media(max-width:1100px){
  .grid.c4{grid-template-columns:repeat(2,1fr);}
}

@media(max-width:900px){
  .grid.c3{grid-template-columns:repeat(2,1fr);}
}

@media(max-width:768px){
  h1{font-size:25px;}
  h2{font-size:21px;}

  /* sidebar becomes a slide-in drawer */
  .sidebar{
    transform:translateX(-100%);
    transition:transform .3s ease;
    width:270px;flex-basis:270px;
    box-shadow:0 0 60px rgba(0,0,0,.45);
  }
  body.drawer-open .sidebar{transform:translateX(0);}
  .backdrop{
    display:block;position:fixed;inset:0;z-index:55;
    background:rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity .3s ease;
  }
  body.drawer-open .backdrop{opacity:1;pointer-events:auto;}
  body.drawer-open{overflow:hidden;}

  .main{margin-left:0;}
  .burger{display:inline-flex;}
  .topbar{padding:12px 16px;gap:10px;}
  .topbar h1{font-size:18px;}
  .content{padding:18px 16px 24px;}
  .card{padding:18px;border-radius:14px;}
  .level-card{padding:0;}
  .level-head{padding:14px 16px;gap:10px;}
  .level-head h3{font-size:17px;}
  .level-body{padding:12px 16px 14px;max-height:min(62vh,480px);}
  .ref-box{padding:20px;}
  .ref-code{font-size:26px;}

  .grid.c2,.grid.c3,.grid.c4{grid-template-columns:repeat(2,1fr);gap:12px;}
  .stat{padding:16px;}
  .stat .num{font-size:28px;}
  .stat .ic{width:36px;height:36px;margin-bottom:10px;}
  .stat .lbl{font-size:12.5px;}

  .kv{grid-template-columns:1fr;gap:2px 0;}
  .kv dt{margin-top:12px;font-size:13.5px;text-transform:uppercase;letter-spacing:.6px;}

  /* tables restack as cards — no horizontal scrolling on a phone */
  table thead{display:none;}
  table,tbody,tr,td{display:block;width:100%;}
  tbody tr{
    background:var(--panel-2);border:1px solid var(--border-soft);
    border-radius:14px;padding:14px;margin-bottom:12px;
  }
  tbody tr:hover{background:var(--panel-2);}
  tbody td{
    border:0;padding:6px 0;display:flex;gap:14px;
    align-items:center;justify-content:space-between;
  }
  tbody td::before{
    content:attr(data-label);color:var(--muted);font-size:12.5px;
    font-weight:700;text-transform:uppercase;letter-spacing:.8px;flex:0 0 auto;
  }
  tbody td:not([data-label]){justify-content:flex-start;}
  tbody td[data-label=""]::before{display:none;}
  td .user-cell{justify-content:flex-end;text-align:right;}
  td.actions{padding-top:12px;margin-top:6px;border-top:1px solid var(--border-soft);}
  td.actions .btn{flex:1;}

  /* bottom tab bar for one-thumb navigation */
  .tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;
    background:var(--tabbar-bg);backdrop-filter:blur(12px);
    border-top:1px solid var(--border-soft);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .tabbar a,.tabbar button{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:4px;min-height:54px;padding:6px 2px;
    background:none;border:0;font-family:inherit;cursor:pointer;
    color:var(--muted);font-size:11.5px;font-weight:700;
    text-transform:uppercase;letter-spacing:.3px;
  }
  .tabbar a.active{color:var(--ok-fg);}
  .tabbar form{flex:1;display:flex;margin:0;}
  .content{padding-bottom:86px;}
  .toast{bottom:88px;}

  .filters{gap:8px;}
  .filters input[type=search]{flex:1 1 100%;}
  .filters select{flex:1 1 calc(50% - 4px);}
  .filters .btn{flex:1 1 100%;}

  .auth-card{padding:28px 20px;border-radius:18px;}
  .auth-head .wordmark{font-size:29px;}
  .auth-toggle{top:14px;right:14px;}
}

@media(max-width:420px){
  .grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr;}
  .copy-row .btn{width:100%;}
}
