/* ══════════════════════════════════════════════════
   DESIGN TOKENS
══════════════════════════════════════════════════ */
:root{
  color-scheme: dark;
  --bg:       #0b1117;
  --bg2:      #111920;
  --bg3:      #161f28;
  --card:     #192330;
  --card2:    #1e2a38;
  --border:   #243040;
  --border2:  #2d3f52;

  --green:    #22d3a0;
  --green2:   #16b88a;
  --green3:   #0e8f6c;
  --green-bg: rgba(34,211,160,.10);
  --green-glow: rgba(34,211,160,.18);

  --blue:     #4ab3f4;
  --blue-bg:  rgba(74,179,244,.10);
  --yellow:   #f5c518;
  --yellow-bg:rgba(245,197,24,.10);
  --red:      #f43f5e;
  --red-bg:   rgba(244,63,94,.10);
  --purple:   #a78bfa;

  --text:     #e2eaf2;
  --text2:    #7a9ab5;
  --text3:    #4e6a82;

  --font-ui:  'Plus Jakarta Sans', sans-serif;
  --font-hd:  'Space Grotesk', sans-serif;

  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-full: 9999px;

  --shadow-sm: 0 1px 3px rgba(0,0,0,.3);
  --shadow-md: 0 4px 16px rgba(0,0,0,.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,.5);

  --sidebar-w: 240px;
  --topbar-h:  60px;
  --transition: .18s cubic-bezier(.4,0,.2,1);
}

/* ══════════════════════════════════════════════════
   RESET & BASE
══════════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-ui);
  font-size:14px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none;}
button{font-family:var(--font-ui);cursor:pointer;}
input,textarea,select{font-family:var(--font-ui);}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;}
::-webkit-scrollbar-thumb:hover{background:var(--text3);}

/* ══════════════════════════════════════════════════
   AUTH SCREEN
══════════════════════════════════════════════════ */
#auth-screen{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:100vh;
  padding:20px;
  background:
    radial-gradient(ellipse 70% 50% at 80% -5%, rgba(34,211,160,.12), transparent),
    radial-gradient(ellipse 50% 40% at 5% 95%, rgba(34,211,160,.07), transparent),
    var(--bg);
}
.auth-wrap{
  display:flex;
  gap:64px;
  align-items:center;
  max-width:960px;
  width:100%;
}
.auth-hero{flex:1;display:none;}
@media(min-width:860px){.auth-hero{display:block;}}
.auth-hero h1{
  font-family:var(--font-hd);
  font-size:clamp(32px,4vw,48px);
  font-weight:700;
  line-height:1.15;
  margin-bottom:16px;
  letter-spacing:-.02em;
}
.auth-hero h1 em{color:var(--green);font-style:normal;}
.auth-hero p{
  color:var(--text2);
  font-size:15px;
  line-height:1.7;
  max-width:380px;
  margin-bottom:28px;
}
.feat-list{display:flex;flex-direction:column;gap:10px;}
.feat{
  display:flex;align-items:center;gap:10px;
  font-size:13px;color:var(--text2);
}
.feat-dot{
  width:18px;height:18px;border-radius:50%;
  background:var(--green-bg);
  border:1.5px solid var(--green);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  font-size:10px;color:var(--green);
}

/* Auth box */
.auth-box{
  width:100%;max-width:420px;flex-shrink:0;
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-xl);
  padding:36px 32px;
  box-shadow:var(--shadow-lg);
  position:relative;overflow:hidden;
}
.auth-box::before{
  content:'';position:absolute;
  top:-100px;right:-100px;
  width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(34,211,160,.08),transparent 70%);
  pointer-events:none;
}
@media(max-width:480px){.auth-box{padding:28px 20px;}}

.logo-mark{display:flex;align-items:center;gap:10px;margin-bottom:24px;}
.logo-mark .ico{
  width:38px;height:38px;border-radius:10px;
  background:linear-gradient(135deg,var(--green),var(--green3));
  display:flex;align-items:center;justify-content:center;
  font-size:18px;box-shadow:0 4px 12px rgba(34,211,160,.3);
}
.logo-mark span{
  font-family:var(--font-hd);font-weight:700;font-size:22px;color:var(--text);
}

