:root{
  --navy:#0f2540;--navy2:#1a3a5c;--navy3:#234d78;
  --orange:#e8500a;--orange2:#f06830;
  --gold:#d4960a;--gold2:#f0b429;
  --green:#0a6b3a;--green2:#148f52;
  --red:#b91c1c;--red2:#dc2626;
  --bg:#e8ecf4;--surface:#ffffff;--surface2:#f4f6fb;
  --border:#d1d8e8;--border2:#b8c4d8;
  --text:#0d1b2a;--text2:#2d3f55;--muted:#6b7a90;
  --shadow:0 2px 14px rgba(15,37,64,.10);
  --shadow2:0 8px 32px rgba(15,37,64,.18);
  --radius:10px;--radius2:14px;
}
*{box-sizing:border-box;margin:0;padding:0;}
/* scrollbar-gutter se jagah hamesha ghiri rehti hai —
   isliye locked page par bhi chaudai nahi badalti, topbar nahi katta */
html{scrollbar-gutter:stable;}
html,body{height:100%;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);font-size:14px;
  display:flex;flex-direction:column;}
#app{flex:1;display:flex;flex-direction:column;min-height:0;}

/* Table wale page — sirf table scroll hota hai, page nahi.
   JS ye class body par lagata/hatata hai. Dashboard par nahi lagti. */
body.locked{overflow:hidden;}

/* TOP BAR — brand | tabs | user */
.topbar{
  background:linear-gradient(135deg,var(--navy) 0%,var(--navy2) 100%);
  color:#fff;padding:0 20px;display:flex;align-items:center;gap:20px;
  box-shadow:var(--shadow2);height:58px;flex-shrink:0;z-index:300;position:relative;
}
.tb-brand{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.tb-logo{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:1rem;letter-spacing:.5px;white-space:nowrap;}
.tb-sub{font-size:10.5px;opacity:.7;margin-top:1px;white-space:nowrap;}
.tb-badge{
  font-family:'Rajdhani',sans-serif;font-weight:700;font-size:.8rem;letter-spacing:1px;
  background:var(--orange);color:#fff;padding:3px 9px;border-radius:5px;
}

/* TABS — topbar ke andar */
.tb-nav{display:flex;gap:2px;flex:1;overflow-x:auto;align-self:stretch;align-items:stretch;}
.tb-nav::-webkit-scrollbar{display:none;}
.nav-btn{
  padding:0 16px;border:none;background:transparent;cursor:pointer;white-space:nowrap;
  font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;color:rgba(255,255,255,.72);
  border-bottom:3px solid transparent;transition:.15s;
}
.nav-btn:hover{color:#fff;background:rgba(255,255,255,.08);}
.nav-btn.active{color:#fff;background:rgba(255,255,255,.12);border-bottom-color:var(--orange);}

/* USER — naam sirf dikhane ke liye, click nahi hota */
.tb-user{display:flex;align-items:center;gap:9px;flex-shrink:0;}
.tb-avatar{
  width:32px;height:32px;border-radius:50%;background:var(--orange);
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:14px;color:#fff;flex-shrink:0;
}
.tb-uwrap{line-height:1.25;}
.tb-uname{font-size:12.5px;font-weight:600;white-space:nowrap;}
.tb-urole{font-size:10px;opacity:.65;text-transform:capitalize;}
.tb-logout{
  width:32px;height:32px;border:1px solid rgba(255,255,255,.22);border-radius:7px;
  background:transparent;color:#fff;cursor:pointer;font-size:14px;
  display:flex;align-items:center;justify-content:center;transition:.15s;
}
.tb-logout:hover{background:var(--red);border-color:var(--red);}
.tb-burger{
  display:none;width:34px;height:34px;border:1px solid rgba(255,255,255,.22);border-radius:7px;
  background:transparent;color:#fff;cursor:pointer;font-size:16px;
  align-items:center;justify-content:center;
}

/* CONTENT */
.content{max-width:1440px;margin:0 auto;padding:14px;width:100%;}
body.locked .content{flex:1;min-height:0;display:flex;flex-direction:column;}
body:not(.locked) .content{overflow-y:auto;}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
.page-title{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:1.5rem;color:var(--navy);}

.card{background:var(--surface);border-radius:var(--radius2);padding:22px;
  box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:20px;}
.card h3{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:1.15rem;color:var(--navy2);
  padding-left:10px;border-left:4px solid var(--orange);margin-bottom:14px;}

label{display:block;font-size:12px;font-weight:600;margin:14px 0 6px;color:var(--text2);
  text-transform:uppercase;letter-spacing:.3px;}
input[type=text],input[type=password],input[type=file]{
  width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);
  font-size:14px;font-family:'DM Sans',sans-serif;background:var(--surface2);color:var(--text);
}
input:focus{outline:none;border-color:var(--orange);}
.hint{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.5;}

button.primary{
  margin-top:20px;background:var(--orange);color:#fff;border:none;padding:12px 24px;
  border-radius:var(--radius);font-size:14.5px;font-weight:600;cursor:pointer;
  font-family:'DM Sans',sans-serif;transition:.15s;
}
button.primary:hover{background:var(--orange2);}
button.primary:disabled{background:var(--border2);cursor:not-allowed;}

.msg{margin-top:12px;font-size:13.5px;font-weight:500;}
.msg.ok{color:var(--green);}
.msg.err{color:var(--red);}

table{width:100%;border-collapse:separate;border-spacing:0;margin:0;font-size:13px;}

/* Table apne dabbe me scroll hota hai — page nahi */
.tbl-scroll{flex:1;min-height:0;overflow:auto;border-radius:var(--radius);}
.tbl-scroll::-webkit-scrollbar{width:10px;height:10px;}
.tbl-scroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:8px;border:2px solid var(--surface);}
.tbl-scroll::-webkit-scrollbar-thumb:hover{background:#9aa8bd;}

/* Table wala card baaki jagah le leta hai */
.card-fill{flex:1;min-height:0;display:flex;flex-direction:column;margin-bottom:0;padding:14px;}
tr:hover td{background:var(--surface2);}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);}
th{background:var(--navy);color:#fff;font-weight:600;font-size:11px;
  text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;
  position:sticky;top:0;z-index:10;}
