/* ============================================================
   TrainingBoutique · Dashboard de Leads
   Fiel a trainingboutique.es (bundle Astro)
   --bg-dark:#242424 · --accent:#bdad98 · --green:#4b5951 · --bg-soft:#f7f7f5
   Serif Libre Baskerville · Sans Raleway
   ============================================================ */
:root{
  --dark:#242424; --dark-2:#2b2b2b; --dark-3:#3a3a3a;
  --text:#242424; --ink-soft:#5b544c; --muted:#948d80;
  --soft:#f7f7f5; --paper:#ffffff; --cream:#f2eadf;
  --accent:#bdad98; --accent-d:#a2896a; --accent-dd:#8a7358; --accent-soft:#e9deca;
  --green:#4b5951; --green-l:#5a665f;
  --line:#e7e2d9; --line-2:#eee9e1;

  /* estados (sobrios, en línea con la marca) */
  --st-nuevo:#3a5a99; --st-contactado:#7a6cae; --st-espera:#c2912f;
  --st-cita:#4b7d63; --st-venta:#2f6b45; --st-perdido:#a8544c;

  --shadow:0 1px 3px rgba(36,36,36,.06),0 12px 32px rgba(36,36,36,.06);
  --shadow-lg:0 24px 60px rgba(36,36,36,.24);
  --radius:16px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:'Raleway',-apple-system,Segoe UI,Roboto,sans-serif;
  background:#242424;
  background-image:linear-gradient(135deg,#242424 0%,#262826 52%,#2f3a33 100%);
  background-attachment:fixed;
  color:var(--text);-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.muted{color:var(--muted)}
h1,h2,h3{font-family:'Libre Baskerville',Georgia,serif;font-weight:700}

/* ===== Botones (pills, como la web) ===== */
.btn{font-family:'Raleway',sans-serif;font-weight:500;font-size:14px;border:0;border-radius:999px;
  padding:13px 22px;cursor:pointer;transition:transform .24s cubic-bezier(.2,.65,.2,1),background-color .24s,color .24s}
.btn:hover{transform:translateY(-1px)}
.btn-block{width:100%;margin-top:14px}
.btn-dark{background:var(--dark);color:#fff}
.btn-dark:hover{background:#000}
.btn-light{background:#fff;color:var(--dark)}
.btn-light:hover{background:var(--cream)}
.btn-gold{background:var(--accent);color:var(--dark)}
.btn-gold:hover{background:var(--accent-d);color:#fff}
.btn-sm{padding:8px 16px;font-size:13px}

/* ===== Cabecera (idéntica a la web) ===== */
.tb-header{background:var(--dark);border-bottom:1px solid rgba(255,255,255,.1);
  position:sticky;top:0;z-index:30}
.tb-header-inner{max-width:1400px;margin:0 auto;padding:0 32px;height:80px;display:flex;
  align-items:center;justify-content:space-between;position:relative}
.tb-header-left,.tb-header-right{display:flex;align-items:center;gap:6px}
.tb-sep{width:1px;height:24px;background:rgba(255,255,255,.18);margin:0 6px;flex:0 0 auto}
.tb-nav{display:flex;align-items:center;gap:2px}
.tb-link{display:inline-flex;align-items:center;gap:8px;padding:12px 18px;border-radius:999px;
  color:#fff;font-size:14px;font-weight:500}
.tb-link.has-dot::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}
.nav-link{font-family:'Raleway',sans-serif;border:0;background:transparent;cursor:pointer;
  color:rgba(255,255,255,.6);transition:color .2s,background .2s}
.nav-link:hover{background:#ffffff12;color:#fff}
.nav-link.is-active{color:#fff}
.nav-link.is-active::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);
  display:inline-block}
.tb-header-logo{display:block;flex:0 0 auto}
.tb-header-logo img{height:26px;display:block}
.tb-user{color:rgba(255,255,255,.82);font-size:14px;font-weight:500;padding:0 6px;white-space:nowrap}
.tb-nav .nav-link{white-space:nowrap}
.tb-icon-btn{background:transparent;border:0;color:#fff;font-size:16px;line-height:1;cursor:pointer;
  width:40px;height:40px;border-radius:999px;transition:background .25s,color .2s;
  display:inline-flex;align-items:center;justify-content:center}
.tb-icon-btn:hover{background:#ffffff1a}
.tb-icon-btn svg{display:block}
#navConfigGear:hover svg{transform:rotate(40deg);transition:transform .3s}
.tb-icon-btn.gear-active{background:rgba(189,173,152,.18);color:var(--accent)}
.tb-cta{font-family:'Raleway',sans-serif;display:inline-flex;align-items:center;color:#fff;font-size:13px;
  font-weight:500;padding:12px 20px;border-radius:999px;background:var(--dark-3);border:0;cursor:pointer;
  transition:background .25s}
.tb-cta:hover{background:var(--green)}

/* ===== Hero (franja oscura, como la home) ===== */
.hero{position:relative;background:transparent;color:#fff}
.hero-overlay{display:none}
.hero-inner{position:relative;z-index:2;max-width:1240px;margin:0 auto;padding:34px 24px 40px;text-align:center}
.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;
  border:1px solid rgba(255,255,255,.2);border-radius:999px;backdrop-filter:blur(8px);
  font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#fff;font-weight:500}
.hero-title{font-size:clamp(30px,4.2vw,44px);line-height:1.05;font-weight:400;margin:16px 0 4px;
  letter-spacing:.005em}
.hero-title em{font-style:italic;color:var(--accent)}

/* stats como "burbujas" glass (idéntico a home-hero-stat) */
.hero-stats{margin-top:26px;padding-top:22px;border-top:1px solid rgba(255,255,255,.18);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;
  max-width:940px;margin-left:auto;margin-right:auto}
.kpi{text-align:center;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);border-radius:16px;
  padding:18px 12px 15px;backdrop-filter:blur(6px)}
.kpi .v{font-family:'Libre Baskerville',serif;font-size:clamp(28px,3.4vw,38px);line-height:1;color:var(--cream)}
.kpi .l{margin-top:9px;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#ffffffd1;font-weight:500}
.kpi .s{margin-top:4px;font-size:10.5px;color:#ffffff9c;letter-spacing:.02em}
.kpi.accent .v{color:#fff}
.kpi.good .v{color:var(--accent)}
.kpi.warn{border-color:rgba(194,145,47,.5)}
.kpi.warn .v{color:#e7b968}

.container{max-width:1240px;margin:0 auto;padding:28px 24px 40px}

/* ===== Layout 2 col ===== */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:22px}
@media(max-width:860px){.grid-2{grid-template-columns:1fr}}

/* ===== Colas de acción (Por contactar / A la espera) ===== */
.queue-card .card-head h2{display:flex;align-items:center;gap:10px}
.queue-hint{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:600}
.qbadge{font-family:'Raleway',sans-serif;font-size:12px;font-weight:700;color:#fff;background:var(--accent);
  border-radius:999px;padding:2px 11px;min-width:26px;text-align:center;line-height:1.6}
.queue-list{display:flex;flex-direction:column;gap:2px;max-height:296px;overflow:auto;margin:-4px -6px}
.queue-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;
  border-radius:12px;cursor:pointer;transition:background .12s}
.queue-item:hover{background:#faf7f1}
.queue-info{min-width:0}
.queue-name{font-weight:600;font-size:14px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.queue-phone{font-size:12.5px;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}
.queue-wa{flex:0 0 auto;background:var(--accent);color:var(--dark);font-size:12px;font-weight:600;
  padding:7px 14px;border-radius:999px;text-decoration:none;transition:.2s}
.queue-wa:hover{background:var(--accent-d);color:#fff}
.queue-empty{padding:26px;text-align:center;color:var(--muted);font-size:13px}

/* ===== Cards ===== */
.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);
  border:1px solid var(--line-2);padding:22px 24px}
.card.no-pad{padding:0;overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.card-head h2{font-size:18px;margin:0;color:var(--text)}

/* ===== Funnel ===== */
.funnel{display:flex;flex-direction:column;gap:12px}
.funnel-row{display:grid;grid-template-columns:116px 1fr 38px;align-items:center;gap:14px}
.funnel-row .name{font-size:13px;font-weight:600;color:var(--ink-soft)}
.funnel-row .track{background:var(--soft);border-radius:999px;overflow:hidden;height:22px}
.funnel-row .bar{height:100%;border-radius:999px;min-width:2px;transition:width .5s ease}
.funnel-row .num{font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}

/* ===== Mini table centros ===== */
.mini-table{width:100%;border-collapse:collapse;font-size:13.5px}
.mini-table th,.mini-table td{padding:11px 12px;text-align:left;border-bottom:1px solid var(--line)}
.mini-table thead th{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:600}
.mini-table tbody tr:last-child td{border-bottom:0}
.mini-table td.num,.mini-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.mini-table td.name{font-weight:600}

/* ===== Filtros ===== */
.filters{display:flex;flex-wrap:wrap;gap:11px;align-items:center;margin-bottom:16px}
.input{font-family:inherit;font-size:13.5px;padding:12px 14px;border:1px solid var(--line);
  border-radius:999px;background:var(--paper);color:var(--text);transition:.15s}
.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(189,173,152,.22)}
select.input{cursor:pointer;border-radius:999px}
#search{flex:1;min-width:230px}
.count{margin-left:auto;font-size:12.5px;color:rgba(255,255,255,.6);font-weight:600}

/* ===== Leads table ===== */
.table-scroll{overflow-x:auto}
.leads-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:860px}
.leads-table thead th{background:var(--soft);text-align:left;padding:13px 16px;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:600;
  position:sticky;top:0;border-bottom:1px solid var(--line)}
.leads-table td{padding:13px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.leads-table tbody tr{transition:background .12s}
.leads-table tbody tr:hover td{background:#faf7f1}
.leads-table tbody tr:last-child td{border-bottom:0}
.leads-table .nm{font-weight:600;color:var(--text)}
.contact-links{display:flex;gap:10px;font-size:12.5px}
.contact-links a{color:var(--accent-dd);text-decoration:none;font-weight:600}
.contact-links a:hover{color:var(--text);text-decoration:underline}

.estado-sel{font-family:'Raleway',sans-serif;font-weight:600;font-size:11.5px;border:0;border-radius:999px;
  padding:7px 26px 7px 14px;color:#fff;cursor:pointer;appearance:none;
  background-position:right 10px center;background-repeat:no-repeat;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='6' viewBox='0 0 8 6'%3E%3Cpath d='M1 1l3 3 3-3' fill='none' stroke='%23ffffff' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E")}

.prio{font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.prio::before{content:"";width:7px;height:7px;border-radius:50%}
.prio-Alta{color:var(--st-perdido)} .prio-Alta::before{background:var(--st-perdido)}
.prio-Media{color:var(--st-espera)} .prio-Media::before{background:var(--st-espera)}
.prio-Baja{color:var(--muted)} .prio-Baja::before{background:var(--muted)}

.empty{padding:48px;text-align:center;color:var(--muted);font-size:14px}
.app-foot{text-align:center;color:rgba(255,255,255,.4);font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;margin-top:30px}

/* ===== Login ===== */
.login-wrap{min-height:100vh;display:grid;place-items:center;
  background:radial-gradient(130% 100% at 50% -10%,#2f3a33 0%,#242424 55%)}
.login-inner{width:min(400px,92vw);display:flex;flex-direction:column;align-items:center}
.login-logo{height:30px;width:auto;margin-bottom:22px}
.login-inner .hero-badge{margin-bottom:22px}
.login-card{background:var(--paper);width:100%;padding:34px 32px 32px;border-radius:18px;
  box-shadow:0 30px 70px rgba(0,0,0,.42)}
.login-card h1{font-size:24px;font-weight:400;margin:0 0 18px;text-align:center}
.login-card h1 em{font-style:italic;color:var(--accent-d)}
.login-card label{display:block;font-size:10.5px;font-weight:600;text-transform:uppercase;
  letter-spacing:.11em;color:var(--ink-soft);margin:16px 0 7px}
.login-card input{width:100%;padding:13px 15px;border:1px solid var(--line);border-radius:12px;
  font-family:inherit;font-size:15px;background:var(--soft);transition:.15s}
.login-card input:focus{outline:none;border-color:var(--accent);background:#fff;
  box-shadow:0 0 0 3px rgba(189,173,152,.25)}
.login-error{color:var(--st-perdido);font-size:13px;margin-top:12px;text-align:center}
/* Casilla "mantener sesión": anula el estilo genérico de label/input de la tarjeta de login */
.login-card label.login-remember{display:flex;align-items:center;gap:9px;margin:18px 0 6px;
  font-size:12.5px;font-weight:500;text-transform:none;letter-spacing:normal;
  color:var(--ink-soft);cursor:pointer}
.login-card label.login-remember input[type=checkbox]{width:16px;height:16px;padding:0;margin:0;
  flex:0 0 auto;border-radius:5px;accent-color:var(--accent);cursor:pointer}

/* ===== Rendimiento ===== */
.sect-head{margin:6px 0 16px}
.sect-head h2{font-size:22px;margin:0;color:#f4efe6}
.sect-sub{display:block;font-size:12.5px;color:var(--muted);margin-top:4px}
.sect-head .sect-sub{color:rgba(255,255,255,.55)}
.channels{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:26px}
.channel-card{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:20px 22px;position:relative}
.channel-card.is-best{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}
.channel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.channel-name{font-weight:700;font-size:15px;color:var(--text)}
.channel-flag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  background:var(--accent);color:var(--dark);padding:4px 10px;border-radius:999px}
.channel-big{display:flex;align-items:baseline;gap:10px}
.channel-pct{font-family:'Libre Baskerville',serif;font-size:40px;line-height:1;color:var(--text)}
.channel-pct-l{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.channel-bar{height:8px;background:var(--soft);border-radius:999px;overflow:hidden;margin:14px 0 12px}
.channel-bar-fill{height:100%;background:var(--green);border-radius:999px}
.channel-stats{display:flex;gap:16px;font-size:12.5px;color:var(--muted)}
.channel-stats b{color:var(--text);font-weight:700}

.perf-card{margin-bottom:20px}
.perf-head{padding:20px 24px 14px}
.perf-head h2{font-size:18px;margin:0}
.perf-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:680px}
.perf-table thead th{background:var(--soft);text-align:left;padding:12px 16px;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}
.perf-table th.num,.perf-table td.num{text-align:right;font-variant-numeric:tabular-nums}
.perf-table td{padding:12px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.perf-table tbody tr:last-child td{border-bottom:0}
.perf-row{border-left:3px solid transparent}
.perf-row.rec-boost td:first-child{box-shadow:inset 3px 0 0 var(--st-venta)}
.perf-row.rec-cut td:first-child{box-shadow:inset 3px 0 0 var(--st-perdido)}
.perf-row:hover td{background:#faf7f1}
.pname{font-weight:600;color:var(--text);max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv{display:flex;align-items:center;gap:10px;min-width:120px}
.conv-bar{flex:1;height:7px;background:var(--soft);border-radius:999px;overflow:hidden;min-width:60px}
.conv-fill{height:100%;background:var(--accent-d);border-radius:999px}
.conv span{font-weight:700;font-variant-numeric:tabular-nums;font-size:12.5px;min-width:38px;text-align:right}
.rec{font-size:11px;font-weight:700;padding:5px 12px;border-radius:999px;white-space:nowrap}
.rec-boost{background:#e5f0e8;color:#2f6b45}
.rec-cut{background:#f6e6e4;color:#a8544c}
.rec-keep{background:#efe9df;color:#8a7358}
.rec-watch{background:#eeeae3;color:#948d80}
.perf-note{font-size:12px;color:rgba(255,255,255,.5);line-height:1.6;margin:8px 4px 0}
.perf-note b{color:rgba(255,255,255,.8)}
/* Fila de campaña/anuncio desplegable → leads que le corresponden */
.perf-row.perf-clickable{cursor:pointer}
.perf-caret{display:inline-block;color:var(--accent-d);font-size:10px;margin-right:5px;transition:transform .18s}
.perf-row.open .perf-caret{transform:rotate(90deg)}
.perf-row.open td{background:#f6f1e8}
.perf-detail td{padding:0 16px 4px!important;background:#faf7f1}
.perf-leads{display:flex;flex-direction:column;gap:2px;padding:6px 0 10px;max-height:340px;overflow:auto}
.perf-leads.muted{color:var(--muted);font-size:13px;padding:14px 0}
.pl-row{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;cursor:pointer;
  background:var(--paper);border:1px solid var(--line-2);transition:border-color .15s,box-shadow .15s}
.pl-row:hover{border-color:var(--accent);box-shadow:0 3px 12px -6px rgba(0,0,0,.25)}
.pl-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.pl-name{font-weight:600;color:var(--text);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-estado{font-size:11.5px;font-weight:600;color:var(--ink-soft);white-space:nowrap}
.pl-rec{font-size:10.5px;font-weight:800;color:#7fae8f;background:rgba(127,174,143,.14);border-radius:6px;padding:2px 7px;white-space:nowrap}
.pl-centro{font-size:12px;color:var(--muted);white-space:nowrap}
.pl-tel{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pl-wa{flex:0 0 auto;font-size:11.5px;font-weight:600;color:var(--accent-dd);text-decoration:none;
  border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.pl-wa:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
@media(max-width:640px){.pl-centro,.pl-tel{display:none}}

/* ===== Contabilidad ===== */
.contab-top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.contab-kpis{margin-top:0;padding-top:0;border-top:0;margin-bottom:24px;
  max-width:none;margin-left:0;margin-right:0;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
/* Botón ghost claro (visible sobre el fondo oscuro: filtros, cabeceras) */
.btn-ghost-light{background:#ffffff14;border:1px solid rgba(255,255,255,.24);color:#fff;box-shadow:none}
.btn-ghost-light:hover{background:#ffffff26;border-color:rgba(255,255,255,.42);color:#fff}

/* Leads «Nuevo» estancados (>24 h sin gestionar) */
.leads-table tr.lead-stale td{background:rgba(168,84,76,.07)}
.leads-table tr.lead-stale td:first-child{box-shadow:inset 3px 0 0 var(--st-perdido)}
.queue-item.q-stale{background:rgba(168,84,76,.06)}

/* Renovaciones */
.renov-venc td{background:rgba(168,84,76,.07)}
.renov-pronto td{background:rgba(194,145,47,.06)}
.renov-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  background:var(--st-perdido);color:#fff;padding:2px 8px;border-radius:999px;margin-left:6px}
.renov-badge.pronto{background:var(--st-espera)}
.renov-row{cursor:pointer}
.perf-table tbody tr.renov-row:hover td{background:#faf7f1}
#renovTable{min-width:920px}
.renov-fp{display:flex;align-items:center;gap:12px;margin:16px 0 4px}
.renov-fp label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.renov-fp .input{max-width:240px}

.contab-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.contab-custom{display:inline-flex;align-items:center;gap:8px}
.contab-custom .input{padding:10px 12px}
.contab-dash{color:rgba(255,255,255,.5);font-weight:600}
@media(max-width:600px){.contab-controls{width:100%}.contab-controls .input{flex:1;min-width:0}}
.months{display:flex;flex-direction:column;gap:11px}
.funnel-row.wide{grid-template-columns:132px 1fr 104px}
.funnel-row.wide .name{white-space:normal;line-height:1.25}
.funnel-row.wide .num{width:auto}
@media(max-width:600px){ .funnel-row.wide{grid-template-columns:96px 1fr 88px} }

/* ===== Sábados ===== */
.sat-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.year-switch{display:flex;align-items:center;gap:10px;color:#fff}
.year-switch span{font-family:'Libre Baskerville',serif;font-size:20px;min-width:56px;text-align:center}
.roster-add{display:flex;gap:10px;margin-bottom:14px}
.roster-add .input{max-width:280px}
.roster-list{display:flex;flex-wrap:wrap;gap:8px}
.roster-chip{display:inline-flex;align-items:center;gap:8px;background:var(--soft);border:1px solid var(--line);
  border-radius:999px;padding:7px 8px 7px 14px;font-size:13.5px;font-weight:600;color:var(--text)}
.roster-x{border:0;background:var(--line);color:var(--ink-soft);width:20px;height:20px;border-radius:50%;
  cursor:pointer;font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.roster-x:hover{background:var(--st-perdido);color:#fff}

/* Permisos por perfil */
.perms-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}
.perms-table thead th{background:var(--soft);text-align:center;padding:12px 14px;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}
.perms-table thead th:first-child{text-align:left}
.perms-table td{padding:12px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.perms-table tbody tr:last-child td{border-bottom:0}
.perms-table td.c{text-align:center}
.perm-name b{display:block;font-weight:600;color:var(--text)}
.perm-sub{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.perm-sel{font-family:inherit;font-size:12.5px;font-weight:600;padding:6px 8px;border-radius:8px;
  border:1px solid var(--line);background:var(--paper);color:var(--text);cursor:pointer;min-width:104px}
.perm-sel.lvl-none{color:var(--muted);background:var(--soft)}
.perm-sel.lvl-read{color:#3a5a99;border-color:#c3d0e6;background:#eef3fb}
.perm-sel.lvl-edit{color:#2f6b45;border-color:#bcd9c6;background:#eaf6ee}

.sat-card{margin-bottom:16px}
.sat-month{display:flex;flex-direction:column}
.sat-row{display:flex;align-items:center;gap:16px;padding:11px 4px;border-bottom:1px solid var(--line-2)}
.sat-row:last-child{border-bottom:0}
.sat-date{flex:0 0 84px;font-size:14px;color:var(--ink-soft)}
.sat-date b{color:var(--text)}
.sat-chips{display:flex;flex-wrap:wrap;gap:8px}
.sat-chip{font-family:'Raleway',sans-serif;font-size:13px;font-weight:600;padding:7px 14px;border-radius:999px;
  border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer;transition:.15s}
.sat-chip:hover{border-color:var(--accent);color:var(--ink-soft)}
.sat-chip.on{background:var(--green);border-color:var(--green);color:#fff}
.sat-chip.on:hover{background:var(--green-l)}
.sat-chip.ro{cursor:default;opacity:.9}
.sat-chip.ro:hover{border-color:var(--line);color:var(--muted)}
.sat-chip.on.ro:hover{background:var(--green);color:#fff}

/* nav con scroll si hay muchas pestañas */
.tb-nav{overflow-x:auto;scrollbar-width:none}
.tb-nav::-webkit-scrollbar{display:none}

/* ===== Bajas (comisiones) ===== */
.baja-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.baja-field{display:flex;flex-direction:column;gap:6px}
.baja-field label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft)}
.baja-field:first-child{flex:1;min-width:220px}
.baja-field .input{width:100%}
.baja-search{position:relative;z-index:5}
.baja-results{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 18px 40px -14px rgba(0,0,0,.45);z-index:60;max-height:240px;overflow:auto}
/* La tarjeta de alta de factura debe apilarse por encima de la lista de facturas
   para que el desplegable de clientes no quede tapado por la tarjeta de abajo */
#facturaAddCard{position:relative;z-index:20}
.baja-result{padding:10px 13px;font-size:13.5px;cursor:pointer;border-bottom:1px solid var(--line-2)}
.baja-result:last-child{border-bottom:0}
.baja-result:hover{background:var(--taupe-xl)}
.baja-result-manual{color:var(--accent-dd);font-weight:700;border-top:1px solid var(--line)}
.baja-result-manual:hover{background:var(--accent-soft)}

/* ===== Subidor de datos ===== */
.upload-card{margin-bottom:24px}
.upload-drop{border:2px dashed var(--line);border-radius:14px;padding:26px 20px;text-align:center;
  background:var(--soft);transition:.15s}
.upload-drop.over{border-color:var(--accent);background:var(--taupe-xl)}
.upload-drop p{margin:0 0 6px;font-size:14px;color:var(--ink-soft)}
.upload-drop .sect-sub{color:var(--muted)}
.upload-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.up-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line-2);
  border-radius:12px;background:#fff}
.up-name{flex:1;min-width:180px;font-weight:600;font-size:13px;color:var(--text);word-break:break-all}
.up-row .input{padding:8px 10px;font-size:13px}
.up-status{font-size:12.5px;font-weight:600;min-width:90px}
.up-status.ok{color:var(--st-venta)}
.up-status.err{color:var(--st-perdido)}

/* ===== Necesidades: navegación con alerta ===== */
.nav-alert{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;
  padding:0 5px;margin-left:7px;border-radius:999px;background:var(--st-perdido);color:#fff;
  font-size:11px;font-weight:700;font-family:'Raleway',sans-serif}

.needs-banner{background:#f6e6e4;border:1px solid #e6c3bd;color:#a8544c;border-radius:14px;
  padding:12px 16px;margin-bottom:20px;font-size:13px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.needs-banner b{margin-right:4px}
.low-chip{background:#fff;border:1px solid #e6c3bd;border-radius:999px;padding:4px 11px;font-weight:600;font-size:12px}

/* Inventario — manager (lista) */
.inv-list{display:flex;flex-direction:column}
.inv-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 6px;
  border-bottom:1px solid var(--line-2)}
.inv-row:last-child{border-bottom:0}
.inv-row.low{background:#fdf3f1;margin:0 -24px;padding-left:24px;padding-right:24px}
.inv-name{font-weight:600;font-size:15px;color:var(--text)}
.inv-right{display:flex;align-items:center;gap:12px}
.reponer{background:var(--st-perdido);color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;padding:4px 11px;border-radius:999px}

/* Inventario — admin (matriz) */
.inv-matrix{width:100%;border-collapse:collapse;font-size:13.5px;min-width:620px}
.inv-matrix thead th{background:var(--soft);padding:13px 14px;text-align:left;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line)}
.inv-matrix th.c,.inv-matrix td.c{text-align:center}
.inv-matrix td{padding:11px 14px;border-bottom:1px solid var(--line-2)}
.inv-matrix tbody tr:last-child td{border-bottom:0}
.inv-matrix .inv-prod{font-weight:600;color:var(--text)}
.inv-matrix td.low{background:#fdf3f1}

.unit-sel{font-family:'Raleway',sans-serif;font-size:13.5px;font-weight:600;padding:7px 12px;
  border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--text);cursor:pointer;min-width:64px}
.unit-sel:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(189,173,152,.22)}
.unit-sel.low{border-color:var(--st-perdido);color:var(--st-perdido);background:#fdf3f1}

/* Mantenimiento */
.maint-add{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
.maint-add select.input{min-width:140px}
.maint-text{flex:1;min-width:220px;min-height:46px;resize:vertical;border-radius:14px;font-family:inherit;
  padding:12px 14px;font-size:14px}
.maint-item{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:15px 20px;
  border-bottom:1px solid var(--line-2)}
.maint-item:last-child{border-bottom:0}
.maint-item.done{opacity:.6}
.maint-item.done .maint-texto{text-decoration:line-through}
.maint-main{min-width:0}
.maint-center{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--accent-dd);background:var(--soft);padding:3px 10px;border-radius:999px;margin-bottom:6px}
.maint-texto{font-size:14px;color:var(--text);line-height:1.5}
.maint-meta{font-size:11.5px;color:var(--muted);margin-top:5px}
.maint-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}
.maint-badge{font-size:11px;font-weight:700;padding:4px 11px;border-radius:999px}
.maint-badge.pend{background:#fdeede;color:#c2912f}
.maint-badge.ok{background:#e5f0e8;color:#2f6b45}
.maint-del{background:transparent;color:var(--muted);border:1px solid var(--line)}
.maint-del:hover{color:var(--st-perdido);border-color:var(--st-perdido)}

/* ===== Modal ===== */
.modal-wrap{position:fixed;inset:0;background:rgba(36,36,36,.5);backdrop-filter:blur(3px);
  display:grid;place-items:center;z-index:50;padding:20px}
.modal{background:var(--paper);border-radius:18px;width:min(700px,96vw);max-height:90vh;
  overflow:auto;position:relative;box-shadow:var(--shadow-lg)}
.modal-close{position:absolute;top:14px;right:16px;background:transparent;border:0;font-size:26px;
  line-height:1;cursor:pointer;color:var(--muted);z-index:2}
.modal-close:hover{color:var(--text)}
.modal-body{padding:30px 32px}
.modal h2{margin:0 0 3px;font-size:24px;font-weight:400}
.modal .sub{color:var(--muted);font-size:12px;margin-bottom:20px;letter-spacing:.08em;
  text-transform:uppercase;font-weight:500}
.info-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;font-size:13px;color:var(--ink-soft);
  background:var(--soft);border:1px solid var(--line-2);border-radius:14px;padding:14px 16px;margin-bottom:22px}
.info-row b{color:var(--text);font-weight:600}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.form-grid .full{grid-column:1/-1}
.field label{display:block;font-size:10.5px;font-weight:600;text-transform:uppercase;
  letter-spacing:.1em;color:var(--ink-soft);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;padding:11px 13px;border:1px solid var(--line);
  border-radius:12px;font-family:inherit;font-size:13.5px;background:var(--paper);color:var(--text);transition:.15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(189,173,152,.22)}
.field textarea{resize:vertical;min-height:68px}
.modal-actions{display:flex;gap:11px;justify-content:flex-end;margin-top:24px;flex-wrap:wrap}

.timeline{margin-top:26px;border-top:1px solid var(--line);padding-top:20px}
.timeline h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);
  margin:0 0 14px;font-family:'Raleway',sans-serif;font-weight:700}
.note-add{display:flex;gap:9px;margin-bottom:16px}
.note-add input{flex:1}
.tl-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line);font-size:13px}
.tl-item:last-child{border-bottom:0}
.tl-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex:0 0 auto;
  box-shadow:0 0 0 3px var(--accent-soft)}
.tl-item .when{color:var(--muted);font-size:11.5px;margin-top:2px}

.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--dark);color:#fff;
  padding:13px 22px;border-radius:999px;font-size:13.5px;font-weight:600;z-index:80;
  box-shadow:var(--shadow-lg);border:1px solid rgba(189,173,152,.3)}

@media(max-width:600px){
  .form-grid{grid-template-columns:1fr}
  .container{padding:18px 14px 30px}
  .tb-header-inner{height:64px;padding:0 12px}
  .tb-header-logo{display:none}
  .tb-sep{display:none}
  .tb-user{display:none}
  .tb-nav{gap:0}
  .nav-link{padding:9px 11px;font-size:13px}
  .modal-body{padding:24px 20px}
}

/* ============================================================
   PASE DE PROFUNDIDAD (v22)
   Sombras en capas, degradados sutiles, brillo taupe y elevación.
   Mantiene la identidad TB (cremas + serif) pero con volumen.
   ============================================================ */
:root{
  --shadow:0 1px 2px rgba(20,18,16,.05), 0 10px 24px -8px rgba(20,18,16,.10), 0 30px 60px -26px rgba(20,18,16,.20);
  --shadow-lg:0 40px 90px -22px rgba(0,0,0,.55), 0 8px 24px -8px rgba(0,0,0,.4);
  --ring-top:inset 0 1px 0 rgba(255,255,255,.9);
}

/* Fondo: focos de luz en vez de un plano liso */
body{
  background:
    radial-gradient(1150px 620px at 80% -10%, rgba(189,173,152,.16), transparent 60%),
    radial-gradient(920px 640px at 4% 112%, rgba(75,89,81,.24), transparent 62%),
    linear-gradient(155deg,#201f1e 0%,#242625 46%,#2b332e 100%);
  background-attachment:fixed;
}

/* Cabecera con volumen y sombra proyectada */
.tb-header{
  background:linear-gradient(180deg,#2c2c2c,#232323);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 16px 36px -20px rgba(0,0,0,.85);
}

/* Hero: halo de luz taupe detrás del título */
.hero::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(660px 280px at 50% 6%, rgba(189,173,152,.18), transparent 70%);
}
.hero-inner{position:relative;z-index:2}

/* Burbujas KPI del hero: cristal con brillo superior y elevación */
.kpi{
  background:linear-gradient(180deg, rgba(255,255,255,.15), rgba(255,255,255,.045));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24), 0 20px 42px -22px rgba(0,0,0,.7);
  transition:transform .28s cubic-bezier(.2,.65,.2,1), box-shadow .28s;
}
.kpi:hover{transform:translateY(-3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.32), 0 28px 54px -20px rgba(0,0,0,.75)}

/* Tarjetas: degradado sutil + reborde superior claro + sombra en capas */
.card, .channel-card{
  background:linear-gradient(180deg,#ffffff 0%,#fbf8f2 100%);
  border:1px solid rgba(36,36,36,.06);
  box-shadow:var(--ring-top), var(--shadow);
  transition:transform .28s cubic-bezier(.2,.65,.2,1), box-shadow .28s;
}
.card:not(.no-pad):hover, .channel-card:hover{
  transform:translateY(-3px);
  box-shadow:var(--ring-top), 0 2px 4px rgba(20,18,16,.05),
    0 20px 42px -12px rgba(20,18,16,.18), 0 44px 84px -34px rgba(20,18,16,.24);
}
.channel-card.is-best{box-shadow:0 0 0 1px var(--accent), var(--ring-top), var(--shadow)}
.channel-card.is-best:hover{box-shadow:0 0 0 1px var(--accent), var(--ring-top),
  0 20px 42px -12px rgba(20,18,16,.2), 0 44px 84px -34px rgba(20,18,16,.26)}

/* Inputs con hundido sutil (dan sensación de tallado) */
.input{box-shadow:inset 0 1px 2px rgba(36,36,36,.06)}
.input:focus{box-shadow:inset 0 1px 2px rgba(36,36,36,.05), 0 0 0 3px rgba(189,173,152,.24)}

/* Botones con degradado, brillo y sombra */
.btn-gold{background:linear-gradient(180deg,#c8b7a0,#b6a488);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 8px 18px -8px rgba(138,115,88,.7)}
.btn-gold:hover{background:linear-gradient(180deg,#b6a488,#a2896a);color:#fff}
.btn-dark{background:linear-gradient(180deg,#333,#242424);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 10px 22px -10px rgba(0,0,0,.75)}
.btn-light{box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 8px 20px -8px rgba(20,18,16,.35)}
.btn-primary{background:linear-gradient(180deg,#586a60,#465448);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12), 0 10px 24px -10px rgba(30,44,36,.75)}
.btn-primary:hover{background:linear-gradient(180deg,#4f5f56,#3c4a3f)}
.btn:active{transform:translateY(0)}

/* Colas y tarjetas de contacto: reborde claro para separarlas del fondo */
.channel-bar-fill{background:linear-gradient(90deg,var(--green-l),var(--green))}

/* Modal más elevado y con fondo desenfocado */
.modal{box-shadow:var(--shadow-lg)}
.modal-wrap{background:rgba(20,18,16,.55);backdrop-filter:blur(5px)}

/* Selector de permisos: leve profundidad */
.perm-sel{box-shadow:inset 0 1px 1px rgba(36,36,36,.05)}

/* ============================================================
   LAYOUT v32 — barra lateral de iconos + topbar (estilo panel)
   ============================================================ */
:root{ --side-w:78px; --top-h:62px; }

/* Neutraliza restos del nav horizontal antiguo */
.tb-header{display:none}
.nav-link.is-active::before{display:none!important}

/* ---- Barra superior ---- */
.tb-topbar{position:fixed;top:0;left:0;right:0;height:var(--top-h);z-index:45;
  display:flex;align-items:center;justify-content:space-between;padding:0 22px;
  background:linear-gradient(180deg,#2c2c2c,#232323);
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.05),0 12px 30px -18px rgba(0,0,0,.85)}
.tb-topbar-logo{display:flex;align-items:center;flex:0 0 auto}
/* width:auto + flex:none + aspect-ratio → Safari no aplasta la imagen dentro del flex (Chrome ya iba bien) */
.tb-topbar-logo img{height:24px;width:auto;flex:0 0 auto;object-fit:contain;aspect-ratio:1182/184;display:block}
.tb-topbar-right{display:flex;align-items:center;gap:10px}

/* ---- Barra lateral (rail) ---- */
.tb-side{position:fixed;top:var(--top-h);left:0;bottom:0;width:var(--side-w);z-index:40;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;
  padding:14px 0 16px;background:linear-gradient(180deg,#242424,#1e1e1e);
  border-right:1px solid rgba(255,255,255,.06)}
.tb-side-nav{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.tb-side .nav-link,.tb-side-gear{position:relative;width:48px;height:48px;border:0;background:transparent;
  border-radius:14px;color:rgba(255,255,255,.74);cursor:pointer;display:flex;align-items:center;
  justify-content:center;transition:background .2s,color .2s;padding:0;font-family:inherit}
.tb-side .nav-ic{width:22px;height:22px;display:block;shape-rendering:geometricPrecision}
.tb-side .nav-link:hover,.tb-side-gear:hover{background:#ffffff14;color:#fff}
.tb-side .nav-link.is-active{background:linear-gradient(180deg,rgba(189,173,152,.30),rgba(189,173,152,.15));
  color:var(--cream);box-shadow:inset 0 0 0 1px rgba(189,173,152,.42)}
.tb-side-gear.gear-active{background:rgba(189,173,152,.2);color:var(--accent)}
#navConfigGear:hover .nav-ic{transform:rotate(35deg);transition:transform .3s}
/* Tooltip lateral */
.tb-side .nav-link::after,.tb-side-gear::after{content:attr(data-label);position:absolute;left:58px;
  white-space:nowrap;background:#111;color:#fff;font-size:12px;font-weight:500;padding:6px 10px;
  border-radius:8px;opacity:0;pointer-events:none;transform:translateX(-4px);transition:.15s;z-index:60;
  box-shadow:0 8px 20px -8px rgba(0,0,0,.7)}
.tb-side .nav-link:hover::after,.tb-side-gear:hover::after{opacity:1;transform:translateX(0)}
/* Badge de alerta sobre el icono */
.tb-side .nav-alert{position:absolute;top:5px;right:5px;margin:0;min-width:16px;height:16px;
  padding:0 4px;font-size:10px}

/* ---- Zona principal ---- */
.tb-main{margin-left:var(--side-w);padding-top:var(--top-h)}
.crumb{display:flex;align-items:center;gap:8px;max-width:1240px;margin:0 auto;padding:16px 24px 0;
  font-size:12px;font-weight:600;letter-spacing:.04em;color:rgba(255,255,255,.45)}
.crumb-root{color:rgba(255,255,255,.6)}
.crumb-sep{color:rgba(255,255,255,.3);font-size:14px}
#crumbView{color:var(--accent)}

/* Modal por encima de topbar/sidebar */
.modal-wrap{z-index:200}

/* ---- Responsive: rail pasa a barra inferior ---- */
@media(max-width:760px){
  .tb-side{top:auto;bottom:0;left:0;right:0;width:auto;height:60px;flex-direction:row;
    padding:0 6px;border-right:0;border-top:1px solid rgba(255,255,255,.08)}
  .tb-side-nav{flex-direction:row;gap:4px;overflow-x:auto;height:100%;align-items:center;
    justify-content:flex-start}
  .tb-side .nav-link,.tb-side-gear{width:44px;height:44px;flex:0 0 auto}
  .tb-side .nav-link::after,.tb-side-gear::after{display:none}
  .tb-main{margin-left:0;padding-bottom:66px}
  .tb-topbar{padding:0 14px}
}

/* ============================================================
   v33 — Burbujas KPI con más carácter + acento en cabeceras
   ============================================================ */
.kpi{position:relative;overflow:hidden;border-radius:18px;border:1px solid rgba(255,255,255,.16);
  background:
    radial-gradient(130px 70px at 100% 0%, rgba(189,173,152,.18), transparent 72%),
    linear-gradient(180deg, rgba(255,255,255,.17), rgba(255,255,255,.05));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28), 0 22px 44px -22px rgba(0,0,0,.72)}
/* Línea de acento superior */
.kpi::before{content:"";position:absolute;top:0;left:16px;right:16px;height:2px;border-radius:0 0 2px 2px;
  background:linear-gradient(90deg,transparent,rgba(189,173,152,.8),transparent)}
/* Brillo suave en la esquina */
.kpi::after{content:"";position:absolute;right:-34px;bottom:-42px;width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle,rgba(189,173,152,.13),transparent 70%);pointer-events:none}
.kpi .v{position:relative;text-shadow:0 2px 14px rgba(189,173,152,.22)}
.kpi .l,.kpi .s{position:relative}
.kpi:hover{transform:translateY(-3px);box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 28px 54px -20px rgba(0,0,0,.78)}
/* Acentos por tipo */
.kpi.good::before{background:linear-gradient(90deg,transparent,rgba(47,107,69,.9),transparent)}
.kpi.good::after{background:radial-gradient(circle,rgba(75,125,99,.18),transparent 70%)}
.kpi.warn{border-color:rgba(194,145,47,.42)}
.kpi.warn::before{background:linear-gradient(90deg,transparent,rgba(194,145,47,.95),transparent)}
.kpi.warn::after{background:radial-gradient(circle,rgba(194,145,47,.16),transparent 70%)}
.kpi.accent::before{background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}

/* Cabeceras de tarjeta con marcador de acento (barra taupe→verde) */
.card-head h2{display:inline-flex;align-items:center;gap:10px}
.card-head h2::before{content:"";width:4px;height:15px;border-radius:2px;flex:0 0 auto;
  background:linear-gradient(180deg,var(--accent),var(--green))}

/* ============================================================
   v34 — Tarjetas blancas con más estilo (brillo de esquina + cabecera con línea)
   ============================================================ */
.card,.channel-card{position:relative}
.card::after,.channel-card::after{content:"";position:absolute;top:0;right:0;width:190px;height:130px;z-index:0;
  pointer-events:none;border-top-right-radius:var(--radius);
  background:radial-gradient(170px 130px at 100% 0%, rgba(189,173,152,.12), transparent 70%)}
.card>*,.channel-card>*{position:relative;z-index:1}
/* Cabecera con línea divisoria sutil */
.card-head{border-bottom:1px solid var(--line-2);padding-bottom:13px;margin-bottom:15px}
.card-head h2{font-size:17px;letter-spacing:.005em}

/* ============================================================
   v35 — Icono en la burbuja KPI + acento en cabeceras de sección
   ============================================================ */
.kpi-ic{margin:0 auto 9px;width:34px;height:34px;border-radius:10px;z-index:2;position:relative;
  display:flex;align-items:center;justify-content:center;color:var(--accent);
  background:rgba(189,173,152,.15);border:1px solid rgba(189,173,152,.24)}
.kpi-ic svg{width:16px;height:16px;display:block}
.kpi.good .kpi-ic{color:#84c79c;background:rgba(75,125,99,.18);border-color:rgba(75,125,99,.32)}
.kpi.warn .kpi-ic{color:#e7b968;background:rgba(194,145,47,.16);border-color:rgba(194,145,47,.34)}
.kpi.accent .kpi-ic{color:#fff;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.24)}

/* Cabeceras de sección (títulos "Rendimiento…") con marcador de acento */
.sect-head h2{display:inline-flex;align-items:center;gap:11px}
.sect-head h2::before{content:"";width:4px;height:18px;border-radius:2px;flex:0 0 auto;
  background:linear-gradient(180deg,var(--accent),var(--green))}

/* ============================================================
   v37 — Burbuja KPI horizontal: icono a la izquierda, texto a la derecha
   ============================================================ */
.hero-stats{grid-template-columns:repeat(auto-fit,minmax(178px,1fr))}
.kpi{display:flex;align-items:center;gap:13px;text-align:left;padding:15px 16px}
.kpi-ic{flex:0 0 auto;margin:0;width:40px;height:40px;border-radius:12px}
.kpi-ic svg{width:19px;height:19px}
.kpi-body{min-width:0;flex:1}
.kpi .v{font-size:clamp(23px,2.6vw,30px);margin:0}
.kpi .l{margin-top:5px;text-align:left}
.kpi .s{text-align:left}
/* la línea de acento superior estorba en horizontal: la quitamos */
.kpi::before{display:none}

/* ============================================================
   v38 — Facturas
   ============================================================ */
.factura-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.factura-form .input{flex:1;min-width:140px}
.factura-form .btn{flex:0 0 auto}
.fact-file{display:flex;align-items:center;gap:10px}
.fact-link{color:var(--accent-dd);font-weight:600;text-decoration:none}
.fact-link:hover{text-decoration:underline}
.fact-up{display:inline-flex;align-items:center;cursor:pointer;background:var(--soft);border:1px solid var(--line);
  color:var(--ink-soft);border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;transition:.15s}
.fact-up:hover{border-color:var(--accent);color:var(--text)}
.fact-drop{display:inline-flex;align-items:center;gap:8px;cursor:pointer;background:var(--soft);
  border:1.5px dashed var(--line);color:var(--ink-soft);border-radius:12px;padding:10px 16px;
  font-size:12.5px;font-weight:600;transition:.15s;max-width:100%}
.fact-drop:hover{border-color:var(--accent);color:var(--text)}
.fact-drop.is-over{border-color:var(--accent);border-style:solid;background:rgba(189,173,152,.14);color:var(--text)}
.fact-drop .fact-drop-ic{font-size:1.1rem;line-height:1}
.fact-drop b{color:var(--text);font-weight:700}
.fact-rm{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:999px;
  padding:6px 13px;font-size:12.5px;font-weight:600;transition:.15s}
.fact-rm:hover{color:var(--st-perdido);border-color:var(--st-perdido)}
.fact-estado-row{display:flex;align-items:center;gap:12px;margin:14px 0 4px}
.fact-estado-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.fact-estado-sel{width:auto;min-width:150px;font-weight:700;cursor:pointer}
.fact-estado-sel[data-v="Pendiente"]{border-color:rgba(194,145,47,.55);color:#d8ad5a}
.fact-estado-sel[data-v="Enviada"]{border-color:rgba(47,107,69,.55);color:#7bbd94}
.fact-estado{display:inline-block;font-size:11px;font-weight:700;padding:3px 11px;border-radius:999px}
.fact-estado.pend{background:#f4efe9;color:var(--accent-dd)}
.fact-estado.ok{background:#e7f2ea;color:#2f6b45}
.fact-acts{display:flex;gap:8px;align-items:center}
.fact-acts .is-disabled{opacity:.55}
#facturasTable{min-width:860px}

/* v39 — Facturas: fila clicable + indicador de archivo */
.fact-row{cursor:pointer}
.perf-table tbody tr.fact-row:hover td{background:#faf7f1}
.fact-yes{color:#2f6b45;font-weight:600;font-size:12.5px}

/* ============================================================
   v40 — Pantalla de Inicio (resumen)
   ============================================================ */
.ini-card{margin-bottom:20px}
.ini-count{display:inline-block;margin-left:10px;font-size:12px;font-weight:700;padding:2px 10px;
  border-radius:999px;background:var(--soft);color:var(--accent-dd);vertical-align:middle}
.ini-count.week{background:#eef3fb;color:#3a5a99}
.ini-count.next{background:#fff4e5;color:#c2912f}
.ini-count.past{background:#fbece9;color:#a8544c}
.estado-mini{display:inline-block;color:#fff;font-size:10px;font-weight:700;padding:3px 9px;border-radius:999px}

/* ============================================================
   v42 — Separación entre tarjetas + Bolsa de horas
   ============================================================ */
.card{margin-bottom:18px}
.grid-2>.card{margin-bottom:0}
.crumb{display:none}
.horas-inp{max-width:110px;text-align:right;font-variant-numeric:tabular-nums}

/* v43 — Bolsa de horas: resumen anual */
#horasYearTable{min-width:860px;font-size:13px}
#horasYearTable th,#horasYearTable td{padding:10px 12px}
.hy-total td{background:var(--soft);font-weight:600}

/* ============================================================
   v44 — Subpestañas + Gráficos de Contabilidad (SVG)
   ============================================================ */
.subtabs{display:inline-flex;gap:4px;background:#ffffff12;border:1px solid rgba(255,255,255,.16);
  border-radius:999px;padding:4px;margin-bottom:20px}
.subtab{font-family:'Raleway',sans-serif;border:0;background:transparent;color:rgba(255,255,255,.62);
  font-size:13px;font-weight:600;padding:8px 20px;border-radius:999px;cursor:pointer;transition:.2s}
.subtab.is-active{background:var(--accent);color:var(--dark)}
.subtab:hover:not(.is-active){color:#fff}

.chart-wrap{width:100%}
.chart-svg{width:100%;height:auto;display:block;overflow:visible}
.chart-grid{stroke:var(--line-2);stroke-width:1}
.chart-axis{fill:var(--muted);font-size:10px;font-family:'Raleway',sans-serif}

.donut-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.donut-svg{width:180px;height:180px;flex:0 0 auto}
.donut-total{fill:var(--text);font-family:'Libre Baskerville',serif;font-size:19px}
.donut-sub{fill:var(--muted);font-size:9.5px;text-transform:uppercase;letter-spacing:.09em}
.donut-legend{flex:1;min-width:190px;display:flex;flex-direction:column;gap:10px}
.dl-item{display:flex;align-items:center;gap:10px;font-size:13px}
.dl-dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.dl-label{color:var(--text);font-weight:600;flex:1;min-width:0}
.dl-val{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}

.chart-bars{display:flex;flex-direction:column;gap:12px}
.cb-row{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:14px}
.cb-label{font-size:13px;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cb-track{height:22px;background:var(--soft);border-radius:999px;overflow:hidden}
.cb-bar{height:100%;border-radius:999px;min-width:2px;transition:width .5s ease}
.cb-val{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
@media(max-width:560px){.cb-row{grid-template-columns:110px 1fr}.cb-val{grid-column:2;text-align:left;font-size:12px}}

/* ============================================================
   v45 — Gráficos profesionales (tooltip, hover, sombras)
   ============================================================ */
.chart-wrap{position:relative}
.chart-line{filter:drop-shadow(0 4px 7px rgba(75,125,99,.22))}
.chart-guide{stroke:#bdad98;stroke-width:1;stroke-dasharray:3 4}
.chart-hoverdot{fill:#fff;stroke-width:2.5}
.chart-svg .cbar{transition:opacity .15s;cursor:pointer}
.chart-svg .cbar.on{opacity:.82}
.donut-track{stroke:var(--line-2)}
.darc{transition:stroke-width .18s cubic-bezier(.2,.65,.2,1);cursor:pointer}
.chart-tip{position:absolute;transform:translate(-50%,-140%);background:#242424;color:#fff;
  font-size:13px;font-weight:600;padding:8px 12px;border-radius:10px;pointer-events:none;white-space:nowrap;
  opacity:0;transition:opacity .12s;z-index:5;box-shadow:0 10px 26px -10px rgba(0,0,0,.6);font-variant-numeric:tabular-nums}
.chart-tip.show{opacity:1}
.chart-tip b{display:block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#bdad98;margin-bottom:2px}
.chart-tip::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#242424}
.dl-item{justify-content:flex-start}
.dl-pct{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums;min-width:40px;text-align:right}

/* ============================================================
   v46 — Geolocalización (mapa de calor)
   ============================================================ */
.geo-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.geo-check{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:rgba(255,255,255,.82);cursor:pointer}
.geo-check input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
#geoMap{width:100%;height:560px;background:#eee9e1}
.geo-legend{padding:14px 20px;font-size:12.5px;color:var(--ink-soft);border-top:1px solid var(--line-2);line-height:1.6}
.geo-legend .gl-scale i{display:inline-block;width:16px;height:11px;border-radius:2px;margin:0 1px;vertical-align:middle}
/* Leaflet: que los controles no tapen la barra lateral/topbar */
.leaflet-pane,.leaflet-top,.leaflet-bottom{z-index:20 !important}
.leaflet-popup-content{font-family:'Raleway',sans-serif;font-size:13px}
.leaflet-container{font-family:'Raleway',sans-serif}

/* ============================================================
   v54 — Facturas a la gestoría (gastos recibidos)
   ============================================================ */
.gasto-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.gk{background:var(--paper);border:1px solid var(--line-2);border-radius:16px;padding:18px 20px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px}
.gk-v{font-family:'Libre Baskerville',serif;font-size:24px;color:var(--text);font-variant-numeric:tabular-nums}
.gk-l{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);font-weight:600}
.gk.is-pend .gk-v{color:#a8544c}

.gasto-drop{border:2px dashed var(--line);border-radius:16px;padding:38px 24px;text-align:center;
  cursor:pointer;transition:.18s;display:flex;flex-direction:column;align-items:center;gap:9px;
  color:var(--ink-soft);background:var(--soft)}
.gasto-drop:hover,.gasto-drop.is-over{border-color:var(--accent);background:var(--cream)}
.gasto-drop svg{width:38px;height:38px;color:var(--accent-d)}
.gasto-drop b{font-size:15px;color:var(--text)}
.gasto-drop span{font-size:12.5px;color:var(--muted);max-width:520px;line-height:1.6}
.gasto-hint{font-size:12.5px;font-weight:600;color:var(--accent-dd);min-height:16px}

.gasto-filters{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:18px 20px;
  border-bottom:1px solid var(--line-2)}
.gasto-filters .input{flex:0 1 auto}
#gastoBuscar{flex:1;min-width:220px}
.gasto-dt{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--muted);
  text-transform:uppercase;letter-spacing:.06em}
.gasto-dt .input{padding:8px 12px;font-size:13px}

.gasto-nif{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px}
.gasto-warn td{background:rgba(168,84,76,.05)}
.gasto-warn td:first-child{box-shadow:inset 3px 0 0 var(--st-perdido)}
.gasto-flag{color:#a8544c;font-weight:700;cursor:help}

.gasto-estado{font-size:11.5px;font-weight:700;padding:6px 13px;border-radius:999px;border:1px solid transparent;
  cursor:pointer;font-family:inherit;white-space:nowrap;transition:.15s}
.gasto-estado.is-pend{background:#fbece9;color:#a8544c;border-color:#f0d5d0}
.gasto-estado.is-pend:hover{background:#a8544c;color:#fff}
.gasto-estado.is-ok{background:#e5f0e8;color:#2f6b45;border-color:#cfe3d6}
.gasto-estado.is-ok:hover{background:#2f6b45;color:#fff}

.gasto-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 4px}
.gasto-chips-l{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.gasto-chip{font-size:12px;font-weight:600;font-family:inherit;background:var(--soft);color:var(--accent-dd);
  border:1px solid var(--line);border-radius:999px;padding:5px 12px;cursor:pointer;font-variant-numeric:tabular-nums}
.gasto-chip:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

.gasto-check{margin-top:14px;padding:11px 14px;border-radius:11px;font-size:13px;font-weight:600}
.gasto-check.is-ok{background:#e5f0e8;color:#2f6b45}
.gasto-check.is-bad{background:#fbece9;color:#a8544c}
.gasto-check.is-none{background:var(--soft);color:var(--muted)}
.sub.gasto-manual{color:#a8544c}
@media(max-width:700px){.gasto-kpis{grid-template-columns:1fr}}

/* ============================================================
   v55 — Rail agrupado por categorías (ya no cabían 13 iconos)
   ============================================================ */
/* La lista de iconos ocupa el alto disponible y hace SCROLL cuando no caben todos.
   El engranaje (fuera de .tb-side-nav) queda fijo abajo. Los desplegables se posicionan
   fijos por JS (nav-gbtn) para que el scroll no los recorte; los tooltips pasan a nativos. */
.tb-side-nav{gap:6px;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
.tb-side-nav::-webkit-scrollbar{width:0;height:0}
.tb-side-nav > *{flex:0 0 auto}                  /* los iconos NO se encogen: la lista scrollea en su lugar */
.tb-side-gear{flex:0 0 auto}                      /* el engranaje mantiene su tamaño, fijo abajo */
.tb-side-nav > .nav-link::after{display:none}   /* el tooltip flotante recortaría con el scroll → usamos title nativo */
.tb-side .nav-link,.tb-side-gear,.nav-gbtn{width:44px;height:44px}

.nav-group{position:relative;width:100%;display:flex;justify-content:center}
.nav-group.hidden{display:none}
.nav-gbtn{position:relative;border:0;background:transparent;border-radius:14px;padding:0;
  color:rgba(255,255,255,.74);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:background .2s,color .2s;font-family:inherit}
.nav-gbtn .nav-ic{width:22px;height:22px;display:block;shape-rendering:geometricPrecision}
.nav-gbtn:hover{background:#ffffff14;color:#fff}
.nav-group.is-active .nav-gbtn{background:linear-gradient(180deg,rgba(189,173,152,.30),rgba(189,173,152,.15));
  color:var(--cream);box-shadow:inset 0 0 0 1px rgba(189,173,152,.42)}
.nav-group.is-open .nav-gbtn{background:#ffffff1f;color:#fff}

/* Punto de aviso agregado del grupo (algún hijo tiene badge) */
.nav-gdot{position:absolute;top:7px;right:7px;width:8px;height:8px;border-radius:50%;
  background:var(--st-perdido);box-shadow:0 0 0 2px #232323}
.nav-gdot.hidden{display:none}

/* Tooltip del botón de grupo (mismo estilo que el resto del rail) */
.nav-gbtn::after{content:attr(data-label);position:absolute;left:58px;white-space:nowrap;background:#111;
  color:#fff;font-size:12px;font-weight:500;padding:6px 10px;border-radius:8px;opacity:0;pointer-events:none;
  transform:translateX(-4px);transition:.15s;z-index:60;box-shadow:0 8px 20px -8px rgba(0,0,0,.7)}
.nav-gbtn:hover::after{opacity:1;transform:translateX(0)}
.nav-group.is-open .nav-gbtn::after{opacity:0}

/* Panel desplegable */
.nav-fly{position:absolute;left:var(--side-w);top:-6px;min-width:212px;padding:8px;border-radius:14px;
  background:linear-gradient(180deg,#2c2c2c,#232323);border:1px solid rgba(255,255,255,.1);
  box-shadow:0 22px 50px -18px rgba(0,0,0,.85);z-index:70;
  opacity:0;visibility:hidden;transform:translateX(-6px);transition:opacity .15s,transform .15s,visibility .15s}
.nav-group.is-open .nav-fly{opacity:1;visibility:visible;transform:translateX(0)}
.nav-fly-h{font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;
  color:rgba(255,255,255,.42);padding:6px 10px 8px}

/* Los items dentro del panel: fila con icono + texto (no el cuadrado del rail) */
.tb-side .nav-fly .nav-link{width:100%;height:auto;justify-content:flex-start;gap:11px;
  padding:9px 10px;border-radius:10px;font-size:13.5px;font-weight:500;color:rgba(255,255,255,.8)}
.tb-side .nav-fly .nav-link .nav-ic{width:18px;height:18px;flex:0 0 auto}
.nav-fly .nav-tx{white-space:nowrap}
.tb-side .nav-fly .nav-link:hover{background:#ffffff14;color:#fff}
.tb-side .nav-fly .nav-link.is-active{background:linear-gradient(180deg,rgba(189,173,152,.30),rgba(189,173,152,.15));
  color:var(--cream);box-shadow:inset 0 0 0 1px rgba(189,173,152,.42)}
.tb-side .nav-fly .nav-link.hidden{display:none}
/* Dentro del panel no queremos el tooltip flotante ni el badge en esquina */
.tb-side .nav-fly .nav-link::after{display:none}
.tb-side .nav-fly .nav-alert{position:static;margin-left:auto}
@media(max-width:760px){.nav-fly{min-width:186px}}

/* En móvil el rail es una barra inferior: el panel debe abrirse HACIA ARRIBA.
   Además hay que quitar el overflow-x:auto del nav, o recortaría el desplegable. */
@media(max-width:760px){
  .tb-side-nav{overflow:visible;justify-content:center}
  .nav-group{width:auto;flex:0 0 auto}
  .nav-gbtn::after{display:none}
  .nav-fly{left:50%;right:auto;top:auto;bottom:54px;margin-left:-106px;transform:translateY(6px)}
  .nav-group.is-open .nav-fly{transform:translateY(0)}
}

/* ============================================================
   v59 — "A revisar": la factura no lleva el CIF de la sociedad
   ============================================================ */
.gasto-kpis{grid-template-columns:repeat(4,1fr)}
.gk.is-rev .gk-v{color:#a8544c}

.gasto-aviso{margin:14px 0 4px;padding:13px 15px;border-radius:12px;font-size:13px;line-height:1.6;
  background:#fbece9;color:#8a3f38;border:1px solid #f0d5d0}
.gasto-aviso b{color:#7a352f}
.gasto-aviso-ok{display:flex;align-items:center;gap:8px;margin-top:10px;font-weight:600;cursor:pointer}
.gasto-aviso-ok input{width:16px;height:16px;cursor:pointer}

.gasto-badge-rev{display:inline-block;margin-left:7px;font-size:9.5px;font-weight:800;letter-spacing:.07em;
  background:#a8544c;color:#fff;padding:2px 7px;border-radius:999px;vertical-align:middle;cursor:help}
.gasto-rev td{background:rgba(168,84,76,.09)}
.gasto-rev td:first-child{box-shadow:inset 3px 0 0 #a8544c}

.gasto-chk{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink-soft);
  white-space:nowrap;cursor:pointer}
.gasto-chk input{width:16px;height:16px;cursor:pointer}
@media(max-width:700px){.gasto-kpis{grid-template-columns:repeat(2,1fr)}}

/* ============================================================
   v60 — Gastos: 2 pestañas, selección múltiple, 3 estados, preview
   ============================================================ */
#gastoSubtabs{margin-bottom:16px}
.subtab-n{display:inline-block;margin-left:7px;font-size:11px;font-weight:700;padding:1px 8px;
  border-radius:999px;background:var(--soft);color:var(--accent-dd)}
.subtab.is-active .subtab-n{background:var(--accent);color:#fff}
.subtab-n.is-rev{background:#fbece9;color:#a8544c}
.subtab.is-active .subtab-n.is-rev{background:#a8544c;color:#fff}

/* Selección */
.perf-table th.gsel,.perf-table td.gsel{width:34px;padding-left:16px;padding-right:0}
.gsel input{width:16px;height:16px;cursor:pointer}
.perf-table tr.is-sel td{background:#f4efe6}
.perf-table td.gacc{width:40px;text-align:right;padding-right:16px}
.gasto-del{background:transparent;border:0;color:var(--muted);font-size:15px;line-height:1;cursor:pointer;
  padding:5px 7px;border-radius:8px;font-family:inherit;transition:.15s}
.gasto-del:hover{background:#fbece9;color:#a8544c}

.gasto-bulk{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 20px;
  background:var(--cream);border-bottom:1px solid var(--line)}
.gasto-bulk #gastoBulkN{font-weight:700;font-size:13px;color:var(--text)}
.gasto-bulk .input{padding:8px 12px;font-size:13px}

/* Estado con tres opciones */
select.gasto-estado{-webkit-appearance:none;appearance:none;padding:6px 26px 6px 13px;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23666' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;background-size:9px}
select.gasto-estado.is-pago{background-color:#fff4e5;color:#8a6420;border-color:#f0e0c4}
select.gasto-estado.is-pago:hover{background-color:#c2912f;color:#fff}

/* Ficha en dos columnas: la factura a la izquierda */
.modal-ancho .modal{width:min(1180px,96vw)}
.gasto-cols{display:block}
.gasto-cols.has-prev{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:24px;align-items:start}
.gasto-prev{position:sticky;top:0;display:flex;flex-direction:column;gap:9px}
.gasto-prev object{width:100%;height:min(66vh,620px);border:1px solid var(--line);border-radius:12px;
  background:#fff;display:block}
.gasto-prev-err{padding:40px 24px;text-align:center;color:var(--muted);font-size:13px;line-height:2.4}
.gasto-prev img{width:100%;height:min(66vh,620px);object-fit:contain;border:1px solid var(--line);
  border-radius:12px;background:var(--soft);display:block}
.gasto-prev-pie{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.gasto-prev-nom{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.gasto-prev-open{font-size:12px;font-weight:600;color:var(--accent-dd);text-decoration:none;margin-left:auto}
.gasto-prev-open:hover{text-decoration:underline}
.gasto-pane{min-width:0}
.gasto-cols.has-prev .form-grid{grid-template-columns:1fr 1fr}
@media(max-width:900px){
  .gasto-cols.has-prev{grid-template-columns:1fr}
  .gasto-prev{position:static}
  .gasto-prev object,.gasto-prev img{height:52vh}
}

/* ============================================================
   v62 — Restyle estilo WEMOOV (colores TrainingBoutique):
   KPIs y tarjetas con línea de acento superior, más limpios
   ============================================================ */

/* --- Burbujas KPI: tarjeta clara con línea de acento arriba (firma WEMOOV) --- */
.kpi{
  background:var(--paper);
  border:1px solid var(--line-2);
  border-radius:15px;
  box-shadow:0 1px 2px rgba(36,36,36,.04), 0 18px 36px -24px rgba(36,36,36,.4);
  position:relative; overflow:hidden;
  padding:16px 19px;
  transition:transform .2s cubic-bezier(.2,.65,.2,1), box-shadow .2s;
}
.kpi::before{        /* línea de acento superior a todo el ancho */
  content:""; position:absolute; top:0; left:0; right:0; height:3px; display:block;
  background:linear-gradient(90deg,var(--accent),var(--green)); opacity:1;
}
.kpi::after{display:none}   /* fuera el brillo de esquina, buscamos limpieza */
.kpi:hover{transform:translateY(-2px);
  box-shadow:0 2px 5px rgba(36,36,36,.06), 0 24px 44px -22px rgba(36,36,36,.45)}
.kpi .v{color:var(--text); text-shadow:none; font-size:clamp(23px,2.5vw,29px); letter-spacing:-.01em}
.kpi .l{color:var(--muted); letter-spacing:.085em}
.kpi .s{color:var(--accent-dd)}
.kpi-ic{color:var(--accent-dd); background:var(--accent-soft); border-color:transparent}

/* Acentos por tipo: línea superior + valor + icono */
.kpi.good::before{background:linear-gradient(90deg,var(--green),var(--st-venta))}
.kpi.good .v{color:var(--st-venta)}
.kpi.good .kpi-ic{color:var(--st-venta); background:rgba(47,107,69,.1)}
.kpi.warn{border-color:var(--line-2)}
.kpi.warn::before{background:linear-gradient(90deg,#d6a244,var(--st-espera))}
.kpi.warn .v{color:#b07d1e}
.kpi.warn .kpi-ic{color:var(--st-espera); background:rgba(194,145,47,.12)}
.kpi.accent::before{background:linear-gradient(90deg,var(--accent),var(--accent-dd))}
.kpi.accent .v{color:var(--text)}

/* Separador del bloque hero: en tono claro, ya no sobre cristal */
.hero-stats{border-top:1px solid rgba(255,255,255,.14)}

/* --- Gastos .gk: mismo lenguaje que los KPI --- */
.gk{border:1px solid var(--line-2); border-radius:15px; padding:17px 20px; position:relative; overflow:hidden;
  box-shadow:0 1px 2px rgba(36,36,36,.04), 0 18px 36px -24px rgba(36,36,36,.4)}
.gk::before{content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg,var(--accent),var(--green))}
.gk-v{font-size:26px;letter-spacing:-.01em}
.gk-l{letter-spacing:.085em}
.gk.is-pend::before,.gk.is-rev::before{background:linear-gradient(90deg,#d6a244,var(--st-perdido))}

/* --- Tarjetas de contenido: más limpias (sin glow de esquina) --- */
.card::after,.channel-card::after{display:none}
.card,.channel-card{box-shadow:0 1px 2px rgba(36,36,36,.04), 0 20px 44px -28px rgba(36,36,36,.34);
  border-color:var(--line-2)}
.card-head h2{font-size:16px;letter-spacing:.005em}

/* ============================================================
   v63 — TEMA OSCURO estilo CRM-Planner de WEMOOV (dark-on-dark),
   con los colores cálidos de TrainingBoutique. Todo el bloque es
   un override al final: revertir = borrar de aquí abajo.
   ============================================================ */
:root{
  --text:#efe7d9; --ink-soft:#cabfac; --muted:#a0977f;
  --paper:#26241f;      /* superficie de tarjeta (panel) */
  --soft:#2d2a24;       /* cabeceras de tabla, inputs, tracks */
  --cream:#332f28;      /* hover / superficies elevadas */
  --line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.055);
  --accent-soft:rgba(189,173,152,.15);
  --shadow:0 1px 2px rgba(0,0,0,.35), 0 20px 44px -22px rgba(0,0,0,.66);
  --shadow-lg:0 34px 80px -26px rgba(0,0,0,.75);
}
/* Fondo de página: casi negro cálido con halo taupe/verde muy suave */
body{
  background:
    radial-gradient(1000px 600px at 84% -10%, rgba(189,173,152,.09), transparent 60%),
    radial-gradient(850px 520px at -6% 108%, rgba(75,89,81,.11), transparent 55%),
    #1a1815;
  background-attachment:fixed;
}

/* Superficies que estaban en blanco puro */
.baja-results{background:var(--paper)}
.sat-chip{background:var(--soft);color:var(--ink-soft)}
.login-card{border:1px solid var(--line)}

/* Inputs oscuros */
.input::placeholder{color:var(--muted)}
input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.72)}

/* Hovers de fila / selección → oscuros */
.queue-item:hover,
.leads-table tbody tr:hover td,
.perf-row:hover td,
.perf-detail td,
.perf-table tbody tr.renov-row:hover td,
.perf-table tbody tr.fact-row:hover td{background:rgba(255,255,255,.045)}
.perf-row.open td{background:rgba(255,255,255,.06)}
.perf-table tr.is-sel td{background:rgba(189,173,152,.12)}

/* Pastillas de estado: fondo translúcido del tono + texto claro del tono */
.rec-boost,.maint-badge.ok,.gasto-check.is-ok{background:rgba(47,107,69,.2);color:#74c493}
.rec-cut,.gasto-check.is-bad,.subtab-n.is-rev{background:rgba(168,84,76,.2);color:#e08e83}
.rec-keep{background:rgba(189,173,152,.16);color:#c9b99e}
.rec-watch,.gasto-check.is-none{background:rgba(255,255,255,.06);color:#a49b8b}
.perm-sel.lvl-read{color:#8fabdd;border-color:rgba(58,90,153,.42);background:rgba(58,90,153,.18)}
.needs-banner{background:rgba(168,84,76,.15);border-color:rgba(168,84,76,.4);color:#e08e83}

.ini-count{background:rgba(255,255,255,.08);color:var(--accent)}
.ini-count.week{background:rgba(58,90,153,.22);color:#8fabdd}
.ini-count.next{background:rgba(194,145,47,.2);color:#e0b25e}
.ini-count.past{background:rgba(168,84,76,.22);color:#e08e83}

/* Selector de estado de gastos + flecha clara */
select.gasto-estado{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23a99' stroke-width='1.6'/%3E%3C/svg%3E")}
.gasto-estado.is-pend{background-color:rgba(168,84,76,.2);color:#e08e83;border-color:rgba(168,84,76,.38)}
.gasto-estado.is-ok{background-color:rgba(47,107,69,.2);color:#74c493;border-color:rgba(47,107,69,.38)}
select.gasto-estado.is-pago{background-color:rgba(194,145,47,.2);color:#e0b25e;border-color:rgba(194,145,47,.38)}

.gasto-aviso{background:rgba(168,84,76,.14);border-color:rgba(168,84,76,.35);color:#e6a79d}
.gasto-aviso b{color:#f0c3ba}
.subtab-n{background:rgba(255,255,255,.08);color:var(--accent)}
.gasto-del:hover{background:rgba(168,84,76,.18);color:#e08e83}

/* KPIs oscuros: la línea de acento se mantiene; valores/iconos con tonos claros */
.kpi.good .v,.gk.is-ok .gk-v{color:#74c493}
.kpi.warn .v{color:#e0b25e}
.kpi.good .kpi-ic{color:#74c493;background:rgba(47,107,69,.16)}
.kpi.warn .kpi-ic{color:#e0b25e;background:rgba(194,145,47,.16)}
.gk.is-pend .gk-v,.gk.is-rev .gk-v{color:#e08e83}

/* Cabeceras de sección y tarjeta: texto claro */
.card-head h2{color:var(--text)}

/* v63 (cont.) — tarjetas de contenido a panel oscuro */
:root{ --ring-top:inset 0 1px 0 rgba(255,255,255,.05); }
.card, .channel-card{
  background:linear-gradient(180deg,#2b2822 0%,#252219 100%) !important;
  border:1px solid var(--line-2);
}
.login-card input:focus{background:var(--soft)}

/* ============================================================
   v64 — Sin línea de acento en los KPI. Solo un borde de hilo
   claro en TODAS las tarjetas y KPIs, como el CRM-Planner.
   ============================================================ */
.kpi::before,.gk::before{display:none !important}
.kpi,.gk,.card,.channel-card{border:1px solid rgba(255,255,255,.11) !important}
.kpi.warn,.kpi.good,.kpi.accent{border-color:rgba(255,255,255,.11) !important}

/* ============================================================
   v65 — Quitar el separador superior de la fila de KPIs
   (la línea que cruzaba por encima de todas las tarjetas).
   ============================================================ */
.hero-stats{border-top:0 !important}

/* v66 — Prueba de conexión con Timp (Configuración) */
.timp-result{margin-top:14px}
.timp-msg{padding:11px 14px;border-radius:11px;font-size:13.5px;font-weight:600}
.timp-msg.ok{background:rgba(47,107,69,.2);color:#74c493}
.timp-msg.err{background:rgba(168,84,76,.2);color:#e08e83}
.timp-sede{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:11px 14px;margin-top:8px;border:1px solid var(--line-2);border-radius:11px;background:var(--soft)}
.timp-sede-n{font-weight:600;color:var(--text)}
.timp-uuid{font-size:11.5px;color:var(--muted);font-family:monospace;user-select:all}

/* v69 — Sincronización con Timp (barra de progreso) */
.timp-sync{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px}
.timp-sync-lbl{font-size:.85rem;color:var(--muted,#9aa);font-weight:600}
.timp-sync input[type=date]{min-width:150px}
.timp-sync-prog{margin-top:10px}
.timp-bar{height:7px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden;margin-top:8px}
.timp-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--green));transition:width .2s}

/* v72 — "Vienen hoy y les toca renovar" (Inicio) */
#inicioHoy{margin-bottom:18px}
.hoy-list{display:flex;flex-direction:column;gap:2px}
.hoy-row{display:flex;align-items:center;gap:16px;padding:11px 4px;border-bottom:1px solid var(--line-2)}
.hoy-row:last-child{border-bottom:0}
.hoy-hora{flex:0 0 auto;min-width:58px;font-variant-numeric:tabular-nums;font-weight:600;font-size:12.5px;
  color:var(--accent);font-family:'Raleway',sans-serif;letter-spacing:.01em}
.hoy-info{min-width:0;display:flex;flex-direction:column;gap:2px}
.hoy-nombre{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoy-sub{font-size:12.5px;color:var(--muted)}

/* v74 — botón ↻ girando mientras fuerza la sincronización con Timp */
.tb-icon-btn.is-spinning{animation:tb-spin .8s linear infinite;opacity:.7;cursor:progress}
/* Anillo de progreso de sincronización dentro del propio botón ↻ */
.tb-icon-btn.syncing{position:relative;cursor:progress;color:transparent;animation:none;opacity:1;
  background:conic-gradient(#25d366 var(--pct,0%), rgba(255,255,255,.16) 0)}
.tb-icon-btn.syncing:hover{background:conic-gradient(#25d366 var(--pct,0%), rgba(255,255,255,.16) 0)}
.tb-icon-btn.syncing::before{content:'';position:absolute;inset:4px;border-radius:50%;background:#2a2a2a}
.tb-icon-btn.syncing .sync-pct{position:relative;z-index:1;font-size:10px;font-weight:800;color:#e9f7ee;letter-spacing:-.03em}
@keyframes tb-spin{to{transform:rotate(360deg)}}

/* v78 — Parte diario */
.parte-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:720px){.parte-grid{grid-template-columns:1fr}}
.parte-field{display:flex;flex-direction:column;gap:3px}
.parte-lbl{font-weight:700;font-size:.92rem}
.parte-hint{font-size:.76rem;color:var(--muted);margin-bottom:3px}
.parte-ta{resize:vertical;min-height:92px;line-height:1.45;font:inherit;width:100%}
.parte-actions{display:flex;align-items:center;gap:12px;margin-top:16px}
.parte-saved{font-size:.85rem;color:var(--muted)}
.parte-res{margin-bottom:12px}
.parte-res-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.parte-res-date{background:none;border:0;padding:0;cursor:pointer;font-weight:800;font-size:1rem;color:var(--text);text-transform:capitalize;border-bottom:1.5px dashed var(--line)}
.parte-res-date:hover{color:var(--brand,#c8102e)}
.parte-res-centro{font-size:.72rem}
.parte-res-by{font-size:.76rem;color:var(--muted)}
.parte-res-body{display:flex;flex-direction:column;gap:8px}
.parte-sec{display:flex;flex-direction:column;gap:1px}
.parte-sec-lbl{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.parte-sec-tx{white-space:pre-wrap;line-height:1.45;font-size:.92rem}
.parte-sec-tx mark{background:rgba(255,209,102,.38);color:inherit;border-radius:3px;padding:0 2px}

/* v79 — Profesionales + badges */
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.72rem;font-weight:700;
  background:rgba(189,173,152,.22);border:1px solid var(--line);color:var(--text);white-space:nowrap}
.btn-danger{background:rgba(200,60,60,.14);border:1px solid rgba(200,60,60,.4);color:#e06a6a}
.btn-danger:hover:not(:disabled){background:rgba(200,60,60,.24)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.pro-create{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pro-create .input{min-width:160px}
.pro-create #proNombre{flex:1;min-width:200px}
.pro-preview{flex-basis:100%;font-size:.8rem;color:var(--muted)}
.pro-add-out{flex-basis:100%;font-size:.88rem;min-height:1.1em}
.pro-ok{color:#4b7d63}.pro-err{color:#c25a4c}
.pro-legend{margin-bottom:18px}
.pro-legend-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pro-legend-list li{display:flex;gap:9px;align-items:baseline;font-size:.9rem;line-height:1.4}
.pro-legend-list .badge{flex:0 0 auto;min-width:74px;text-align:center}
tr.pro-inactive{opacity:.5}
.pro-actions-cell{white-space:nowrap;display:flex;gap:6px}
#prosTable .input{min-width:130px;padding:5px 8px}

/* v80 — matriz de permisos por rol */
.rp-table th{font-size:.74rem;white-space:nowrap}
.rp-table td{padding:6px 5px}
.rp-sel{min-width:104px;padding:5px 7px;font-size:.82rem}
.rp-sel.lvl-none{opacity:.6}
.rp-sel.lvl-read{border-color:rgba(120,150,200,.5)}
.rp-sel.lvl-edit{border-color:rgba(75,125,99,.6);background:rgba(75,125,99,.08)}

/* ===== Botonera global de centros (hero, solo admin) ===== */
.centro-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 2px}
.centro-chip{font-family:'Raleway',system-ui,sans-serif;font-weight:600;font-size:12.5px;letter-spacing:.02em;
  color:#f2eadf;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);border-radius:999px;
  padding:8px 15px;cursor:pointer;line-height:1;white-space:nowrap;backdrop-filter:blur(6px);
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.centro-chip:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32)}
.centro-chip.is-on{background:var(--accent,#bdad98);border-color:var(--accent,#bdad98);color:#242424;
  box-shadow:0 3px 12px rgba(0,0,0,.28)}
/* Los selectores de centro por pestaña quedan sustituidos por la botonera global del hero. */
#fCentro,#contabCentro,#comCentro,#renovCentro,#facturaCentro,#horasCentro,#geoCentro,#bajasCentro{display:none !important}

/* v84 — alta manual de lead */
.lead-add{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.lead-add .input{min-width:150px}
.lead-add #laNombre{flex:1;min-width:200px}
.lead-add-out{flex-basis:100%;font-size:.88rem;min-height:1.1em}

/* v87 — pastillas de forma de pago en Renovaciones */
.pay-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;
  font-size:.76rem;font-weight:700;border:1px solid var(--line);white-space:nowrap;line-height:1.5}
.pay-pill::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.pay-none{color:var(--muted);opacity:.65}
.pay-none::before{display:none}
.pay-cash{color:#4b9f74;background:rgba(75,159,116,.12);border-color:rgba(75,159,116,.42)}
.pay-card{color:#5b8fd0;background:rgba(91,143,208,.12);border-color:rgba(91,143,208,.42)}
.pay-dom{color:#b083da;background:rgba(176,131,218,.12);border-color:rgba(176,131,218,.42)}
.pay-wire{color:#4fb3ac;background:rgba(79,179,172,.12);border-color:rgba(79,179,172,.42)}
.pay-app{color:#e0955a;background:rgba(224,149,90,.12);border-color:rgba(224,149,90,.42)}
.pay-bizum{color:#2fb6a8;background:rgba(47,182,168,.12);border-color:rgba(47,182,168,.42)}
.pay-other{color:#a2896a;background:rgba(162,137,106,.14);border-color:rgba(162,137,106,.42)}

/* v91 — card "les toca renovar · cuándo vienen" (próxima visita) */
.hoy-list .hoy-hora{min-width:82px;text-align:center;white-space:nowrap;text-transform:capitalize}
.hoy-row.hoy-es-hoy{background:rgba(75,125,99,.10);border-radius:12px}
.hoy-row.hoy-es-hoy .hoy-hora{background:#4b7d63;color:#fff;font-weight:700}

/* v94 — badge "LIVE" para los que vienen HOY en la card de renovaciones (sutil, Raleway) */
.hoy-hora.hoy-live{display:inline-flex;align-items:center;gap:5px;background:#2f9e44;color:#fff;
  font-weight:700;font-size:10.5px;border-radius:999px;padding:3px 9px;box-shadow:0 1px 5px rgba(47,158,68,.28);letter-spacing:.03em}
.hoy-live .live-dot{width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,.7);animation:live-pulse 1.4s infinite}
@keyframes live-pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.6)}70%{box-shadow:0 0 0 7px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}
.hoy-row.hoy-es-hoy{background:rgba(47,158,68,.08)}

/* v98 — badge Renovar / Avisar en la card de renovaciones */
.hoy-row{display:flex;align-items:center;gap:12px}
.hoy-row .hoy-info{flex:1;min-width:0}
.renov-tag{margin-left:auto;flex:0 0 auto;padding:4px 12px;border-radius:999px;font-size:.74rem;
  font-weight:800;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}
.renov-tag-renovar{background:rgba(200,80,60,.14);color:#c85a4c;border-color:rgba(200,80,60,.4)}
.renov-tag-avisar{background:rgba(194,145,47,.16);color:#b9860f;border-color:rgba(194,145,47,.42)}
.renov-nota{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border-radius:9px;
  background:transparent;border:1px solid var(--line);color:var(--muted);cursor:pointer;font-size:.9rem;
  transition:background .14s,color .14s,border-color .14s}
.hoy-pay{flex:0 0 auto;display:inline-flex}
/* Buscador del tablero de embudo */
.kanban-tools{display:flex;align-items:center;gap:12px;margin:0 0 14px;flex-wrap:wrap}
.kanban-search{position:relative;flex:0 1 360px;min-width:220px}
.kanban-search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}
.kanban-search input{width:100%;font-family:inherit;font-size:13.5px;color:var(--text);
  background:var(--soft);border:1px solid var(--line);border-radius:11px;padding:11px 14px 11px 38px;outline:none;
  transition:border-color .15s,box-shadow .15s}
.kanban-search input::placeholder{color:var(--muted)}
.kanban-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(189,173,152,.22)}
.kanban-hint{font-size:12.5px;color:var(--muted);font-weight:600}
.renov-nota:hover{background:rgba(189,173,152,.16);color:var(--text);border-color:var(--accent)}
.renov-nota:disabled{opacity:.5;cursor:default}
.edp-form-done{background:rgba(75,125,99,.18);border-color:rgba(75,125,99,.5);color:#4b7d63}
.edp-form-done:hover{background:rgba(75,125,99,.28);color:#3c6b52}
/* Tabla Pruebas y VAC: fila clicable + barra de progreso del embudo */
.edp-row{cursor:pointer;transition:background .12s}
.edp-row:hover{background:var(--soft)}
.edp-name{background:none;border:0;padding:0;font:inherit;color:var(--accent-dd);font-weight:700;cursor:pointer;text-align:left}
.edp-row:hover .edp-name{text-decoration:underline}
.edp-resp{color:#3aa862;font-weight:800;font-size:.85em;margin-left:3px}
.edp-formdot{font-size:.82em;opacity:.7;margin-left:2px}
.edp-prog{display:flex;flex-direction:column;gap:3px;min-width:150px}
.edp-prog-lb{font-size:.72rem;font-weight:700;color:var(--ink-soft)}
.edp-prog-bar{height:6px;border-radius:4px;background:var(--line);overflow:hidden}
.edp-prog-bar.big{height:10px}
.edp-prog-bar>i{display:block;height:100%;border-radius:4px;background:var(--accent-d)}
.edp-prog-ok .edp-prog-bar>i{background:#2f6b45}.edp-prog-ok .edp-prog-lb{color:#2f6b45}
.edp-prog-mid .edp-prog-bar>i{background:#c2912f}.edp-prog-mid .edp-prog-lb{color:#a2761f}
.edp-prog-low .edp-prog-bar>i{background:#a8544c}.edp-prog-low .edp-prog-lb{color:#a8544c}
.edp-sit{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.35}
.edp-next{display:flex;flex-direction:column;gap:1px}
.edp-next-ac{font-size:12px;font-weight:700;color:var(--text)}
.edp-next-when{font-size:11px;color:var(--accent-dd);font-weight:600}
.edp-next-manual .edp-next-when{color:var(--espera)}
.ef-next{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:16px}
.ef-recorrido{margin:2px 0 14px}
.ef-rec-h{font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.ef-recorrido .rec-chip{font-size:12px;padding:5px 12px}
.rec-timp{display:inline-flex;align-items:center;font-size:11px;font-weight:700;color:var(--muted);background:var(--soft);border-radius:999px;padding:4px 10px}
.ef-coach-btn{width:100%;text-align:left;font-size:13px;font-weight:800;border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:10px;padding:10px 13px;cursor:pointer;margin-bottom:8px}
.ef-coach-btn.filled{border-color:rgba(58,168,98,.5);background:rgba(58,168,98,.1);color:#5fbf8f}
.ef-coach-btn:hover{filter:brightness(1.05)}
.ef-coach-box{border:1px dashed var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.ef-next-row{display:flex;gap:12px;padding:3px 0}
.ef-next-k{flex:0 0 120px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-top:2px}
.ef-next-v{font-size:13px;color:var(--text)}
.ef-auto{color:#2f6b45;font-weight:700;font-size:11.5px}
.ef-manual{color:var(--espera);font-weight:700;font-size:11.5px}
/* Burbujas clicables del formulario del coach */
.chip-group{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.chip-opt{border:1.5px solid var(--line);background:var(--paper);border-radius:20px;padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer;color:var(--ink-soft);transition:background .12s,border-color .12s,color .12s;line-height:1.2}
.chip-opt:hover{border-color:var(--accent);color:var(--text)}
.chip-opt.is-sel{background:var(--accent);border-color:var(--accent);color:#fff}
.chip-scale-group{gap:7px}
.chip-scale{width:34px;height:27px;border-radius:14px;padding:0;display:grid;place-items:center;font-size:13.5px;font-weight:800;border-width:2px}
.chip-scale:hover{transform:translateY(-1px)}
/* Más aire entre las secciones del formulario del coach en la ficha */
.ef-col .field{margin-bottom:15px}
.ef-col .field label{margin-bottom:7px;letter-spacing:.11em}
/* Ficha 360º del cliente (Pruebas y VAC) */
.edp-ficha{font-size:13px}
.ef-head{display:flex;gap:15px;align-items:center;margin-bottom:14px}
.ef-avatar{width:56px;height:56px;border-radius:17px;background:linear-gradient(135deg,var(--accent-soft),var(--cream));
  color:var(--accent-dd);display:grid;place-items:center;font-weight:800;font-size:20px;flex:0 0 auto;
  box-shadow:inset 0 0 0 1px rgba(189,173,152,.45)}
.ef-htext h2{margin:0;font-size:22px;letter-spacing:-.02em;line-height:1.08;color:var(--text);font-weight:800}
.ef-sub{font-size:12.5px;color:var(--muted);margin-top:6px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-weight:500}
.ef-dot{color:var(--line)}
.ef-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.ef-chip{display:inline-flex;align-items:center;gap:7px;background:var(--soft);border:1px solid var(--line);
  border-radius:22px;padding:6px 13px;font-size:12.5px;font-weight:700;color:var(--ink-soft)}
.ef-chip-k{font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ef-renov.rv-ok{background:rgba(58,168,98,.1);border-color:rgba(58,168,98,.45);color:#2f6b45}
.ef-renov.rv-ok .ef-chip-k{color:#3aa862}
.ef-renov.rv-late{background:rgba(168,84,76,.1);border-color:rgba(168,84,76,.45);color:#a8544c}
.ef-renov.rv-late .ef-chip-k{color:#a8544c}
.ef-renov.rv-soon{background:rgba(194,145,47,.13);border-color:rgba(194,145,47,.45);color:#a2761f}
.ef-renov.rv-soon .ef-chip-k{color:#c2912f}
.ef-renov.rv-off{opacity:.7}
/* Pill de renovación en la ficha de Clientes */
.fi-renov{display:inline-block;font-size:11px;font-weight:800;padding:1px 9px;border-radius:20px;margin-left:6px}
.fi-renov.rv-ok{background:rgba(58,168,98,.14);color:#2f6b45}
.fi-renov.rv-late{background:rgba(168,84,76,.14);color:#a8544c}
.fi-renov.rv-soon{background:rgba(194,145,47,.16);color:#a2761f}
.fi-renov.rv-mid{background:var(--soft);color:var(--ink-soft)}
.fi-renov.rv-off{background:var(--soft);color:var(--muted)}
.ef-prog{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:16px}
.ef-prog-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.ef-prog-lb{font-weight:800;font-size:13px}
.ef-prog-pct{font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.ef-prog.edp-prog-ok .ef-prog-lb,.ef-prog.edp-prog-ok .ef-prog-pct{color:#2f6b45}
.ef-prog.edp-prog-mid .ef-prog-lb,.ef-prog.edp-prog-mid .ef-prog-pct{color:#a2761f}
.ef-prog.edp-prog-low .ef-prog-lb,.ef-prog.edp-prog-low .ef-prog-pct{color:#a8544c}
.ef-steps{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.ef-step{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.ef-step.on{color:var(--text)}
.ef-step-sep{flex:1;height:1px;background:var(--line);min-width:8px}
.ef-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.ef-col{min-width:0}
.ef-sect{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-dd);margin:16px 0 8px;border-bottom:1px solid var(--line-2);padding-bottom:5px}
.ef-col>.ef-sect:first-child{margin-top:0}
.ef-actions{display:flex;flex-wrap:wrap;gap:8px}
.ef-result{margin-bottom:14px}
.ef-res-row{display:flex;gap:8px}
.ef-res-btn{flex:1 1 0;font-size:13px;font-weight:800;border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:10px;padding:10px 8px;cursor:pointer}
.ef-res-btn:hover{filter:brightness(1.06)}
.ef-res-venta.on{border-color:rgba(58,168,98,.6);background:rgba(58,168,98,.16);color:#5fbf8f}
.ef-res-no.on{border-color:rgba(168,84,76,.6);background:rgba(168,84,76,.16);color:#e08a86}
.ef-res-btn:disabled{opacity:.6;cursor:default}
.ef-abtn{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:8px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--text)}
.ef-abtn:hover{border-color:var(--accent);background:var(--soft)}
.ef-abtn:disabled{opacity:.5;cursor:default}
.ef-link-btn{margin-top:9px;width:100%;border:1px dashed var(--accent);background:transparent;color:var(--accent-dd);border-radius:9px;padding:9px;font-size:12.5px;font-weight:700;cursor:pointer}
.ef-link-btn:hover{background:var(--accent-soft)}
.ef-link-btn.sm{margin-top:8px;padding:6px}
.ef-linkbox{background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:13px}
.ef-linkbox .sub{font-size:11.5px;color:var(--muted);margin-top:3px}
.ef-chat{background:#ece5da;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:5px;max-height:220px;overflow-y:auto}
.ef-msg{display:flex}.ef-msg.ef-out{justify-content:flex-end}
.ef-bub{max-width:82%;padding:6px 10px;border-radius:10px;font-size:12.5px;line-height:1.4;white-space:pre-wrap;word-break:break-word;box-shadow:0 1px 1px rgba(30,25,18,.12)}
.ef-in .ef-bub{background:#fff;color:#1f2620;border-bottom-left-radius:3px}
.ef-out .ef-bub{background:#d7f5c8;color:#1c2a17;border-bottom-right-radius:3px}
@media(max-width:760px){.ef-grid{grid-template-columns:1fr}}
/* ===== Bandeja de WhatsApp ===== */
.wa-wrap{display:grid;grid-template-columns:minmax(280px,340px) 1fr;gap:0;height:72vh;min-height:460px;
  background:var(--paper);border:1px solid var(--line-2);border-radius:16px;overflow:hidden}
.wa-list{display:flex;flex-direction:column;border-right:1px solid var(--line-2);min-width:0;min-height:0}
.wa-list-top{padding:12px}
.wa-list-top .ban-input{width:100%}
.wa-convs{flex:1;overflow-y:auto}
.wa-note{padding:22px 18px;color:var(--muted);font-size:13px;text-align:center}
.wa-conv{display:flex;gap:11px;align-items:center;padding:11px 14px;cursor:pointer;border-bottom:1px solid var(--line-2);transition:background .12s}
.wa-conv:hover{background:var(--soft)}
.wa-conv.is-on{background:var(--cream)}
.wa-av{flex:0 0 auto;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:14px;
  background:rgba(189,173,152,.22);color:var(--accent);letter-spacing:.02em}
.wa-av-lg{width:44px;height:44px}
.wa-conv-body{min-width:0;flex:1}
.wa-conv-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.wa-conv-name{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.wa-conv-time{font-size:11px;color:var(--muted);flex:0 0 auto}
.wa-conv-win{font-size:11px;margin-right:4px}
.wa-conv-win.is-warn{filter:none}
.wa-conv-win.is-urgent{animation:waPulse 1.3s ease-in-out infinite}
.wa-conv-bot{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:2px}
.wa-conv-last{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wa-conv.has-unread{background:rgba(75,158,106,.09);box-shadow:inset 3px 0 0 #3aa862}
.wa-conv.has-unread:hover{background:rgba(75,158,106,.15)}
.wa-conv.has-unread .wa-conv-name{font-weight:800}
.wa-conv.has-unread .wa-conv-last{color:var(--text);font-weight:600}
.wa-badge{animation:waPulse 1.6s ease-in-out infinite}
.wa-conv-meta{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.wc-chip{display:inline-flex;align-items:center;gap:2px;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:20px;white-space:nowrap;line-height:1.35}
.wc-green{background:rgba(58,168,98,.14);color:#2f6b45}
.wc-amber{background:rgba(194,145,47,.16);color:#a2761f}
.wc-red{background:rgba(168,84,76,.14);color:#a8544c}
.wc-closed{background:var(--soft);color:var(--muted)}
/* Indicador live de conexión con Meta (barra superior) */
.wa-live,.wa-webhook{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:30px;border:1px solid var(--line-2);color:var(--muted);white-space:nowrap}
.wa-webhook.wh-ok{color:#2f6b45;border-color:rgba(58,168,98,.4);background:rgba(58,168,98,.08)}
.wa-webhook.wh-ok .wa-live-dot{background:#3aa862}
.wa-webhook.wh-mid{color:#a2761f;border-color:rgba(194,145,47,.4);background:rgba(194,145,47,.08)}
.wa-webhook.wh-mid .wa-live-dot{background:#c2912f}
.wa-webhook.wh-old .wa-live-dot,.wa-webhook.wh-na .wa-live-dot{background:var(--muted)}
.wa-live-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:0 0 auto}
.wa-live.is-live{color:#2f6b45;border-color:rgba(58,168,98,.45);background:rgba(58,168,98,.1)}
.wa-live.is-live .wa-live-dot{background:#3aa862;box-shadow:0 0 0 3px rgba(58,168,98,.18);animation:waPulse 1.6s ease-in-out infinite}
.wa-live.is-down{color:#a8544c;border-color:rgba(168,84,76,.45);background:rgba(168,84,76,.1)}
.wa-live.is-down .wa-live-dot{background:#a8544c}
.wa-live-bar{display:flex;justify-content:flex-end;margin-bottom:12px}
/* Controles de borrado (admin) */
.wa-hbtn-danger{color:#a8544c;border-color:rgba(168,84,76,.4)}
.wa-hbtn-danger:hover{background:rgba(168,84,76,.12);border-color:#a8544c;color:#a8544c}
.wa-bubble>.wa-msg-del{position:absolute;top:-8px;right:-8px;opacity:0;width:19px;height:19px;border-radius:50%;border:1px solid var(--line);background:#fff;color:#a8544c;font-size:10px;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:opacity .12s;z-index:2}
.wa-msg:hover .wa-msg-del{opacity:1}
.wa-bubble>.wa-msg-del:hover{background:#a8544c;color:#fff}
.ef-danger{margin-top:16px;width:100%;border:1px solid rgba(168,84,76,.4);background:transparent;color:#a8544c;border-radius:9px;padding:9px;font-size:12.5px;font-weight:700;cursor:pointer}
.ef-danger:hover{background:rgba(168,84,76,.1);border-color:#a8544c}
@media(max-width:640px){.tb-topbar .wa-live .wa-live-tx{display:none}}
/* Pruebas y VAC: nombre + ventana en filas, y leyenda */
.edp-name-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.edp-win-row{margin-top:4px}
.edp-legend{display:flex;flex-wrap:wrap;gap:16px;margin:10px 2px 4px;font-size:11.5px;color:var(--muted)}
.edp-legend>span{display:inline-flex;align-items:center;gap:5px}
.wa-badge{flex:0 0 auto;background:#4b7d63;color:#fff;font-size:11px;font-weight:800;min-width:18px;height:18px;
  border-radius:999px;display:grid;place-items:center;padding:0 5px}
.wa-conv-centro{font-size:10.5px;color:var(--muted);margin-top:2px}
.wa-chat{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
.wa-empty{margin:auto;color:var(--muted);font-size:14px}
.wa-thread{display:flex;flex-direction:column;height:100%;min-height:0}
.wa-head{display:flex;gap:12px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line-2)}
.wa-head-name{font-weight:700;font-size:15px;color:var(--text)}
.wa-head-sub{font-size:12px;color:var(--muted);margin-top:2px}
.wa-win{font-weight:700}.wa-win-on{color:#4b9e6a}.wa-win-off{color:var(--muted)}
.wa-win-warn{color:#c2912f}
.wa-win-urgent{color:#a8544c;animation:waPulse 1.3s ease-in-out infinite}
@keyframes waPulse{0%,100%{opacity:1}50%{opacity:.45}}
.wa-msgs{flex:1;min-height:0;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:5px;
  background-color:#ece5da;background-image:radial-gradient(rgba(90,70,45,.05) 1px,transparent 1px);background-size:20px 20px}
.wa-msg{display:flex}
.wa-msg.wa-out{justify-content:flex-end}
.wa-bubble{max-width:76%;padding:7px 10px 5px;border-radius:12px;font-size:13.5px;line-height:1.42;position:relative;
  white-space:pre-wrap;word-break:break-word;box-shadow:0 1px 1.5px rgba(30,25,18,.14)}
.wa-in .wa-bubble{background:#ffffff;border-bottom-left-radius:4px;color:#1f2620}
.wa-out .wa-bubble{background:#d7f5c8;border-bottom-right-radius:4px;color:#1c2a17}
.wa-bmeta{display:block;font-size:10px;color:#5a6b57;opacity:.85;margin-top:2px;text-align:right}
.wa-out .wa-bubble-failed{background:#f3d9d6}
.wa-msg-err{margin-top:4px;font-size:11px;line-height:1.35;color:#a8544c;background:rgba(168,84,76,.12);border-radius:7px;padding:5px 8px;text-align:left}
.wa-tick-read{color:#3aa0e0;font-weight:700}
/* Medios en las burbujas (imágenes, documentos, ubicación) */
.wa-bubble-media{padding:4px 4px 5px}
.wa-img{max-width:230px;max-height:260px;border-radius:8px;display:block;cursor:pointer}
.wa-sticker{max-width:120px;max-height:120px;display:block}
.wa-video{max-width:240px;border-radius:8px;display:block}
.wa-audio{max-width:232px;display:block}
.wa-cap{display:block;white-space:pre-wrap;word-break:break-word}
.wa-tpl-tag{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#0b6b3a;background:rgba(11,107,58,.1);border-radius:6px;padding:1px 6px;margin-bottom:4px}
.wa-bubble-media .wa-cap{padding:5px 6px 0}
.wa-cap a{color:#1155aa;text-decoration:underline}
.wa-out .wa-cap a{color:#0b6b3a}
.wa-media-na{opacity:.7;font-style:italic}
.wa-doc{display:flex;align-items:center;gap:9px;text-decoration:none;color:inherit;background:rgba(0,0,0,.06);border-radius:8px;padding:8px 10px;max-width:250px}
.wa-doc-ic{font-size:20px;flex:0 0 auto}
.wa-doc-nm{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wa-loc{display:flex;align-items:center;gap:8px;text-decoration:none;color:inherit;font-weight:600;font-size:13px}
.wa-loc-ic{font-size:18px}
/* Panel de emojis */
.wa-emojis{display:flex;flex-wrap:wrap;gap:2px;padding:8px 10px;border-top:1px solid var(--line-2);background:var(--paper);max-height:154px;overflow-y:auto}
.wa-emoji{border:0;background:transparent;font-size:20px;line-height:1;padding:5px;border-radius:7px;cursor:pointer}
.wa-emoji:hover{background:var(--soft)}
.wa-composer{display:flex;gap:10px;padding:12px 14px;border-top:1px solid var(--line-2);align-items:flex-end}
.wa-composer textarea{flex:1;resize:none;font-family:inherit;font-size:14px;color:var(--text);background:var(--soft);
  border:1px solid var(--line);border-radius:12px;padding:11px 14px;outline:none;max-height:120px}
.wa-composer textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(189,173,152,.22)}
.wa-composer textarea:disabled{opacity:.6}
.wa-cerrada{padding:12px 16px;border-top:1px solid var(--line-2);color:var(--st-perdido);font-size:12.5px;background:rgba(168,84,76,.08);
  display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}
/* Cabecera: acciones (asignar / no contactar) y etiquetas */
.wa-head-acc{display:flex;gap:7px;margin-left:auto;flex:0 0 auto}
.wa-hbtn{font-family:'Raleway',sans-serif;font-size:11.5px;font-weight:600;color:var(--muted);background:var(--soft);
  border:1px solid var(--line);border-radius:999px;padding:5px 12px;cursor:pointer;transition:.14s;white-space:nowrap}
.wa-hbtn:hover{color:var(--text);border-color:var(--accent)}
.wa-hbtn.is-on{background:rgba(168,84,76,.16);color:#e08e83;border-color:rgba(168,84,76,.4)}
.wa-stop{font-size:11px;font-weight:700;color:#e08e83;background:rgba(168,84,76,.16);border-radius:999px;padding:1px 8px;margin-left:6px}
.wa-asig{font-size:11px;font-weight:600;color:var(--accent);margin-left:6px}
/* Contexto del cliente */
.wa-context{display:flex;flex-wrap:wrap;gap:7px;padding:9px 14px;border-bottom:1px solid var(--line-2);background:var(--soft)}
.wa-ctx-chip{font-size:11.5px;font-weight:600;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.wa-ctx-cli{color:#7fae8f;border-color:rgba(75,125,99,.4)}
.wa-ctx-cita{color:#8fa6d0;border-color:rgba(58,90,153,.4)}
.wa-ctx-stop{color:#e08e83;border-color:rgba(168,84,76,.4)}
/* Respuestas rápidas */
.wa-icon-btn{flex:0 0 auto;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--soft);
  color:var(--muted);cursor:pointer;font-size:16px}
.wa-icon-btn:hover{color:var(--text);border-color:var(--accent)}
.wa-quick{max-height:220px;overflow-y:auto;border-top:1px solid var(--line-2);background:var(--paper)}
.wa-quick-it{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line-2);background:transparent;
  padding:9px 14px;cursor:pointer;color:var(--text)}
.wa-quick-it:hover{background:var(--soft)}
.wa-quick-it b{display:block;font-size:12.5px}
.wa-quick-it span{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
/* Asistente de respuesta IA */
.wa-asist{border-top:1px solid var(--line-2);background:var(--soft);padding:10px 14px}
.wa-asist-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.wa-asist-t{font-size:12px;font-weight:700;color:var(--ink-soft)}
.wa-asist-t em{font-style:normal;font-weight:500;color:var(--muted);font-size:11px}
.wa-asist-btn{flex:0 0 auto;border:1px solid var(--accent);background:var(--paper);color:var(--accent-dd);
  font-size:12px;font-weight:700;padding:5px 12px;border-radius:8px;cursor:pointer}
.wa-asist-btn:hover{background:var(--accent);color:#fff}
.wa-asist-btn:disabled{opacity:.6;cursor:default}
.wa-asist-out{margin-top:9px}
.wa-asist-txt{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  font-size:13px;color:var(--text);white-space:pre-wrap;line-height:1.5}
.wa-asist-acts{display:flex;justify-content:flex-end;margin-top:7px}
.wa-asist-use{border:0;background:var(--dark);color:#fff;font-size:12px;font-weight:700;padding:6px 13px;border-radius:8px;cursor:pointer}
.wa-asist-use:hover{background:#000}
/* Ajustes de WhatsApp */
#waAjustesHost{display:flex;flex-direction:column;gap:18px}
.wa-aj-warn{background:rgba(194,145,47,.1);border:1px solid rgba(194,145,47,.4);color:#8a6a1f;border-radius:10px;padding:11px 14px;font-size:13px}
.wa-aj-h{font-size:16px;margin:0 0 3px}
.wa-aj-sub{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.wa-aj-toggles{display:flex;flex-direction:column}
.wa-aj-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line-2)}
.wa-aj-toggle:last-child{border-bottom:0}
.wa-aj-t{font-weight:700;font-size:13.5px;color:var(--text)}
.wa-aj-d{font-size:12px;color:var(--muted);margin-top:2px}
.wa-aj-fields{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end}
.wa-switch{position:relative;display:inline-block;width:46px;height:26px;flex:0 0 auto}
.wa-switch input{opacity:0;width:0;height:0;position:absolute}
.wa-switch-sl{position:absolute;inset:0;background:var(--line);border-radius:26px;transition:.2s;cursor:pointer}
.wa-switch-sl::before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.wa-switch input:checked+.wa-switch-sl{background:#3aa862}
.wa-switch input:checked+.wa-switch-sl::before{transform:translateX(20px)}
.wa-switch input:disabled+.wa-switch-sl{opacity:.5;cursor:default}
.wa-tpl{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:12px;background:var(--paper)}
.wa-tpl-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.wa-tpl-nm{font-weight:800;font-size:14px}
.wa-tpl-nm code{background:var(--cream);color:var(--accent-dd);font-size:12px;padding:1px 6px;border-radius:5px;font-weight:600}
.wa-tpl-tags{display:flex;gap:7px;align-items:center;flex:0 0 auto}
.wa-tag{font-size:9.5px;font-weight:800;letter-spacing:.06em;padding:3px 8px;border-radius:20px}
.wa-tag-mkt{background:var(--accent-soft);color:var(--accent-dd)}
.wa-tag-util{background:#dfe6e1;color:var(--green)}
.wa-tpl-state{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:20px}
.wa-tpl-state.on{background:rgba(58,168,98,.15);color:#2f6b45}
.wa-tpl-state.off{background:var(--soft);color:var(--muted)}
.wa-tpl-when{font-size:12px;color:var(--muted);margin:6px 0}
.wa-tpl-src{font-size:10.5px;font-weight:800;letter-spacing:.02em;margin:8px 0 2px}
.wa-tpl-src.ok{color:#5fbf8f}
.wa-tpl-src.alt{color:#d8ab55}
.wa-tpl-edit-btn{margin-top:8px}
.wa-tpl-editor{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.wa-tpl-edit-warn{font-size:11.5px;line-height:1.5;color:#d8ab55;background:rgba(194,145,47,.1);border:1px solid rgba(194,145,47,.35);border-radius:9px;padding:8px 10px;margin-bottom:8px}
.wa-tpl-ta{width:100%;font-size:13px;line-height:1.45;resize:vertical;min-height:120px;font-family:inherit}
.wa-tpl-edit-err{font-size:12px;color:#e08a86;margin-top:6px}
.wa-tpl-edit-acts{display:flex;gap:8px;margin-top:10px}
/* Vista previa "tal cual Meta" */
.wa-tpl-preview{background:#d7f5c8;color:#1c2a17;border-radius:10px;padding:10px 12px;margin:6px 0}
.wa-tpl-preview .wa-tpl-body{background:none;padding:0;margin:0}
.wa-tpl-header{font-weight:800;font-size:13px;margin-bottom:5px}
.wa-tpl-header-media{font-weight:700;color:#3a5a3a;font-size:12px}
.wa-tpl-footer{font-size:11.5px;color:#5a6b57;margin-top:7px}
.wa-tpl-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;border-top:1px solid rgba(0,0,0,.08);padding-top:8px}
.wa-tpl-btn{font-size:12px;font-weight:700;color:#0b6b3a;background:rgba(11,107,58,.08);border-radius:7px;padding:4px 10px}
/* Campos del editor */
.wa-ef-field{margin-top:12px;display:flex;flex-direction:column;gap:5px}
.wa-ef-lb{font-size:12px;font-weight:800;color:var(--muted)}
.wa-ef-note{font-size:11px;color:var(--muted)}
.wa-btn-list{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.wa-btn-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.wa-btn-type{max-width:160px}
.wa-btn-txt{flex:1 1 120px}
.wa-btn-extra{flex:1 1 150px}
.wa-btn-rm{flex:0 0 auto}
.wa-tpl-body{background:#d7f5c8;color:#1c2a17;border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.45;margin:6px 0}
.wa-var{color:#2f6b45;background:rgba(255,255,255,.55);padding:0 3px;border-radius:4px;font-weight:700}
.wa-tpl-vars{font-size:11.5px;color:var(--muted)}
.wa-var-chip{display:inline-block;background:var(--soft);border:1px solid var(--line);border-radius:20px;padding:1px 8px;font-size:11px;color:var(--ink-soft);margin:2px 1px}
.wa-aj-note{font-size:11.5px;color:var(--muted);margin-top:10px;font-style:italic}
.wa-aj-lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 8px}
.wa-aj-dias{display:flex;gap:8px;flex-wrap:wrap}
.wa-dia-chip{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--soft);color:var(--muted);font-weight:800;font-size:14px;cursor:pointer;transition:all .12s}
.wa-dia-chip:hover:not(:disabled){border-color:var(--accent)}
.wa-dia-chip.on{background:var(--accent);border-color:var(--accent);color:#1c1a15}
.wa-dia-chip:disabled{opacity:.5;cursor:default}
.wa-tpl-timing{display:flex;align-items:center;gap:9px;margin-top:9px;padding-top:9px;border-top:1px dashed var(--line-2);flex-wrap:wrap}
.wa-tpl-timing-k{font-size:12px;font-weight:700;color:var(--accent-dd)}
.wa-tpl-timing-l{font-size:12px;color:var(--ink-soft)}
.wa-tpl-timing .input{padding:5px 8px}
.wa-asist-err{background:rgba(168,84,76,.08);border:1px solid rgba(168,84,76,.3);color:var(--st-perdido);
  border-radius:10px;padding:9px 12px;font-size:12.5px}
/* ============ Look WhatsApp de la bandeja ============ */
.wa-wrap{border-color:#e2ddd4}
.wa-list{background:#fff}
.wa-list-top{padding:8px 12px;background:#f6f5f3;border-bottom:1px solid var(--line-2)}
.wa-search{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:22px;padding:7px 14px}
.wa-search-ic{width:16px;height:16px;color:var(--muted);flex:0 0 auto}
.wa-search input{flex:1;border:0;outline:0;background:transparent;font-size:13.5px;color:var(--text);font-family:inherit}
.wa-conv{padding:10px 14px;border-bottom:1px solid #f1efe9}
.wa-conv.is-on{background:#f2efe9}
.wa-av{width:47px;height:47px;font-size:15px}
.wa-conv-name{font-size:14.5px;font-weight:600}
.wa-conv-last{font-size:13px}
.wa-conv.has-unread{background:transparent;box-shadow:none}
.wa-conv.has-unread:hover{background:var(--soft)}
.wa-conv.has-unread .wa-conv-last{color:#3b4a3e;font-weight:500}
.wa-conv.has-unread .wa-conv-name{font-weight:700}
.wa-conv.has-unread .wa-conv-time{color:#25d366;font-weight:700}
.wa-badge{background:#25d366;animation:none;min-width:20px;height:20px;font-size:11.5px}
/* Cabecera del chat */
.wa-head{background:#f6f5f3;padding:9px 16px;gap:12px}
.wa-back{display:none;flex:0 0 auto;width:30px;height:34px;border:0;background:transparent;color:var(--ink-soft);cursor:pointer;align-items:center;justify-content:center}
.wa-back svg{width:22px;height:22px}
.wa-head .wa-av-lg{width:40px;height:40px;font-size:14px}
.wa-head-name{font-size:15.5px;font-weight:600}
/* Compositor estilo WhatsApp */
.wa-composer{background:#f6f5f3;gap:6px;padding:8px 12px;align-items:center}
.wa-cbtn{flex:0 0 auto;width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:#54656f;cursor:pointer;display:grid;place-items:center}
.wa-cbtn svg{width:25px;height:25px}
.wa-cbtn:hover{background:rgba(0,0,0,.06);color:var(--text)}
.wa-cbtn:disabled{opacity:.4;cursor:default}
.wa-plus-wrap{position:relative;flex:0 0 auto}
.wa-plus-menu{position:absolute;bottom:50px;left:0;background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 10px 34px rgba(0,0,0,.2);padding:7px;min-width:224px;z-index:20}
.wa-plus-it{display:flex;align-items:center;gap:13px;width:100%;border:0;background:transparent;padding:10px 12px;border-radius:10px;
  font-size:13.5px;font-weight:500;color:var(--text);cursor:pointer;text-align:left}
.wa-plus-it:hover{background:var(--soft)}
.wa-plus-ic{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:17px;flex:0 0 auto}
.pi-foto{background:#e6d6f7}.pi-doc{background:#cfe0fb}.pi-loc{background:#d3f0dd}.pi-quick{background:#fbe6c9}
.wa-input-wrap{flex:1;min-width:0;background:#fff;border-radius:22px;padding:0 15px;display:flex;align-items:center}
.wa-input-wrap textarea{flex:1;resize:none;border:0;outline:0;background:transparent;font-family:inherit;font-size:14.5px;
  color:var(--text);padding:11px 0;max-height:110px;line-height:1.4;box-shadow:none}
.wa-input-wrap textarea:focus{box-shadow:none;border:0}
.wa-send{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:0;background:#25d366;color:#fff;cursor:pointer;display:grid;place-items:center;transition:background .12s}
.wa-send svg{width:21px;height:21px;margin-left:2px}
.wa-send:hover{background:#1fb457}
.wa-send:disabled{background:#c9cfcb;cursor:default}
.wa-emojis{background:#f6f5f3}
/* Responsive: en móvil, el chat entra a pantalla completa con botón atrás */
@media(max-width:760px){
  .wa-live-bar{margin-bottom:8px}
  .wa-wrap{grid-template-columns:1fr;height:calc(100vh - 168px);min-height:0;border-radius:12px;position:relative}
  .wa-list{border-right:0}
  .wa-chat{position:absolute;inset:0;transform:translateX(100%);transition:transform .22s ease;background:#fff;z-index:5}
  .wa-wrap.chat-open .wa-chat{transform:translateX(0)}
  .wa-back{display:grid}
  .wa-head-acc{display:none}
  .wa-bubble{max-width:84%}
}

/* Bandeja SIEMPRE en claro (WhatsApp) con textos legibles, pase lo que pase con el tema del CRM */
.wa-wrap{background:#fff;height:calc(100dvh - 140px);min-height:0}
.wa-chat{background:#efeae2}
.wa-conv-name{color:#111b21}
.wa-conv-last{color:#667781}
.wa-conv-time{color:#8696a0}
.wa-conv-centro{color:#8696a0}
.wa-conv.has-unread .wa-conv-last{color:#3b4a54}
.wa-search input{color:#111b21}
.wa-search input::placeholder{color:#8696a0}
.wa-note{color:#667781}
.wa-empty{color:#667781}
.wa-head{background:#f6f5f3;border-bottom-color:#e4e0d8}
.wa-head-name{color:#111b21}
.wa-head-sub{color:#667781}
.wa-back,.wa-cbtn{color:#54656f}
.wa-context{background:#f6f5f3;border-bottom-color:#e4e0d8}
.wa-ctx-chip{background:#fff;color:#667781;border-color:#dfe3e1}
.wa-asist{background:#f6f5f3;border-top-color:#e4e0d8}
.wa-asist-t{color:#3b4a54}
.wa-asist-t em{color:#8696a0}
.wa-asist-txt{color:#111b21;background:#fff;border-color:#e4e0d8}
.wa-quick{background:#fff}
.wa-quick-it{color:#111b21;border-bottom-color:#eee}
.wa-quick-it span{color:#8696a0}
.wa-emojis{background:#f6f5f3;border-top-color:#e4e0d8}
.wa-composer{border-top-color:#e4e0d8}
.wa-input-wrap textarea{color:#111b21}
.wa-input-wrap textarea::placeholder{color:#8696a0}
.wa-plus-it{color:#111b21}
.wa-plus-menu{background:#fff;border-color:#e4e0d8}
.wa-hbtn{background:#fff;color:#54656f;border-color:#d9ddd9}
.wa-hbtn:hover{color:#111b21;border-color:#25d366}
.wa-hbtn.is-on{background:rgba(168,84,76,.12);color:#a8544c;border-color:rgba(168,84,76,.4)}
.wa-hbtn-danger{color:#a8544c}
.wa-cerrada{background:#fff5f4;color:#a8544c}
/* Lightbox para ampliar imágenes del chat */
.wa-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.9);z-index:400;display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:24px}
.wa-lightbox.hidden{display:none}
.wa-lightbox img{max-width:94vw;max-height:92vh;border-radius:8px;box-shadow:0 10px 50px rgba(0,0,0,.5)}
.wa-img,.wa-sticker{cursor:zoom-in}

/* ===== Alertas proactivas (portada) ===== */
.alertas-wrap{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:18px}
.alertas-hd{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-dd);margin-bottom:12px}
.alertas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.alerta-card{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);border-radius:12px;
  background:var(--soft);padding:11px 14px;cursor:pointer;transition:border-color .12s,background .12s}
.alerta-card:hover{border-color:var(--accent);background:var(--paper)}
.alerta-card.is-warn{border-color:rgba(194,145,47,.4);background:rgba(194,145,47,.07)}
.alerta-ic{font-size:18px;flex:0 0 auto}
.alerta-n{font-size:20px;font-weight:800;color:var(--dark);flex:0 0 auto;min-width:24px;font-variant-numeric:tabular-nums}
.alerta-txt{font-size:12.5px;color:var(--ink-soft);line-height:1.3}
.alertas-ok{background:rgba(75,125,99,.08);border:1px solid rgba(75,125,99,.28);border-radius:14px;
  padding:14px 18px;color:#4b7d63;font-size:13.5px;font-weight:600;margin-bottom:18px}
/* ===== Métricas (dashboard) ===== */
.met-sec-h{display:flex;align-items:baseline;gap:11px;margin:26px 2px 13px;padding-bottom:9px;border-bottom:2px solid var(--line)}
.met-sec-h h3{font-size:15px;font-weight:800;letter-spacing:-.01em;color:var(--text);margin:0}
.met-sec-h span{font-size:12px;color:var(--muted);font-weight:500}
/* Estado del sistema (Configuración · admin) */
.sys-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:760px){.sys-grid{grid-template-columns:1fr}}
.sys-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:15px 17px}
.sys-card-h{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;color:var(--text);margin-bottom:10px}
.sys-kv{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;padding:5px 0;border-bottom:1px solid var(--line-2)}
.sys-kv span{color:var(--muted)}
.sys-kv b{color:var(--text);font-weight:700;text-align:right}
.sys-acts{display:flex;gap:9px;margin-top:12px;flex-wrap:wrap}
.sys-cron-txt{font-family:'SF Mono',Menlo,monospace;font-size:11px;color:var(--ink-soft);background:var(--soft);border-radius:8px;padding:8px 10px;margin-top:8px;white-space:pre-wrap;word-break:break-word}
.sys-tag{background:var(--soft);color:var(--ink-soft);font-size:11px;font-weight:800;border-radius:20px;padding:1px 9px}
.sys-errs{max-height:240px;overflow-y:auto;margin-top:6px;display:flex;flex-direction:column;gap:4px}
.sys-err{font-family:'SF Mono',Menlo,monospace;font-size:11px;color:#c26a60;background:rgba(168,84,76,.08);border:1px solid rgba(168,84,76,.2);border-radius:7px;padding:6px 9px;white-space:pre-wrap;word-break:break-word;line-height:1.4}
.sys-diag-sum{font-size:12.5px;margin:2px 0 9px}
.sys-diag-list{display:flex;flex-direction:column;gap:2px}
.sys-diag-row{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--text);padding:3px 0}
.sys-diag-row em{color:var(--muted);font-style:normal;font-size:11px;margin-left:auto}
.sys-ck{flex:0 0 auto;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff}
.sys-ck-ok{background:#3aa862}.sys-ck-warn{background:#c2912f}.sys-ck-fail{background:#a8544c}
.sys-r-fail>span{color:#c26a60;font-weight:600}
.met-com3{grid-template-columns:1fr 1fr 1fr}
@media(max-width:900px){.met-com3{grid-template-columns:1fr}}
.met-sens{font-size:14px;color:var(--ink-soft);padding:4px 0 14px}
.met-sens b{font-size:22px;color:var(--accent-dd);font-weight:800}
.met-sens span{color:var(--muted);font-size:13px}
.met-sens-empty{color:var(--muted);font-size:13px;font-weight:500}
.met-fn-row{display:grid;grid-template-columns:96px 1fr auto;align-items:center;gap:12px;margin-bottom:12px}
.met-fn-lbl{font-size:13px;font-weight:700;color:var(--text)}
.met-fn-track{background:var(--soft);border-radius:6px;height:22px;overflow:hidden}
.met-fn-fill{height:100%;border-radius:6px;transition:width .5s cubic-bezier(.2,.7,.2,1)}
.met-fn-num{font-size:12.5px;color:var(--muted);text-align:right;min-width:96px}
.met-fn-num b{color:var(--text);font-size:14px}
.met-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.met-stat{background:var(--soft);border:1px solid var(--line-2);border-radius:12px;padding:14px 12px;text-align:center}
.met-stat-v{font-size:24px;font-weight:800;color:var(--text);font-family:'Raleway',sans-serif;line-height:1}
.met-stat-l{font-size:11.5px;color:var(--muted);margin-top:6px;line-height:1.3}
/* ===== Flujo (desplegable informativo) ===== */
.flow-box{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);margin-bottom:16px;overflow:hidden}
.flow-box>summary{list-style:none;cursor:pointer;padding:15px 20px;font-weight:700;color:var(--text);
  display:flex;align-items:center;gap:9px;font-size:14.5px}
.flow-box>summary::-webkit-details-marker{display:none}
.flow-box>summary:hover{background:var(--soft)}
.flow-ic{font-size:16px}
.flow-hint{margin-left:auto;font-size:12px;font-weight:500;color:var(--muted)}
.flow-body{padding:4px 22px 20px}
.flow-steps{margin:0;padding:0 0 0 4px;list-style:none;display:flex;flex-direction:column;gap:12px}
.flow-steps li{font-size:13.5px;color:var(--text);line-height:1.5;padding-left:14px;border-left:2px solid var(--line);position:relative}
.flow-steps li b{color:var(--text)}
.flow-wa{margin-top:5px;font-size:12.5px;color:var(--muted);background:var(--soft);border-radius:9px;padding:7px 11px;line-height:1.55}
.flow-tpl{display:inline-block;font-family:ui-monospace,monospace;font-size:11.5px;background:rgba(189,173,152,.18);
  color:var(--accent);border:1px solid rgba(189,173,152,.35);border-radius:6px;padding:1px 6px;margin:0 1px}
.flow-rules{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px}
.flow-rules span{font-size:12px;color:var(--muted);background:var(--soft);border:1px solid var(--line-2);border-radius:999px;padding:5px 12px}
/* ===== Pruebas y VAC ===== */
.edp-segs{display:inline-flex;gap:4px;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:4px}
.edp-seg{font-family:'Raleway',sans-serif;border:0;background:transparent;color:var(--muted);font-weight:600;
  font-size:12.5px;padding:8px 14px;border-radius:9px;cursor:pointer;white-space:nowrap;transition:background .14s,color .14s}
.edp-seg:hover:not(.is-on){color:var(--text)}
.edp-seg.is-on{background:var(--accent);color:#26241f}
.edp-tbadge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.03em;padding:2px 9px;border-radius:999px}
.edp-t-prueba{background:rgba(75,125,99,.18);color:#7fae8f}
.edp-t-vac{background:rgba(58,90,153,.20);color:#8fa6d0}
.edp-t-lead{background:rgba(194,145,47,.18);color:#d8ab55}
.edp-row-seguir{box-shadow:inset 3px 0 0 #d8ab55}
/* Semáforo de urgencia */
.edp-urg-urgente{box-shadow:inset 3px 0 0 #d9534f}
.edp-urg-hoy{box-shadow:inset 3px 0 0 #d8ab55}
.edp-urg-pronto{box-shadow:inset 3px 0 0 #6f96c9}
.edp-urg-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;flex:0 0 auto}
.edp-urg-dot.urg-urgente{background:#d9534f;box-shadow:0 0 0 3px rgba(217,83,79,.18)}
.edp-urg-dot.urg-hoy{background:#d8ab55}
.edp-urg-dot.urg-pronto{background:#6f96c9}
.edp-seguir-chip{margin-top:5px;display:inline-block;font-size:10.5px;font-weight:800;color:#d8ab55;background:rgba(194,145,47,.14);border-radius:6px;padding:2px 8px}
.edp-filtro-pill{font-size:11px;font-weight:800;color:#eaa39b;background:rgba(168,84,76,.18);border:1px solid rgba(200,105,96,.45);border-radius:999px;padding:2px 10px;cursor:pointer;margin-right:6px}
.edp-filtro-pill:hover{background:rgba(168,84,76,.3)}
.edp-prox-sub{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.35}
.edp-lestado-row{margin-top:4px}
.edp-lestado{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.02em;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--muted)}
.edp-lestado.le-nuevo{background:rgba(194,145,47,.16);color:#d8ab55}
.edp-lestado.le-cont{background:rgba(58,90,153,.20);color:#8fa6d0}
.edp-lestado.le-cita{background:rgba(58,90,153,.22);color:#9fb6e0}
.edp-lestado.le-seg{background:rgba(194,145,47,.16);color:#d8ab55}
.edp-lestado.le-venta{background:rgba(58,168,98,.18);color:#5fbf8f}
.edp-lestado.le-no{background:rgba(168,84,76,.16);color:#e08a86}
.edp-origen{font-size:10px;color:var(--muted);margin-left:4px}
.edp-todos{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;white-space:nowrap}
.ef-hist{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
.ef-hist-item{border-left:2px solid var(--line);padding:2px 0 2px 10px}
.ef-hist-tx{font-size:12.5px;color:var(--text);line-height:1.4}
.ef-hist-meta{font-size:10.5px;color:var(--muted);margin-top:2px}
.edp-th{cursor:pointer;user-select:none;white-space:nowrap}
.edp-th:hover{color:var(--text)}
.edp-th.on{color:var(--accent)}
.edp-th-arrow{font-size:9px}
.ef-nota-box{background:transparent;border:1px dashed var(--line);color:var(--text);resize:vertical}
.ef-nota-box:focus{border-style:solid;border-color:var(--accent);background:var(--soft)}
.ef-nota-box::placeholder{color:var(--muted);font-style:italic}
.edp-msg-auto{font-size:11.5px;font-weight:700;color:#8fa6d0}
.edp-row-lead{cursor:pointer}
.edp-lead-acts{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.edp-lead-open{font-size:12px;font-weight:700;color:#8fa6d0}
.edp-row-lead:hover .edp-lead-open{text-decoration:underline}
.edp-lead-react,.edp-lead-contact{font-size:11.5px;font-weight:800;border:none;border-radius:7px;padding:4px 10px;cursor:pointer}
.edp-lead-react{color:#1c2a17;background:#d7f5c8}
.edp-lead-contact{color:#0d2a4a;background:#bcd6f5}
.edp-lead-react:hover,.edp-lead-contact:hover{filter:brightness(.96)}
.edp-lead-react:disabled,.edp-lead-contact:disabled{opacity:.6;cursor:default}
.edp-when .edp-hoy{color:var(--accent)}
.edp-asis{font-size:12px;font-weight:700}
.edp-asis-si{color:#7fae8f}.edp-asis-no{color:var(--st-perdido)}
.edp-asis-pend{color:var(--espera);font-size:11px;font-weight:700}
.edp-resp{font-size:11px;font-weight:700;color:#8fa6d0;margin-left:6px}
.edp-estado{min-width:132px;font-weight:700}
table.edp-table td{vertical-align:middle}

/* ===== Banco (extracto CaixaBank) — maquetación estilo WEMOOV, colores TB ===== */
/* Barra de herramientas */
.ban-toolbar{display:flex;align-items:center;gap:11px;flex-wrap:wrap;margin-bottom:18px}
.ban-input{background:var(--soft);border:1px solid var(--line);border-radius:11px;color:var(--text);
  padding:11px 13px;font-family:'Raleway',sans-serif;font-size:13.5px;font-weight:500;outline:none;
  transition:border-color .15s,box-shadow .15s}
.ban-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.ban-search{flex:1;min-width:200px;max-width:360px}
.ban-date{width:auto;padding:10px 12px;font-size:12.5px;color:var(--muted)}
.ban-spacer{flex:1}
.ban-fresh{color:var(--muted);font-size:12px;font-weight:600}
.ban-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;color:var(--muted);user-select:none}
.ban-toggle input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.ban-toggle:hover{color:var(--text)}
/* KPIs grandes */
.ban-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.ban-kpi{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);padding:18px 20px}
.ban-kpi.crit{border-color:rgba(168,84,76,.4)}
.ban-k-label{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.09em;text-transform:uppercase}
.ban-k-value{font-family:'Raleway',sans-serif;font-size:30px;font-weight:800;margin:10px 0 4px;letter-spacing:-.02em;line-height:1.1;color:var(--text)}
.ban-k-sub{font-size:12.5px;color:var(--muted);font-weight:600}
/* Saldo por centro */
.ban-saldos{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.ban-saldo{font-size:12.5px;color:var(--muted);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:5px 13px}
.ban-saldo b{color:var(--text);margin-right:6px}
/* Dos columnas: gráfico + categorías */
.ban-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start;margin-bottom:16px}
.ban-panel{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);padding:20px 22px;position:relative}
.ban-panel.no-pad{padding:0;overflow:hidden}
.ban-hd{margin-bottom:18px}
.ban-hd h3{margin:0;font-size:15px;font-weight:700;color:var(--text)}
.ban-note{color:var(--muted);font-size:12px;font-weight:600;margin-top:3px}
.ban-panel svg{display:block;width:100%;height:auto;overflow:visible}
.ban-ax{fill:var(--muted);font-size:11px}
.ban-leg{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);margin-top:10px}
.ban-dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:5px}
/* Barras por categoría */
.ban-row{display:grid;grid-template-columns:148px 1fr auto;align-items:center;gap:12px;margin-bottom:12px;cursor:pointer;border-radius:8px;transition:background .12s}
.ban-row:hover{background:var(--cream)}
.ban-row-name{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--text)}
.ban-sw{width:10px;height:10px;border-radius:3px;flex:none}
.ban-row-track{background:var(--soft);border-radius:5px;height:10px;overflow:hidden}
.ban-row-fill{height:100%;border-radius:5px}
.ban-row-num{font-size:12.5px;font-weight:700;color:var(--muted);text-align:right;min-width:108px;white-space:nowrap}
.ban-row-num b{color:var(--text)}
/* Tabla de movimientos */
.ban-table .ban-cat{padding:5px 9px;font-size:12.5px;min-width:150px}
@media(max-width:900px){.ban-grid{grid-template-columns:1fr}.ban-kpis{grid-template-columns:repeat(2,1fr)}}
/* KPI y celdas que abren un desglose al pincharlas */
.kpi-click{cursor:pointer;transition:border-color .14s,transform .1s,box-shadow .14s}
.kpi-click:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.kpi-click:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
td.num-link{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;
  text-underline-offset:3px;text-decoration-color:var(--muted)}
td.num-link:hover{color:var(--accent);text-decoration-color:var(--accent)}
/* Próxima acción en la ficha del cliente (texto + fecha) */
.renov-prox{margin-top:10px}
.prox-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.prox-row .input{flex:1 1 auto;min-width:150px}
.prox-row .prox-date{flex:0 0 auto;width:auto;max-width:180px}
/* Distintivo Lead / Cliente en la tarjeta "Próxima acción · hoy" */
.ini-kind{font-size:.6rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  padding:1px 7px;border-radius:999px;border:1px solid var(--line);margin-left:8px;white-space:nowrap}
.ini-kind-lead{color:#b9860f;background:rgba(194,145,47,.14);border-color:rgba(194,145,47,.4)}
.ini-kind-cli{color:#4b7d63;background:rgba(75,125,99,.14);border-color:rgba(75,125,99,.4)}

/* v99 — card renovaciones: más aire en los badges + esquinas más redondeadas */
.hoy-list{gap:7px}
.hoy-row{padding:13px 16px;border-bottom:0;border-radius:16px;gap:14px}
.hoy-row.hoy-es-hoy{border-radius:18px;padding:14px 16px}
.hoy-hora.hoy-live{padding:6px 15px;border-radius:999px;margin-right:6px}
.hoy-row.hoy-es-hoy .hoy-hora{border-radius:999px}
.renov-tag{padding:6px 16px;margin-left:auto;margin-right:2px}

/* v100 — botón toggle Avisar / Avisado en la card */
button.renov-tag{cursor:pointer;transition:background .12s,border-color .12s,transform .06s}
button.renov-tag:hover:not(:disabled){filter:brightness(.97)}
button.renov-tag:active:not(:disabled){transform:scale(.96)}
button.renov-tag:disabled{cursor:default;opacity:.75}
.renov-tag-avisado{background:rgba(47,158,68,.16)!important;color:#2f9e44!important;border-color:rgba(47,158,68,.45)!important}

/* v101 — Tablero Kanban del embudo de leads */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}
@media (max-width:900px){.kanban{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.kanban{grid-template-columns:1fr}}
.kanban-col{background:var(--soft);border:1px solid var(--line);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:10px;min-height:120px}
.kanban-col-head{display:flex;align-items:center;gap:8px;padding:4px 6px}
.kanban-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.kanban-col-title{font-weight:800;font-size:.9rem}
.kanban-col-count{margin-left:auto;font-size:.78rem;font-weight:700;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:1px 9px}
.kanban-list{display:flex;flex-direction:column;gap:8px;min-height:60px;border-radius:12px;padding:2px;transition:background .12s}
.kanban-list.drag-over{background:rgba(120,150,200,.14);outline:2px dashed var(--line)}
.kanban-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.kanban-card[draggable=true]{cursor:grab}
.kanban-card:active{cursor:grabbing}
.kanban-card:hover{border-color:rgba(128,128,128,.4)}
.kanban-card.dragging{opacity:.4}
.kanban-card.q-stale{border-left:3px solid #c25a4c}
.kanban-name{font-weight:700;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kanban-meta{font-size:.76rem;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Semáforo de completitud de la ficha (tarjeta + modal) */
.kanban-comp{display:flex;align-items:center;gap:6px;margin-top:7px}
.comp-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.comp-bar{flex:1;height:5px;border-radius:4px;background:var(--line);overflow:hidden}
.comp-bar>i{display:block;height:100%;border-radius:4px}
.comp-pct{font-size:.68rem;font-weight:800;flex:0 0 auto;font-variant-numeric:tabular-nums}
.comp-ok .comp-dot,.comp-ok .comp-bar>i{background:#2f6b45}.comp-ok .comp-pct{color:#2f6b45}
.comp-mid .comp-dot,.comp-mid .comp-bar>i{background:#c2912f}.comp-mid .comp-pct{color:#a2761f}
.comp-low .comp-dot,.comp-low .comp-bar>i{background:#a8544c}.comp-low .comp-pct{color:#a8544c}
.lead-comp{display:flex;align-items:center;gap:10px;margin:12px 0 4px;padding:9px 12px;border-radius:10px;background:var(--soft);border:1px solid var(--line)}
.lead-comp .lc-label{font-size:12px;font-weight:700;color:var(--ink-soft);flex:0 0 auto}
.lead-comp .lc-bar{flex:1;height:7px;border-radius:5px;background:var(--line);overflow:hidden}
.lead-comp .lc-bar>i{display:block;height:100%;border-radius:5px}
.lead-comp .lc-pct{font-size:13px;font-weight:800;flex:0 0 auto;font-variant-numeric:tabular-nums}
.lead-comp.comp-ok .lc-bar>i{background:#2f6b45}.lead-comp.comp-ok .lc-pct{color:#2f6b45}
.lead-comp.comp-mid .lc-bar>i{background:#c2912f}.lead-comp.comp-mid .lc-pct{color:#a2761f}
.lead-comp.comp-low .lc-bar>i{background:#a8544c}.lead-comp.comp-low .lc-pct{color:#a8544c}
.kanban-empty{color:var(--muted);opacity:.5;font-size:.8rem;text-align:center;padding:16px 0}
.lead-info-box{display:grid;grid-template-columns:1fr 1fr;gap:9px 22px;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:16px}
@media (max-width:640px){.lead-info-box{grid-template-columns:1fr}}
.lfi-row{display:flex;gap:10px;align-items:baseline;font-size:.86rem;line-height:1.45}
.lfi-badge{flex:0 0 auto;color:#fff;font-weight:700;font-size:.72rem;padding:3px 11px;border-radius:999px;min-width:100px;text-align:center}
.lfi-desc{color:var(--text)}

/* v102 — botones de cabecera del tablero de leads */
.lead-head-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* ================= v105 · Entrenamientos (generador IA) ================= */
.prog-form{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 18px}
.prog-form label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.82rem;color:var(--text)}
.prog-form .prog-wide{grid-column:1/-1}
.prog-form textarea.input{resize:vertical;font-family:inherit}
.lbl-opt{font-weight:400;color:var(--muted);font-size:.78rem}

.prog-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.prog-card{text-align:left;background:var(--card,#fff);border:1px solid var(--line,#e7e7ea);border-radius:14px;padding:14px 15px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;gap:6px}
.prog-card:hover{border-color:var(--accent);box-shadow:0 4px 16px rgba(0,0,0,.06);transform:translateY(-1px)}
.prog-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.prog-card-name{font-weight:800;font-size:.98rem;color:var(--text)}
.prog-badge{background:var(--accent-soft,#efe9ff);color:var(--accent,#6b3df0)}
.prog-card-obj{font-weight:600;color:var(--text);font-size:.86rem}
.prog-card-meta{color:var(--muted);font-size:.76rem}

.prog-view-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.prog-view-actions{display:flex;gap:8px;flex-wrap:wrap}
.prog-del{color:var(--danger,#c0392b)}
.prog-summary{margin:14px 0 4px;line-height:1.5}
.prog-clin{background:#fff7ec;border:1px solid #f0d9b0;border-radius:12px;padding:14px 16px;margin:16px 0}
.prog-clin h3{margin:0 0 8px;font-size:.95rem;color:#9a6a15}
.prog-clin-item{margin-bottom:8px;font-size:.86rem;line-height:1.45}
.prog-clin-item em{color:#9a6a15;font-style:normal;font-weight:700}

.prog-days{display:flex;flex-direction:column;gap:18px;margin-top:18px}
.prog-day{border:1px solid var(--line,#e7e7ea);border-radius:14px;padding:16px}
.prog-day-head{display:flex;align-items:center;gap:10px}
.prog-day-head h3{margin:0;font-size:1.02rem}
.prog-day-n{background:var(--accent,#6b3df0);color:#fff;font-weight:800;font-size:.72rem;padding:3px 10px;border-radius:999px}
.prog-day-focus{color:var(--muted);margin:6px 0 12px;font-size:.86rem}
.prog-block{margin-top:12px}
.prog-block h4{margin:0 0 8px;font-size:.86rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent,#6b3df0)}
.prog-tbl-wrap{overflow-x:auto}
.prog-tbl{width:100%;border-collapse:collapse;font-size:.83rem;min-width:560px}
.prog-tbl th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:6px 10px;border-bottom:2px solid var(--line,#e7e7ea)}
.prog-tbl td{padding:8px 10px;border-bottom:1px solid var(--line,#f0f0f2);vertical-align:top}
.prog-tbl .prog-ex{font-weight:700}
.prog-tbl .prog-note{color:var(--muted);min-width:180px}
.prog-extra{margin-top:16px}
.prog-extra h3{margin:0 0 6px;font-size:.95rem}
.prog-extra p{margin:0;line-height:1.5}
.prog-aviso{margin-top:16px;font-size:.78rem;color:var(--muted);font-style:italic;border-top:1px solid var(--line,#eee);padding-top:12px}
.prog-mod{margin-top:16px}
.prog-mod h3{margin:0 0 4px;font-size:.95rem}
.prog-mod textarea{margin-top:10px}

@media(max-width:720px){.prog-form{grid-template-columns:repeat(2,1fr)}}
@media print{
  .hero,#centroChips,.prog-view-actions,.prog-mod,.sect-head input,#progList,#progFormCard{display:none!important}
  .container{max-width:100%!important;margin:0!important;padding:0!important}
  .prog-view{box-shadow:none!important;border:none!important}
}

/* v106 · memoria del generador (reglas de la casa) */
#progReglasCard .card-head h2{font-size:1rem}
.prog-regla-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}
.prog-regla-list li{display:flex;align-items:center;gap:10px;background:var(--accent-soft,#f3effe);border:1px solid var(--line,#e7e7ea);border-radius:10px;padding:8px 12px}
.prog-regla-tx{flex:1;font-size:.86rem;color:var(--text);font-weight:600}
.prog-regla-by{font-size:.72rem;color:var(--muted);white-space:nowrap}
.prog-regla-x{border:none;background:transparent;color:var(--danger,#c0392b);cursor:pointer;font-size:.9rem;font-weight:700;line-height:1;padding:2px 4px;border-radius:6px}
.prog-regla-x:hover{background:rgba(192,57,43,.1)}
.prog-regla-empty{margin:0 0 12px;font-size:.84rem}
.prog-regla-add{display:flex;gap:10px;flex-wrap:wrap}
.prog-regla-add .input{flex:1;min-width:220px}
.prog-remember{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:.82rem;color:var(--text);cursor:pointer}
.prog-remember input{width:16px;height:16px;cursor:pointer}

/* v107 · buscador de cliente Timp + asistencia de sesiones */
.prog-cli-wrap{position:relative}
.prog-cli-wrap .baja-results{position:absolute;top:100%;left:0;right:0;z-index:30}
.prog-asist{margin-top:16px}
.prog-asist h3{margin:0 0 4px;font-size:.98rem}
.prog-timp{margin:12px 0;font-size:.88rem}
.prog-timp-ok{color:var(--text)}
.prog-timp-flag{color:var(--danger,#c0392b);font-weight:600}
.prog-ses-add{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0 16px}
.prog-ses-add .input{min-width:120px}
.prog-ses-add #psTitulo{flex:1;min-width:200px}
.prog-ses-mk{font-weight:700;border:none;cursor:pointer;color:#fff}
.mk-ok{background:#2f6b45}.mk-ok:hover{background:#265839}
.mk-no{background:#a8544c}.mk-no:hover{background:#8f453e}
.prog-ses-list{display:flex;flex-direction:column;gap:8px}
.prog-ses-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--line,#e7e7ea);border-radius:10px}
.prog-ses-fecha{font-weight:700;font-size:.82rem;color:var(--muted);min-width:74px}
.prog-ses-tit{flex:1;font-size:.86rem;color:var(--text)}
.prog-ses-badge{border:none;border-radius:999px;padding:4px 12px;font-weight:700;font-size:.74rem;color:#fff;cursor:pointer}
.prog-ses-badge[disabled]{cursor:default;opacity:.85}
.ses-ok{background:#2f6b45}.ses-no{background:#a8544c}.ses-pend{background:#c2912f}
.prog-ses-x{border:none;background:transparent;color:var(--danger,#c0392b);cursor:pointer;font-size:.9rem;font-weight:700;padding:2px 4px;border-radius:6px}
.prog-ses-x:hover{background:rgba(192,57,43,.1)}

/* v108 · traer asistencia de Timp */
.prog-timp-sync-wrap{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 14px}
.prog-timp-sync{background:var(--accent,#6b3df0);color:#fff;border:none;font-weight:700;cursor:pointer}
.prog-timp-sync:hover{filter:brightness(1.08)}
.prog-timp-sync[disabled]{opacity:.7;cursor:default}
.prog-ses-src{background:var(--accent,#6b3df0);color:#fff;font-size:.64rem;font-weight:700;padding:1px 6px;border-radius:999px;vertical-align:middle;margin-left:6px}

/* v109 · FIX tarjeta de consideraciones clínicas en tema oscuro (antes: crema con texto claro = ilegible) */
.prog-clin{background:rgba(217,138,43,.13);border:1px solid rgba(217,138,43,.42);color:var(--text)}
.prog-clin h3{color:#e9b768}
.prog-clin-item{color:var(--text)}
.prog-clin-item strong{color:#f2cd8a}
.prog-clin-item em{color:#e9b768;font-style:normal;font-weight:700}

/* ===== Nutrición ===== */
.nutri-triage{margin-top:12px;padding:12px 14px;border:1px dashed rgba(217,138,43,.5);border-radius:12px;background:rgba(217,138,43,.06);display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center}
.nutri-triage>strong{flex-basis:100%;font-size:13px;color:var(--text)}
.nutri-chk{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer}
.nutri-triage .prog-wide{flex-basis:100%}
.nutri-block{border-left:4px solid #c0392b}
.nutri-block h3{margin:0 0 6px}
.nutri-block ul{margin:8px 0 0;padding-left:20px}
.prog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.prog-head h2{margin:0}
.prog-head-btns{display:flex;gap:8px;flex-shrink:0}
.nutri-macros{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 6px}
.nutri-kcal{font-weight:700;background:var(--green,#4b5951);color:#fff;border-radius:999px;padding:6px 14px;font-size:13.5px}
.nutri-mac{border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;border:1px solid var(--line-2,rgba(0,0,0,.1))}
.mac-p{background:rgba(75,125,99,.12);color:#3a6b52}
.mac-c{background:rgba(189,173,152,.18);color:#8a7358}
.mac-g{background:rgba(217,138,43,.12);color:#b06b1e}
.nutri-obj{color:var(--muted);font-size:13.5px;margin:4px 0 0}
.nutri-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin:14px 0}
.nutri-day{background:linear-gradient(180deg,#fff,#fbf8f2);border:1px solid var(--line-2,rgba(0,0,0,.08));border-radius:14px;padding:14px 16px;box-shadow:0 2px 10px rgba(0,0,0,.05)}
.nutri-day-head h3{margin:0 0 8px;font-size:16px;border-bottom:1px solid var(--line-2,rgba(0,0,0,.08));padding-bottom:6px}
.nutri-meal{padding:8px 0;border-bottom:1px solid var(--line-2,rgba(0,0,0,.06))}
.nutri-meal:last-child{border-bottom:0}
.nutri-meal-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.nutri-meal-mom{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-dd,#8a7358)}
.nutri-meal-kcal{margin-left:auto;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.nutri-ing{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.nutri-chip2{font-size:12px;background:rgba(0,0,0,.04);border-radius:6px;padding:3px 8px;color:var(--text)}
.nutri-prep{font-size:13px;color:var(--muted);margin:4px 0 0;line-height:1.45}
.nutri-compra{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.nutri-compra-sec h4{margin:0 0 4px;font-size:13.5px;color:var(--accent-dd,#8a7358)}
.nutri-compra-sec ul{margin:0;padding-left:18px;font-size:13.5px}
.nutri-aviso{border-left:4px solid var(--accent,#bdad98);font-size:13px;color:var(--muted)}
@media print{.tb-side,.tb-topbar,.nutri-triage,.prog-mod,#nutriFormCard,#nutriReglasCard,.sect-head input,.prog-head-btns{display:none!important}.tb-main{margin:0!important}}

/* v110 · conmutador Programa/Calendario + calendario del cliente */
.prog-tabs{display:flex;gap:6px;margin:14px 0 6px;border-bottom:1px solid var(--line,#e7e7ea);padding-bottom:0}
.prog-tab{border:none;background:transparent;color:var(--muted);font-weight:700;font-size:.9rem;padding:8px 14px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.prog-tab:hover{color:var(--text)}
.prog-tab.is-active{color:var(--accent,#6b3df0);border-bottom-color:var(--accent,#6b3df0)}

.cal-head{display:flex;align-items:center;justify-content:center;gap:18px;margin:8px 0 6px}
.cal-title{font-weight:800;font-size:1.02rem;text-transform:capitalize;min-width:170px;text-align:center}
.cal-nav{border:1px solid var(--line,#e7e7ea);background:transparent;color:var(--text);width:34px;height:34px;border-radius:9px;font-size:1.2rem;cursor:pointer}
.cal-nav:hover{border-color:var(--accent,#6b3df0);color:var(--accent,#6b3df0)}
.cal-legend{display:flex;gap:14px;justify-content:center;margin:2px 0 12px;flex-wrap:wrap}
.cal-lg{font-size:.74rem;color:var(--muted);display:flex;align-items:center;gap:6px}
.cal-lg::before{content:'';width:10px;height:10px;border-radius:50%}
.cal-lg.cal-ok::before{background:#2f6b45}.cal-lg.cal-no::before{background:#a8544c}.cal-lg.cal-pend::before{background:#c2912f}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-dow{margin-bottom:6px}
.cal-dowc{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted)}
.cal-cell{position:relative;aspect-ratio:1;border:1px solid var(--line,#e7e7ea);background:transparent;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:2px;color:var(--text);transition:.12s}
.cal-cell.cal-empty{border:none;background:transparent;cursor:default}
.cal-cell:not(.cal-empty):hover{border-color:var(--accent,#6b3df0)}
.cal-n{font-size:.86rem;font-weight:600}
.cal-dot{width:8px;height:8px;border-radius:50%}
.cal-di{font-size:.6rem;font-weight:800;color:var(--muted)}
.cal-has.cal-ok{background:rgba(47,107,69,.16);border-color:rgba(47,107,69,.5)}
.cal-has.cal-ok .cal-dot{background:#2f6b45}
.cal-has.cal-no{background:rgba(168,84,76,.16);border-color:rgba(168,84,76,.5)}
.cal-has.cal-no .cal-dot{background:#a8544c}
.cal-has.cal-pend{background:rgba(194,145,47,.16);border-color:rgba(194,145,47,.5)}
.cal-has.cal-pend .cal-dot{background:#c2912f}
.cal-hoy{outline:2px solid var(--accent,#6b3df0);outline-offset:-1px}
.cal-sel{box-shadow:0 0 0 2px var(--accent,#6b3df0) inset}
.cal-detail{margin-top:16px}
.cal-detail:empty{display:none}
.cal-det-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line,#e7e7ea);padding-top:14px;margin-bottom:10px}
.cal-det-fecha{display:block;font-size:1rem;text-transform:capitalize}
.cal-det-dia{font-size:.82rem;color:var(--accent,#6b3df0);font-weight:700}
.cal-det-estado{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.cal-det-estado .btn{padding:5px 10px;font-size:.78rem}
@media print{.prog-tabs,.cal-head,.cal-legend,.cal-grid,.cal-det-estado{display:none!important}}

/* v112 · FIX contraste del plan en tema oscuro (--accent es taupe claro, no morado; --card no existe) */
/* Lista de programas: --card no existe → caía a blanco con texto claro (ilegible) */
.prog-card{background:var(--cream);border-color:var(--line)}
.prog-card:hover{background:var(--cream)}
.prog-badge{background:var(--accent-soft);color:var(--text)}
/* Sobre el acento taupe CLARO: texto oscuro, no blanco */
.prog-day-n{background:var(--accent);color:#2a2620}
.prog-ses-src{background:var(--accent);color:#2a2620}
.prog-timp-sync{color:#2a2620}
/* Encabezados y notas: más legibles (subo de --muted a --ink-soft) */
.prog-block h4{color:#d9c8aa}
.prog-tbl th{color:var(--ink-soft)}
.prog-tbl .prog-note{color:var(--ink-soft)}
.prog-day-focus{color:var(--ink-soft)}
.prog-aviso{color:var(--ink-soft)}
/* Filas de la tabla del plan: leve cebra para separar ejercicios */
.prog-tbl tbody tr:nth-child(even){background:rgba(255,255,255,.025)}
.prog-tbl .prog-ex{color:var(--text)}

/* v113 · FIX contraste del plan de NUTRICIÓN en tema oscuro (estaba pensado para tema claro) */
.nutri-day{background:var(--cream);border:1px solid var(--line);box-shadow:none}
.nutri-day-head h3{color:#e8c98f;border-bottom-color:var(--line)}
.nutri-meal{border-bottom-color:var(--line)}
.nutri-meal-head strong{color:#e8c98f}              /* nombre de la comida */
.nutri-meal-mom{color:#cbb189}                       /* DESAYUNO / MEDIA MAÑANA */
.nutri-meal-kcal{color:var(--ink-soft)}
.nutri-chip2{background:var(--soft);color:var(--text);border:1px solid var(--line)}  /* pastillas de ingredientes: legibles */
.nutri-prep{color:var(--ink-soft)}
.nutri-obj{color:var(--ink-soft)}
.nutri-aviso{color:var(--ink-soft)}
.nutri-compra-sec h4{color:#cbb189}

/* v114 · botón eliminar lead (admin) */
.lead-del-btn{color:#e0857c;border-color:rgba(224,133,124,.4)}
.lead-del-btn:hover{background:rgba(224,133,124,.12);border-color:#e0857c}

/* v117 · Clientes: sesiones de sus bonos (vigentes vs anteriores) */
.cli-resumen{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.cli-kpi{flex:1;min-width:150px;background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.cli-kpi-n{font-size:1.5rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.cli-kpi-l{font-size:.72rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}
.cli-kpi-warn .cli-kpi-n{color:#e0a95c}
.cli-tbl{min-width:820px}
.cli-tbl .cli-num{text-align:center;font-variant-numeric:tabular-nums}
.cli-tbl th.cli-g{color:#8fc7a4}     /* bloque VIGENTE */
.cli-tbl th.cli-a{color:#c9a06a}     /* bloque ANTERIORES */
.cli-tbl td.cli-g{background:rgba(47,107,69,.10)}
.cli-tbl td.cli-a{background:rgba(194,145,47,.08)}
.cli-tbl tr.cli-bajo td.cli-g strong{color:#e0a95c}
.cli-tbl tr.cli-sin{opacity:.62}

/* v123 · próxima acción en las tarjetas del embudo + mensaje del formulario en la ficha */
.kanban-next{display:flex;gap:7px;align-items:flex-start;margin-top:8px;padding:7px 8px;border-radius:8px;
  background:rgba(255,255,255,.04);border:1px solid var(--line)}
.kanban-next .kn-ic{color:var(--accent);font-weight:800;line-height:1.25;flex:0 0 auto}
.kanban-next .kn-body{min-width:0;flex:1}
.kanban-next .kn-txt{font-size:.78rem;font-weight:600;color:var(--text);line-height:1.3;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.kanban-next .kn-date{font-size:.68rem;color:var(--ink-soft);margin-top:2px;font-weight:700}
.kanban-next.kn-late{background:rgba(194,90,76,.14);border-color:rgba(194,90,76,.45)}
.kanban-next.kn-late .kn-ic,.kanban-next.kn-late .kn-date{color:#e0857c}
.lead-msg{background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:9px 11px;
  font-size:.86rem;line-height:1.45;color:var(--text);white-space:pre-wrap;max-height:160px;overflow:auto}

/* v124 · semáforo de antigüedad en las tarjetas del embudo (tarjeta ENTERA, no filete lateral).
   Mismo lenguaje de transparencias que el calendario y la asistencia. */
.kanban-card.age-warn{background:rgba(194,145,47,.13);border-color:rgba(194,145,47,.5)}
.kanban-card.age-warn:hover{border-color:rgba(194,145,47,.85)}
.kanban-card.age-late{background:rgba(194,90,76,.14);border-color:rgba(194,90,76,.5)}
.kanban-card.age-late:hover{border-color:rgba(194,90,76,.9)}
/* dentro de una tarjeta ya coloreada, la caja de próxima acción se atenúa para no competir */
.kanban-card.age-warn .kanban-next,
.kanban-card.age-late .kanban-next{background:rgba(0,0,0,.16)}
/* el filete rojo antiguo de "Nuevo estancado" ya no aplica: lo sustituye el semáforo */
.kanban-card.q-stale{border-left:none}

/* ===== FICHA DEL CLIENTE (directorio 360) ===== */
.cli-row{cursor:pointer;transition:.12s}
.cli-row:hover{background:rgba(189,173,152,.10)}
.fi-top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.fi-back{flex:none}
.fi-id{flex:1;min-width:180px}
.fi-id h2{margin:0;font-size:1.35rem}
.fi-sub{color:var(--muted);font-size:.82rem;margin-top:2px}
.fi-chips{display:flex;gap:8px;flex-wrap:wrap}
.fi-chip{font-size:.72rem;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.fi-chip-ok{color:#7bbd94;border-color:rgba(47,107,69,.55);background:rgba(47,107,69,.14)}
.fi-chip-warn{color:#d8ad5a;border-color:rgba(194,145,47,.55);background:rgba(194,145,47,.14)}
.fi-chip-bad{color:#d99189;border-color:rgba(168,84,76,.55);background:rgba(168,84,76,.14)}
.fi-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.fi-kpi{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--soft)}
.fi-kpi-n{display:block;font-size:1.5rem;font-weight:800;line-height:1.1}
.fi-kpi-l{display:block;font-size:.74rem;color:var(--muted);margin-top:2px}
/* Pastillas bajo el nombre en la ficha de Clientes */
.fi-pills{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.fi-pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:20px;background:var(--soft);border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap}
.fi-centro{color:#fff;border:0}
.fi-centro.cc-castello{background:#3a5a99}
.fi-centro.cc-goya{background:#7a6cae}
.fi-centro.cc-las_rozas{background:#4b7d63}
.fi-centro.cc-pozuelo{background:#c2912f}
.fi-centro.cc-otros,.fi-centro.cc-sin_asignar{background:#948d80}
.fi-bono{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dd)}
.fi-alta{background:var(--cream)}
/* Tarjeta de renovación (KPI) con semáforo */
.fi-kpi-date{font-size:1.08rem}
.fi-kpi-renov.rv-ok{border-color:rgba(58,168,98,.5);background:rgba(58,168,98,.08)}
.fi-kpi-renov.rv-ok .fi-kpi-n{color:#2f6b45}
.fi-kpi-renov.rv-late{border-color:rgba(168,84,76,.5);background:rgba(168,84,76,.08)}
.fi-kpi-renov.rv-late .fi-kpi-n{color:#a8544c}
.fi-kpi-renov.rv-soon{border-color:rgba(194,145,47,.5);background:rgba(194,145,47,.1)}
.fi-kpi-renov.rv-soon .fi-kpi-n{color:#a2761f}
.fi-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;border-bottom:1px solid var(--line);padding-bottom:10px}
.fi-tab{border:1px solid var(--line);background:transparent;color:var(--muted);padding:8px 14px;border-radius:999px;
  font-size:.8rem;font-weight:700;cursor:pointer;transition:.12s;font-family:inherit}
.fi-tab:hover{border-color:var(--accent);color:var(--text)}
.fi-tab.is-on{background:var(--accent);border-color:var(--accent);color:#1c1a16}
.fi-h3{margin:0 0 12px;font-size:1rem}
.fi-datos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:2px 18px}
.fi-dato{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.fi-dato-l{color:var(--muted);font-size:.8rem;flex:none}
.fi-dato-v{font-size:.86rem;font-weight:600;text-align:right;word-break:break-word}
.fi-dato-v.fi-vacio{color:var(--muted);opacity:.5;font-weight:400}
/* Estilo unificado de TODAS las etiquetas del CRM (antes .lbl no tenía estilo y salía grande) */
.lbl{display:block;font-size:.8rem;font-weight:600;color:var(--ink-soft);margin-bottom:6px}
/* Tipografía más compacta en la ficha de Clientes, para adaptarla al resto del CRM */
#fiPane .fi-h3{font-size:.92rem}
#fiPane .sect-sub{font-size:.76rem}
#fiPane .input,#fiPane textarea.input{font-size:13px;padding:10px 12px}
#fiPane textarea.input{min-height:66px}
#cliBuscar{font-size:12.5px;padding:10px 12px}
.fi-wa{font-size:.74rem;font-weight:700;color:#25a366;margin-left:6px}
.fi-save{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.fi-genhead{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.cal-ses{font-size:.6rem;font-weight:700;line-height:1.15;opacity:.85}
.cal-today{outline:2px solid var(--accent);outline-offset:-2px}
@media(max-width:640px){
  .fi-datos{grid-template-columns:1fr}
  .fi-top{gap:10px}
  .fi-id h2{font-size:1.1rem}
}

/* ===== AGENDA DEL DÍA ===== */
.ag-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.input-sm{padding:7px 10px;font-size:.8rem;min-width:150px}
.ag-grid{display:flex;flex-direction:column;gap:8px}
/* Bloque de una HORA: cabecera con la hora + lista de clientes, cada uno con su entrenador. */
.ag-hourblock{display:flex;gap:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:12px 14px}
.ag-hora{flex:none;width:62px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  border-right:1px solid var(--line);padding-right:12px;padding-top:4px}
.ag-h{font-size:1.05rem;font-weight:800;line-height:1}
.ag-hf{font-size:.68rem;color:var(--muted);margin-top:2px}
.ag-hcount{margin-top:6px;font-size:.66rem;font-weight:700;color:var(--muted);background:rgba(0,0,0,.18);
  border-radius:999px;padding:1px 7px}
.ag-clientes{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.ag-cline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ag-cline.is-changed{}
.ag-cli{border:1px solid var(--line);background:transparent;color:var(--text);padding:6px 12px;border-radius:999px;
  font-size:.8rem;font-weight:600;cursor:pointer;font-family:inherit;transition:.12s;flex:1;min-width:150px;text-align:left}
.ag-cli:hover{border-color:var(--accent);background:rgba(189,173,152,.10)}
.ag-cli-off{opacity:.45;cursor:default}
.ag-cprof{flex:none;width:auto;min-width:140px;font-weight:600}
.ag-cline.is-changed .ag-cprof{border-color:var(--accent);color:var(--accent)}
.ag-cprof-ro{flex:none;font-size:.8rem;font-weight:700;color:var(--accent);min-width:140px}
.ag-no{color:#d99189;font-size:.68rem;font-weight:700}
.ag-detalle{margin-top:12px;border-color:var(--accent)}
.ag-det-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ag-det-btns{display:flex;gap:6px;flex-wrap:wrap}
.ag-avisos{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.ag-av{display:flex;gap:10px;padding:9px 12px;border-radius:9px;border:1px solid var(--line);align-items:baseline;flex-wrap:wrap}
.ag-av-l{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;flex:none}
.ag-av-v{font-size:.84rem;color:var(--ink-soft)}
.ag-av-alta{background:rgba(168,84,76,.14);border-color:rgba(168,84,76,.5)}
.ag-av-alta .ag-av-l{color:#d99189}
.ag-av-media{background:rgba(194,145,47,.13);border-color:rgba(194,145,47,.5)}
.ag-av-media .ag-av-l{color:#d8ad5a}
.ag-av-info .ag-av-l{color:var(--muted)}
.ag-entreno{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.ag-h4{margin:0 0 2px;font-size:.9rem;display:flex;align-items:center;gap:8px}
@media(max-width:640px){
  .ag-hourblock{gap:10px;padding:10px}
  .ag-hora{width:48px;padding-right:8px}
  .ag-cli{min-width:120px}
  .ag-cprof,.ag-cprof-ro{min-width:110px}
  .ag-controls{width:100%}
  .ag-controls .input{flex:1;min-width:0}
}

/* ===== PLANNER DEL EQUIPO ===== */
.pl-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pl-seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.pl-seg button{background:transparent;border:0;color:var(--muted);padding:8px 16px;font-size:.8rem;
  font-weight:700;cursor:pointer;font-family:inherit;transition:.12s}
.pl-seg button:hover{color:var(--text)}
.pl-seg button.is-on{background:var(--accent);color:#1c1a16}
.pl-filtros{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.pl-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:transparent;
  color:var(--muted);padding:6px 13px;border-radius:999px;font-size:.78rem;font-weight:700;cursor:pointer;
  font-family:inherit;transition:.12s}
.pl-chip:hover{border-color:var(--accent);color:var(--text)}
.pl-chip.is-on{background:var(--accent);border-color:var(--accent);color:#1c1a16}
.pl-dot{width:8px;height:8px;border-radius:50%;flex:none}
.pl-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.pl-nav{display:flex;gap:6px}
.pl-titulo{font-size:1rem;font-weight:700;text-transform:capitalize}
/* Calendario mensual */
.pl-cal-head{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.pl-cal-head div{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted)}
.pl-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.pl-cell{min-height:96px;border:1px solid var(--line);border-radius:10px;padding:6px;cursor:pointer;
  display:flex;flex-direction:column;gap:3px;transition:.12s;background:transparent}
.pl-cell:hover{border-color:var(--accent)}
.pl-cell.pl-oom{opacity:.38}
.pl-cell.pl-hoy{outline:2px solid var(--accent);outline-offset:-2px}
.pl-cell.pl-drop{background:rgba(189,173,152,.14);border-color:var(--accent)}
.pl-dnum{font-size:.74rem;font-weight:700;color:var(--muted)}
.pl-ev{display:flex;gap:5px;align-items:baseline;font-size:.7rem;font-weight:600;padding:3px 6px;
  border-radius:6px;border-left:3px solid var(--plb);background:var(--plbg);color:var(--text);
  cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.pl-ev.is-done{opacity:.5;text-decoration:line-through}
.pl-ev-h{font-weight:800;flex:none;opacity:.85}
.pl-ev-t{overflow:hidden;text-overflow:ellipsis}
.pl-mas{font-size:.66rem;color:var(--muted);font-weight:700;cursor:pointer;padding-left:4px}
.pl-mas:hover{color:var(--accent)}
/* Semana */
.pl-week{display:flex;flex-direction:column;gap:8px}
.pl-day{padding:12px 14px}
.pl-day.pl-hoy{border-color:var(--accent)}
.pl-day-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.pl-dow{font-weight:800;font-size:.86rem}
.pl-dnum2{font-size:.76rem;color:var(--muted);flex:1}
.pl-day-b{display:flex;flex-direction:column;gap:5px}
.pl-row{display:flex;align-items:center;gap:12px;padding:7px 11px;border-radius:8px;
  border-left:3px solid var(--plb);background:var(--plbg);cursor:pointer;font-size:.8rem}
.pl-row.is-done{opacity:.5;text-decoration:line-through}
.pl-r-h{font-weight:700;font-size:.72rem;min-width:96px;color:var(--ink-soft)}
.pl-r-t{flex:1;font-weight:600}
.pl-vacio{color:var(--muted);opacity:.6;font-size:.78rem;padding:4px 2px}
/* Tablero */
.pl-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;align-items:start}
.pl-col{border:1px solid var(--line);border-radius:12px;background:var(--soft);padding:12px}
.pl-col-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.pl-col-t{font-size:.82rem;font-weight:800;flex:1}
.pl-col-n{font-size:.7rem;font-weight:700;color:var(--muted);background:rgba(0,0,0,.2);
  border-radius:999px;padding:1px 8px}
.pl-col-b{display:flex;flex-direction:column;gap:7px;min-height:60px;border-radius:8px;transition:.12s}
.pl-col-b.pl-drop{background:rgba(189,173,152,.10);outline:1px dashed var(--accent)}
.pl-col-add{width:100%;margin-top:9px;background:transparent;border:1px dashed var(--line);color:var(--muted);
  border-radius:8px;padding:7px;font-size:.76rem;font-weight:700;cursor:pointer;font-family:inherit;transition:.12s}
.pl-col-add:hover{border-color:var(--accent);color:var(--text)}
.pl-card{border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:10px 11px;cursor:pointer;transition:.12s}
.pl-card:hover{border-color:var(--accent)}
.pl-card.pl-dragging{opacity:.45}
.pl-card.is-done .pl-card-t{opacity:.55;text-decoration:line-through}
.pl-card-t{display:flex;align-items:baseline;gap:7px;font-size:.83rem;font-weight:600;line-height:1.35}
.pl-tdot{width:7px;height:7px;border-radius:50%;flex:none;transform:translateY(-1px)}
.pl-card-m{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}
.pl-tag{font-size:.66rem;font-weight:700;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.pl-prio-alta{color:#d99189;border-color:rgba(217,145,137,.5)}
.pl-prio-media{color:#d8ad5a;border-color:rgba(216,173,90,.5)}
.pl-fecha.is-late{color:#d99189;border-color:rgba(217,145,137,.5)}
.pl-av{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;
  font-size:.6rem;font-weight:800;color:#1c1a16;flex:none}
.pl-av-all{background:transparent;border:1px dashed var(--line);color:var(--muted);width:auto;
  padding:0 7px;border-radius:999px;font-size:.58rem}
/* Opciones del modal */
.pl-opts{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}
.pl-opt{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:transparent;
  color:var(--muted);padding:6px 12px;border-radius:999px;font-size:.76rem;font-weight:700;cursor:pointer;
  font-family:inherit;transition:.12s}
.pl-opt:hover{border-color:var(--accent);color:var(--text)}
.pl-opt.is-on{background:var(--accent);border-color:var(--accent);color:#1c1a16}
@media(max-width:640px){
  .pl-cell{min-height:70px}
  .pl-ev-t{display:none}
  .pl-r-h{min-width:70px}
}

/* ============================================================
   v143 — SISTEMA DE BOTONES del CRM-Planner de WEMOOV, con los
   colores de TrainingBoutique. De allí la geometría (esquina 12px,
   peso 700, degradado + brillo, elevación al pasar el ratón); de
   aquí la paleta (taupe, verde y oscuro). Override final: para
   revertir, basta con borrar desde esta línea.
   ============================================================ */
.btn{
  font-family:'Raleway',sans-serif;
  border:0;border-radius:999px;padding:13px 20px;font-weight:700;font-size:14px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.15;
  transition:transform .1s, box-shadow .2s, background .2s, color .2s, border-color .2s;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn svg{width:16px;height:16px}
.btn-sm{padding:8px 15px;font-size:13px;border-radius:999px}
.btn-block{width:100%;margin-top:14px}

/* Principal — taupe de la marca */
.btn-gold{background:linear-gradient(135deg,#c8b7a0,#a2896a);color:#221f1a;
  box-shadow:0 8px 22px rgba(189,173,152,.26)}
.btn-gold:hover{background:linear-gradient(135deg,#d1c1aa,#ab9273);color:#221f1a;
  box-shadow:0 12px 28px rgba(189,173,152,.34)}
/* Confirmar / guardar — verde de la marca */
.btn-primary{background:linear-gradient(135deg,#5a665f,#465448);color:#fff;
  box-shadow:0 8px 22px rgba(75,89,81,.30)}
.btn-primary:hover{background:linear-gradient(135deg,#64715f,#4e5c50);
  box-shadow:0 12px 28px rgba(75,89,81,.38)}
/* Oscuro */
.btn-dark{background:linear-gradient(135deg,#3a3a3a,#242424);color:#fff;
  box-shadow:0 8px 22px rgba(0,0,0,.35)}
.btn-dark:hover{background:linear-gradient(135deg,#464646,#2b2b2b);color:#fff}
/* Claro (login) */
.btn-light{background:#fff;color:var(--dark);box-shadow:0 8px 22px rgba(0,0,0,.28)}
.btn-light:hover{background:#f2eadf;color:var(--dark)}
/* Contorno — es el más usado del CRM (y hasta ahora no tenía estilo propio) */
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--text);box-shadow:none}
.btn-ghost:hover{border-color:var(--accent);background:rgba(189,173,152,.10);color:var(--text)}
/* Peligro / eliminar */
.btn-danger,.maint-del{background:linear-gradient(135deg,#a8544c,#8c3f38);color:#fff;border:0;box-shadow:none}
.btn-danger:hover:not(:disabled),.maint-del:hover{background:linear-gradient(135deg,#b45f56,#97463f);color:#fff}
/* Botón de la barra superior, a juego */
.tb-cta{border-radius:10px;font-weight:700}

/* ---- PLANNER: mismo diseño que el Planner de WEMOOV ---- */
.pl-seg{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:4px;gap:2px}
.pl-seg button{border-radius:9px;padding:8px 15px;font-weight:600;font-size:13px}
.pl-seg button.is-on{background:linear-gradient(135deg,#c8b7a0,#a2896a);color:#221f1a}
.pl-chip{background:var(--paper);border:1px solid var(--line);border-radius:30px;
  padding:7px 13px;font-size:12.5px;font-weight:600}
.pl-chip.is-on{background:rgba(189,173,152,.16);border-color:var(--accent);color:var(--text)}
.pl-dot{width:9px;height:9px}
/* Tablero: columnas como paneles con cabecera separada */
.pl-board{grid-template-columns:repeat(3,1fr);gap:16px}
.pl-col{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:0;min-height:160px;display:flex;flex-direction:column}
.pl-col-h{padding:15px 16px;border-bottom:1px solid var(--line);margin:0}
.pl-col-t{font-weight:800;font-size:14px}
.pl-col-n{margin-left:auto;background:var(--soft);border-radius:20px;padding:3px 10px;font-size:12px}
.pl-col-b{padding:12px;gap:10px;flex:1}
.pl-col-b.pl-drop{background:rgba(189,173,152,.07);box-shadow:inset 0 0 0 2px var(--accent);
  border-radius:0 0 var(--radius) var(--radius);outline:none}
.pl-card{background:var(--cream);border:1px solid var(--line);border-radius:11px;
  padding:13px 14px;cursor:grab}
.pl-card:active{cursor:grabbing}
.pl-card-t{font-weight:700;font-size:14px;margin-bottom:9px;line-height:1.35}
.pl-card-m{margin-top:0;gap:8px}
.pl-tag{font-size:11px;font-weight:700;padding:4px 9px;border-radius:20px;border:0}
.pl-prio-alta{background:rgba(168,84,76,.20);color:#e6a09a;border:0}
.pl-prio-media{background:rgba(194,145,47,.20);color:#e0c07c;border:0}
.pl-prio-baja{background:rgba(75,125,99,.20);color:#8fc7a6;border:0}
.pl-fecha{background:var(--soft);color:var(--muted)}
.pl-fecha.is-late{background:rgba(168,84,76,.20);color:#e6a09a;border:0}
.pl-col-add{margin:0 12px 12px;border:1px dashed var(--line);border-radius:11px;
  padding:11px;font-size:13px;font-weight:600}
.pl-col-add:hover{border-color:var(--accent);color:var(--text)}
/* Calendario: el mes como un panel único con marco */
.pl-cal{padding:0;overflow:hidden}
.pl-cal-head{padding:12px 12px 0}
.pl-cal-grid{padding:0 12px 12px}
.pl-cell.pl-drop{background:rgba(189,173,152,.12);box-shadow:inset 0 0 0 2px var(--accent);border-color:transparent}
.pl-titulo{font-size:19px;font-weight:800;min-width:180px}
/* Opciones del modal */
.pl-opt{background:var(--soft);border:1px solid var(--line);border-radius:10px;
  padding:9px 13px;font-size:13px;font-weight:600}
.pl-opt.is-on{background:rgba(189,173,152,.16);border-color:var(--accent);color:var(--text)}
.pl-av{width:22px;height:22px;font-size:10px;font-weight:800}
@media(max-width:820px){ .pl-board{grid-template-columns:1fr} }

/* ============================================================
   v145 — LENGUAJE VISUAL DEL CALENDARIO DE APPLE, sobre el tema
   oscuro de TrainingBoutique. Las claves del original:
     · rejilla CONTINUA de líneas finas (nada de tarjetas sueltas
       con hueco entre ellas)
     · número del día ARRIBA A LA DERECHA; el de hoy, en círculo relleno
     · eventos como fila: barrita de color · título · hora a la derecha
     · cabecera de días en minúsculas, pequeña y tenue
     · fin de semana levemente hundido
   ============================================================ */
.ap-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.ap-title{font-family:'Libre Baskerville',Georgia,serif;font-size:1.6rem;font-weight:700;
  margin:0;text-transform:capitalize;letter-spacing:-.01em}
.ap-nav{display:flex;align-items:center;gap:6px;margin-left:auto}
.ap-nb{background:var(--soft);border:1px solid var(--line);color:var(--text);border-radius:999px;
  min-width:34px;height:34px;padding:0 12px;font-size:15px;font-weight:700;cursor:pointer;
  font-family:inherit;display:inline-flex;align-items:center;justify-content:center;transition:.12s}
.ap-nb:hover{background:var(--cream);border-color:var(--accent)}
.ap-hoy{font-size:13px;padding:0 16px}

/* --- Rejilla del mes --- */
.ap-cal{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper);
  box-shadow:var(--shadow)}
.ap-cal-head{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line)}
.ap-cal-head div{padding:11px 12px;font-size:.72rem;font-weight:600;color:var(--muted);
  text-align:center;letter-spacing:.02em}
.ap-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(112px,1fr)}
.ap-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 7px;
  cursor:pointer;min-width:0;display:flex;flex-direction:column;gap:2px;transition:background .12s}
.ap-cell:nth-child(7n){border-right:none}
.ap-cell:nth-last-child(-n+7){border-bottom:none}
.ap-cell:hover{background:rgba(255,255,255,.028)}
.ap-cell.is-finde{background:rgba(0,0,0,.14)}
.ap-cell.is-oom{background:rgba(0,0,0,.22)}
.ap-cell.is-oom .ap-dnum{opacity:.38}
.ap-cell.ap-drop{background:rgba(189,173,152,.14);box-shadow:inset 0 0 0 2px var(--accent)}
/* Número del día: a la derecha; hoy en círculo relleno con el taupe de la marca */
.ap-dnum{align-self:flex-end;font-size:.8rem;font-weight:600;color:var(--ink-soft);
  min-width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;
  justify-content:center;padding:0 6px;margin-bottom:2px}
.ap-dnum.is-hoy{background:var(--accent);color:#221f1a;font-weight:800}
/* Evento: barrita de color + título + hora a la derecha */
.ap-ev{display:flex;align-items:center;gap:6px;padding:2px 3px;border-radius:5px;cursor:pointer;
  overflow:hidden;transition:background .12s}
.ap-ev:hover{background:rgba(255,255,255,.06)}
.ap-ev-bar{width:3px;height:13px;border-radius:2px;flex:none}
.ap-ev-t{flex:1;min-width:0;font-size:.73rem;font-weight:600;color:var(--text);
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.ap-ev-h{flex:none;font-size:.7rem;font-weight:600;color:var(--muted)}
.ap-ev.is-done{opacity:.45}
.ap-ev.is-done .ap-ev-t{text-decoration:line-through}
.ap-mas{font-size:.7rem;color:var(--muted);font-weight:600;padding-left:9px;cursor:pointer}
.ap-mas:hover{color:var(--accent)}

/* --- Semana: lista por días, mismo lenguaje --- */
.ap-week{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  background:var(--paper);box-shadow:var(--shadow)}
.ap-day{border-bottom:1px solid var(--line)}
.ap-day:last-child{border-bottom:none}
.ap-day-h{display:flex;align-items:center;gap:10px;padding:10px 14px;background:rgba(0,0,0,.14)}
.ap-dnum2{font-size:.95rem;font-weight:800;min-width:26px;height:26px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;color:var(--text)}
.ap-dnum2.is-hoy{background:var(--accent);color:#221f1a}
.ap-dow{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:capitalize}
.ap-day.is-hoy .ap-dow{color:var(--accent)}
.ap-day-b{padding:4px 8px 8px}
.ap-row{display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:8px;cursor:pointer;transition:background .12s}
.ap-row:hover{background:rgba(255,255,255,.04)}
.ap-row-t{flex:1;min-width:0;font-size:.85rem;font-weight:600;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis}
.ap-row-h{flex:none;font-size:.78rem;font-weight:600;color:var(--muted);min-width:96px;text-align:right}
.ap-row.is-done{opacity:.45}
.ap-row.is-done .ap-row-t{text-decoration:line-through}
.ap-vacio{color:var(--muted);opacity:.55;font-size:.8rem;padding:9px 8px}
@media(max-width:720px){
  .ap-cal-grid{grid-auto-rows:minmax(84px,1fr)}
  .ap-ev-h{display:none}
  .ap-title{font-size:1.25rem}
  .ap-row-h{min-width:auto}
}

/* El calendario de la ficha de cliente adopta la misma rejilla de Apple:
   continua, sin huecos ni esquinas, con el día de hoy en círculo relleno. */
.cal-grid{gap:0;grid-template-columns:repeat(7,1fr)}
.cal-dow{gap:0;margin-bottom:0;border-bottom:1px solid var(--line)}
.cal-dowc{padding:10px 8px;font-size:.72rem;font-weight:600;color:var(--muted);text-transform:lowercase}
.cal-cell{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  border-radius:0;aspect-ratio:auto;min-height:74px;justify-content:flex-start;align-items:stretch;
  padding:6px 7px;gap:3px}
.cal-cell:nth-child(7n){border-right:none}
.cal-cell.cal-empty{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(0,0,0,.22)}
.cal-cell:not(.cal-empty):hover{background:rgba(255,255,255,.028);border-color:var(--line)}
.cal-n{align-self:flex-end;font-size:.8rem;font-weight:600;color:var(--ink-soft);
  min-width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
.cal-today{outline:none}
.cal-today .cal-n{background:var(--accent);color:#221f1a;font-weight:800}
.cal-ses{font-size:.68rem;font-weight:600;text-align:left;padding-left:8px;position:relative;color:var(--text)}
.cal-ses::before{content:'';position:absolute;left:0;top:3px;width:3px;height:11px;border-radius:2px;background:currentColor;opacity:.85}
.cal-has{background:transparent}
.cal-has.cal-ok .cal-ses{color:#7bbd94}
.cal-has.cal-no .cal-ses{color:#d99189}
.cal-has.cal-pend .cal-ses{color:#d8ad5a}
.cal-has .cal-dot{display:none}

/* ============================================================
   v148 — TODOS LOS BOTONES con la forma y el tamaño de los chips
   de centro de la cabecera: píldora, 8px 15px, 12.5px, peso 600.
   El relleno taupe queda para la acción principal (como el chip
   activo) y el translúcido con borde para el resto.
   ============================================================ */
.btn{
  font-family:'Raleway',system-ui,sans-serif;
  font-weight:600;font-size:12.5px;letter-spacing:.02em;line-height:1;
  border:1px solid transparent;border-radius:999px;padding:8px 15px;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  white-space:nowrap;cursor:pointer;backdrop-filter:blur(6px);
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .12s ease;
}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn svg{width:14px;height:14px}
.btn-sm{padding:7px 13px;font-size:12px}
.btn-block{width:100%;margin-top:14px}

/* Principal: el mismo relleno del chip activo */
.btn-gold{background:var(--accent,#bdad98);border-color:var(--accent,#bdad98);color:#242424;
  box-shadow:0 3px 12px rgba(0,0,0,.28)}
.btn-gold:hover{background:#c8b7a0;border-color:#c8b7a0;color:#242424;box-shadow:0 5px 16px rgba(0,0,0,.34)}
/* Guardar/confirmar: verde de la marca, misma forma */
.btn-primary{background:var(--green,#4b5951);border-color:var(--green,#4b5951);color:#f2eadf;
  box-shadow:0 3px 12px rgba(0,0,0,.26)}
.btn-primary:hover{background:#5a665f;border-color:#5a665f;color:#fff}
/* Secundario: el chip en reposo (es el más usado del CRM) */
.btn-ghost,.btn-ghost-light{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);
  color:#f2eadf;box-shadow:none}
.btn-ghost:hover,.btn-ghost-light:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32);color:#f2eadf}
.btn-dark{background:rgba(0,0,0,.35);border-color:rgba(255,255,255,.18);color:#f2eadf;box-shadow:none}
.btn-dark:hover{background:rgba(0,0,0,.5);border-color:rgba(255,255,255,.3)}
.btn-light{background:#f2eadf;border-color:#f2eadf;color:#242424;box-shadow:0 3px 12px rgba(0,0,0,.28)}
.btn-light:hover{background:#fff;border-color:#fff;color:#242424}
.btn-danger,.maint-del{background:rgba(168,84,76,.18);border-color:rgba(168,84,76,.5);color:#e6a09a;box-shadow:none}
.btn-danger:hover:not(:disabled),.maint-del:hover{background:rgba(168,84,76,.3);border-color:rgba(168,84,76,.75);color:#f0b8b2}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.tb-cta{border-radius:999px;font-weight:600;font-size:12.5px;padding:8px 16px}

/* Segmentados (Calendario/Tablero, Mes/Semana): píldora bien redonda */
.pl-seg{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);
  border-radius:999px;padding:3px;gap:3px;display:inline-flex}
.pl-seg button{border-radius:999px;padding:7px 16px;font-weight:600;font-size:12.5px;
  letter-spacing:.02em;line-height:1;color:#cabfac;background:transparent;border:0;cursor:pointer;
  font-family:inherit;transition:.15s}
.pl-seg button:hover{color:#f2eadf;background:rgba(255,255,255,.07)}
.pl-seg button.is-on{background:var(--accent,#bdad98);color:#242424;box-shadow:0 3px 12px rgba(0,0,0,.28)}
/* Navegación del calendario, a juego con los chips */
.ap-nb{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#f2eadf;
  font-size:13px;font-weight:600}
.ap-nb:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32)}
/* Pestañas internas (ficha de cliente, programas): misma píldora */
.fi-tab{padding:8px 15px;font-size:12.5px;font-weight:600;letter-spacing:.02em}
.prog-tabs{border-bottom:0;gap:8px}
.prog-tab{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#cabfac;
  border-radius:999px;padding:8px 15px;font-size:12.5px;font-weight:600;letter-spacing:.02em;
  border-bottom:1px solid rgba(255,255,255,.2);margin-bottom:0}
.prog-tab:hover{background:rgba(255,255,255,.16);color:#f2eadf}
.prog-tab.is-active{background:var(--accent,#bdad98);border-color:var(--accent,#bdad98);color:#242424;
  border-bottom-color:var(--accent,#bdad98)}

/* ============================================================
   v149 — TIPOGRAFÍA DE TÍTULOS: Raleway en todos los encabezados
   (secciones, tarjetas, modales, columnas…). La serif Libre
   Baskerville se reserva para el TÍTULO PRINCIPAL de cada página
   (el del hero) y el del login, que son los que dan carácter.
   Los números grandes de los KPI siguen en serif: son cifras, no títulos.
   ============================================================ */
h1,h2,h3,h4{font-family:'Raleway',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  font-weight:700;letter-spacing:-.005em}
/* El principal de cada página y el del login mantienen la serif */
.hero-title,#heroTitle{font-family:'Libre Baskerville',Georgia,serif;font-weight:400}
.login-card h1{font-family:'Libre Baskerville',Georgia,serif;font-weight:400}
/* El mes del calendario es un encabezado más, no el título de la página */
.ap-title{font-family:'Raleway',system-ui,sans-serif;font-weight:700}

/* ============================================================
   v150 — FICHA DE TAREA DEL PLANNER con la maquetación del CRM
   de WEMOOV: cabecera con línea, cuerpo en columna con aire,
   fecha/hora/hora-fin en tres columnas, ayuda bajo las horas,
   opciones como chips con punto de color (el activo se marca con
   borde y fondo teñido, no relleno) y pie con línea y acciones.
   ============================================================ */
.pl-modal{display:flex;flex-direction:column}
.pl-mhd{display:flex;align-items:center;gap:12px;padding:20px 22px;border-bottom:1px solid var(--line)}
.pl-mhd h3{margin:0;font-size:17px;font-weight:700}
.pl-mbody{padding:20px 22px;display:flex;flex-direction:column;gap:15px}
.pl-mft{display:flex;align-items:center;gap:10px;padding:18px 22px;border-top:1px solid var(--line)}
.pl-row3{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:12px}
.pl-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pl-lbl{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:8px;display:block;letter-spacing:.03em}
.pl-lbl-op{color:var(--muted);opacity:.7;font-weight:600;letter-spacing:0}
.pl-hint{color:var(--muted);opacity:.8;font-size:12px;font-weight:600;margin-top:-6px}
/* El título de la tarea manda: más grande y con foco marcado */
.pl-tit{font-size:15px;font-weight:600;padding:14px 15px}
.pl-tit:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(189,173,152,.22)}
/* Opciones: chip con punto; el elegido se marca con borde y fondo teñido */
.pl-opts{display:flex;gap:7px;flex-wrap:wrap;margin-top:0}
.pl-opt{border:1px solid var(--line);background:var(--soft);color:var(--muted);border-radius:10px;
  padding:9px 13px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:7px;
  font-family:inherit;transition:.15s}
.pl-opt:hover{border-color:rgba(255,255,255,.28);color:var(--text)}
.pl-opt.is-on{color:var(--text);border-color:var(--accent);background:rgba(189,173,152,.16);box-shadow:none}
.pl-opt .pl-dot{width:10px;height:10px}
@media(max-width:560px){
  .pl-row3,.pl-row2{grid-template-columns:1fr}
  .pl-mhd,.pl-mbody,.pl-mft{padding-left:16px;padding-right:16px}
}

/* ============================================================
   v151 — CAMPOS DE TEXTO menos redondeados (esquina de 12px, como
   en el CRM de WEMOOV) en TODO el CRM: inputs, selects y áreas de
   texto. La píldora se queda para botones y chips, que es donde
   aporta; en un campo de escritura estorbaba la lectura.
   + Zona de archivos adjuntos del Planner (arrastrar o hacer clic).
   ============================================================ */
.input,select.input,textarea.input{border-radius:12px}
.input{padding:13px 14px;font-size:14px;font-weight:500}
textarea.input{resize:vertical;min-height:80px;line-height:1.5;border-radius:12px}
.login-card input{border-radius:12px}
/* Notas de la tarea, como en WEMOOV: alta y cómoda de escribir */
.pl-notas{min-height:92px}

/* Archivos adjuntos */
.pl-adj-lista{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.pl-adj-lista:empty{margin-bottom:0}
.pl-adj{display:flex;align-items:center;gap:10px;background:var(--soft);border:1px solid var(--line);
  border-radius:10px;padding:8px 11px;font-size:13px}
.pl-adj.is-pend{opacity:.75;border-style:dashed}
.pl-adj-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--text);font-weight:600;text-decoration:none}
a.pl-adj-n:hover{color:var(--accent);text-decoration:underline}
.pl-adj-b{flex:none;font-size:12px;color:var(--muted);font-weight:600}
.pl-adj-x{flex:none;background:transparent;border:0;color:var(--muted);font-size:17px;line-height:1;
  cursor:pointer;padding:0 3px;font-family:inherit}
.pl-adj-x:hover{color:#d99189}
.pl-drop{display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  background:var(--soft);border:1.5px dashed var(--line);color:var(--muted);border-radius:12px;
  padding:14px 16px;font-size:13px;font-weight:600;transition:.15s;text-align:center}
.pl-drop:hover{border-color:var(--accent);color:var(--text)}
.pl-drop.is-over{border-color:var(--accent);border-style:solid;background:rgba(189,173,152,.14);color:var(--text)}
.pl-drop-ic{font-size:1.1rem;line-height:1}
.pl-drop b{color:var(--text);font-weight:700}
/* Las áreas de texto llenan su contenedor (sin esto usan su ancho por defecto en columnas)
   y, dentro de la ficha del Planner, todos los campos ocupan su celda. */
textarea.input{width:100%}
.pl-mbody .input{width:100%}
.geo-prog{font-size:12px;color:var(--muted);font-weight:600}
/* Conceptos más vendidos: ahora salen TODOS (eran ~111), así que la tarjeta lleva alto
   máximo con scroll propio para no estirar la página, y la cabecera se queda fija al bajar. */
#contabBonos{width:100%}
#contabBonos thead th{position:sticky;top:0;background:var(--soft);z-index:2}
#contabBonos + *,
.table-scroll:has(#contabBonos){max-height:440px;overflow-y:auto}

/* === PLANNER · varios responsables por tarea ============================== */
/* Avatares apilados (se solapan un poco, como en apps de tareas). */
.pl-avs{display:inline-flex;align-items:center;flex:none}
.pl-avs .pl-av{margin-left:-6px;box-shadow:0 0 0 2px var(--paper)}
.pl-avs .pl-av:first-child{margin-left:0}
.pl-av-mas{background:var(--cream);color:var(--ink-soft);font-size:.56rem}
.pl-lbl-hint{font-weight:500;color:var(--muted);font-size:.72em}
/* En el selector múltiple, un check sutil sobre la opción marcada. */
.pl-multi .pl-opt.is-on{border-color:var(--accent)}
.pl-multi .pl-opt.is-on::after{content:'✓';margin-left:5px;font-size:.62rem;color:var(--accent);font-weight:800}
.pl-multi .pl-quien-all.is-on::after{content:''}
/* Fila "enviar recordatorios" en el Planner. */
.pl-recordar{display:inline-flex;align-items:center;gap:8px}

/* === Respiración de las cabeceras de página (global, todas las pestañas) ===
   Más aire entre el hero y el título de sección, y más separación antes de la fila
   de controles (Calendario/Tablero, subpestañas, filtros…) que va bajo el subtítulo. */
.sect-head{margin-top:14px}
.sect-head > *:not(:first-child){margin-top:16px}

/* === Reequilibrio del título principal (hero) en todas las páginas ===
   Más aire ARRIBA del título (respecto a los chips de centro) y MENOS hueco debajo
   antes de las tarjetas/KPIs. */
.hero-title{margin-top:36px;margin-bottom:2px}
.hero-stats{margin-top:14px;padding-top:16px}
.hero-inner{padding-bottom:8px}

/* === Resumen de Inicio · tarjetas de leads (nuevos / próxima acción hoy) === */
.inicio-leads-grid{margin-bottom:18px}
.inicio-lead-row{cursor:pointer;border-radius:12px;padding-left:8px;padding-right:8px;
  transition:background .12s}
.inicio-lead-row:hover{background:rgba(189,173,152,.10)}
.ini-badge-nuevo{min-width:82px;text-align:center;background:rgba(58,90,153,.16);color:#8ba6d8;
  border-radius:999px;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700;padding:4px 0}
.renov-tag-wa{margin-left:auto;flex:0 0 auto;padding:5px 14px;border-radius:999px;font-size:.74rem;
  font-weight:600;text-decoration:none;background:rgba(47,158,68,.15);color:#2f9e44;
  border:1px solid rgba(47,158,68,.4);transition:filter .12s}
.renov-tag-wa:hover{filter:brightness(1.08)}

/* === MODO MENOPAUSIA (dentro de Entrenamientos) === */
.meno-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.meno-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:13px;cursor:pointer;background:var(--soft)}
.meno-chip input{accent-color:var(--accent)}
.meno-checks{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.meno-cribado>.meno-checks{background:rgba(168,84,76,.06);border:1px solid rgba(168,84,76,.25);border-radius:12px;padding:12px 14px}
.meno-check{display:flex;gap:9px;align-items:flex-start;font-size:13px;cursor:pointer;color:var(--ink-soft)}
.meno-check input{accent-color:var(--st-perdido);margin-top:2px}
.meno-estado{display:inline-block;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:700}
.meno-est-ok{background:rgba(75,125,99,.16);color:#4b7d63}
.meno-est-pend{background:rgba(189,173,152,.2);color:var(--ink-soft)}
.meno-medbanner{background:rgba(168,84,76,.1);border:1px solid rgba(168,84,76,.35);color:#a8544c;border-radius:12px;padding:12px 16px;margin:10px 0;font-size:14px}
.meno-reviewbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0}
.meno-avisos{background:var(--soft);border-left:4px solid var(--accent);border-radius:0 12px 12px 0;padding:12px 16px;margin:12px 0}
.meno-avisos h4,.meno-notas-ent h4{margin:0 0 6px;font-size:14px}
.meno-avisos ul{margin:0;padding-left:18px;font-size:13.5px;color:var(--ink-soft)}
.meno-bloque{margin:12px 0}
.meno-bloque-h{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:4px;margin-bottom:6px}
.meno-sust{font-size:12px;color:var(--muted);margin-top:3px;font-style:italic}
.meno-kpis{margin:10px 0}
.meno-kpi{display:inline-block;background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:13.5px}
.meno-notas-ent{background:var(--cream);border-radius:12px;padding:12px 16px;margin-top:12px;font-size:13.5px}
.meno-solic{display:flex;align-items:center;gap:14px;justify-content:space-between;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:8px;flex-wrap:wrap}
.meno-solic-actions{display:flex;gap:8px}
.prog-int,.prog-desc{color:var(--muted);font-size:13px;white-space:nowrap}
@media(max-width:600px){.meno-checks{grid-template-columns:1fr}}

/* === Resumen del día · aviso de perfil incompleto + nombre clicable === */
.hoy-name-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hoy-nombre-link{cursor:pointer;text-decoration:underline;text-decoration-color:transparent;
  text-underline-offset:3px;transition:text-decoration-color .12s}
.hoy-nombre-link:hover{text-decoration-color:var(--accent)}
.perfil-falta{display:inline-block;background:rgba(194,145,47,.16);color:#b9860f;
  border:1px solid rgba(194,145,47,.42);border-radius:999px;padding:1px 9px;font-size:11px;font-weight:700;
  cursor:pointer;vertical-align:middle}
/* Aviso de pago pendiente (bono vencido): rojo, más contundente que el ámbar de "faltan datos". */
.perfil-vencida{background:rgba(179,64,47,.15);color:#b3402f;border-color:rgba(179,64,47,.45)}

/* === Arqueo de caja (Contabilidad → Efectivo) === */
.caja-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.caja-kpi{display:flex;flex-direction:column;gap:4px;background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.caja-kl{font-size:12.5px;color:var(--muted)}
.caja-kv{font-size:22px;font-weight:800;font-family:'Libre Baskerville',Georgia,serif;color:var(--text)}
.caja-neg{color:var(--st-perdido)}
.caja-total{background:linear-gradient(135deg,rgba(189,173,152,.22),rgba(75,89,81,.12));border-color:rgba(189,173,152,.4)}
.caja-total .caja-kv{color:#fff}
.caja-bad{background:rgba(168,84,76,.14);border-color:rgba(168,84,76,.4)}
.caja-bad .caja-kv{color:var(--st-perdido)}
.caja-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.caja-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--ink-soft)}
.caja-form .caja-wide{grid-column:1/-1}

/* === Comisiones de managers · tramos === */
.comi-tramos{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.comi-tramo{display:flex;align-items:center;gap:12px;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
.comi-tramo-r{font-size:20px;font-weight:800;font-family:'Libre Baskerville',Georgia,serif;color:var(--accent);min-width:56px}
.comi-tramo-t{font-size:13px;color:var(--ink-soft)}
.caja-sub{font-size:11px;color:var(--muted);margin-top:2px}

/* Botón de borrar de las tarjetas de programa (discreto, encaja en el tema oscuro) */
.prog-card-del{position:absolute;bottom:10px;right:10px;width:32px;height:32px;display:grid;place-items:center;
  background:transparent;border:1px solid var(--line);border-radius:9px;color:var(--muted);cursor:pointer;
  transition:background .14s,color .14s,border-color .14s}
.prog-card-del:hover,.prog-card-del:active{background:rgba(168,84,76,.14);color:var(--st-perdido);border-color:rgba(168,84,76,.42)}
.prog-card-del svg{width:16px;height:16px;display:block}

/* ============================================================
   v198 — Pulido final del sistema de diseño (dashboard sobrio).
   ============================================================ */
/* Tarjetas de datos: sin "salto" al pasar el ratón; solo un realce sutil del borde.
   (Un dashboard financiero no debe rebotar; WEMOOV tampoco lo hace.) */
.card:not(.no-pad):hover, .channel-card:hover{
  transform:none;
  box-shadow:var(--shadow);
  border-color:rgba(255,255,255,.16);
}
/* KPI unificados (makeKpi → .ban-kpi): un pelín de realce solo si son navegables. */
.ban-kpi{transition:border-color .18s, box-shadow .18s}
.ban-kpi.kpi-click:hover{border-color:var(--accent);box-shadow:0 10px 26px -14px rgba(0,0,0,.7)}
/* Cabeceras: acento sólido y limpio (antes degradaba a verde y se apagaba). */
.card-head h2::before, .sect-head h2::before{background:var(--accent)}
/* Paneles tipo Banco: mismo realce de borde que las tarjetas, coherencia total. */
.ban-panel{transition:border-color .18s}

/* ============================================================
   Desplegables (selects) unificados con el estilo del CRM
   — flecha propia en dorado de marca, foco y hover coherentes.
   Los selects de estado coloreados (.estado-sel/.gasto-estado)
   conservan su diseño propio: no llevan .input/.ban-input.
   ============================================================ */
select.input, select.ban-input{
  -webkit-appearance:none; -moz-appearance:none; appearance:none;
  cursor:pointer;
  padding-right:38px;
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:12px 8px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1.5 2l4.5 4 4.5-4' fill='none' stroke='%238a7358' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  accent-color:var(--accent);
}
select.input{ background-color:var(--paper); }
select.ban-input{ background-color:var(--soft); }
select.input:hover, select.ban-input:hover{ border-color:var(--accent-d); }
select.input:hover, select.ban-input:hover{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1.5 2l4.5 4 4.5-4' fill='none' stroke='%23bdad98' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
select.input:focus, select.ban-input:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(189,173,152,.22);
}
select.input::-ms-expand, select.ban-input::-ms-expand{ display:none; }
/* Las opciones del menú desplegado, cuando el navegador las pinta (Chrome/Windows). */
select.input option, select.ban-input option{ background:var(--paper); color:var(--text); }

/* ============================================================
   RESPONSIVE 100% — móvil y tablet (revisión general ago-2026)
   Bloque consolidado al final: gana por orden de cascada, no
   modifica reglas anteriores → cero riesgo para el desktop.
   ============================================================ */

/* --- Scroll táctil suave en todas las tablas anchas --- */
.table-scroll,.prog-tbl-wrap{-webkit-overflow-scrolling:touch}

/* ===== TABLET / MÓVIL GRANDE (≤760px) ===== */
@media(max-width:760px){
  /* iOS deja de hacer auto-zoom al enfocar campos <16px */
  .input, textarea.input, select.input, .ban-input, .login-card input,
  #fiPane .input, #fiPane textarea.input, #cliBuscar,
  .wa-input-wrap textarea, .estado-sel, .perm-sel{ font-size:16px; }

  /* La barra inferior de navegación NO recorta los iconos de los extremos */
  .tb-side-nav{ justify-content:flex-start; }

  /* Bandeja WhatsApp: usa altura dinámica real (dvh) y sin min-height que la corte */
  .wa-wrap{ height:calc(100dvh - 168px); min-height:0; }

  /* El toast no queda tapado por la barra de navegación inferior */
  .toast{ bottom:76px; }

  /* Objetivos táctiles cómodos (≥40px) en los controles más usados */
  .btn-sm{ min-height:40px; }
  .modal-close{ min-width:40px; min-height:40px; display:inline-flex; align-items:center; justify-content:center; }
  .edp-seg, .subtab, .fi-tab, .prog-tab{ min-height:40px; }
  select.estado-sel, .perm-sel, .rp-sel, select.gasto-estado{ min-height:38px; }
  .cal-nav, .ap-nb{ min-width:38px; min-height:38px; }
}

/* ===== MÓVIL (≤600px) ===== */
@media(max-width:600px){
  /* Menos padding: más ancho útil de contenido */
  .card{ padding:16px; }
  .ban-panel{ padding:16px; }
  .ban-kpi{ padding:14px 16px; }
  .hero-inner{ padding:22px 16px 26px; }
  .hero-title{ margin-top:18px; }
  /* La toolbar de Banco no se parte de forma rara al envolver */
  .ban-spacer{ display:none; }
}

/* ===== MÓVIL PEQUEÑO (≤560px) ===== */
@media(max-width:560px){
  .met-stats{ grid-template-columns:1fr; }      /* 3 col fijas → 1 */
}

/* ===== MÓVIL ESTRECHO (≤520px) ===== */
@media(max-width:520px){
  .nutri-days{ grid-template-columns:1fr; }      /* evita desborde con minmax(320) */
}

/* ===== MÓVIL MUY ESTRECHO (≤480px) ===== */
@media(max-width:480px){
  .prog-form{ grid-template-columns:1fr; }
  .modal-wrap{ padding:10px; }                   /* gana ancho en el diálogo */
}

/* ===== MÓVIL ANGOSTO (≤420px) ===== */
@media(max-width:420px){
  .ban-kpis{ grid-template-columns:1fr; }        /* KPIs de Banco dejan de apretarse */
  .ban-k-value{ font-size:26px; }
}

/* ============================================================
   Tablas → tarjetas en móvil (≤640px): Leads y Banco
   (tablas tabulares; #edpTable se deja con scroll por sus celdas visuales)
   ============================================================ */
@media(max-width:640px){
  #leadsTable, #banTable{ min-width:0; }
  #leadsTable thead, #banTable thead{ display:none; }
  #leadsTable tbody, #banTable tbody,
  #leadsTable tr, #banTable tr,
  #leadsTable td, #banTable td{ display:block; width:auto; }
  #leadsTable tr, #banTable tr{
    border:1px solid var(--line); border-radius:14px; background:var(--paper);
    padding:4px 14px; margin:0 0 12px; box-shadow:0 1px 3px rgba(36,36,36,.05);
  }
  #leadsTable td, #banTable td{
    display:flex; align-items:center; justify-content:space-between; gap:14px;
    padding:9px 0; border:0; border-bottom:1px solid var(--line-2); text-align:right; min-height:0;
  }
  #leadsTable tr td:last-child, #banTable tr td:last-child{ border-bottom:0; }
  #leadsTable td::before, #banTable td::before{
    content:attr(data-label); font-weight:700; color:var(--muted); font-size:11px;
    text-align:left; flex:0 0 auto; text-transform:uppercase; letter-spacing:.04em; white-space:nowrap;
  }
  /* celdas de acción / sin etiqueta → valor a la derecha, sin fila de etiqueta */
  #leadsTable td:not([data-label]), #banTable td:not([data-label]){ justify-content:flex-end; }
  #leadsTable td:not([data-label])::before, #banTable td:not([data-label])::before{ content:none; }
  /* que los controles y textos largos no desborden */
  #leadsTable td.nm, #banTable td.pname{ font-weight:600; }
  #leadsTable td .estado-sel, #banTable td .ban-cat{ max-width:62%; }
  #leadsTable td .contact-links{ justify-content:flex-end; }
  #banTable td.pname{ text-align:right; flex-wrap:wrap; }
  #banTable td.pname .hoy-sub{ font-weight:400; flex-basis:100%; text-align:right; margin-top:2px; white-space:normal; }
  /* fila de "sin resultados" (colspan) ocupa toda la tarjeta, centrada */
  #leadsTable td.empty, #banTable td.empty{ justify-content:center; border-bottom:0; }
  #leadsTable td.empty::before, #banTable td.empty::before{ content:none; }
}

/* ============================================================
   Retención — clientes inactivos + socios nuevos
   ============================================================ */
.ret-days-lbl{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft);font-weight:600}
.ret-days-lbl .input{width:auto}
.ret-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px}
@media(max-width:900px){.ret-cols{grid-template-columns:1fr}}
.ret-list{display:flex;flex-direction:column;gap:1px;max-height:62vh;overflow-y:auto;margin-top:4px}
.ret-row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-2)}
.ret-row:last-child{border-bottom:0}
.ret-main{flex:1;min-width:0}
.ret-nom{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ret-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.ret-dias{font-weight:600;color:var(--ink-soft)}
.ret-dias-grave{color:var(--st-perdido)}
.ret-dias-new{color:var(--accent-dd)}
.ret-wa{flex:0 0 auto}
.ret-notel{font-size:12px}
.ret-empty{padding:22px 16px;text-align:center;color:var(--muted);font-size:13px}

/* ============================================================
   Mi día — panel de tareas del día (tarjetas de acción)
   ============================================================ */
.dia-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:16px}
.dia-card{position:relative;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:16px;
  padding:20px 20px 18px;cursor:pointer;font-family:inherit;transition:.15s;box-shadow:0 1px 3px rgba(36,36,36,.05);
  display:flex;flex-direction:column;gap:2px}
.dia-card:hover{border-color:var(--accent);box-shadow:0 8px 22px -12px rgba(0,0,0,.35);transform:translateY(-2px)}
.dia-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--cream);color:var(--accent);margin-bottom:8px}
.dia-ic svg{width:20px;height:20px}
.dia-n{font-family:'Libre Baskerville',serif;font-size:34px;line-height:1;color:var(--text)}
.dia-tt{font-weight:700;color:var(--text);margin-top:6px}
.dia-sub{font-size:12.5px;color:var(--muted)}
.dia-go{position:absolute;top:18px;right:18px;font-size:12px;font-weight:700;color:var(--accent);opacity:0;transition:.15s}
.dia-card:hover .dia-go{opacity:1}
.dia-urgente{border-color:rgba(200,105,96,.5);background:rgba(168,84,76,.15)}
.dia-urgente .dia-ic{background:rgba(168,84,76,.28);color:#e8a59d}
.dia-urgente .dia-n{color:#eaa39b}
.dia-allclear{grid-column:1/-1;padding:40px 20px;text-align:center;color:var(--muted);font-size:15px}
.dia-empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}
/* Resumen del día por secciones */
.dia-sect{margin-top:22px}
.dia-h{font-size:14px;font-weight:800;letter-spacing:.01em;color:var(--text);margin:0 0 12px}
.dia-grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.dia-warn{border-color:rgba(194,145,47,.5);background:rgba(194,145,47,.12)}
.dia-warn .dia-ic{background:rgba(194,145,47,.24);color:#d8ab55}
.dia-warn .dia-n{color:#d8ab55}
.dia-stats{display:flex;flex-wrap:wrap;gap:12px}
.dia-stat{flex:1 1 120px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px;text-align:center}
.dia-stat-n{font-family:'Libre Baskerville',serif;font-size:28px;line-height:1;color:var(--text)}
.dia-stat-l{font-size:11.5px;color:var(--muted);margin-top:6px}
.dia-stat.good .dia-stat-n{color:#5fbf8f}
.dia-origen{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.dia-origen-t{font-weight:700}
.dia-origen-chip{background:var(--soft);border-radius:999px;padding:3px 10px;color:var(--text)}
.dia-centros td,.dia-centros th{text-align:center}
.dia-centros td:first-child,.dia-centros th:first-child{text-align:left}
.dia-centro-row{cursor:pointer}
.dia-centro-row:hover{background:var(--soft)}
.dia-td-warn{color:#d8ab55;font-weight:800}
.dia-td-urg{color:#e08a86;font-weight:800}

/* ============================================================
   Progreso del cliente (training log)
   ============================================================ */
.pr-search{position:relative;min-width:280px}
.pr-search .input{width:100%}
.pr-cols{display:grid;grid-template-columns:340px 1fr;gap:18px;margin-top:16px;align-items:start}
@media(max-width:900px){.pr-cols{grid-template-columns:1fr}}
.pr-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.pr-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--ink-soft)}
.pr-form .input{font-size:14px}
.pr-notas{grid-column:1/-1}
.pr-form .btn-primary{grid-column:1/-1;margin-top:4px}
.pr-chart{padding:6px 18px 14px}
.pr-chart-svg{width:100%;height:auto;display:block}
.pr-axis{fill:var(--muted);font-size:11px}
.pr-trend{text-align:center;font-size:13px;color:var(--ink-soft);margin-top:2px}
.pr-trend b{color:var(--accent)}
.pr-nt{max-width:220px;white-space:normal;font-size:12.5px}
.pr-pick{padding:52px 20px;text-align:center;color:var(--muted);font-size:15px}

/* ============================================================
   Hitos — aniversarios de alta (reutiliza .ret-* de Retención)
   ============================================================ */
.hito-badge{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent);vertical-align:middle}
.hito-hoy{color:#1d1d1d;background:var(--accent);font-weight:700;padding:1px 8px;border-radius:999px}
.hito-prox{color:var(--accent);font-weight:600}

/* ============================================================
   Dirección — panel de negocio (cohortes + altas/bajas)
   ============================================================ */
.dir-chart{width:100%;height:auto;display:block;margin-top:8px}
.dir-axis{fill:var(--muted);font-size:11px}
.dir-ret{display:flex;align-items:center;gap:10px;min-width:150px}
.dir-bar{flex:1;height:8px;border-radius:999px;background:var(--soft);overflow:hidden;max-width:170px}
.dir-bar span{display:block;height:100%;border-radius:999px}
.dir-pct{font-weight:700;font-size:12.5px;color:var(--text);min-width:38px}

/* ============================================================
   Progreso — fotos de evolución (antes/después)
   ============================================================ */
.pr-fotos-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.pr-foto-up{flex:0 0 auto;cursor:pointer}
.pr-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;padding:14px 22px 20px}
.pr-foto{position:relative;border-radius:12px;overflow:hidden;background:var(--soft);aspect-ratio:3/4}
.pr-foto img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.pr-foto-cap{position:absolute;left:0;right:0;bottom:0;padding:6px 8px;font-size:11.5px;font-weight:600;color:#fff;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.72))}
.pr-foto-del{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;border:0;
  background:rgba(0,0,0,.55);color:#fff;font-size:12px;cursor:pointer;display:grid;place-items:center;opacity:0;transition:.15s}
.pr-foto:hover .pr-foto-del{opacity:1}
.pr-fotos-empty{padding:22px;text-align:center;color:var(--muted);font-size:13px}

/* ============================================================
   Recorrido del lead (VAC → EDP → Venta) en la tabla de Leads
   ============================================================ */
.lead-rec{white-space:nowrap}
.rec-chip{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.02em;padding:2px 7px;border-radius:999px;
  margin-right:4px;border:1px solid var(--line);color:var(--muted);background:transparent;opacity:.5}
.rec-chip.on{opacity:1;border-color:transparent}
.rec-vac.on{background:var(--accent);color:#1d1d1d}
.rec-edp.on{background:#4a90b8;color:#fff}
.rec-venta.on{background:#3aa862;color:#fff}
@media(max-width:640px){#leadsTable td.lead-rec{justify-content:flex-end}}

/* Recorrido + vínculo Timp dentro de la ficha del lead */
.lead-recbox{margin:14px 0 6px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.lrb-h{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:9px}
.lrb-chips{display:flex;flex-wrap:wrap;gap:8px}
.lead-recbox .rec-chip{font-size:12px;padding:5px 12px;margin:0}
.lrb-link{margin-top:12px;position:relative}
.lrb-ok{font-size:13px;color:var(--ink-soft)}
.lrb-ok code{color:var(--text);font-weight:700;font-size:12.5px}
.lrb-x{margin-left:10px;font-size:12px;font-weight:600;color:var(--st-perdido);background:transparent;border:1px solid var(--line);border-radius:999px;padding:3px 10px;cursor:pointer}
.lrb-search .input{width:100%}

/* Crear plantillas en Meta (Ajustes de WhatsApp) */
.wa-tpl-dup{margin:6px 0 16px;padding:14px 16px;border:1px solid var(--accent);border-radius:12px;background:var(--accent-soft)}
.wa-tpl-dup-t{font-weight:800;color:var(--text);margin-bottom:4px}
.wa-tpl-dup-s{font-size:12.5px;color:var(--ink-soft);line-height:1.55;margin-bottom:10px}
.wa-tpl-dup-s code{color:var(--text);font-weight:700}
.wa-tpl-dup-out{margin-top:10px;display:flex;flex-direction:column;gap:3px}
.wa-dup-ok{font-size:13px;color:#5fbf8f}
.wa-dup-err{font-size:13px;color:var(--st-perdido)}

/* Estado real de plantillas en Meta (Ajustes de WhatsApp) */
.wa-meta-st{font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:999px;letter-spacing:.02em}
.wa-meta-st.ok{background:rgba(58,168,98,.16);color:#5fbf8f}
.wa-meta-st.pend{background:rgba(194,145,47,.16);color:#d8ab55}
.wa-meta-st.bad{background:rgba(168,84,76,.16);color:#e08a86}
.wa-meta-st.none{background:var(--soft);color:var(--muted)}
.wa-meta-refresh{margin:2px 0 14px}
.wa-token-st{display:flex;gap:11px;align-items:flex-start;border-radius:12px;padding:12px 15px;border:1px solid var(--line)}
.wa-token-st.wa-token-ok{background:rgba(58,168,98,.1);border-color:rgba(58,168,98,.35)}
.wa-token-st.wa-token-warn{background:rgba(194,145,47,.12);border-color:rgba(194,145,47,.45)}
.wa-token-st.wa-token-bad{background:rgba(168,84,76,.14);border-color:rgba(168,84,76,.5)}
.wa-token-ico{font-size:17px;line-height:1.3;flex:0 0 auto}
.wa-token-body{min-width:0}
.wa-token-msg{font-weight:700;font-size:13.5px;color:var(--text)}
.wa-token-help{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}
.wa-token-help code{background:var(--soft);padding:1px 5px;border-radius:5px;font-size:11px}