/* Auth tabs */
.tabs{
  display:flex;background:var(--bg3);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:3px;gap:3px;margin-bottom:22px;
}
.tab{
  flex:1;padding:9px;border:none;background:transparent;
  color:var(--text2);font-size:13px;font-weight:600;
  border-radius:var(--radius-sm);transition:var(--transition);
}
.tab.active{background:var(--green);color:#071410;font-weight:700;}
.tab:not(.active):hover{color:var(--text);background:var(--card2);}

/* Form elements */
.form{display:flex;flex-direction:column;gap:14px;}
.fld label{
  display:block;font-size:11px;font-weight:700;
  color:var(--text3);text-transform:uppercase;
  letter-spacing:.06em;margin-bottom:5px;
}
.fld input{
  width:100%;padding:11px 14px;
  background:var(--bg3);border:1.5px solid var(--border);
  border-radius:var(--radius-md);
  color:var(--text);font-size:14px;outline:none;
  transition:border-color var(--transition),background var(--transition);
}
.fld input:focus{border-color:var(--green);background:rgba(34,211,160,.04);}
.fld input::placeholder{color:var(--text3);}
.btn-main{
  width:100%;padding:13px;
  background:linear-gradient(135deg,var(--green),var(--green2));
  border:none;border-radius:var(--radius-md);
  color:#071410;font-family:var(--font-hd);
  font-weight:700;font-size:15px;
  cursor:pointer;transition:var(--transition);margin-top:4px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 16px rgba(34,211,160,.3);
}
.btn-main:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(34,211,160,.4);}
.btn-main:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.err-msg{min-height:18px;font-size:12px;color:var(--red);text-align:center;}

/* ══════════════════════════════════════════════════
   APP SHELL
══════════════════════════════════════════════════ */
#app{display:none;min-height:100vh;}
.layout{display:flex;min-height:100vh;}

/* ══════════════════════════════════════════════════
   SIDEBAR
══════════════════════════════════════════════════ */
.sidebar{
  width:var(--sidebar-w);
  min-height:100vh;
  background:var(--bg2);
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;
  z-index:200;
  transition:transform var(--transition);
}
.sidebar-overlay{
  display:none;
  position:fixed;inset:0;
  background:rgba(0,0,0,.6);
  z-index:199;
  backdrop-filter:blur(2px);
}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%);}
  .sidebar.open{transform:translateX(0);}
  .sidebar-overlay.open{display:block;}
  .main{margin-left:0 !important;}
}

/* Sidebar header */
.sb-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 16px 14px;
  border-bottom:1px solid var(--border);
}
.sb-logo{display:flex;align-items:center;gap:9px;}
.sb-logo .ico{
  width:32px;height:32px;border-radius:8px;
  background:linear-gradient(135deg,var(--green),var(--green3));
  display:flex;align-items:center;justify-content:center;font-size:16px;
}
.sb-logo span{font-family:var(--font-hd);font-weight:700;font-size:17px;}
.sb-close{
  display:none;background:none;border:none;
  color:var(--text2);padding:4px;border-radius:6px;font-size:18px;
  transition:var(--transition);
}
.sb-close:hover{color:var(--text);background:var(--card2);}
@media(max-width:768px){.sb-close{display:flex;align-items:center;justify-content:center;}}

/* WA badge */
.sb-badge{
  margin:10px 12px;
  background:var(--green-bg);
  border:1px solid rgba(34,211,160,.3);
  border-radius:var(--radius-md);
  padding:7px 12px;
  display:flex;align-items:center;gap:7px;
  font-size:12px;font-weight:600;color:var(--green);
}
.sb-badge .dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--green);
  box-shadow:0 0 6px var(--green);
  animation:pulse 2s infinite;
}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.4;}}

/* Nav */
nav{padding:6px 0;flex:1;overflow-y:auto;}
.nav-section{
  padding:12px 16px 4px;
  font-size:10px;font-weight:700;
  color:var(--text3);text-transform:uppercase;letter-spacing:.08em;
}
.ni{
  display:flex;align-items:center;gap:10px;
  padding:10px 16px;
  color:var(--text2);cursor:pointer;
  transition:var(--transition);
  font-size:13px;font-weight:500;
  border-left:3px solid transparent;
  user-select:none;position:relative;
  border-radius:0;margin:1px 0;
}
.ni:hover{background:var(--green-bg);color:var(--text);}
.ni.active{background:var(--green-bg);color:var(--green);border-left-color:var(--green);}
.ni-ico{
  width:32px;height:32px;border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  font-size:15px;flex-shrink:0;
  background:var(--bg3);border:1px solid var(--border);
  transition:var(--transition);
}
.ni.active .ni-ico{background:var(--green-bg);border-color:rgba(34,211,160,.3);}
.ni:hover .ni-ico{background:var(--card2);}