.status-SENT{color:var(--green);font-weight:600;}
.status-FAILED{color:var(--red);font-weight:600;}
.status-delivered{color:var(--navy3);}
.status-read{color:var(--green2);}
.status-yes{color:var(--green);font-weight:600;}
.status-no{color:var(--muted);}

.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:0;}

/* STAT CARDS (dashboard) */
.stats-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius2);
  box-shadow:var(--shadow);padding:12px 16px;margin-bottom:12px;flex-shrink:0;}
.stats-head{display:flex;align-items:baseline;gap:16px;margin-bottom:10px;flex-wrap:wrap;}
.stats-note{font-size:12.5px;color:var(--muted);line-height:1.5;flex:1;min-width:240px;}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius2);
  padding:16px 18px;text-align:left;box-shadow:var(--shadow);
  border-left:4px solid var(--border2);transition:.15s;}
.stat-card:hover{box-shadow:var(--shadow2);}
.stat-card .label{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;font-weight:600;}
.stat-card .value{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:26px;color:var(--navy);margin-top:2px;}
.stat-card.total .value{color:var(--navy);}
.stat-card.sent .value{color:var(--green);}
.stat-card.failed .value{color:var(--red);}
.stat-card.delivered .value{color:var(--navy3);}
.stat-card.read .value{color:var(--green2);}
.stat-card.replied .value{color:var(--orange);}

.stat-card.total{border-left-color:var(--navy);}
.stat-card.sent{border-left-color:var(--green);}
.stat-card.failed{border-left-color:var(--red);}
.stat-card.delivered{border-left-color:var(--navy3);}
.stat-card.read{border-left-color:var(--green2);}
.stat-card.replied{border-left-color:var(--orange);}

.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.chart-box{background:#fff;border-radius:var(--radius2);padding:16px;margin-bottom:14px;
  border:1px solid var(--border);box-shadow:var(--shadow);height:280px;position:relative;}
.chart-grid .chart-box{margin-bottom:0;}
.chart-box canvas{max-width:100%;}

.loading{padding:40px;text-align:center;color:var(--muted);}

