/* ==========================================================================
   Universal Contigo — Design system
   Basado en el Manual de Marca Hogar Universal 2025.
   Azul #002160 protagónico · Lima #C4D600 acento · Poppins · sin emojis.
   ========================================================================== */

/* ----------------------------------------------------------------- Fuentes */
@font-face{font-family:"Poppins";font-weight:300;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-300.woff2") format("woff2");}
@font-face{font-family:"Poppins";font-weight:400;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-400.woff2") format("woff2");}
@font-face{font-family:"Poppins";font-weight:500;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-500.woff2") format("woff2");}
@font-face{font-family:"Poppins";font-weight:600;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-600.woff2") format("woff2");}
@font-face{font-family:"Poppins";font-weight:700;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-700.woff2") format("woff2");}
@font-face{font-family:"Poppins";font-weight:800;font-style:normal;font-display:swap;src:url("/static/fonts/poppins-800.woff2") format("woff2");}

/* ----------------------------------------------------------------- Tokens */
:root{
  /* Marca */
  --azul:#002160;          /* Pantone 294C — protagónico */
  --azul-600:#0a3378;
  --azul-500:#1a4a95;
  --lima:#c4d600;          /* Pantone 382C — acento */
  --lima-oscuro:#93a300;   /* lima legible sobre blanco para texto pequeño */
  --petroleo:#00607f;      /* Pantone 7707C */
  --verde:#0c5040;         /* Pantone 343C */
  --teal:#457a7c;          /* Pantone 7475C */
  --tierra:#caa892;        /* Pantone 480C */

  /* Neutros (tinte frío hacia el azul) */
  --bg:#eef2f7;
  --surface:#ffffff;
  --surface-2:#f6f8fb;
  --ink:#0a1b33;
  --ink-soft:#5a6b82;
  --ink-mute:#8595a8;
  --linea:#e2e8f0;
  --linea-fuerte:#cbd5e1;

  /* Semánticos (sin rojo protagónico — la marca es azul/verde) */
  --ok:#0c5040;
  --ok-bg:#e4efe9;
  --warn:#a9720a;
  --warn-bg:#f7edd6;
  --info:#00607f;
  --info-bg:#e0eef3;
  --alerta:#b23a2e;        /* uso mínimo: vencido/crítico */
  --alerta-bg:#f7e4e1;

  --radio:16px;
  --radio-sm:10px;
  --sombra:0 1px 2px rgba(10,27,51,.04), 0 6px 20px rgba(10,27,51,.06);
  --sombra-fuerte:0 8px 30px rgba(10,27,51,.14);
  --sidebar-w:248px;
}

/* ----------------------------------------------------------------- Reset */
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"Poppins",-apple-system,"Segoe UI",Roboto,sans-serif;
  font-weight:400;
  font-size:15px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--petroleo);text-decoration:none;}
a:hover{text-decoration:underline;}
h1,h2,h3,h4{margin:0;font-weight:700;color:var(--ink);line-height:1.2;}
p{margin:0;}
:focus-visible{outline:3px solid var(--lima);outline-offset:2px;border-radius:4px;}

/* ----------------------------------------------------------------- Layout */
.app{display:flex;min-height:100vh;}
.sidebar{
  width:var(--sidebar-w);
  flex:0 0 var(--sidebar-w);
  background:var(--azul);
  color:#fff;
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;
  padding:22px 16px;
}
.sidebar-logo{display:block;margin:4px 8px 2px;}
.sidebar-logo img{width:150px;height:auto;display:block;}
/* La "sonrisa" de marca bajo el logo */
.sidebar-smile{height:8px;margin:6px 8px 0;border:0;border-bottom:3px solid var(--lima);border-radius:0 0 40px 40px;opacity:.9;}
.sidebar-tag{margin:10px 8px 22px;font-size:11.5px;font-weight:300;letter-spacing:.04em;color:#b9c6df;}
.sidebar-tag b{font-weight:600;color:#fff;}

.nav{display:flex;flex-direction:column;gap:2px;}
.nav-sec{font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#7f92b6;margin:18px 12px 6px;}
.nav a{
  display:flex;align-items:center;gap:11px;
  padding:9px 12px;border-radius:var(--radio-sm);
  color:#d6ddec;font-weight:500;font-size:14px;
  border-left:3px solid transparent;
}
.nav a:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none;}
.nav a.activo{background:rgba(196,214,0,.14);color:#fff;border-left-color:var(--lima);}
.nav a svg{width:18px;height:18px;flex:0 0 18px;stroke:currentColor;fill:none;stroke-width:1.9;}
.nav a.activo svg{stroke:var(--lima);}
.sidebar-foot{margin-top:auto;padding:14px 12px 2px;font-size:10.5px;color:#7f92b6;border-top:1px solid rgba(255,255,255,.1);}

.main{flex:1 1 auto;min-width:0;}
.contenido{max-width:1200px;margin:0 auto;padding:34px 40px 80px;}

/* ----------------------------------------------------------------- Encabezados */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:24px;}
.page-title{font-size:27px;font-weight:800;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;}
.page-title::before{content:"";width:26px;height:6px;background:var(--lima);border-radius:0 0 30px 30px;flex:0 0 auto;}
.page-sub{color:var(--ink-soft);font-size:14.5px;margin-top:4px;font-weight:300;max-width:70ch;}

/* ----------------------------------------------------------------- Cards */
.card{background:var(--surface);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);padding:22px;}
.card + .card{margin-top:18px;}
.card-title{font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:2px;}
.card-note{font-size:12.5px;color:var(--ink-mute);font-weight:300;margin-bottom:14px;}
.grid-2{display:grid;gap:18px;grid-template-columns:1fr;}
.grid-3{display:grid;gap:18px;grid-template-columns:1fr;}
@media(min-width:820px){.grid-2{grid-template-columns:1fr 1fr;}.grid-3{grid-template-columns:repeat(3,1fr);}}

/* ----------------------------------------------------------------- KPIs */
.kpi-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr);margin-bottom:22px;}
@media(min-width:720px){.kpi-grid{grid-template-columns:repeat(5,1fr);}}
.kpi{background:var(--surface);border:1px solid var(--linea);border-radius:var(--radio);padding:16px 18px;box-shadow:var(--sombra);position:relative;display:flex;flex-direction:column;gap:3px;}
.kpi .n{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.05;font-variant-numeric:tabular-nums;color:var(--azul);}
.kpi .l{font-size:12.5px;color:var(--ink-soft);font-weight:400;display:flex;align-items:center;gap:6px;}
.kpi .k-top{display:flex;align-items:center;justify-content:space-between;gap:6px;}

/* ----------------------------------------------------------------- Tags / chips */
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;line-height:1.4;white-space:nowrap;}
.tag-ok{background:var(--ok-bg);color:var(--ok);}
.tag-warn{background:var(--warn-bg);color:var(--warn);}
.tag-info{background:var(--info-bg);color:var(--info);}
.tag-red{background:var(--alerta-bg);color:var(--alerta);}
.tag-neutral{background:#eef1f6;color:var(--ink-soft);}
.tag-lima{background:rgba(196,214,0,.22);color:#5c6600;}
.tag-azul{background:var(--azul);color:#fff;}

/* ----------------------------------------------------------------- Botones */
.btn{display:inline-flex;align-items:center;gap:7px;font-family:inherit;font-size:13.5px;font-weight:600;padding:9px 16px;border-radius:var(--radio-sm);border:1px solid transparent;cursor:pointer;line-height:1;transition:background .12s,border-color .12s;}
.btn:hover{text-decoration:none;}
.btn-primary{background:var(--azul);color:#fff;}
.btn-primary:hover{background:var(--azul-600);color:#fff;}
.btn-lima{background:var(--lima);color:var(--azul);}
.btn-lima:hover{background:#b2c200;}
.btn-ghost{background:#fff;color:var(--azul);border-color:var(--linea-fuerte);}
.btn-ghost:hover{background:var(--surface-2);}
.btn-sm{padding:6px 11px;font-size:12.5px;}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;}

/* ----------------------------------------------------------------- Tablas */
.table-wrap{overflow-x:auto;border-radius:var(--radio-sm);}
table.table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:520px;}
.table th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);padding:10px 14px 10px 0;border-bottom:2px solid var(--linea);white-space:nowrap;}
.table td{padding:11px 14px 11px 0;border-bottom:1px solid var(--linea);vertical-align:middle;}
.table tbody tr:hover{background:var(--surface-2);}
.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums;}
.table a{color:var(--azul);font-weight:600;}
.row-link{cursor:pointer;}

/* ----------------------------------------------------------------- Avatar / monograma */
.avatar{width:38px;height:38px;border-radius:12px;background:var(--azul);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex:0 0 auto;letter-spacing:.02em;}
.avatar-lg{width:56px;height:56px;border-radius:16px;font-size:20px;}
.avatar-sm{width:30px;height:30px;border-radius:9px;font-size:12px;}
/* Monograma de producto por categoría (reemplaza los emojis) */
.mono{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:0 0 auto;background:var(--info-bg);color:var(--petroleo);border:1px solid rgba(0,96,127,.18);}
.cel-prod{display:flex;align-items:center;gap:10px;}
.cel-prod .nm{font-weight:600;}
.cel-prod .ct{font-size:11.5px;color:var(--ink-mute);}

/* ----------------------------------------------------------------- Info tooltip */
.info{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--ink-mute);color:var(--ink-mute);font-size:10px;font-weight:700;font-style:normal;cursor:help;flex:0 0 auto;vertical-align:middle;background:#fff;}
.info::after{content:"i";font-family:Georgia,serif;line-height:1;}
.info:hover,.info:focus-visible{border-color:var(--petroleo);color:var(--petroleo);outline:none;}
.info-pop{
  position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%) translateY(4px);
  width:270px;max-width:78vw;background:var(--azul);color:#eaf0fb;
  border-radius:12px;padding:12px 14px;box-shadow:var(--sombra-fuerte);
  font-size:12px;font-weight:300;line-height:1.5;text-align:left;letter-spacing:0;
  opacity:0;visibility:hidden;transition:opacity .14s,transform .14s;z-index:60;pointer-events:none;text-transform:none;
}
.info-pop::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:7px solid transparent;border-top-color:var(--azul);}
.info-pop strong{display:block;font-weight:700;color:#fff;font-size:12.5px;margin-bottom:4px;}
.info-pop em{display:block;margin-top:7px;font-style:normal;font-weight:500;color:var(--lima);font-size:11px;}
.info:hover .info-pop,.info:focus-visible .info-pop{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.info-pop.izq{left:auto;right:0;transform:translateX(0) translateY(4px);}
.info-pop.izq::after{left:auto;right:6px;transform:none;}
.info:hover .info-pop.izq,.info:focus-visible .info-pop.izq{transform:translateX(0) translateY(0);}

/* ----------------------------------------------------------------- Timeline */
.timeline{position:relative;padding-left:26px;}
.timeline::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--linea);}
.tl-item{position:relative;padding:0 0 18px;}
.tl-item::before{content:"";position:absolute;left:-23px;top:4px;width:11px;height:11px;border-radius:50%;background:#fff;border:2.5px solid var(--petroleo);}
.tl-item.done::before{background:var(--petroleo);}
.tl-item.next::before{border-color:var(--lima-oscuro);background:var(--lima);}
.tl-item .t{font-weight:600;font-size:14px;}
.tl-item .m{font-size:12.5px;color:var(--ink-soft);}
.tl-item .d{font-size:11.5px;color:var(--ink-mute);}

/* ----------------------------------------------------------------- Formularios */
.form-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.form-field label{font-size:12.5px;font-weight:600;color:var(--ink);}
.input,select.input,textarea.input{
  font-family:inherit;font-size:14px;color:var(--ink);
  padding:10px 12px;border:1px solid var(--linea-fuerte);border-radius:var(--radio-sm);background:#fff;width:100%;
}
.input:focus{outline:none;border-color:var(--petroleo);box-shadow:0 0 0 3px rgba(0,96,127,.14);}
.form-row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;}

/* ----------------------------------------------------------------- Banners */
.banner{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radio-sm);font-size:13.5px;font-weight:500;margin-bottom:18px;}
.banner-ok{background:var(--ok-bg);color:var(--ok);border:1px solid #bcd8cc;}
.banner-warn{background:var(--warn-bg);color:var(--warn);border:1px solid #e6d3a6;}

/* ----------------------------------------------------------------- Estado vacío */
.empty{text-align:center;padding:60px 20px;color:var(--ink-soft);}
.empty h3{font-size:17px;margin-bottom:6px;}

/* ----------------------------------------------------------------- Barra de progreso */
.prog{height:7px;border-radius:999px;background:var(--surface-2);border:1px solid var(--linea);overflow:hidden;}
.prog > span{display:block;height:100%;background:var(--lima);}

/* ==========================================================================
   WhatsApp Business — bandeja de agente (lista + conversación abierta)
   ========================================================================== */
.wa{display:grid;grid-template-columns:326px 1fr;gap:0;border:1px solid var(--linea);border-radius:var(--radio);overflow:hidden;background:#fff;box-shadow:var(--sombra);height:calc(100vh - 150px);min-height:520px;}
.wa-list{border-right:1px solid var(--linea);display:flex;flex-direction:column;min-width:0;background:#fff;}
.wa-list-head{padding:14px 16px;border-bottom:1px solid var(--linea);display:flex;align-items:center;justify-content:space-between;gap:8px;}
.wa-list-head .t{font-weight:700;font-size:14px;display:flex;align-items:center;gap:7px;}
.wa-search{padding:10px 14px;border-bottom:1px solid var(--linea);}
.wa-convs{overflow-y:auto;flex:1 1 auto;}
.wa-conv{display:flex;gap:11px;padding:12px 14px;border-bottom:1px solid var(--linea);cursor:pointer;text-decoration:none;color:inherit;align-items:flex-start;}
.wa-conv:hover{background:var(--surface-2);text-decoration:none;}
.wa-conv.activa{background:var(--info-bg);border-left:3px solid var(--petroleo);padding-left:11px;}
.wa-conv .cbody{min-width:0;flex:1 1 auto;}
.wa-conv .cname{font-weight:600;font-size:13.5px;display:flex;justify-content:space-between;gap:8px;}
.wa-conv .ctime{font-size:10.5px;color:var(--ink-mute);font-weight:400;flex:0 0 auto;}
.wa-conv .cprev{font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}
.wa-conv .cmeta{margin-top:4px;display:flex;gap:6px;align-items:center;}
.wa-unread{background:var(--lima);color:var(--azul);font-size:10px;font-weight:700;border-radius:999px;min-width:18px;height:18px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;}

.wa-thread{display:flex;flex-direction:column;min-width:0;background:var(--surface-2);}
.wa-thread-head{padding:13px 18px;border-bottom:1px solid var(--linea);background:#fff;display:flex;align-items:center;gap:12px;}
.wa-thread-head .who{font-weight:700;font-size:14.5px;}
.wa-thread-head .sub{font-size:11.5px;color:var(--ink-soft);display:flex;align-items:center;gap:6px;}
.wa-thread-head .verificada{color:var(--petroleo);font-weight:600;}
.wa-messages{flex:1 1 auto;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:10px;}
.wa-date{align-self:center;background:#e3e9f1;color:var(--ink-soft);font-size:11px;font-weight:500;padding:3px 12px;border-radius:999px;margin:6px 0;}
.wa-msg{max-width:74%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.45;box-shadow:0 1px 1px rgba(10,27,51,.06);position:relative;}
.wa-msg .meta{font-size:10px;color:var(--ink-mute);margin-top:4px;text-align:right;}
.wa-msg.in{align-self:flex-start;background:#fff;border-bottom-left-radius:5px;}
.wa-msg.out{align-self:flex-end;background:#dff3e0;border-bottom-right-radius:5px;}
.wa-msg .lbl{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:3px;color:var(--verde);}
.wa-msg.out.bot .lbl{color:var(--petroleo);}
.wa-composer{border-top:1px solid var(--linea);background:#fff;padding:12px 16px;display:flex;gap:10px;align-items:center;}
.wa-composer .input{flex:1 1 auto;}
@media(max-width:900px){.wa{grid-template-columns:1fr;height:auto;}.wa-list{max-height:340px;}}

/* ----------------------------------------------------------------- Utilidades */
.muted{color:var(--ink-soft);}
.tnum{font-variant-numeric:tabular-nums;}
.chart-box{position:relative;height:250px;}
.flex{display:flex;gap:12px;align-items:center;}
.between{display:flex;justify-content:space-between;align-items:center;gap:12px;}
.stack{display:flex;flex-direction:column;gap:14px;}
hr.sep{border:0;border-top:1px solid var(--linea);margin:22px 0;}

/* ----------------------------------------------------------------- Responsive sidebar */
@media(max-width:860px){
  .app{flex-direction:column;}
  .sidebar{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:12px 16px;}
  .sidebar-smile,.sidebar-tag,.sidebar-foot,.nav-sec{display:none;}
  .sidebar-logo{margin:0;}
  .sidebar-logo img{width:120px;}
  .nav{flex-direction:row;flex-wrap:wrap;gap:4px;}
  .nav a{padding:7px 10px;border-left:0;border-bottom:3px solid transparent;}
  .nav a.activo{border-left:0;border-bottom-color:var(--lima);}
  .contenido{padding:22px 18px 60px;}
}