/* ══════════════════════════════════════════════════
   NAV — grupos colapsables (Contactos > Administrar/Etiquetas)
══════════════════════════════════════════════════ */
.ni-chevron{
  margin-left:auto;font-size:10px;color:var(--text3);
  transition:transform var(--transition);
}
.ni-group.open > .ni .ni-chevron{transform:rotate(180deg);}
.ni-sub{
  max-height:0;overflow:hidden;
  transition:max-height var(--transition);
}
.ni-group.open .ni-sub{max-height:120px;}
.ni-child{
  padding-left:52px;font-size:12.5px;
}
.ni-child.active{background:var(--green-bg);color:var(--green);border-left-color:var(--green);}

/* ══════════════════════════════════════════════════
   INTEGRACIONES — tarjetas de presentación (API/Webhooks)
══════════════════════════════════════════════════ */
.int-cards-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:14px;margin-bottom:18px;
}
.int-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:20px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;
  transition:border-color var(--transition), box-shadow var(--transition);
}
.int-card:hover{border-color:var(--border2);box-shadow:var(--shadow-sm);}
.int-card-ico{
  width:44px;height:44px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;font-size:20px;
}
.int-card-title{font-family:var(--font-hd);font-weight:700;font-size:15px;}
.int-card-desc{font-size:12px;color:var(--text2);line-height:1.5;margin-bottom:6px;}