.spinner{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;
  border-radius:50%;animation:spin .7s linear infinite;margin-right:8px;vertical-align:middle;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ===== AUTH ADDITIONS — loader, user chip ===== */
.page-loader{
  position:fixed;inset:0;background:var(--bg);z-index:9999;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
}
.pl-spinner{
  width:38px;height:38px;border:3px solid var(--border2);border-top-color:var(--orange);
  border-radius:50%;animation:plspin .7s linear infinite;
}
@keyframes plspin{to{transform:rotate(360deg);}}
.pl-text{font-size:13px;color:var(--muted);font-weight:500;}

/* ===== RESPONSIVE — header ===== */
@media(max-width:1150px){
  .tb-sub{display:none;}
}
@media(max-width:900px){
  .topbar{padding:0 14px;gap:10px;}
  .tb-burger{display:flex;}
  .tb-uwrap{display:none;}
  .tb-logo{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;}

  /* tb-nav absolute ho gaya, isliye brand ko jagah lene do —
     warna user daayein kone me na jaake beech me hi ruk jaata hai */
  .tb-brand{flex:1;min-width:0;}

  /* Tabs ab dropdown ban jaate hain */
  .tb-nav{
    position:absolute;top:58px;left:0;right:0;
    flex-direction:column;background:var(--navy2);
    box-shadow:var(--shadow2);padding:6px;gap:2px;
    display:none;z-index:400;overflow:visible;
  }
  .tb-nav.open{display:flex;}
  .nav-btn{
    padding:13px 16px;text-align:left;border-bottom:none;
    border-left:3px solid transparent;border-radius:6px;font-size:14px;
  }
  .nav-btn.active{border-bottom-color:transparent;border-left-color:var(--orange);}
}
@media(max-width:560px){
  .tb-logo{font-size:.8rem;}
  .content{padding:10px;}
}

/* ===== RESEND / ATTEMPTS ===== */
.mini{font-size:11.5px;padding:4px 11px;border-radius:6px;border:none;font-family:inherit;font-weight:600;cursor:pointer;}
.mini-fix{background:var(--gold2);color:#3a2800;}
.mini-fix:hover{background:var(--gold);color:#fff;}
.mini-dl{background:var(--surface2);color:var(--text2);border:1px solid var(--border2);}
.mini-dl:hover{background:#eaf0fa;border-color:var(--navy3);}
.mini-dl:disabled{color:var(--border2);border-color:var(--border);background:var(--surface2);cursor:not-allowed;}
.mini-dl:disabled:hover{background:var(--surface2);border-color:var(--border);}
.dl-i{display:none;}

.redo{
  display:inline-flex;align-items:center;justify-content:center;gap:1px;
  margin-left:6px;background:var(--gold2);color:#3a2800;
  font-size:10px;font-weight:700;padding:1px 6px;border-radius:9px;cursor:pointer;
}
.redo:hover{background:var(--gold);color:#fff;}

.cms-ov{position:fixed;inset:0;background:rgba(15,37,64,.45);display:flex;align-items:center;justify-content:center;z-index:100;}
.cms-modal{background:var(--surface);border-radius:var(--radius2);padding:24px;width:420px;max-width:92vw;max-height:86vh;overflow-y:auto;box-shadow:var(--shadow2);}
.cms-modal h3{font-family:'Rajdhani',sans-serif;font-size:1.25rem;margin-bottom:4px;}
.cms-sub{font-size:12.5px;color:var(--muted);margin-bottom:16px;}
.cms-modal label{display:block;font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-bottom:5px;}
.cms-modal input{width:100%;padding:9px 12px;border:1px solid var(--border2);border-radius:7px;font-family:inherit;font-size:14px;}
.cms-old{font-size:11.5px;color:var(--muted);margin-top:7px;}
.cms-old s{color:var(--red);}
.cms-msg{font-size:12.5px;margin-top:10px;}
.cms-msg.err{color:var(--red);}
.cms-btns{display:flex;gap:9px;justify-content:flex-end;margin-top:18px;}
.btn-grey{background:var(--surface2);color:var(--text2);border:1px solid var(--border2);padding:9px 17px;border-radius:7px;font-family:inherit;font-weight:600;font-size:13px;cursor:pointer;}
.btn-orange{background:var(--orange);color:#fff;border:none;padding:9px 20px;border-radius:7px;font-family:inherit;font-weight:600;font-size:13px;cursor:pointer;}
.btn-orange:disabled{background:var(--border2);cursor:not-allowed;}

.att-wrap{display:flex;flex-direction:column;gap:9px;margin-bottom:4px;}
.att{border-left:3px solid var(--border2);background:var(--surface2);border-radius:7px;padding:9px 11px;}
.att-FAILED{border-left-color:var(--red);}
.att-SENT{border-left-color:var(--green);}
.att-h{font-size:12px;font-weight:700;}
.att-p{font-size:13px;margin-top:3px;}
.att-r{font-size:11.5px;color:var(--red);margin-top:3px;line-height:1.45;}
.att-m{font-size:10.5px;color:var(--muted);margin-top:4px;}

/* ===== FILTER BAR ===== */
.filter-bar{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius2);
  box-shadow:var(--shadow);padding:10px 14px;margin-bottom:12px;
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;flex-shrink:0;
}
.f-in{
  padding:8px 12px;border:1px solid var(--border2);border-radius:7px;
  font-family:inherit;font-size:13px;color:var(--text);background:var(--surface);height:36px;
}
.f-in:focus{outline:none;border-color:var(--navy3);}
.f-grow{flex:1;min-width:200px;}
.f-reset,.f-more{
  width:36px;height:36px;border:1px solid var(--border2);border-radius:7px;
  background:var(--surface);cursor:pointer;font-size:15px;color:var(--muted);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.f-reset:hover,.f-more:hover{background:#eaf0fa;border-color:var(--navy3);color:var(--navy3);}
.f-more{display:none;}
@media(max-width:820px){.f-more{display:flex;}}
.filter-bar .mini-dl{margin:0;margin-left:auto;height:36px;}

/* ===== PREVIEW SCREEN ===== */
.pv-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.pv-warn{background:#fdf6e3;border:1px solid #f0dca8;border-left:3px solid var(--gold);
  border-radius:7px;padding:10px 13px;font-size:13px;color:#6b5200;margin-bottom:16px;}

.dupe{border:1px solid #f0dca8;background:#fdfaf2;border-radius:9px;padding:12px 14px;margin-bottom:12px;}
.dupe-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  font-size:13.5px;margin-bottom:9px;}
.dupe-acts{display:flex;gap:7px;}
.mini-merge{background:var(--navy3);color:#fff;}
.mini-merge:hover{background:var(--navy2);}
.mini-keep{background:var(--surface);color:var(--text2);border:1px solid var(--border2);}
.mini-keep:hover{background:#eaf0fa;}
.dupe-row{display:flex;gap:16px;align-items:center;font-size:12.5px;color:var(--text2);
  padding:5px 0 5px 12px;border-left:2px solid var(--border2);}
.dupe-row span{min-width:100px;}

.pv-table{width:100%;border-collapse:collapse;font-size:13px;}
.pv-table th{text-align:left;padding:8px 6px;background:var(--surface2);color:var(--muted);
  font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  border-bottom:1px solid var(--border);
  position:sticky;top:112px;z-index:10;box-shadow:inset 0 -1px 0 var(--border);}
.pv-table td{padding:3px 6px;border-bottom:1px solid var(--surface2);}
.pv-table .rn{color:var(--muted);font-size:11.5px;width:34px;}
.row-bad{background:#fdf4f4;}

.cell-in{border:1px solid transparent;background:transparent;border-radius:5px;
  padding:6px 8px;font-family:inherit;font-size:13px;color:var(--text);}
.cell-in:hover{border-color:var(--border);background:var(--surface);}
.cell-in:focus{outline:none;border-color:var(--navy3);background:var(--surface);}
.cell-in[readonly]{color:var(--text2);cursor:default;}
.cell-in[readonly]:hover{border-color:transparent;background:transparent;}
td.bad .cell-in{border-color:#f3c9c9;background:#fdecec;}

.x{border:none;background:transparent;color:var(--border2);cursor:pointer;
  font-size:14px;padding:4px 7px;border-radius:5px;line-height:1;}
.x:hover{background:#fdecec;color:var(--red);}

/* Preview card poori bachi jagah lega, andar list scroll hogi */
#previewArea{flex:1;min-height:0;display:flex;flex-direction:column;}
#previewArea > .card{flex:1;min-height:0;display:flex;flex-direction:column;margin-bottom:0;}
#previewArea .tbl-scroll{flex:1;min-height:0;}
.pv-foot{display:flex;justify-content:space-between;align-items:center;gap:14px;
  margin-top:14px;padding-top:14px;border-top:1px solid var(--border);flex-shrink:0;}
.pv-count{font-size:13px;color:var(--muted);}

td.clickable{cursor:pointer;}
td.clickable:hover{background:#fdecec !important;}
td.clickable .status-FAILED{text-decoration:underline dotted;text-underline-offset:3px;}
.pv-table th{position:sticky;top:0;z-index:10;background:var(--navy);color:#fff;
  white-space:nowrap;box-shadow:none;}

  /* ===== RESPONSIVE ===== */

/* Cards desktop par chhupe rehte hain */
.rows{display:none;}

@media(max-width:820px){
  /* Table gayab, cards hazir */
  .tbl-scroll table{display:none;}
  .rows{display:flex;flex-direction:column;gap:8px;padding-bottom:6px;}
  .card-fill{background:transparent;border:none;box-shadow:none;padding:0;}

  /* Chaaron cards ek line me — jaisa mockup me tha */
  .stats-grid,.summary{grid-template-columns:repeat(4,1fr);gap:6px;}
  .stat-card{padding:8px 6px;text-align:center;border-left-width:3px;}
  .stat-card .value{font-size:18px;margin-top:0;line-height:1.2;}
  .stat-card .label{font-size:8.5px;letter-spacing:.2px;}
  .stats-note{display:none;}
  .stats-wrap{padding:11px;}
  .stats-head{margin-bottom:10px;}

  /* Charts ek ke neeche ek */
  .chart-grid{grid-template-columns:1fr;gap:0;}
  .chart-grid .chart-box{margin-bottom:14px;}
  .chart-box{height:250px;padding:12px;}

  /* Filter — pehli line me search + ⚙ + ⤓ (flex, taaki koi khaali dabba na bane) */
  .filter-bar{display:flex;flex-wrap:wrap;gap:7px;padding:9px;}
  .f-grow{flex:1 1 100px;min-width:0;order:1;}
  .f-more{order:2;}
  .filter-bar .mini-dl{order:3;margin:0;width:36px;height:36px;padding:0;
    display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;}
  .dl-t{display:none;}
  .dl-i{display:block;}

  /* Reset phone par sirf tab dikhta hai jab ⚙ khula ho — status ke bagal me */
  .f-reset{display:none;}
  .filter-bar.more .f-reset{display:flex;order:6;flex-shrink:0;}

  /* ⚙ dabane par doosri line — date do-do barabar, status poori chaudai */
  .filter-bar .f-in[type=date],.filter-bar select{display:none;}

  /* Ye khaali cheez line tod deti hai — warna date upar wali line me ghus jaate hain */
  .filter-bar::after{content:"";flex-basis:100%;height:0;order:3;display:none;}
  .filter-bar.more::after{display:block;}

  .filter-bar.more .f-in[type=date]{display:block;flex:1 1 calc(50% - 4px);min-width:0;order:4;}
  .filter-bar.more select{display:block;flex:1 1 calc(100% - 43px);min-width:0;order:5;}

  .chart-box{height:230px;}
  .cms-modal{width:100%;max-width:100%;border-radius:18px;padding:20px 16px 16px;}
  .cms-ov{align-items:flex-end;padding:0 10px 10px;}
  .cms-modal input{font-size:16px;padding:11px 12px;}
  .cms-btns{margin-top:16px;}
  .btn-grey,.btn-orange{flex:1;padding:12px;}
  .pv-foot{flex-wrap:nowrap;gap:10px;}
  .pv-foot .primary{white-space:nowrap;}
}

@media(max-width:480px){
  input[type=text],input[type=password]{font-size:16px;}
  .stat-card .value{font-size:16px;}
  .stat-card .label{font-size:8px;}
  .stat-card{padding:7px 4px;}
}

/* ===== HISTORY CARD ===== */
.rcard{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--green);
  border-radius:11px;padding:11px 13px;box-shadow:var(--shadow);}
.rcard.failed{border-left-color:var(--red);cursor:pointer;}
.rcard.failed:active{background:#fdf4f4;}
.rc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:9px;}
.rc-name{font-weight:700;font-size:14px;line-height:1.3;}
.rc-phone{font-size:12px;color:var(--muted);margin-top:2px;}
.badge{font-size:9.5px;font-weight:700;padding:3px 8px;border-radius:11px;
  letter-spacing:.3px;flex-shrink:0;white-space:nowrap;}
.b-SENT{background:#e3f5eb;color:var(--green);}
.b-FAILED{background:#fdecec;color:var(--red);}
.rc-mid{margin-top:9px;padding-top:9px;border-top:1px solid #eef1f6;
  display:flex;justify-content:space-between;gap:10px;align-items:baseline;}
.rc-amt{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:17px;color:var(--navy);}
.rc-inv{font-size:12px;color:var(--text2);margin-top:3px;word-break:break-word;}
.rc-due{font-size:11.5px;color:var(--muted);text-align:right;flex-shrink:0;}
.rc-bot{margin-top:8px;display:flex;justify-content:space-between;gap:8px;
  font-size:10.5px;color:var(--muted);align-items:center;}
.rc-tags{display:flex;gap:5px;}
.tag{font-size:9px;font-weight:700;padding:2px 6px;border-radius:9px;background:var(--surface2);color:var(--muted);}
.tag.d{background:#e9eefa;color:var(--navy3);}
.tag.r{background:#fff2e8;color:var(--orange);}
.tap-hint{font-size:10px;color:var(--red);font-weight:600;white-space:nowrap;}

/* ===== PREVIEW CARD ===== */
.pcard{background:var(--surface);border:1px solid var(--border);border-radius:11px;
  padding:11px 13px;box-shadow:var(--shadow);border-left:4px solid var(--border2);}
.pcard.bad{border-left-color:var(--red);background:#fefafa;}
.pc-h{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.pc-n{font-weight:700;font-size:13.5px;}
.pc-x{border:none;background:transparent;color:var(--border2);font-size:15px;padding:2px 6px;cursor:pointer;}
.pc-x:active{color:var(--red);}
.pc-g{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px;}
.pc-f{display:flex;flex-direction:column;gap:3px;}
.pc-f.full{grid-column:1/-1;}
.pc-l{font-size:8.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
.pc-in{border:1px solid var(--border);background:var(--surface2);border-radius:6px;
  padding:9px;font-family:inherit;font-size:16px;color:var(--text);width:100%;}
.pc-in.err{border-color:#f3c9c9;background:#fdecec;}

/* ============ INBOX ============ */
.nav-badge{
  display:none;background:var(--orange);color:#fff;font-size:9.5px;font-weight:700;
  padding:1px 5px;border-radius:9px;margin-left:5px;vertical-align:2px;min-width:16px;
  text-align:center;line-height:1.5;
}

.inbox{
  flex:1;min-height:0;display:grid;grid-template-columns:290px 1fr 250px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius2);
  box-shadow:var(--shadow);overflow:hidden;margin-bottom:0;
}
/* Baaki pages ki tarah neeche thodi jagah — warna dabba kinare se chipak jaata hai */
body.locked .content{padding-bottom:14px;}

/* ---- chat list ---- */
.chatlist{border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;}
.cl-head{padding:11px;border-bottom:1px solid var(--border);flex-shrink:0;}
.cl-search{width:100%;padding:8px 11px;border:1px solid var(--border2);border-radius:7px;
  font-family:inherit;font-size:13px;background:var(--surface2);}
.cl-search:focus{outline:none;border-color:var(--navy3);}
.chips{display:flex;gap:5px;margin-top:9px;}
.chip{font-size:11px;padding:4px 9px;border-radius:20px;border:1px solid var(--border2);
  background:var(--surface);cursor:pointer;color:var(--muted);font-weight:600;white-space:nowrap;}
.chip.on{background:var(--navy3);border-color:var(--navy3);color:#fff;}
.cl-scroll{overflow-y:auto;flex:1;min-height:0;}

.ci{display:flex;gap:10px;padding:11px 12px;border-bottom:1px solid var(--surface2);
  cursor:pointer;transition:.12s;}
.ci:hover{background:var(--surface2);}
.ci.on{background:#eaf0fa;border-left:3px solid var(--orange);padding-left:9px;}
.ci-av{width:36px;height:36px;border-radius:50%;background:var(--navy3);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0;}
.ci-body{flex:1;min-width:0;}
.ci-top{display:flex;justify-content:space-between;align-items:baseline;gap:6px;}
.ci-name{font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ci-time{font-size:10.5px;color:var(--muted);flex-shrink:0;}
.ci-last{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;margin-top:2px;}
.ci-meta{display:flex;gap:5px;margin-top:5px;align-items:center;flex-wrap:wrap;}
.pill{font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:10px;white-space:nowrap;}
.pill-open{background:#e3f5eb;color:var(--green);}
.pill-soon{background:#fdf3d9;color:#8a6200;}
.pill-shut{background:#f2f4f8;color:var(--muted);}
.pill-user{background:#e9eefa;color:var(--navy3);}
.unread{background:var(--orange);color:#fff;font-size:10px;font-weight:700;min-width:18px;
  height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  padding:0 5px;margin-left:auto;}

/* ---- conversation ---- */
.convo{display:flex;flex-direction:column;min-height:0;background:var(--surface2);}
.convo-empty{margin:auto;color:var(--muted);font-size:13px;}
.cv-head{background:var(--surface);padding:10px 16px;border-bottom:1px solid var(--border);
  display:flex;justify-content:space-between;align-items:center;gap:12px;flex-shrink:0;}
.cv-back,.cv-info{display:none;width:32px;height:32px;border:1px solid var(--border2);
  border-radius:7px;background:var(--surface);cursor:pointer;font-size:15px;color:var(--text2);
  align-items:center;justify-content:center;flex-shrink:0;}
.cv-who{display:flex;align-items:center;gap:10px;min-width:0;}
.cv-name{font-weight:700;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cv-phone{font-size:11.5px;color:var(--muted);}
.cv-act{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.sel{padding:6px 9px;border:1px solid var(--border2);border-radius:7px;
  font-family:inherit;font-size:12px;background:var(--surface);color:var(--text2);}
.timer{font-size:11.5px;font-weight:700;padding:5px 10px;border-radius:7px;white-space:nowrap;}
.timer-open{background:#e3f5eb;color:var(--green);}
.timer-shut{background:#fdecec;color:var(--red);}

.msgs{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:9px;}
.daysep{text-align:center;font-size:11px;color:var(--muted);margin:6px 0;}
.b{max-width:70%;padding:9px 13px;border-radius:12px;font-size:13.5px;line-height:1.5;
  box-shadow:0 1px 3px rgba(15,37,64,.08);white-space:pre-line;word-break:break-word;}
.b-in{background:var(--surface);align-self:flex-start;border-bottom-left-radius:3px;}
.b-out{background:#dcf3e4;align-self:flex-end;border-bottom-right-radius:3px;}
.b-tpl{background:#fff6ec;align-self:flex-end;border-bottom-right-radius:3px;
  border-left:3px solid var(--orange2);}
.b-foot{font-size:10px;color:var(--muted);margin-top:5px;text-align:right;}
.tick{color:#2b7cd3;font-weight:700;margin-left:3px;}
.tick.read{color:#2b7cd3;}
.tick.fail{color:var(--red);}
.tag{font-size:9.5px;font-weight:700;color:var(--orange);letter-spacing:.3px;
  margin-bottom:4px;display:block;}

.composer{background:var(--surface);border-top:1px solid var(--border);padding:10px 14px;flex-shrink:0;}
.qr{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap;}
.qr-b{font-size:11.5px;padding:4px 10px;border-radius:14px;border:1px solid var(--border2);
  background:var(--surface2);cursor:pointer;color:var(--text2);}
.qr-b:hover{background:#eaf0fa;border-color:var(--navy3);}
.cbox{display:flex;gap:9px;align-items:flex-end;}
.cbox textarea{flex:1;padding:9px 12px;border:1px solid var(--border2);border-radius:9px;
  font-family:inherit;font-size:14px;resize:none;min-height:40px;max-height:110px;}
.cbox textarea:focus{outline:none;border-color:var(--navy3);}
.send-b{background:var(--orange);color:#fff;border:none;padding:10px 20px;border-radius:9px;
  font-family:inherit;font-weight:600;font-size:13.5px;cursor:pointer;flex-shrink:0;}
.send-b:hover{background:var(--orange2);}
.send-b:disabled{background:var(--border2);cursor:not-allowed;}

/* Naam .locked nahi rakh sakte — body par bhi wahi class lagti hai (scroll lock ke liye) */
.win-closed{background:#fdecec;border:1px solid #f3c9c9;border-radius:9px;padding:12px 14px;}
.locked-t{font-weight:700;color:var(--red);font-size:13px;margin-bottom:3px;}
.locked-s{font-size:12.5px;color:var(--text2);line-height:1.5;}
.locked-b{margin-top:9px;background:var(--navy3);color:#fff;border:none;padding:8px 15px;
  border-radius:7px;font-family:inherit;font-weight:600;font-size:12.5px;cursor:pointer;}
.locked-b:hover{background:var(--navy2);}

/* ---- contact panel ---- */
.side{border-left:1px solid var(--border);padding:16px 14px;overflow-y:auto;
  background:var(--surface);position:relative;}
.side-x{display:none;position:absolute;top:10px;right:10px;border:none;background:transparent;
  font-size:16px;color:var(--muted);cursor:pointer;}
.s-av{width:52px;height:52px;border-radius:50%;background:var(--navy3);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;
  margin:0 auto 10px;}
.s-name{text-align:center;font-weight:700;font-size:14.5px;}
.s-ph{text-align:center;font-size:12px;color:var(--muted);margin-top:2px;}
.s-sec{font-size:10px;font-weight:700;color:var(--muted);letter-spacing:.7px;margin:16px 0 7px;}
.s-row{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;padding:5px 0;
  border-bottom:1px solid var(--surface2);}
.s-row b{font-weight:600;text-align:right;}

/* ---- mobile: ek waqt me ek hi panel ---- */
@media(max-width:900px){
  .inbox{grid-template-columns:minmax(0,1fr);position:relative;}
  /* Bina min-width:0 ke andar ka content dabbe se chauda ho jaata hai */
  .chatlist{min-width:0;}
  .cl-search{max-width:100%;}
  .ci-body{min-width:0;}
  .convo,.side{position:absolute;inset:0;z-index:5;display:none;}
  .inbox.on-convo .chatlist{display:none;}
  .inbox.on-convo .convo{display:flex;}
  .inbox.on-side .side{display:block;z-index:6;}
  .cv-back,.cv-info{display:flex;}
  .side-x{display:block;}
  .cv-act .sel{max-width:110px;}
  .b{max-width:82%;}
  .cbox textarea{font-size:16px;}
}

/* Inbox ke scrollbar bhi table jaise patle */
.cl-scroll::-webkit-scrollbar,
.msgs::-webkit-scrollbar,
.side::-webkit-scrollbar{width:8px;}
.cl-scroll::-webkit-scrollbar-thumb,
.msgs::-webkit-scrollbar-thumb,
.side::-webkit-scrollbar-thumb{
  background:var(--border2);border-radius:8px;border:2px solid transparent;background-clip:content-box;
}
.cl-scroll::-webkit-scrollbar-thumb:hover,
.msgs::-webkit-scrollbar-thumb:hover,
.side::-webkit-scrollbar-thumb:hover{background:#9aa8bd;background-clip:content-box;}

/* ===== INBOX HEADER ICONS — sirf phone par ===== */
.cv-icon{
  display:none;height:32px;min-width:32px;padding:0 8px;border:1px solid var(--border2);
  border-radius:7px;background:var(--surface);cursor:pointer;font-size:13px;
  align-items:center;justify-content:center;gap:3px;flex-shrink:0;font-weight:700;
}
.cv-win.open{background:#e3f5eb;border-color:#bfe3cd;color:var(--green);font-size:11.5px;}
.cv-win.shut{background:#fdecec;border-color:#f3c9c9;}
.cv-assign.on{background:#fff2e8;border-color:#f8d2b8;}

/* Assign sheet */
.as-list{display:flex;flex-direction:column;gap:2px;margin-top:4px;}
.as-row{display:flex;align-items:center;gap:11px;padding:11px 10px;border-radius:9px;cursor:pointer;}
.as-row:hover{background:var(--surface2);}
.as-row.on{background:#eaf0fa;}
.as-av{width:32px;height:32px;border-radius:50%;background:var(--navy3);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;}
.as-n{flex:1;font-size:14px;font-weight:600;}
.as-tick{color:var(--green);font-weight:700;font-size:15px;}

@media(max-width:900px){
  /* Naam ko poori jagah — dropdown aur lambi patti hata do */
  .cv-act .sel,.cv-act .timer{display:none;}
  .cv-icon{display:flex;}
  .cv-head{padding:9px 12px;gap:8px;}
  .cv-act{gap:6px;}
  .cv-who{flex:1;}

  /* Assign sheet — chaaron taraf thodi jagah, taaki kinare se na chipke */
  .as-ov{align-items:flex-end;padding:0 10px 10px;}
  .as-ov .cms-modal{
    border-radius:18px;padding:10px 16px 14px;
    animation:sheetUp .26s cubic-bezier(.2,.8,.3,1);
  }
  /* Upar ki chhoti patti — bataati hai ki ye sheet hai */
  .as-ov .cms-modal::before{
    content:"";display:block;width:38px;height:4px;border-radius:3px;
    background:var(--border2);margin:0 auto 14px;
  }
  .as-ov .as-row{padding:13px 10px;}
}
@keyframes sheetUp{from{transform:translateY(100%);}to{transform:translateY(0);}}

/* ===== SETTINGS TABS ===== */
/* stats-wrap ke andar baithti hai — isliye apna card/shadow nahi chahiye */
.stabs{display:flex;gap:0;background:var(--surface2);border:1px solid var(--border);
  border-radius:var(--radius2);padding:5px;position:relative;}

/* Ye patti tabs ke peeche khiskti hai — isliye rang kudta nahi, slide hota hai */
.stabs::before{
  content:"";position:absolute;top:5px;bottom:5px;
  width:var(--tab-w,0);left:var(--tab-x,5px);
  background:var(--navy3);border-radius:9px;
  transition:left .28s cubic-bezier(.4,0,.2,1), width .28s cubic-bezier(.4,0,.2,1);
}
.stab{flex:1;padding:10px 16px;border:none;background:transparent;cursor:pointer;
  font-family:inherit;font-size:13.5px;font-weight:600;color:var(--muted);border-radius:9px;
  display:flex;align-items:center;justify-content:center;gap:7px;
  transition:color .2s;position:relative;z-index:1;}
/* Sirf rang badle — koi background nahi, warna patti pahunchne se pehle hi neela dikh jaata hai */
.stab:hover{color:var(--navy);background:transparent !important;}
.stab.on:hover{color:#fff;}
/* Dabate waqt Chrome khud halka neela laga deta hai — usko rok do,
   warna patti pahunchne se pehle hi wahan rang aa jaata hai */
.stab:active{background:transparent !important;}
.stab{-webkit-tap-highlight-color:transparent;user-select:none;}
.stab.on{color:#fff;}
/* Chrome click ke baad button par halka neela highlight laga deta hai — hata do.
   Keyboard se Tab dabane par nishaan phir bhi dikhega. */
.stab:focus{outline:none;}
.stab:focus-visible{outline:2px solid var(--orange);outline-offset:-2px;}
.stab::-moz-focus-inner{border:0;}
.stab .n{background:var(--surface2);color:var(--muted);font-size:10.5px;padding:1px 6px;border-radius:9px;}
.stab.on .n{background:rgba(255,255,255,.22);color:#fff;}

/* ===== TEMPLATE TAB ===== */
.tpl-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;
  flex-wrap:wrap;margin-bottom:14px;}
.tpl-name{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:1.05rem;
  color:var(--navy);margin-bottom:7px;}
.tpl-meta{display:flex;gap:7px;flex-wrap:wrap;align-items:center;}
.tchip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;
  background:var(--surface2);color:var(--text2);border:1px solid var(--border);}
.tchip.ok{background:#e3f5eb;color:var(--green);border-color:#bfe3cd;}
.tchip.warn{background:#fdf3d9;color:#8a6200;border-color:#f0dca8;}
.tchip.bad{background:#fdecec;color:var(--red);border-color:#f3c9c9;}
.btn-refresh{background:var(--surface);border:1px solid var(--border2);color:var(--text2);
  padding:8px 15px;border-radius:8px;font-family:inherit;font-weight:600;font-size:12.5px;
  cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;}
.btn-refresh:hover{background:#eaf0fa;border-color:var(--navy3);color:var(--navy3);}
.btn-refresh:disabled{color:var(--border2);border-color:var(--border);cursor:not-allowed;}

.tpl-body{background:var(--surface2);border:1px solid var(--border);border-radius:11px;
  padding:16px 18px;font-size:13.5px;line-height:1.65;white-space:pre-line;color:var(--text2);}
.tpl-body .v{background:#fff2e8;color:var(--orange);font-weight:600;
  padding:1px 5px;border-radius:4px;border:1px solid #f8d2b8;}
.tpl-foot{font-size:11.5px;color:var(--muted);margin-top:11px;display:flex;
  justify-content:space-between;gap:12px;flex-wrap:wrap;}
.tpl-note{background:#eaf0fa;border-left:3px solid var(--navy3);border-radius:8px;
  padding:10px 13px;font-size:12.5px;color:var(--text2);line-height:1.55;margin-top:14px;}

/* ===== QUICK REPLIES TAB ===== */
.qr-add{display:flex;gap:9px;margin:16px 0;}
.qr-add input{flex:1;}
.qr-add button{background:var(--navy3);color:#fff;border:none;padding:0 20px;
  border-radius:var(--radius);font-family:inherit;font-weight:600;font-size:13.5px;
  cursor:pointer;white-space:nowrap;}
.qr-add button:hover{background:var(--navy2);}
.qr-list{display:flex;flex-direction:column;gap:8px;}
.qr-item{display:flex;align-items:center;gap:12px;background:var(--surface2);
  border:1px solid var(--border);border-radius:10px;padding:11px 14px;}
.qr-item.dragging{opacity:.45;}
.qr-grip{color:var(--border2);cursor:grab;font-size:14px;user-select:none;}
.qr-grip:active{cursor:grabbing;}
.qr-text{flex:1;font-size:13.5px;word-break:break-word;}
.qr-del{border:none;background:transparent;color:var(--border2);cursor:pointer;
  font-size:15px;padding:4px 8px;border-radius:6px;}
.qr-del:hover{background:#fdecec;color:var(--red);}
.qr-empty{color:var(--muted);font-size:13px;text-align:center;padding:24px;}

.saved{font-size:11.5px;color:var(--green);margin-top:5px;font-weight:600;}
.wh-box{background:var(--surface2);border:1px solid var(--border);border-radius:9px;
  padding:11px 14px;margin-top:10px;font-size:12.5px;line-height:1.7;color:var(--text2);}
.wh-box code{font-size:11.5px;background:var(--surface);padding:2px 6px;
  border-radius:4px;border:1px solid var(--border);word-break:break-all;}

@media(max-width:820px){
  .stabs{padding:4px;}
  .stab{padding:9px 8px;font-size:12.5px;}
  .qr-add button{padding:0 16px;flex-shrink:0;}
  .tpl-head{flex-direction:column;}
  .btn-refresh{width:100%;justify-content:center;}
}

/* ===== SETUP TAB — countries ===== */
.ct-add{display:flex;gap:9px;}
.ct-add #ctName{flex:2;}
.ct-add #ctCode{flex:0 0 110px;}
.ct-code{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:14px;
  color:var(--navy3);background:#e9eefa;border:1px solid #d3dcf0;
  padding:3px 9px;border-radius:7px;min-width:52px;text-align:center;flex-shrink:0;}

@media(max-width:820px){
  /* Naam aur code dono chhote hain — ek hi line me aa jaate hain */
  .ct-add{flex-wrap:nowrap;gap:7px;}
  .ct-add #ctName{flex:1 1 auto;min-width:0;}
  .ct-add #ctCode{flex:0 0 82px;min-width:0;}
  .ct-add button{flex:0 0 auto;padding:0 16px;}
}