:root{
  --navy:#7C3AED; --navy2:#5B21B6; --blue:#7C3AED; --light:#EFE8FF;
  --green:#1e7d4f; --green-d:#166540;
  --bg:#F6F3FF; --card:#ffffff; --text:#1E1B2E; --muted:#6E6A85;
  --line:#E4DCFA; --danger:#DC2626; --radius:18px;
  --shadow:0 4px 14px rgba(124,58,237,.09);
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{font-family:"Segoe UI",Tahoma,Arial,"Noto Nastaliq Urdu",sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
[dir="rtl"] body{font-family:"Noto Nastaliq Urdu","Segoe UI",Tahoma,Arial,sans-serif}
h1,h2,h3,h4{margin:.4em 0;color:var(--navy);letter-spacing:-.01em}
h2{font-size:20px;font-weight:800;margin:2px 0 14px}
h3{font-size:15.5px;font-weight:700}
a{color:var(--navy)}
#app{min-height:100vh;display:flex;flex-direction:column}

/* ---------- header ---------- */
.topbar{background:linear-gradient(135deg,#7C3AED 0%,#9333EA 100%);color:#fff;padding:10px 14px;display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:50;box-shadow:0 2px 10px rgba(124,58,237,.30);border-bottom:1px solid var(--navy2)}
.topbar .logo{width:42px;height:42px;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;overflow:hidden;flex:0 0 auto;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.topbar .logo img{width:100%;height:100%;object-fit:cover}
.topbar .titles{flex:1;min-width:0}
.topbar .titles b{display:block;font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .titles span{font-size:11.5px;opacity:.85}
.iconbtn{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);color:#fff;border-radius:12px;min-width:38px;height:38px;font-size:16px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0 10px}
.iconbtn:active{background:rgba(255,255,255,.30)}
.netdot{width:10px;height:10px;border-radius:50%;background:#4ade80;display:inline-block;margin-inline-start:4px}
.netdot.off{background:#f87171}

/* ---------- layout ---------- */
.shell{flex:1;display:flex;min-height:0}
.sidenav{width:220px;background:#fff;border-inline-end:1px solid var(--line);padding:12px 8px;display:flex;flex-direction:column;gap:4px;position:sticky;top:63px;height:calc(100vh - 63px);overflow:auto}
.sidenav button{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:11px 12px;border-radius:14px;font-size:14px;color:var(--text);cursor:pointer;text-align:start;width:100%;font-family:inherit}
.sidenav button.active{background:var(--light);color:var(--navy);font-weight:700}
.sidenav button:hover{background:#F6F3FF}
.sidenav button .ic{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:12px;flex:0 0 auto;
  background:#EFE8FF;color:var(--navy);
}
.sidenav button .ic svg{width:22px;height:22px}
.sidenav button.active .ic{background:var(--navy);color:#fff}
.mainview{flex:1;padding:18px 16px;max-width:1100px;width:100%;margin:0 auto}
.bottomnav{display:none}

/* ---------- cards / stats ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 16px;margin-bottom:14px}
.card h3{margin-top:0}
.grid-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;cursor:pointer}
.stat-card .n{font-size:24px;font-weight:800;color:var(--navy);line-height:1.2}
.stat-card .l{font-size:12px;color:var(--muted);margin-top:2px}
.quickgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.quick{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 8px;text-align:center;cursor:pointer;box-shadow:var(--shadow)}
.quick .ic{font-size:22px;display:block;margin-bottom:6px;filter:grayscale(1);opacity:.9}
.quick span{font-size:12.5px;font-weight:600;color:var(--text)}
.quick:active{background:#EFE8FF}

/* ---------- forms / buttons ---------- */
.form-group{margin-bottom:12px}
.form-group label{display:block;font-weight:600;margin-bottom:5px;font-size:13.5px;color:var(--navy)}
input[type=text],input[type=number],input[type=date],input[type=password],input[type=file],select,textarea{width:100%;padding:10px 12px;border:1px solid #D6CBF5;border-radius:12px;font-size:14.5px;font-family:inherit;background:#fff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(124,58,237,.35);border-color:var(--navy)}
textarea{min-height:90px;resize:vertical}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>*{flex:1;min-width:140px}
.btn{border:0;border-radius:999px;padding:11px 20px;font-size:14.5px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px;justify-content:center;line-height:1.3;font-family:inherit}
.btn-primary{background:linear-gradient(135deg,#7C3AED 0%,#9333EA 100%);color:#fff;box-shadow:0 3px 10px rgba(124,58,237,.35)}
.btn-green{background:var(--green);color:#fff}
.btn-orange{background:#fff;color:var(--navy);border:1.5px solid var(--navy)}
.btn-navy{background:linear-gradient(135deg,#7C3AED 0%,#9333EA 100%);color:#fff}
.btn-ghost{background:#EFE8FF;color:var(--navy)}
.btn-danger{background:var(--danger);color:#fff}
.btn-sm{padding:7px 14px;font-size:13px}
.btn:active{filter:brightness(.94)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto;border-radius:14px;border:1px solid var(--line);background:#fff}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
.tbl th{background:var(--navy);color:#fff;padding:10px;text-align:start;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0}
.tbl td{padding:10px;border-bottom:1px solid var(--line)}
.tbl tr:nth-child(even) td{background:#FAF8FF}
.tbl tbody tr:hover td{background:#F3EDFF}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:700}
.b-green{background:#dcfce7;color:#15803d}.b-orange{background:#fef3c7;color:#b45309}.b-blue{background:#EDE9FE;color:#6D28D9}.b-red{background:#fee2e2;color:#b91c1c}.b-gray{background:#EFE8FF;color:#475569}

/* ---------- misc ---------- */
.empty{text-align:center;padding:30px 10px;color:var(--muted)}
.empty .ic{font-size:36px;display:block;margin-bottom:8px;filter:grayscale(1);opacity:.8}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input[type=text]{max-width:260px}
.chip{display:inline-block;background:var(--light);color:var(--navy);border-radius:16px;padding:4px 12px;font-size:12.5px;font-weight:600;margin:2px}
.notice{border:1px solid var(--line);border-inline-start:4px solid var(--navy);background:#FBF8FF;border-radius:12px;padding:10px 14px;margin-bottom:10px}
.notice b{color:var(--navy)} .notice small{color:var(--muted)}
.tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:12px}
.tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font-size:13.5px;font-weight:600;cursor:pointer;white-space:nowrap;color:var(--navy);font-family:inherit}
.tabs button.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.qcard{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px;background:#fff}
.qcard .qhead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.qcard .qtype{font-size:11px;font-weight:800;color:var(--navy);text-transform:uppercase;letter-spacing:.04em}
.qcard .qmarks{font-size:12px;color:var(--muted)}
.qcard .qtext{font-size:14.5px}
.qcard .qopts{margin:6px 0 0 18px;font-size:13.5px;color:#334155}
.qa{border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin:4px 0;background:#FAF8FF}
.chatbox{display:flex;flex-direction:column;gap:8px;max-height:55vh;overflow:auto;padding:6px}
.msg{max-width:88%;padding:10px 14px;border-radius:16px;font-size:14px}
.msg.bot{background:#fff;border:1px solid var(--line);align-self:flex-start;border-start-start-radius:6px}
.msg.me{background:linear-gradient(135deg,#7C3AED 0%,#9333EA 100%);color:#fff;align-self:flex-end;border-start-end-radius:6px}
.chatbar{display:flex;gap:8px;margin-top:10px}
.chatbar input{flex:1}
.att-grid{display:grid;gap:6px}
.att-row{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.att-row .nm{flex:1;font-size:13.5px}
.seg{display:flex;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.seg button{flex:1;border:0;background:#fff;padding:8px 4px;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--muted);font-family:inherit}
.seg button.on-p{background:var(--green);color:#fff}
.seg button.on-a{background:var(--danger);color:#fff}
.seg button.on-l{background:#64748b;color:#fff}

/* ---------- auth / wizard ---------- */
.centerwrap{max-width:440px;margin:6vh auto;padding:0 16px}
.authcard{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 6px 24px rgba(124,58,237,.14);padding:26px 22px;text-align:center}
.authcard .logo-big{font-size:48px;filter:grayscale(1)}
.rolegrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.rolecard{border:2px solid var(--line);border-radius:16px;padding:16px 8px;cursor:pointer;background:#fff;font-family:inherit}
.rolecard .ic{font-size:28px;filter:grayscale(1)}
.rolecard.sel{border-color:var(--navy);background:var(--light)}
.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:230px;margin:12px auto}
.pinpad button{font-size:20px;padding:12px;border-radius:14px;border:1px solid var(--line);background:#fff;cursor:pointer;font-weight:700;color:var(--navy);font-family:inherit}
.pinpad button:active{background:#EFE8FF}
.pindots{font-size:26px;letter-spacing:8px;color:var(--navy);min-height:36px}
.steps{display:flex;gap:6px;justify-content:center;margin-bottom:14px}
.steps i{width:26px;height:6px;border-radius:4px;background:var(--line)}
.steps i.on{background:var(--navy)}

/* ---------- toast / modal ---------- */
#toast-root{position:fixed;bottom:86px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:var(--navy2);color:#fff;padding:11px 20px;border-radius:999px;font-size:14px;box-shadow:0 4px 16px rgba(0,0,0,.25);animation:tin .25s}
@keyframes tin{from{opacity:0;transform:translateY(10px)}}
#modal-root{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(46,16,101,.5);z-index:300;padding:16px}
#modal-root.show{display:flex}
.modal{background:#fff;border:1px solid var(--line);border-radius:20px;max-width:440px;width:100%;padding:22px;box-shadow:0 10px 40px rgba(0,0,0,.25)}

/* ---------- print ---------- */
#print-root{display:none}
@media print{
  #app,#toast-root,#modal-root{display:none!important}
  #print-root{display:block!important}
  body{background:#fff}
  .print-doc{font-family:Georgia,"Times New Roman",serif;color:#000;max-width:100%}
  .print-doc h1{text-align:center;font-size:20px;margin:4px 0}
  .print-doc .phead{text-align:center;border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:12px}
  .print-doc .pmeta{display:flex;justify-content:space-between;font-size:13px;margin-bottom:10px;flex-wrap:wrap;gap:6px}
  .print-doc .pq{margin-bottom:10px;font-size:14.5px}
  .print-doc .pq .marks{float:right;font-weight:bold}
  .print-doc table{width:100%;border-collapse:collapse;font-size:13px}
  .print-doc th,.print-doc td{border:1px solid #000;padding:6px}
}

/* ---------- bottom nav: purple active icons, gray inactive, clean spacing ---------- */
@media (max-width:820px){
  .sidenav{display:none}
  .mainview{padding:12px 12px 92px}
  h2{font-size:18px}
  .bottomnav{
    display:flex;align-items:stretch;
    position:fixed;bottom:0;left:0;right:0;z-index:60;
    overflow-x:auto;scrollbar-width:none;
    background:rgba(255,255,255,.96);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    border-top:1px solid var(--line);
    box-shadow:0 -4px 16px rgba(124,58,237,.10);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));
    gap:0;
  }
  .bottomnav::-webkit-scrollbar{display:none}
  .bottomnav button{
    flex:1 0 60px;min-width:60px;max-width:96px;
    display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;
    background:none;border:none;cursor:pointer;
    padding:6px 2px 2px;margin:0;
    color:#9AA1B5;font-size:10px;font-weight:600;line-height:1.25;letter-spacing:.01em;
    position:relative;font-family:inherit;
  }
  .bottomnav button .ic{display:flex;align-items:center;justify-content:center;width:24px;height:24px}
  .bottomnav button .ic svg{width:24px;height:24px;stroke-width:2}
  .bottomnav button .lbl{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bottomnav button.active{color:#7C3AED}
  .bottomnav button.active .lbl{font-weight:800}
  .bottomnav button.active::before{
    content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
    width:26px;height:4px;border-radius:99px;background:#7C3AED;
  }
  .grid-stats{grid-template-columns:repeat(3,1fr)}
  .stat-card .n{font-size:20px}
}

/* ---------- account auth + /admin ---------- */
.netdot.syncing{background:#fbbf24;animation:ndpulse 1s ease-in-out infinite}
@keyframes ndpulse{50%{opacity:.3}}
.authtabs{display:flex;background:var(--light);border-radius:999px;padding:4px;margin-bottom:16px}
.authtabs button{flex:1;border:none;background:none;padding:9px;border-radius:999px;font-weight:700;font-size:14px;color:var(--muted);cursor:pointer;font-family:inherit}
.authtabs button.on{background:#fff;color:var(--navy);box-shadow:0 1px 4px rgba(124,58,237,.16)}
.adminwrap{max-width:640px;margin:0 auto;padding:16px 14px 40px}
.admintop{background:linear-gradient(135deg,#7C3AED 0%,#9333EA 100%);color:#fff;border-radius:var(--radius);padding:16px;display:flex;align-items:center;gap:12px;margin-bottom:14px;box-shadow:0 4px 14px rgba(124,58,237,.25)}
.admintop .logo{width:46px;height:46px;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:26px;flex:0 0 auto}
.admintop .titles b{display:block;font-size:16px}
.admintop .titles span{font-size:12.5px;opacity:.8}
.kv{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv:last-child{border-bottom:none}
.kv span{color:var(--muted)}
.kv b{text-align:end;font-weight:700;color:var(--text)}
.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.stat{background:var(--light);border-radius:14px;padding:12px 6px;text-align:center}
.stat b{display:block;font-size:20px;color:var(--navy)}
.stat span{font-size:11.5px;color:var(--muted)}
.card.danger{border-color:#f3c2c2}
.card.danger h3{color:var(--danger)}