/* ══════════════════════════════════════════════════
   MODAL genérico — reemplaza los prompt()/confirm() feos
══════════════════════════════════════════════════ */
.modal-overlay{
  display:none;position:fixed;inset:0;z-index:200;
  background:rgba(5,9,14,.72);backdrop-filter:blur(2px);
  align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.open{display:flex;}
.modal-box{
  background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);width:100%;max-width:460px;max-height:88vh;
  display:flex;flex-direction:column;overflow:hidden;
  animation:modal-in .18s ease-out;
}
@keyframes modal-in{from{opacity:0;transform:translateY(8px) scale(.98);}to{opacity:1;transform:none;}}
.modal-hd{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 20px;border-bottom:1px solid var(--border);flex-shrink:0;
}
.modal-hd h3{font-family:var(--font-hd);font-size:15px;font-weight:700;}
.modal-close{
  background:var(--bg3);border:none;color:var(--text2);width:28px;height:28px;
  border-radius:50%;cursor:pointer;font-size:13px;transition:var(--transition);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.modal-close:hover{background:var(--red-bg);color:var(--red);}
.modal-body{padding:20px;overflow-y:auto;}
.modal-ft{
  padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:8px;
  justify-content:flex-end;flex-shrink:0;flex-wrap:wrap;
}

/* ══════════════════════════════════════════════════
   PERMISSION CHIPS — reemplaza los checkboxes nativos
   (mucho más claro cuál está marcado)
══════════════════════════════════════════════════ */
.chip-selector{display:flex;flex-direction:column;gap:8px;}
.chip{
  display:flex;align-items:center;gap:10px;
  padding:11px 14px;border-radius:var(--radius-md);
  border:1.5px solid var(--border);background:var(--bg3);
  cursor:pointer;transition:var(--transition);user-select:none;
  font-size:13px;color:var(--text2);
}
.chip:hover{border-color:var(--border2);}
.chip .chip-check{
  width:18px;height:18px;border-radius:5px;border:1.5px solid var(--border2);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  font-size:11px;color:transparent;transition:var(--transition);
  background:var(--bg2);
}
.chip.checked{
  border-color:rgba(34,211,160,.5);background:var(--green-bg);color:var(--text);
}
.chip.checked .chip-check{
  background:linear-gradient(135deg,var(--green),var(--green2));
  border-color:transparent;color:#071410;
}
.ni-label{flex:1;}

/* Sidebar footer */
.sb-bot{
  padding:12px 14px;
  border-top:1px solid var(--border);
}
.user-row{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;
  border-radius:var(--radius-md);
  background:var(--bg3);
  border:1px solid var(--border);
}
.av{
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--green),var(--green3));
  color:#071410;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-hd);font-weight:700;font-size:13px;flex-shrink:0;
}
.user-info{flex:1;min-width:0;}
.user-info .un{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.user-info .ue{font-size:11px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.logout{
  background:none;border:none;color:var(--text3);
  padding:5px;border-radius:6px;font-size:15px;
  transition:var(--transition);
}
.logout:hover{color:var(--red);background:var(--red-bg);}

/* ══════════════════════════════════════════════════
   TOPBAR (mobile)
══════════════════════════════════════════════════ */
.topbar{
  display:none;
  position:fixed;top:0;left:0;right:0;
  height:var(--topbar-h);z-index:198;
  background:var(--bg2);
  border-bottom:1px solid var(--border);
  align-items:center;justify-content:space-between;
  padding:0 16px;
}
@media(max-width:768px){.topbar{display:flex;}}
.topbar-logo{display:flex;align-items:center;gap:8px;}
.topbar-logo .ico{
  width:28px;height:28px;border-radius:7px;
  background:linear-gradient(135deg,var(--green),var(--green3));
  display:flex;align-items:center;justify-content:center;font-size:14px;
}
.topbar-logo span{font-family:var(--font-hd);font-weight:700;font-size:16px;}
.menu-btn{
  background:var(--card2);border:1px solid var(--border);
  color:var(--text);padding:6px 10px;border-radius:var(--radius-sm);
  font-size:16px;transition:var(--transition);
}
.menu-btn:hover{border-color:var(--green);color:var(--green);}

/* ══════════════════════════════════════════════════
   MAIN CONTENT
══════════════════════════════════════════════════ */
.main{
  margin-left:var(--sidebar-w);
  flex:1;
  padding:28px 28px 40px;
  max-width:calc(100vw - var(--sidebar-w));
}
@media(max-width:768px){
  .main{
    margin-left:0;max-width:100vw;
    padding:calc(var(--topbar-h) + 20px) 16px 32px;
  }
}
@media(max-width:480px){.main{padding:calc(var(--topbar-h)+16px) 12px 28px;}}

/* Page header */
.ph{margin-bottom:22px;}
.ph h1{
  font-family:var(--font-hd);font-weight:700;
  font-size:clamp(18px,3vw,24px);letter-spacing:-.01em;
}
.ph p{color:var(--text2);font-size:13px;margin-top:3px;}

/* Pages */
.page{display:none;}
.page.active{display:block;}

/* ══════════════════════════════════════════════════
   CARDS
══════════════════════════════════════════════════ */
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:22px;margin-bottom:18px;
  transition:border-color var(--transition), box-shadow var(--transition);
}
.card:hover{border-color:var(--border2);box-shadow:var(--shadow-sm);}
.card:last-child{margin-bottom:0;}
.card-hd{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:18px;flex-wrap:wrap;gap:8px;
}
.card-hd h2{
  font-family:var(--font-hd);font-size:15px;font-weight:700;
}

/* ══════════════════════════════════════════════════
   ADMIN SUB-TABS
══════════════════════════════════════════════════ */
.admin-tabs{
  display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap;
  border-bottom:1.5px solid var(--border);padding-bottom:0;
}
.admin-tab{
  background:transparent;border:none;border-bottom:2.5px solid transparent;
  color:var(--text2);font-family:var(--font-hd);font-weight:700;font-size:13px;
  padding:10px 14px;cursor:pointer;transition:color var(--transition),border-color var(--transition);
}
.admin-tab:hover{color:var(--text);}
.admin-tab.active{color:var(--green);border-bottom-color:var(--green);}

/* ══════════════════════════════════════════════════
   STATS GRID
══════════════════════════════════════════════════ */
.stats4{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:12px;margin-bottom:18px;
}
@media(max-width:1100px){.stats4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.stats4{grid-template-columns:repeat(2,1fr);gap:8px;}}
.scard{
  background:var(--card2);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:16px 18px;
  position:relative;overflow:hidden;
}
.scard::after{
  content:'';position:absolute;top:-20px;right:-20px;
  width:60px;height:60px;border-radius:50%;
  background:var(--green-bg);pointer-events:none;
}
.scard .slb{
  font-size:10px;font-weight:700;
  color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;
}
.scard .sv{
  font-family:var(--font-hd);font-size:clamp(22px,3vw,28px);font-weight:700;
}
.scard .ss{font-size:11px;color:var(--text2);margin-top:3px;}

/* ══════════════════════════════════════════════════
   COLORS
══════════════════════════════════════════════════ */
.c-green{color:var(--green);}
.c-blue{color:var(--blue);}
.c-yellow{color:var(--yellow);}
.c-red{color:var(--red);}
.c-purple{color:var(--purple);}

/* ══════════════════════════════════════════════════
   TABLES
══════════════════════════════════════════════════ */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px;}
th{
  color:var(--text3);font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;
  padding:9px 14px;text-align:left;
  border-bottom:1px solid var(--border);
  white-space:nowrap;
}
td{
  padding:12px 14px;
  border-bottom:1px solid rgba(36,48,64,.6);
  vertical-align:middle;
}
tr:last-child td{border-bottom:none;}
tr:hover td{background:rgba(34,211,160,.025);}
.empty{text-align:center;padding:48px 0;color:var(--text2);}
.empty .ei{font-size:40px;margin-bottom:10px;opacity:.6;}
.empty p{font-size:13px;}

/* ══════════════════════════════════════════════════
   BADGES
══════════════════════════════════════════════════ */
.bdg{
  display:inline-flex;align-items:center;
  padding:3px 9px;border-radius:var(--radius-full);
  font-size:11px;font-weight:700;white-space:nowrap;
}
.bdg-draft{background:var(--yellow-bg);color:var(--yellow);}
.bdg-sending{background:var(--blue-bg);color:var(--blue);}
.bdg-completed{background:var(--green-bg);color:var(--green);}
.bdg-failed{background:var(--red-bg);color:var(--red);}
.bdg-pending{background:rgba(120,120,140,.12);color:#8a9ab5;}

/* ══════════════════════════════════════════════════
   FORMS
══════════════════════════════════════════════════ */
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:600px){.fgrid{grid-template-columns:1fr;}}
.ff{display:flex;flex-direction:column;gap:5px;}
.ff.full{grid-column:1/-1;}
.ff label{
  font-size:11px;font-weight:700;color:var(--text3);
  text-transform:uppercase;letter-spacing:.05em;
}
.ff input,.ff textarea,.ff select{
  padding:10px 13px;
  background:var(--bg3);
  border:1.5px solid var(--border);
  border-radius:var(--radius-md);
  color:var(--text);font-size:14px;
  outline:none;transition:border-color var(--transition),background var(--transition);
  resize:vertical;
  -webkit-appearance:none;
}
.ff input:focus,.ff textarea:focus,.ff select:focus{
  border-color:var(--green);background:rgba(34,211,160,.03);
}
.ff input::placeholder,.ff textarea::placeholder{color:var(--text3);}
.ff textarea{min-height:90px;line-height:1.5;}
.ff select{cursor:pointer;}
/* Bug conocido: los navegadores a veces ignoran el color del <select> al
   pintar la lista de <option> desplegada y usan blanco del sistema — con
   texto claro de este tema queda blanco sobre blanco, ilegible. Se fuerza
   explícitamente en todos los selects de la app, no solo los de .ff. */
select, .ff select { color-scheme: dark; }
select option, .ff select option {
  background: var(--bg3) !important;
  color: var(--text) !important;
}
/* Checkboxes: mismo problema de raíz (widgets nativos sin theming) —
   se fuerza un color de acento visible sobre fondo oscuro. */
input[type="checkbox"], input[type="radio"] {
  accent-color: var(--green);
  width: 16px; height: 16px;
  cursor: pointer;
}
.hint{font-size:11px;color:var(--text2);line-height:1.5;}

/* ══════════════════════════════════════════════════
   VISTA PREVIA DE PLANTILLA — mini "chat" en vivo
══════════════════════════════════════════════════ */
.tpl-editor-grid{
  display:grid;grid-template-columns:1.4fr 1fr;gap:20px;align-items:start;
}
@media (max-width:760px){ .tpl-editor-grid{grid-template-columns:1fr;} }
.tpl-preview-col{position:sticky;top:12px;}
.tpl-preview-label{
  font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;
  letter-spacing:.05em;margin-bottom:8px;
}
.phone-mock{
  background:#0b141a;border:6px solid #1a1a1a;border-radius:22px;
  overflow:hidden;box-shadow:var(--shadow-lg);max-width:270px;margin:0 auto;
}
.phone-mock-bar{
  height:14px;background:#1a1a1a;position:relative;
}
.phone-mock-bar::after{
  content:"";position:absolute;top:4px;left:50%;transform:translateX(-50%);
  width:50px;height:6px;border-radius:4px;background:#000;
}
.phone-mock-screen{
  min-height:180px;padding:16px 10px;
  background-image:radial-gradient(circle at 20% 10%, rgba(255,255,255,.03) 0, transparent 40%);
  display:flex;flex-direction:column;justify-content:flex-end;
}
.chat-bubble-preview{
  background:linear-gradient(145deg, #0a4b3a, #006b54);
  color:#ffffff;
  border-radius:10px 10px 2px 10px;
  padding:8px 10px 20px;
  font-size:13px;line-height:1.45;
  max-width:88%;margin-left:auto;
  position:relative;word-wrap:break-word;white-space:pre-wrap;
  box-shadow:0 1px 2px rgba(0,0,0,.3);
}
.chat-bubble-preview-time{
  position:absolute;right:10px;bottom:5px;
  font-size:10px;color:rgba(255,255,255,.5);
  display:flex;align-items:center;gap:2px;white-space:nowrap;
}
.chat-bubble-preview mark{
  background:rgba(255,255,255,.15);
  color:#ffffff;
  border-radius:3px;padding:0 3px;
}
/* Texto de ejemplo en vista previa */
#tpl-preview-text, #c-template-preview {
  color: #ffffff !important;
}
#tpl-preview-text span, #c-template-preview span {
  color: #ffffff !important;
}
/* ══════════════════════════════════════════════════
   INFO TOOLTIP — reemplaza los párrafos largos de
   instrucciones bajo cada título de tarjeta. La ayuda
   sigue ahí, pero solo aparece si la pides (hover/tap).
══════════════════════════════════════════════════ */
.info-tip{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;border-radius:50%;
  background:var(--bg3);color:var(--text2);
  font-size:11px;font-weight:700;cursor:help;
  margin-left:6px;vertical-align:middle;
}
.info-tip:hover, .info-tip:focus{background:var(--green-bg);color:var(--green);}
.info-tip .tip-bubble{
  display:none;position:absolute;z-index:50;
  top:calc(100% + 8px);left:0;
  width:280px;max-width:60vw;
  background:var(--card2);border:1px solid var(--border2);
  border-radius:var(--radius-md);box-shadow:var(--shadow-md);
  padding:10px 12px;font-size:12px;font-weight:400;line-height:1.5;
  color:var(--text2);cursor:default;text-transform:none;letter-spacing:normal;
}
.info-tip:hover .tip-bubble, .info-tip:focus .tip-bubble, .info-tip.open .tip-bubble{display:block;}
@media (max-width:640px){
  .info-tip .tip-bubble{left:auto;right:0;width:240px;}
}
.hint code{
  background:var(--border);padding:1px 5px;
  border-radius:4px;color:var(--green);font-family:monospace;font-size:11px;
}

/* ══════════════════════════════════════════════════
   BUTTONS
══════════════════════════════════════════════════ */
.btn{
  padding:8px 16px;border-radius:var(--radius-md);
  font-size:12px;font-weight:700;cursor:pointer;border:none;
  transition:var(--transition);font-family:var(--font-ui);
  display:inline-flex;align-items:center;gap:5px;
  white-space:nowrap;
}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn-g{
  background:linear-gradient(135deg,var(--green),var(--green2));
  color:#071410;
  box-shadow:0 2px 8px rgba(34,211,160,.25);
}
.btn-g:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px rgba(34,211,160,.35);}
.btn-o{
  background:transparent;color:var(--green);
  border:1.5px solid rgba(34,211,160,.4);
}
.btn-o:hover{background:var(--green-bg);border-color:var(--green);}
.btn-r{
  background:var(--red-bg);color:var(--red);
  border:1px solid rgba(244,63,94,.25);
}
.btn-r:hover{background:rgba(244,63,94,.18);}
.btn-b{background:var(--blue-bg);color:var(--blue);border:1px solid rgba(74,179,244,.25);}

/* ══════════════════════════════════════════════════
   ALERTS
══════════════════════════════════════════════════ */
.alert{
  padding:10px 14px;border-radius:var(--radius-md);
  font-size:13px;margin-bottom:14px;display:none;line-height:1.5;
}
.alert.show{display:block;}
.al-ok{background:var(--green-bg);border:1px solid rgba(34,211,160,.3);color:var(--green);}
.al-err{background:var(--red-bg);border:1px solid rgba(244,63,94,.3);color:var(--red);}
.al-info{background:var(--blue-bg);border:1px solid rgba(74,179,244,.3);color:var(--blue);}

/* Progress */
.prog{height:5px;background:var(--border);border-radius:3px;overflow:hidden;}
.prog-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--green2),var(--green));transition:.4s;}

/* ══════════════════════════════════════════════════
   CONNECT WA STEPS
══════════════════════════════════════════════════ */
.connect-steps{display:flex;gap:0;margin-bottom:24px;}
.cs{flex:1;display:flex;align-items:center;}
.cs-dot{
  width:30px;height:30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-hd);font-weight:700;font-size:12px;
  flex-shrink:0;transition:.3s;z-index:1;
}
.cs-dot.done,.cs-dot.active{background:var(--green);color:#071410;box-shadow:0 0 0 4px var(--green-bg);}
.cs-dot.pending{background:var(--bg3);color:var(--text2);border:1.5px solid var(--border);}
.cs-line{flex:1;height:2px;background:var(--border);transition:.3s;}
.cs-line.done{background:var(--green);}
.cs:last-child .cs-line{display:none;}
.cs-labels{display:flex;margin-bottom:20px;}
.cs-label{flex:1;font-size:11px;color:var(--text2);text-align:center;}
.cs-label.active{color:var(--green);font-weight:700;}
.step-panel{display:none;}
.step-panel.active{display:block;}
.info-box{
  background:var(--blue-bg);border:1px solid rgba(74,179,244,.25);
  border-radius:var(--radius-md);padding:14px 16px;
  font-size:13px;color:var(--blue);line-height:1.6;margin-bottom:18px;
}
.req-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px;}
.req-item{
  display:flex;align-items:flex-start;gap:12px;
  background:var(--bg3);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:13px 15px;
}
.req-num{
  width:22px;height:22px;border-radius:50%;
  background:var(--green);color:#071410;
  font-weight:700;font-size:11px;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;
}
.req-title{font-size:13px;font-weight:600;margin-bottom:2px;}
.req-desc{font-size:12px;color:var(--text2);line-height:1.5;}

.method-opt{
  background:var(--bg3);border:2px solid var(--border);
  border-radius:var(--radius-lg);padding:18px;cursor:pointer;transition:.2s;
}
.method-opt:hover{border-color:rgba(34,211,160,.4);background:rgba(34,211,160,.04);}
.method-opt.selected{border-color:var(--green);background:rgba(34,211,160,.06);}

/* Facebook button */
.fb-login-btn{
  display:inline-flex;align-items:center;gap:10px;
  background:#1877f2;color:#fff;border:none;
  border-radius:var(--radius-md);padding:12px 20px;
  font-size:14px;font-weight:700;cursor:pointer;
  font-family:var(--font-ui);transition:var(--transition);
}
.fb-login-btn:hover{background:#1565d8;transform:translateY(-1px);box-shadow:0 4px 16px rgba(24,119,242,.4);}
@keyframes popIn{0%{transform:scale(.5);opacity:0;}70%{transform:scale(1.15);}100%{transform:scale(1);opacity:1;}}

/* ══════════════════════════════════════════════════
   CHAT MODULE
══════════════════════════════════════════════════ */
.chat-layout{
  display:flex;
  height:calc(100vh - var(--topbar-h) - 140px);
  min-height:400px;
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  overflow:hidden;
}
@media(max-width:768px){.chat-layout{height:calc(100vh - var(--topbar-h) - 120px);}}

.chat-sidebar{
  width:280px;flex-shrink:0;
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;
  background:var(--bg2);
  transition:var(--transition);
}
@media(max-width:700px){
  .chat-sidebar{
    position:absolute;left:0;top:0;bottom:0;
    width:80%;max-width:280px;
    z-index:10;transform:translateX(-100%);
    border-radius:0;
  }
  .chat-sidebar.show{transform:translateX(0);}
  .chat-layout{position:relative;}
}
.chat-search-wrap{padding:10px 12px;}
.chat-search-wrap input{
  width:100%;padding:9px 13px;
  background:var(--bg3);border:1px solid var(--border);
  border-radius:var(--radius-md);color:var(--text);font-size:13px;outline:none;
}
.chat-filter-tabs{
  display:flex;gap:3px;padding:0 10px 10px;
  border-bottom:1px solid var(--border);
}
.cf-tab{
  flex:1;padding:6px 4px;border:none;background:transparent;
  color:var(--text2);font-size:11px;font-weight:700;
  cursor:pointer;border-radius:var(--radius-sm);transition:.2s;
}
.cf-tab.active{background:var(--green);color:#071410;}
.cf-tab:hover:not(.active){background:var(--card2);}
.conv-list{flex:1;overflow-y:auto;}
.conv-item{
  padding:11px 13px;
  border-bottom:1px solid rgba(36,48,64,.5);
  cursor:pointer;transition:.15s;
  display:flex;gap:10px;align-items:flex-start;
}
.conv-item:hover{background:rgba(34,211,160,.05);}
.conv-item.active{background:var(--green-bg);border-left:3px solid var(--green);}
.conv-av{
  width:36px;height:36px;border-radius:50%;
  background:var(--card2);border:1.5px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:13px;flex-shrink:0;color:var(--green);
}
.conv-body{flex:1;min-width:0;}
.conv-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.conv-preview{font-size:11px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
.conv-meta{display:flex;align-items:center;gap:4px;margin-top:2px;}
.conv-time{font-size:10px;color:var(--text3);}
.conv-unread{
  background:var(--green);color:#071410;
  font-size:9px;font-weight:700;border-radius:var(--radius-full);
  padding:1px 5px;margin-left:auto;
}
.chat-main{flex:1;display:flex;flex-direction:column;min-width:0;}
.chat-empty-state{
  flex:1;display:flex;flex-direction:column;
  align-items:center;justify-content:center;color:var(--text2);
  padding:20px;text-align:center;
}
.chat-conv-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:11px 15px;border-bottom:1px solid var(--border);
  background:var(--bg2);flex-wrap:wrap;gap:8px;
}
.chat-contact-info{display:flex;align-items:center;gap:10px;}
.chat-av{
  width:38px;height:38px;border-radius:50%;
  background:linear-gradient(135deg,var(--green),var(--green3));
  color:#071410;font-weight:700;font-size:15px;
  display:flex;align-items:center;justify-content:center;
}
.chat-messages{
  flex:1;overflow-y:auto;padding:14px;
  display:flex;flex-direction:column;gap:8px;
}
.bubble{
  max-width:72%;padding:9px 13px;
  border-radius:14px;font-size:13px;line-height:1.55;word-break:break-word;
}
.bubble-in{
  background:var(--card2);border:1px solid var(--border);
  align-self:flex-start;border-bottom-left-radius:3px;
}
.bubble-out{
  background:linear-gradient(135deg,var(--green),var(--green2));
  color:#071410;align-self:flex-end;border-bottom-right-radius:3px;
}
.bubble-time{font-size:10px;margin-top:4px;color:rgba(0,0,0,0.45);}
.bubble-in .bubble-time{color:var(--text3);}
.bubble-status{font-size:10px;color:rgba(0,0,0,0.4);}
.chat-input-area{
  display:flex;gap:8px;padding:11px 14px;
  border-top:1px solid var(--border);
  align-items:flex-end;background:var(--bg2);
}
.chat-input-area textarea{
  flex:1;background:var(--bg3);border:1px solid var(--border);
  border-radius:var(--radius-md);padding:9px 13px;
  color:var(--text);font-family:var(--font-ui);font-size:13px;
  resize:none;outline:none;max-height:120px;line-height:1.5;
}
.chat-input-area textarea:focus{border-color:var(--green);}
.chat-send-btn{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,var(--green),var(--green2));
  border:none;color:#071410;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:var(--transition);box-shadow:0 2px 8px rgba(34,211,160,.3);
}
.chat-send-btn:hover{transform:scale(1.05);box-shadow:0 4px 12px rgba(34,211,160,.4);}
.conv-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:5px;}
.dot-open{background:var(--green);}
.dot-waiting{background:var(--yellow);}
.dot-closed{background:var(--text3);}

/* ══════════════════════════════════════════════════
   MODAL
══════════════════════════════════════════════════ */
.mo{
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,.7);z-index:500;
  align-items:center;justify-content:center;padding:20px;
  backdrop-filter:blur(4px);
}
.mo.open{display:flex;}
.mo-box{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius-xl);padding:26px 28px;
  width:520px;max-width:100%;max-height:90vh;overflow-y:auto;
  box-shadow:var(--shadow-lg);
}
.mo-hd{
  display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;
}
.mo-hd h3{font-family:var(--font-hd);font-size:16px;font-weight:700;}
.mo-close{
  background:var(--bg3);border:1px solid var(--border);
  color:var(--text2);cursor:pointer;padding:5px 10px;
  border-radius:var(--radius-sm);font-size:14px;transition:var(--transition);
}
.mo-close:hover{color:var(--red);border-color:var(--red);}
.mo-foot{
  display:flex;gap:8px;justify-content:flex-end;
  margin-top:18px;padding-top:14px;border-top:1px solid var(--border);
}

/* ══════════════════════════════════════════════════
   SPINNERS
══════════════════════════════════════════════════ */
.spin{
  display:inline-block;width:14px;height:14px;
  border:2px solid rgba(7,20,16,.3);border-top-color:rgba(7,20,16,.9);
  border-radius:50%;animation:sp .6s linear infinite;
}
.spin-dark{
  display:inline-block;width:18px;height:18px;
  border:2px solid var(--border);border-top-color:var(--green);
  border-radius:50%;animation:sp .7s linear infinite;flex-shrink:0;
}
@keyframes sp{to{transform:rotate(360deg);}}

/* ══════════════════════════════════════════════════
   RESPONSIVE UTILITY
══════════════════════════════════════════════════ */
@media(max-width:480px){
  .card{padding:16px;}
  .mo-box{padding:20px 16px;}
  .btn{padding:7px 13px;font-size:11px;}
  table{font-size:12px;}
  th,td{padding:8px 10px;}
}

/* Section dividers */
.section-divider{
  height:1px;background:var(--border);margin:20px 0;
}
