/* IMPERO · panel de analítica. Cada web lo ve con SUS colores, SUS fuentes y SU logo: los pone panel.js desde
   /panel/config.json (tema). Todo sale de seis variables; los tonos intermedios se mezclan con color-mix.
   Diseño (04/10/2026), en la línea del panel de Madera Fina: menú lateral en el color oscuro de la marca, barra
   blanca arriba y tarjetas planas. Sin degradados ni sombras: plano, sobrio y fácil de leer. */
:root{
  --marca:#2f6b8f;      /* el color vivo de la marca */
  --oscuro:#1d2b3a;     /* el color profundo de la marca */
  --acento:#c0782f;     /* el segundo color (comparaciones, detalles) */
  --tinta:var(--t-tinta,#17202a);   /* el texto */
  --suave:var(--t-suave,#5f6b78);   /* el texto secundario */
  --f-texto:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-titulo:var(--f-texto);
  --lat:236px;          /* el menú lateral */
  --barra:60px;         /* la barra de arriba */

  --fondo:color-mix(in srgb,var(--oscuro) 4%,#f4f4f2);
  --sup:#fff;
  --sup-2:color-mix(in srgb,var(--oscuro) 4%,#f8f8f7);
  --linea:color-mix(in srgb,var(--oscuro) 11%,#fff);
  --linea-2:color-mix(in srgb,var(--oscuro) 22%,#fff);
  --marca-t:color-mix(in srgb,var(--marca) 58%,var(--oscuro));   /* la marca, legible sobre blanco */
  --titulo:var(--tinta);
  --lat-fondo:var(--oscuro);
  --ok:#2b7350; --ok-bg:#e1f0e7; --aviso:#a86d12; --aviso-bg:#fbf1dc; --mal:#ad3a2c; --mal-bg:#f8e2de;
  color-scheme:light;
}
/* Oscuro: planos y neutros, con un toque del color de la marca. */
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]){
    --fondo:color-mix(in srgb,var(--oscuro) 22%,#0e1013);
    --sup:color-mix(in srgb,var(--oscuro) 18%,#15181d);
    --sup-2:color-mix(in srgb,var(--oscuro) 22%,#1b1f25);
    --linea:color-mix(in srgb,#fff 9%,transparent);
    --linea-2:color-mix(in srgb,#fff 18%,transparent);
    --tinta:#e8ecf1; --suave:#9ba5b1;
    --marca-t:color-mix(in srgb,var(--marca) 60%,#fff);
    --lat-fondo:color-mix(in srgb,var(--oscuro) 55%,#0a0c0f);
    --ok:#7fcfa0; --ok-bg:#163126; --aviso:#ebc06a; --aviso-bg:#33280f; --mal:#f29b8e; --mal-bg:#3a1c17;
    color-scheme:dark;
  }
}
/* El mismo oscuro, elegido a mano (botón del menú). */
:root[data-tema="oscuro"]{
    --fondo:color-mix(in srgb,var(--oscuro) 22%,#0e1013);
    --sup:color-mix(in srgb,var(--oscuro) 18%,#15181d);
    --sup-2:color-mix(in srgb,var(--oscuro) 22%,#1b1f25);
    --linea:color-mix(in srgb,#fff 9%,transparent);
    --linea-2:color-mix(in srgb,#fff 18%,transparent);
    --tinta:#e8ecf1; --suave:#9ba5b1;
    --marca-t:color-mix(in srgb,var(--marca) 60%,#fff);
    --lat-fondo:color-mix(in srgb,var(--oscuro) 55%,#0a0c0f);
    --ok:#7fcfa0; --ok-bg:#163126; --aviso:#ebc06a; --aviso-bg:#33280f; --mal:#f29b8e; --mal-bg:#3a1c17;
    color-scheme:dark;
  }


*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body.ip{ margin:0; background:var(--fondo); color:var(--tinta); font:14.5px/1.5 var(--f-texto); }
.ip [hidden]{ display:none !important; }
.ip h1,.ip h2,.ip h3{ font-family:var(--f-titulo); color:var(--titulo); }
.ip a{ color:var(--marca-t); }
.ip-gris{ color:var(--suave); }
.ip-rojo{ color:var(--mal); font-weight:700; }

/* ── Botones y campos ── */
.ip-b{ display:inline-flex; align-items:center; justify-content:center; gap:6px; height:34px; padding:0 14px; border-radius:8px; border:1px solid var(--linea-2); background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; text-decoration:none; white-space:nowrap; }
.ip-b:hover{ border-color:var(--marca); }
.ip-b:disabled{ opacity:.55; cursor:default; }
.ip-b-p{ background:var(--oscuro); border-color:var(--oscuro); color:#fff; }
.ip-b-p:hover{ background:var(--marca-t); border-color:var(--marca-t); }
.ip-b-s{ height:28px; padding:0 10px; font-size:12.5px; }
.ip-b-g{ height:44px; padding:0 22px; font-size:15px; width:100%; }
.ip-b-rojo{ color:var(--mal); }
.ip-campo{ display:grid; gap:6px; font-size:12.5px; font-weight:600; color:var(--suave); text-align:left; min-width:0; }
.ip-campo select,.ip-campo input{ max-width:100%; min-width:0; }
.ip-campo input,.ip-campo select,.ip-periodo select,.ip-periodo input{ height:34px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; padding:0 10px; }
.ip-campo input:focus,.ip-campo select:focus,.ip-periodo select:focus,.ip-b:focus-visible,.ip-nav a:focus-visible,.ip-th:focus-visible,.ip-menu:focus-visible{ outline:2px solid var(--marca); outline-offset:2px; }

/* ── Entrar ── */
.ip-entrar{ min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:32px 16px; text-align:center; background:var(--lat-fondo); color:#fff; }
.ip-entrar > *{ width:100%; max-width:420px; }
.ip-entrar img{ width:auto; max-width:280px; max-height:72px; margin:0 auto 24px; padding:11px 16px; background:#fff; border-radius:12px; box-sizing:content-box; }
.ip-entrar h1{ color:#fff; font-size:26px; font-weight:800; letter-spacing:-.02em; margin:0; }
.ip-entrar > p{ color:color-mix(in srgb,#fff 75%,transparent); margin:10px auto 24px; }
.ip-pedir{ display:grid; gap:12px; background:var(--sup); color:var(--tinta); padding:22px; border-radius:14px; }
.ip-entrar-msg{ background:color-mix(in srgb,#fff 10%,transparent); border:1px solid color-mix(in srgb,#fff 20%,transparent); border-radius:10px; padding:12px 14px; color:#fff !important; }
.ip-entrar-pie{ font-size:13px; margin-top:18px !important; }

/* ── Menú lateral: el color oscuro de la marca, con el logo en su placa blanca ── */
.ip-lateral{ position:fixed; inset:0 auto 0 0; width:var(--lat); background:var(--lat-fondo); color:#fff; display:flex; flex-direction:column; z-index:40; }
.ip-marca{ display:flex; align-items:center; height:calc(var(--barra) + 32px); padding:0 14px; text-decoration:none; border-bottom:1px solid color-mix(in srgb,#fff 10%,transparent); }
.ip-marca-logo{ display:flex; align-items:center; justify-content:center; width:100%; box-sizing:border-box; background:#fff; border-radius:10px; padding:9px 12px; }
.ip-marca img{ display:block; height:46px; width:auto; max-width:100%; object-fit:contain; }
.ip-nav{ flex:1; overflow-y:auto; padding:12px 10px 16px; scrollbar-width:thin; display:flex; flex-direction:column; gap:2px; }
.ip-nav-g{ margin:14px 10px 6px; font-size:11px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:color-mix(in srgb,#fff 45%,transparent); }
.ip-nav-g:first-child{ margin-top:4px; }
.ip-nav a{ display:flex; align-items:center; gap:11px; padding:8px 10px; border-radius:8px; color:color-mix(in srgb,#fff 72%,transparent) !important; text-decoration:none; font-size:14px; font-weight:500; line-height:1.2; }
.ip-nav a svg{ flex:none; opacity:.8; }
.ip-nav a:hover{ background:color-mix(in srgb,#fff 7%,transparent); color:#fff !important; }
.ip-nav a[aria-current]{ background:color-mix(in srgb,#fff 12%,transparent); color:#fff !important; font-weight:600; box-shadow:inset 3px 0 0 var(--marca); }
.ip-nav a[aria-current] svg{ opacity:1; }
.ip-lateral-pie{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; padding:12px 16px; border-top:1px solid color-mix(in srgb,#fff 10%,transparent); }
/* Claro / Oscuro / Auto (1.13.0), en el pie del menú lateral. */
.ip-tema{ flex:1 0 100%; display:grid; grid-template-columns:repeat(3,1fr); gap:2px; padding:2px; margin-bottom:8px; border-radius:9px; background:color-mix(in srgb,#fff 8%,transparent); }
.ip-tema button{ display:inline-flex; align-items:center; justify-content:center; gap:5px; height:28px; border:0; border-radius:7px; background:none; color:color-mix(in srgb,#fff 70%,transparent); font:inherit; font-size:12px; font-weight:600; cursor:pointer; }
.ip-tema button:hover{ color:#fff; }
.ip-tema button[aria-pressed="true"]{ background:color-mix(in srgb,#fff 16%,transparent); color:#fff; }
.ip-tema button:focus-visible{ outline:2px solid var(--marca); outline-offset:1px; }
.ip-usuario{ font-size:12.5px; color:color-mix(in srgb,#fff 62%,transparent); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.ip-salir{ flex:none; border:1px solid color-mix(in srgb,#fff 20%,transparent); background:none; color:color-mix(in srgb,#fff 80%,transparent); font:inherit; font-size:12.5px; font-weight:600; padding:4px 10px; border-radius:7px; cursor:pointer; }
.ip-salir:hover{ color:#fff; border-color:color-mix(in srgb,#fff 40%,transparent); }
.ip-velo{ position:fixed; inset:0; background:rgba(10,12,15,.45); z-index:35; }

/* ── Cuerpo y barra de arriba ── */
.ip-cuerpo{ margin-left:var(--lat); min-height:100vh; display:flex; flex-direction:column; min-width:0; }
.ip-barra{ position:sticky; top:0; z-index:30; min-height:var(--barra); display:flex; align-items:center; gap:12px; padding:0 24px; background:var(--sup); border-bottom:1px solid var(--linea); }
.ip-menu{ display:none; border:0; background:none; color:var(--tinta); padding:6px; border-radius:8px; cursor:pointer; }
.ip-migas{ display:flex; align-items:center; gap:7px; min-width:0; font-size:14px; color:var(--suave); white-space:nowrap; overflow:hidden; margin-right:auto; }
.ip-migas i{ font-style:normal; opacity:.5; }
.ip-migas b{ color:var(--tinta); font-weight:600; overflow:hidden; text-overflow:ellipsis; }
.ip-periodo{ display:flex; align-items:center; gap:6px; flex:none; }
.ip-periodo select{ font-weight:600; padding-right:28px; }
.ip-fechas{ display:inline-flex; align-items:center; gap:4px; }
.ip-fechas i{ font-style:normal; color:var(--suave); font-size:13px; }
.ip-main{ width:100%; max-width:1280px; margin:0 auto; padding:24px 28px 64px; }
#ipVista{ display:grid; gap:16px; min-width:0; }
.ip-pie{ text-align:center; font-size:12px; color:var(--suave); padding:0 16px 26px; }

/* ── Cabecera de cada apartado ── */
.ip-cab{ display:flex; align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.ip-cab h1{ font-size:25px; font-weight:800; letter-spacing:-.02em; margin:0; }
.ip-cab p{ margin:4px 0 0; font-size:13.5px; color:var(--suave); }
.ip-cab-acc{ display:flex; gap:8px; }
.ip-print{ display:none; }
.ip-aviso-linea{ margin:0; padding:9px 14px; border-radius:9px; background:var(--aviso-bg); color:var(--tinta); font-size:13.5px; border-left:3px solid var(--aviso); }

/* La frase: el periodo en palabras, en limpio. */
.ip-frase{ margin:0; padding:16px 18px; font-size:15.5px; line-height:1.6; border-radius:12px; border:1px solid var(--linea); background:var(--sup); }
.ip-frase b{ color:var(--titulo); font-weight:800; font-variant-numeric:tabular-nums; }

/* ── Tarjetas ── */
.ip-tarjeta{ background:var(--sup); border:1px solid var(--linea); border-radius:12px; padding:18px 20px; min-width:0; }
.ip-tarjeta-cab{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.ip-tarjeta h2{ font-size:16px; font-weight:700; margin:0; display:flex; align-items:center; gap:9px; letter-spacing:-.01em; }
.ip-mal{ border-color:color-mix(in srgb,var(--mal) 40%,var(--linea)); }
.ip-nota{ font-size:12.5px; color:var(--suave); margin:-4px 0 12px; line-height:1.5; max-width:900px; }
.ip-texto{ max-width:820px; line-height:1.65; }
.ip-texto p{ margin:0 0 12px; }
.ip-sin{ margin:4px 0; }
.ip-dos{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; align-items:start; }
.ip-tres{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; align-items:start; }
.ip-cargando{ display:grid; gap:16px; }
.ip-cargando i{ display:block; height:140px; border-radius:12px; background:var(--sup); border:1px solid var(--linea); animation:ip-latido 1.2s ease-in-out infinite; }
@keyframes ip-latido{ 50%{ opacity:.55; } }

/* ── Cifras ── */
.ip-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; }
.ip-kpis-5{ grid-template-columns:repeat(5,minmax(0,1fr)); }
.ip-kpi{ position:relative; display:flex; flex-direction:column; gap:3px; padding:14px 16px 12px; background:var(--sup); border:1px solid var(--linea); border-radius:12px; text-decoration:none; color:var(--tinta) !important; overflow:hidden; min-height:104px; }
a.ip-kpi:hover{ border-color:var(--linea-2); }
.ip-kpi-t{ font-size:12.5px; font-weight:600; color:var(--suave); }
.ip-kpi b{ font-family:var(--f-titulo); font-size:26px; font-weight:800; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1.15; color:var(--titulo); }
.ip-kpi-pie{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; font-size:12px; color:var(--suave); position:relative; z-index:1; }
.ip-kpi .gr-chispa{ display:block; width:100%; height:22px; margin-top:auto; padding-top:6px; }
.ip-delta{ font-weight:700; font-size:12px; padding:1px 6px; border-radius:5px; background:var(--sup-2); color:var(--suave); }
.ip-delta.sube{ color:var(--ok); background:var(--ok-bg); } .ip-delta.baja{ color:var(--mal); background:var(--mal-bg); }

/* ── Cifras clave y bloques con título ── */
.ip-bloque{ display:grid; gap:10px; }
.ip-bloque-t{ margin:8px 0 0; font-size:11.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--suave) !important; }
.ip-kpis-secundarias .ip-kpi{ min-height:0; padding:12px 14px 10px; }
.ip-kpis-secundarias .ip-kpi b{ font-size:21px; }

/* ── El informe del cliente: «En pocas palabras» y los capítulos ── */
.ip-pocas h2{ margin:0 0 6px; font-size:11.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--suave); }
.ip-pocas p{ margin:0; }
.ip-cap{ display:grid; gap:12px; margin-top:12px; }
.ip-cap-cab{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding-bottom:10px; border-bottom:1px solid var(--linea); }
.ip-cap-cab h2{ margin:0; font-size:19px; font-weight:800; letter-spacing:-.01em; display:flex; align-items:center; gap:11px; }
.ip-cap-cab h2 span{ display:grid; place-items:center; width:26px; height:26px; border-radius:7px; background:var(--oscuro); color:#fff; font-size:13px; font-weight:800; flex:none; }
.ip-cap-ir{ font-size:13px; font-weight:600; text-decoration:none; white-space:nowrap; }
.ip-cap-ir::after{ content:" →"; }
.ip-cap-ir:hover{ text-decoration:underline; }
.ip-sub{ margin:18px 0 10px; font-size:11.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--suave); }

/* ── Lo que va bien y lo que hay que mejorar ── */
.ip-bm .ip-tarjeta h2::before{ content:""; width:10px; height:10px; border-radius:50%; flex:none; }
.ip-bm-bien h2::before{ background:var(--ok); }
.ip-bm-mal h2::before{ background:var(--aviso); }
.ip-hechos{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.ip-hechos li{ padding:11px 13px; border-radius:10px; border:1px solid var(--linea); border-left-width:3px; background:var(--sup); }
.ip-hechos-bien li{ border-left-color:var(--ok); }
.ip-hechos-mal li{ border-left-color:var(--aviso); }
.ip-hechos b{ font-size:14px; line-height:1.4; display:block; }
.ip-hechos p{ margin:4px 0 0; font-size:13px; line-height:1.45; color:var(--suave); }
.ip-hechos .ip-hechos-acc{ color:var(--tinta); }
.ip-hechos .ip-hechos-acc span{ font-weight:700; }

/* ── Qué hacer ahora: lo primero del resumen ── */
.ip-prio{ list-style:none; margin:0; padding:0; display:grid; }
.ip-prio li{ display:grid; grid-template-columns:30px minmax(0,1fr); gap:14px; padding:14px 0; border-top:1px solid var(--linea); }
.ip-prio li:first-child{ border-top:0; padding-top:2px; }
.ip-prio-n{ display:grid; place-items:center; width:28px; height:28px; border-radius:8px; background:color-mix(in srgb,var(--marca) 14%,var(--sup)); color:var(--marca-t); font:800 13.5px var(--f-titulo); }
.ip-prio-cab{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.ip-prio-cab b{ font-family:var(--f-titulo); font-size:15px; line-height:1.4; color:var(--titulo); flex:1 1 320px; }
.ip-prio-imp{ flex:none; font-size:12px; font-weight:700; padding:2px 9px; border-radius:6px; color:var(--ok); background:var(--ok-bg); white-space:nowrap; font-variant-numeric:tabular-nums; }
.ip-prio-txt p{ margin:5px 0 0; font-size:13.5px; line-height:1.5; color:var(--suave); }
.ip-prio-txt .ip-prio-acc{ color:var(--tinta); }
.ip-prio-acc span{ font-weight:700; }
.ip-prio-txt small{ display:inline-block; margin-top:6px; font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--suave); }
.ip-prio-mas{ border-top:1px solid var(--linea); }
.ip-prio-mas summary{ cursor:pointer; padding:12px 0 2px; font-size:13.5px; font-weight:600; color:var(--marca-t); }
.ip-prio-mas .ip-prio li:first-child{ border-top:0; padding-top:12px; }

/* ── Coste real por contacto ── */
.ip-real{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.ip-real b{ font-family:var(--f-titulo); font-size:30px; font-weight:800; letter-spacing:-.02em; color:var(--titulo); font-variant-numeric:tabular-nums; }
.ip-real p{ margin:0; flex:1 1 320px; font-size:14px; line-height:1.55; color:var(--tinta); }

/* ── El recorrido ── */
.ip-claves{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:2px 0 14px; }
.ip-clave{ display:flex; flex-direction:column; gap:3px; padding:11px 13px; border-radius:10px; background:var(--sup-2); }
.ip-clave b{ font-family:var(--f-titulo); font-size:22px; font-weight:800; letter-spacing:-.02em; font-variant-numeric:tabular-nums; color:var(--titulo); }
.ip-clave span{ font-size:12.5px; line-height:1.4; color:var(--suave); }

/* ── Secciones ── */
.ip-secs{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 26px; }
.ip-sec-cab{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; font-size:14px; }
.ip-sec-cab b{ display:flex; align-items:center; gap:8px; }
.ip-sec-cab b i{ width:10px; height:10px; border-radius:3px; flex:none; }
.ip-sec-cab span{ font-size:12.5px; color:var(--suave); font-variant-numeric:tabular-nums; white-space:nowrap; }
.ip-sec-barra{ height:8px; margin:7px 0 8px; border-radius:4px; background:var(--sup-2); overflow:hidden; }
.ip-sec-barra i{ display:block; height:100%; border-radius:4px; }
.ip-sec dl{ margin:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.ip-sec dl div{ background:var(--sup-2); border-radius:8px; padding:6px 9px; }
.ip-sec dt{ font-size:11px; color:var(--suave); line-height:1.3; }
.ip-sec dd{ margin:2px 0 0; font-size:15px; font-weight:800; font-variant-numeric:tabular-nums; }

/* ── Tablas ── */
.ip-tabla-caja{ overflow:auto; border:1px solid var(--linea); border-radius:9px; }
.ip-tabla table{ width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums; }
.ip-tabla th{ position:sticky; top:0; background:var(--sup-2); text-align:left; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--suave); padding:9px 11px; border-bottom:1px solid var(--linea); white-space:nowrap; }
.ip-tabla td{ padding:8px 11px; border-bottom:1px solid color-mix(in srgb,var(--linea) 70%,transparent); vertical-align:middle; max-width:420px; overflow:hidden; text-overflow:ellipsis; }
.ip-tabla tr:last-child td{ border-bottom:0; }
.ip-tabla tbody tr:hover td{ background:var(--sup-2); }
.ip-tabla .der{ text-align:right; white-space:nowrap; }
.ip-th{ all:unset; cursor:pointer; }
.ip-th:hover{ color:var(--tinta); }
.ip-mas{ margin-top:8px; border:0; background:none; font:inherit; font-size:13.5px; font-weight:600; color:var(--marca-t); cursor:pointer; padding:4px 0; }
.ip-ruta{ display:block; font-size:11.5px; color:var(--suave); overflow:hidden; text-overflow:ellipsis; }
.ip-punto{ display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:8px; vertical-align:0; }

/* ── Conectar Holded (la clave la pone el cliente) ── */
.ip-pasos{ margin:6px 0 16px; padding-left:22px; display:grid; gap:6px; line-height:1.55; }
.ip-texto code{ font-size:12.5px; background:var(--sup-2); padding:1px 6px; border-radius:4px; }
.ip-form.ip-form-holded{ grid-template-columns:minmax(0,1fr) auto; max-width:620px; }

/* ── Accesos ── */
.ip-form{ display:grid; grid-template-columns:2fr 1.3fr auto; gap:12px; align-items:end; max-width:820px; }
.ip-acc{ display:flex; gap:8px; }
.ip-enlace{ margin-top:14px; padding:14px; border-radius:10px; background:var(--sup-2); border:1px solid var(--linea); }
.ip-enlace p{ margin:0 0 8px; font-size:14px; }
.ip-enlace-fila{ display:flex; gap:8px; }
.ip-enlace input{ flex:1; min-width:0; height:34px; border:1px solid var(--linea-2); border-radius:8px; padding:0 10px; font:inherit; font-size:13px; background:var(--sup); color:var(--tinta); }
.ip-toast{ position:fixed; left:50%; bottom:22px; transform:translate(-50%,20px); opacity:0; pointer-events:none; background:var(--oscuro); color:#fff; padding:11px 16px; border-radius:10px; font-size:14px; transition:opacity .2s,transform .2s; z-index:60; max-width:calc(100vw - 32px); }
.ip-toast.on{ opacity:1; transform:translate(-50%,0); }

/* ── Gráficos (graficos.ts): con los colores de la marca, planos ── */
.ip-leyenda{ display:flex; flex-wrap:wrap; gap:6px 16px; font-size:12.5px; color:var(--suave); margin:-2px 0 8px; }
.ip-leyenda span::before{ content:""; display:inline-block; width:16px; height:3px; border-radius:2px; margin-right:6px; vertical-align:3px; }
.ip-l1::before{ background:var(--marca); } .ip-l2::before{ border-top:2px dashed var(--acento); height:0 !important; }
.ip-lc0::before{ background:var(--marca); } .ip-lc1::before{ background:var(--acento); } .ip-lc2::before{ background:var(--oscuro); } .ip-lc3::before{ background:var(--suave); }
:root .gr-linea.ip-sc0{ stroke:var(--marca); } .gr-linea.ip-sc1{ stroke:var(--acento); } .gr-linea.ip-sc2{ stroke:color-mix(in srgb,var(--oscuro) 80%,var(--tinta)); } .gr-linea.ip-sc3{ stroke:var(--suave); }
.gr-marco{ display:grid; grid-template-columns:50px minmax(0,1fr); }
.gr-ejey{ position:relative; }
.gr-ejey span{ position:absolute; right:8px; transform:translateY(-50%); font-size:11px; color:var(--suave); white-space:nowrap; font-variant-numeric:tabular-nums; }
.gr-lienzo{ position:relative; min-width:0; }
.gr{ width:100%; display:block; overflow:visible; }
.gr-rejilla{ stroke:var(--linea); stroke-width:1; vector-effect:non-scaling-stroke; }
.gr-ejex{ position:relative; height:22px; }
.gr-ejex span{ position:absolute; top:6px; font-size:11px; color:var(--suave); white-space:nowrap; }
.gr-linea{ fill:none; stroke-width:2.2; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }
.gr-s1{ stroke:var(--marca); } .gr-s2{ stroke:var(--acento); }
.gr-disc{ stroke-dasharray:5 4; stroke:var(--acento); }
.gr-area{ fill:color-mix(in srgb,var(--marca) 12%,transparent); }
.gr-punto{ position:absolute; width:7px; height:7px; border-radius:50%; background:var(--sup); border:2px solid var(--marca); transform:translate(-50%,-50%); pointer-events:none; }
.gr-zona{ fill:transparent; cursor:crosshair; }
.gr-zona:hover{ fill:color-mix(in srgb,var(--marca) 7%,transparent); }
.gr-barra{ fill:var(--marca); } .gr-barra-antes{ fill:color-mix(in srgb,var(--acento) 45%,transparent); }
.gr-chispa path{ fill:none; stroke:var(--marca); stroke-width:1.7; vector-effect:non-scaling-stroke; opacity:.85; }
.gr-vacio{ color:var(--suave); font-size:13.5px; margin:4px 0; }
.gr-barrash{ list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.gr-barrash li{ display:grid; grid-template-columns:minmax(90px,36%) minmax(40px,1fr) auto auto; align-items:center; gap:10px; font-size:13px; }
.gr-bh-e{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gr-bh-b{ height:9px; border-radius:5px; background:var(--sup-2); overflow:hidden; }
.gr-bh-b i{ display:block; height:100%; border-radius:5px; background:var(--marca); }
.gr-bh-b i.rojo{ background:var(--mal); }
.gr-barrash b{ font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.gr-barrash small{ color:var(--suave); font-size:12px; white-space:nowrap; min-width:58px; text-align:right; }
.gr-globo{ position:fixed; z-index:80; pointer-events:none; background:var(--oscuro); color:#fff; padding:8px 11px; border-radius:8px; font-size:12.5px; line-height:1.45; max-width:290px; }
.gr-globo b{ display:block; font-weight:700; }
.gr-sk-caja{ overflow-x:auto; margin-top:6px; }
.gr-sk{ display:block; width:100%; max-width:1000px; min-width:720px; margin:0 auto; height:auto; font-family:inherit; }
.gr-sk-col{ font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; fill:var(--suave); }
.gr-sk-raya{ stroke:var(--linea); stroke-width:1; }
.gr-sk-nodo{ cursor:default; transition:opacity .18s; }
.gr-sk-nodo text{ font-size:13px; font-weight:700; fill:var(--tinta); paint-order:stroke; stroke:var(--sup); stroke-width:4px; stroke-linejoin:round; }
.gr-sk-nodo text.gr-sk-n{ font-size:12px; font-weight:500; fill:var(--suave); font-variant-numeric:tabular-nums; }
.gr-sk-banda{ opacity:.28; transition:opacity .18s; }
.gr-sk.foco .gr-sk-banda{ opacity:.07; }
.gr-sk.foco .gr-sk-banda.on{ opacity:.6; }
.gr-sk.foco .gr-sk-nodo{ opacity:.35; }
.gr-sk.foco .gr-sk-nodo.on{ opacity:1; }
.gr-sk-pista{ display:none; margin:0 0 4px; font-size:12px; color:var(--suave); }
@media (prefers-color-scheme:dark){ :root:not([data-tema="claro"]) .gr-sk-banda{ opacity:.4; } :root:not([data-tema="claro"]) .gr-sk-nodo rect{ filter:brightness(1.3); } }
/* El mismo oscuro, elegido a mano (botón del menú). */
:root[data-tema="oscuro"] .gr-sk-banda{ opacity:.4; } :root[data-tema="oscuro"] .gr-sk-nodo rect{ filter:brightness(1.3); }

/* Otros gráficos que comparte el panel con el de Madera Fina (embudo y mapa de calor). */
.gr-embudo{ list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.gr-emb-cab{ display:flex; justify-content:space-between; gap:10px; font-size:13.5px; margin-bottom:4px; }
.gr-emb-barra{ height:12px; background:var(--sup-2); border-radius:6px; overflow:hidden; }
.gr-emb-barra i{ display:block; height:100%; background:var(--marca); border-radius:6px; }
.gr-calor{ display:grid; gap:3px; overflow-x:auto; }
.gr-calor-f{ display:grid; grid-template-columns:34px repeat(24,minmax(12px,1fr)); gap:3px; align-items:center; }
.gr-calor-f span{ font-size:11px; color:var(--suave); }

/* ── Tamaños ── */
@media (max-width:1240px){ .ip-kpis-5{ grid-template-columns:repeat(3,minmax(0,1fr)); } .ip-tres{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:1060px){ .ip-dos,.ip-tres,.ip-secs{ grid-template-columns:minmax(0,1fr); } .ip-claves{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:900px){
  /* El menú lateral se esconde y se abre con el botón de la barra. */
  .ip-lateral{ transform:translateX(-100%); transition:transform .2s ease; }
  .ip-menu-abierto .ip-lateral{ transform:none; }
  .ip-cuerpo{ margin-left:0; }
  .ip-menu{ display:inline-flex; }
  .ip-barra{ padding:0 12px 0 6px; }
}
@media (max-width:760px){
  .ip-barra{ flex-wrap:wrap; padding:8px 12px 10px 6px; row-gap:8px; }
  .ip-periodo{ order:3; width:100%; padding-left:6px; }
  .ip-periodo select{ flex:1; min-width:0; }
  .ip-fechas{ order:4; width:100%; }
  .ip-fechas input{ flex:1; min-width:0; }
  .ip-main{ padding:16px 14px 48px; }
  .ip-cab h1{ font-size:22px; }
  .ip-frase{ font-size:15px; padding:13px 14px; }
  .ip-kpis,.ip-kpis-5{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .ip-kpi{ min-height:0; padding:12px 13px 10px; }
  .ip-kpi b{ font-size:21px; }
  .ip-tarjeta{ padding:15px 14px; }
  .ip-prio li{ grid-template-columns:24px minmax(0,1fr); gap:10px; }
  .ip-prio-n{ width:24px; height:24px; font-size:12px; border-radius:7px; }
  .ip-prio-cab b{ font-size:14.5px; flex-basis:100%; }
  .ip-real b{ font-size:26px; }
  .ip-form{ grid-template-columns:minmax(0,1fr); }
  .gr-sk-pista{ display:block; }
  .gr-barrash li{ grid-template-columns:minmax(80px,38%) minmax(30px,1fr) auto; row-gap:2px; }
  .gr-barrash small{ grid-column:1 / -1; text-align:left; min-width:0; margin-top:-2px; }
}
@media (max-width:420px){ .ip-claves{ grid-template-columns:minmax(0,1fr); } .ip-sec dl{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (prefers-reduced-motion:reduce){ .ip-cargando i{ animation:none; } .ip-toast,.ip-lateral{ transition:none; } }

/* ── El PDF: A4, en claro, sin menú ni botones, con la cabecera de la web y la firma de IMPERO ── */
@media print{
  @page{ size:A4; margin:12mm 11mm 14mm; }
  body.ip{ background:#fff; }
  .ip-lateral,.ip-velo,.ip-barra,.ip-pie,.ip-cab-acc,.ip-b,.ip-mas,.gr-globo,[data-csv],.ip-prio-mas{ display:none !important; }
  .ip-cuerpo{ margin:0 !important; }
  .ip-main{ padding:0; max-width:none; }
  .ip-print{ display:block; margin:0 0 6mm; font-size:11px; color:#666; letter-spacing:.04em; text-transform:uppercase; border-bottom:2px solid var(--marca); padding-bottom:3mm; }
  .ip-print-pie{ margin:6mm 0 0; text-transform:none; letter-spacing:0; border:0; }
  .ip-tarjeta,.ip-kpi,.ip-clave,.ip-sec,.ip-hechos li,.ip-prio li{ break-inside:avoid; }
  .ip-kpis-5{ grid-template-columns:repeat(5,minmax(0,1fr)); }
  .ip-dos{ grid-template-columns:minmax(0,1fr) !important; }
  .ip-bm{ grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; }
  .gr-sk{ min-width:0; }
  .gr-sk-caja,.ip-tabla-caja{ overflow:visible; }
  a{ color:inherit !important; text-decoration:none; }
}

/* ── El índice del informe: los capítulos, a mano, sin perderse en un informe largo ── */
.ip-indice{ position:sticky; top:calc(var(--barra) + 8px); z-index:5; display:flex; flex-wrap:wrap; gap:8px; margin:6px 0 22px; padding:10px; background:color-mix(in srgb,var(--fondo) 88%,transparent); backdrop-filter:blur(6px); border-radius:12px; }
.ip-indice a{ display:inline-flex; align-items:center; gap:8px; padding:7px 12px 7px 8px; border:1px solid color-mix(in srgb,var(--marca) 22%,transparent); border-radius:999px; background:var(--sup); color:var(--tinta); font-size:13px; font-weight:600; text-decoration:none; }
.ip-indice a:hover{ border-color:var(--marca); color:var(--marca); }
/* Al saltar desde el índice, el título del capítulo queda debajo de la barra y del índice fijo, no tapado. */
.ip-cap{ scroll-margin-top:calc(var(--barra) + 120px); }
.ip-indice span{ display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--marca); color:#fff; font-size:11px; }
.ip-cap{ scroll-margin-top:calc(var(--barra) + 76px); }
@media print{ .ip-indice{ display:none; } }
@media (max-width:760px){ .ip-indice{ position:static; } }

/* ═══ Entrar con usuario y contraseña (1.9.0) ═══ */
.ip-entrar-o{ font-size:13px; color:var(--suave); margin:14px 0 !important; }

/* ═══ Agenda de contactos (CRM, 1.9.0): plano, como el resto ═══ */
.crm-estado{ display:inline-block; font-size:11.5px; font-weight:700; padding:2px 9px; border-radius:999px; background:var(--sup-2); color:var(--suave); border:1px solid var(--linea); white-space:nowrap; }
.crm-e-nuevo{ background:color-mix(in srgb,#c98a1d 16%,var(--sup)); color:#8a5a0c; border-color:color-mix(in srgb,#c98a1d 40%,transparent); }
.crm-e-contactado{ background:color-mix(in srgb,var(--marca) 14%,var(--sup)); color:var(--marca-t); border-color:color-mix(in srgb,var(--marca) 35%,transparent); }
.crm-e-presupuesto{ background:color-mix(in srgb,#6a5acd 14%,var(--sup)); color:#4b3fa0; border-color:color-mix(in srgb,#6a5acd 35%,transparent); }
.crm-e-cliente{ background:color-mix(in srgb,#2f8a5a 15%,var(--sup)); color:#1f6b43; border-color:color-mix(in srgb,#2f8a5a 38%,transparent); }
.crm-e-descartado{ text-decoration:line-through; }
.crm-anuncio{ display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:1px 7px; border-radius:999px; background:color-mix(in srgb,var(--acento) 18%,var(--sup)); color:color-mix(in srgb,var(--acento) 70%,var(--tinta)); vertical-align:1px; }
.crm-ref{ font-size:12.5px; letter-spacing:.06em; background:var(--sup-2); border:1px solid var(--linea); padding:0 6px; border-radius:5px; }
.crm-aviso{ color:#a4570c; font-weight:600; }
.crm-enlace{ background:none; border:0; padding:0; font:inherit; color:var(--tinta); cursor:pointer; text-align:left; }
.crm-enlace:hover b{ color:var(--marca-t); text-decoration:underline; }
.crm-accion{ font-size:13px; font-weight:600; }

.crm-hoy{ list-style:none; margin:0; padding:0; }
.crm-hoy li{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; padding:10px 0; border-bottom:1px solid var(--linea); }
.crm-hoy li:last-child{ border-bottom:0; }
.crm-hoy .ip-gris{ font-size:13px; flex:1 1 180px; }

.crm-pend{ list-style:none; margin:0; padding:0; }
.crm-pend li{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:10px 12px; margin-bottom:8px; border:1px solid var(--linea); border-left:3px solid var(--linea-2); border-radius:10px; background:var(--sup); }
.crm-pend li.crm-ads{ border-left-color:var(--acento); }
.crm-pend-info{ flex:1 1 280px; min-width:0; }
.crm-pend-info small{ display:block; color:var(--suave); font-size:12.5px; margin-top:2px; }
.crm-pend-acc{ display:flex; gap:8px; flex-wrap:wrap; }
.crm-apuntar{ flex-basis:100%; display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; padding-top:6px; }
.crm-apuntar .ip-acc{ grid-column:1/-1; }
/* 1.15.0: lo obligatorio al apuntar un contacto (nombre, teléfono, código postal, cómo os conoció). */
.crm-oblig{ color:var(--mal); font-weight:700; }
/* 1.16.0 (reunión con Mundoventanas del 21/10/2026): filtros de código postal y fechas, repartir varios a la vez y
   los datos del presupuesto (material, serie, color y precio). */
.crm-filtros-2{ margin-top:-2px; }
.crm-f-campo{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; color:var(--suave); }
.crm-f-campo input{ height:34px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; font-weight:400; padding:0 10px; }
.crm-f-campo input[data-crm-cp]{ width:130px; }
.crm-c-izq{ display:inline-flex; align-items:center; gap:8px; }
.crm-marca{ display:inline-flex; align-items:center; gap:8px; cursor:pointer; font-size:13px; font-weight:600; }
.crm-marca input{ width:18px; height:18px; accent-color:var(--marca); cursor:pointer; }
.crm-fila.elegido > .crm-c{ background:color-mix(in srgb,var(--marca) 7%,transparent); }
.crm-reparto{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:8px 12px; margin:0 0 10px; border:1px solid var(--linea); border-radius:10px; background:var(--sup-2); }
.crm-reparto.con{ border-color:var(--marca); }
.crm-reparto select{ height:34px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; padding:0 10px; }
.crm-reparto-a{ font-size:13px; color:var(--suave); }
.crm-presu-linea{ font-size:12.5px; font-weight:600; color:var(--tinta); }
.crm-presu{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); align-items:end; }
.crm-presu .crm-perdido-t,.crm-presu .ip-acc{ grid-column:1/-1; }
.crm-ficha-presu{ display:grid; gap:10px; padding:10px; border:1px dashed var(--linea-2); border-radius:9px; }
.crm-ficha-presu-t{ font-size:12px; font-weight:700; color:var(--suave); text-transform:uppercase; letter-spacing:.05em; }
.crm-presu-t{ margin:14px 0 8px; font-size:13.5px; }
.crm-presu-t:first-child{ margin-top:0; }
.crm-masivo{ margin:10px 0 0; }

.crm-filtros{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:12px; }
.crm-buscar{ flex:1 1 260px; min-width:0; height:36px; border:1px solid var(--linea-2); border-radius:999px; background:var(--sup); color:var(--tinta); font:inherit; padding:0 14px; }
.crm-buscar:focus,.crm-filtros select:focus{ outline:2px solid var(--marca); outline-offset:2px; }
.crm-filtros select{ height:36px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; padding:0 10px; }
.crm-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.crm-chip{ height:32px; padding:0 12px; border-radius:999px; border:1px solid var(--linea-2); background:var(--sup); color:var(--tinta); font:inherit; font-size:13px; cursor:pointer; }
.crm-chip.on{ background:var(--oscuro); border-color:var(--oscuro); color:#fff; }
/* Reparto (1.11.0): las listas, el detalle de estado de «Entrantes» y quién lleva cada contacto. */
.crm-chips-sub .crm-chip{ height:28px; font-size:12px; }
.crm-quien{ display:inline-block; padding:0 7px; border-radius:999px; background:color-mix(in srgb,var(--marca) 12%,transparent); color:var(--tinta); font-size:12px; font-weight:600; line-height:20px; }
/* Permisos a medida (1.12.0): el editor de cada persona en Accesos. */
.ip-fila-editor td{ background:color-mix(in srgb,var(--marca) 5%,transparent); }
.ip-permisos{ padding:6px 2px 4px; }
.ip-permisos .ip-sub{ margin:10px 0 6px; }
.ip-checks{ display:flex; flex-wrap:wrap; gap:6px 18px; }
.ip-check{ display:inline-flex; align-items:center; gap:7px; font-size:14px; cursor:pointer; }
.ip-check input{ width:16px; height:16px; accent-color:var(--marca); }
.crm-quien.sin{ background:color-mix(in srgb,#a4570c 14%,transparent); color:#a4570c; }
.crm-cuantos{ font-size:12.5px; margin:0 0 6px; }

.crm-lista{ list-style:none; margin:0; padding:0; }
.crm-fila{ border:1px solid var(--linea); border-radius:10px; margin-bottom:8px; background:var(--sup); }
.crm-fila.abierto{ border-color:var(--linea-2); }
.crm-fila-cab{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 12px; width:100%; padding:11px 14px; background:none; border:0; font:inherit; color:var(--tinta); text-align:left; cursor:pointer; border-radius:10px; }
.crm-fila-cab:hover{ background:var(--sup-2); }
.crm-fila-cab:focus-visible{ outline:2px solid var(--marca); outline-offset:-2px; }
.crm-nombre{ font-weight:700; font-size:15px; min-width:0; overflow-wrap:anywhere; }
.crm-fila-cab small{ grid-column:1/-1; color:var(--suave); font-size:12.5px; }
.crm-ficha{ padding:4px 14px 14px; border-top:1px solid var(--linea); }
.crm-datos{ display:flex; flex-wrap:wrap; gap:6px 16px; margin:12px 0 8px; font-size:14px; }
.crm-mensaje{ white-space:pre-wrap; background:var(--sup-2); border-radius:8px; padding:10px 12px; margin:0 0 12px; font-size:14px; overflow-wrap:anywhere; }
.crm-editar{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; align-items:end; }
.crm-editar .ip-acc{ margin:0; }
.crm-historial h3{ font-size:13px; text-transform:uppercase; letter-spacing:.06em; color:var(--suave); margin:16px 0 8px; }
.crm-nota{ display:flex; gap:8px; margin-bottom:10px; }
.crm-nota input{ flex:1; min-width:0; height:34px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; padding:0 10px; }
.crm-historial ol{ list-style:none; margin:0; padding:0 0 0 12px; border-left:2px solid var(--linea); }
.crm-historial li{ padding:4px 0 8px; }
.crm-historial li small{ color:var(--suave); font-size:12px; }
.crm-historial li p{ margin:2px 0 0; font-size:13.5px; white-space:pre-wrap; overflow-wrap:anywhere; }
.crm-alta{ display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:10px 14px; width:100%; max-width:100%; min-width:0; } /* 1.15.0: sin width, con .ip-form cogía 4 columnas y se salía de la pantalla */
.crm-alta .crm-ancho,.crm-alta .ip-acc{ grid-column:1/-1; }

@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .crm-e-nuevo{ color:#f0c27a; }
  :root:not([data-tema="claro"]) .crm-e-presupuesto{ color:#b9b0f5; }
  :root:not([data-tema="claro"]) .crm-e-cliente{ color:#8fd3ad; }
  :root:not([data-tema="claro"]) .crm-aviso{ color:#f0b26a; }
}
/* El mismo oscuro, elegido a mano (botón del menú). */
:root[data-tema="oscuro"] .crm-e-nuevo{ color:#f0c27a; }
  :root[data-tema="oscuro"] .crm-e-presupuesto{ color:#b9b0f5; }
  :root[data-tema="oscuro"] .crm-e-cliente{ color:#8fd3ad; }
  :root[data-tema="oscuro"] .crm-aviso{ color:#f0b26a; }

@media (max-width:760px){
  .crm-pend-acc,.crm-pend-acc .ip-b{ flex:1 1 0; }
  .crm-nota{ flex-direction:column; }
  .crm-fila-cab{ grid-template-columns:minmax(0,1fr); }
  .crm-fila-cab .crm-estado{ justify-self:start; }
}
@media print{ .crm-filtros,.crm-pend-acc,.crm-masivo,.crm-nota,.crm-editar,.ip-cab-acc{ display:none !important; } }

/* ═══ Agenda: diseño 1.13.0 ═══ Plano (sin degradados ni sombras). Cada contacto: avatar con el color de su estado,
   borde rojo si está parado, y llamar, WhatsApp y el siguiente paso a un toque. */
:root{ --e-nuevo:#c98a1d; --e-contactado:var(--marca); --e-presupuesto:#6a5acd; --e-cliente:#2f8a5a; --e-descartado:#8a8f98; --parado:#c2410c; }
.crm-cuenta{ display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 7px; border-radius:999px; background:var(--parado); color:#fff; font-size:12px; font-weight:800; }
.crm-aldia{ display:flex; align-items:center; gap:8px; margin:0; padding:12px 14px; border-radius:10px; background:color-mix(in srgb,var(--e-cliente) 10%,var(--sup)); color:color-mix(in srgb,var(--e-cliente) 75%,var(--tinta)); font-weight:600; }
.crm-lista{ display:flex; flex-direction:column; gap:8px; }
.crm-fila{ margin:0; border:1px solid var(--linea); border-radius:12px; background:var(--sup); overflow:hidden; }
.crm-fila.abierto{ border-color:color-mix(in srgb,var(--marca) 45%,var(--linea)); }
.crm-c{ display:grid; grid-template-columns:auto minmax(170px,1fr) auto; align-items:center; gap:4px 14px; padding:12px 14px; border-left:4px solid transparent; }
.crm-c.crm-parado{ border-left-color:var(--parado); background:color-mix(in srgb,var(--parado) 4%,var(--sup)); }
.crm-av{ display:grid; place-items:center; width:40px; height:40px; border-radius:50%; font:800 14px/1 var(--f-titulo); letter-spacing:.02em; color:#fff; background:var(--e-descartado); flex:none; }
.crm-av-nuevo{ background:var(--e-nuevo); } .crm-av-contactado{ background:var(--e-contactado); } .crm-av-presupuesto{ background:var(--e-presupuesto); }
.crm-av-cliente{ background:var(--e-cliente); } .crm-av-descartado{ background:var(--e-descartado); } .crm-av-persona{ background:var(--oscuro); }
.crm-c-txt{ display:flex; flex-direction:column; gap:3px; min-width:0; padding:0; border:0; background:none; font:inherit; color:var(--tinta); text-align:left; cursor:pointer; }
div.crm-c-txt{ cursor:default; }
.crm-c-txt:hover .crm-c-nom{ color:var(--marca-t); }
.crm-c-txt:focus-visible{ outline:2px solid var(--marca); outline-offset:3px; border-radius:6px; }
.crm-c-nom{ font-weight:700; font-size:15.5px; line-height:1.25; overflow-wrap:anywhere; }
.crm-c-sub{ font-size:13px; color:var(--suave); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-c-sub b{ color:var(--tinta); font-weight:600; }
.crm-c-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; font-size:12.5px; margin-top:2px; }
.crm-c-meta .crm-aviso{ font-weight:700; }
.crm-rapidas{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.crm-r{ display:inline-flex; align-items:center; gap:6px; height:34px; padding:0 12px; border-radius:9px; border:1px solid var(--linea-2); background:var(--sup); color:var(--tinta) !important; font:inherit; font-size:13px; font-weight:600; text-decoration:none; cursor:pointer; white-space:nowrap; }
.crm-r:hover{ border-color:var(--marca); color:var(--marca-t) !important; }
.crm-r-wa{ color:#1a7f4b !important; }
.crm-paso{ border-color:transparent; background:var(--oscuro); color:#fff !important; }
.crm-paso:hover{ background:var(--marca-t); color:#fff !important; border-color:transparent; }
.crm-paso-cliente{ background:var(--e-cliente); } .crm-paso-cliente:hover{ background:color-mix(in srgb,var(--e-cliente) 80%,#000); }
.crm-paso-descartado{ background:var(--sup); color:var(--suave) !important; border-color:var(--linea-2); }
.crm-paso-descartado:hover{ background:var(--sup); color:var(--parado) !important; border-color:var(--parado); }
.crm-paso:disabled{ opacity:.55; cursor:wait; }
.crm-perdido{ grid-column:1/-1; display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:10px 12px; border-radius:10px; background:var(--sup-2); }
.crm-perdido-t{ font-weight:700; font-size:13.5px; }
.crm-perdido select,.crm-perdido input{ height:34px; border:1px solid var(--linea-2); border-radius:8px; background:var(--sup); color:var(--tinta); font:inherit; font-size:13.5px; padding:0 10px; }
.crm-perdido input{ flex:1 1 180px; min-width:0; }
/* Las listas como pestañas, con su número. */
.crm-tabs{ display:inline-flex; flex-wrap:wrap; gap:4px; padding:4px; border-radius:11px; background:var(--sup-2); border:1px solid var(--linea); }
.crm-tab{ display:inline-flex; align-items:center; gap:7px; height:34px; padding:0 14px; border:0; border-radius:8px; background:none; color:var(--suave); font:inherit; font-size:13.5px; font-weight:600; cursor:pointer; }
.crm-tab span{ font-size:12px; font-weight:800; padding:1px 7px; border-radius:999px; background:var(--linea); color:var(--tinta); }
.crm-tab:hover{ color:var(--tinta); }
.crm-tab.on{ background:var(--sup); color:var(--tinta); box-shadow:inset 0 0 0 1px var(--linea-2); }
.crm-tab.on span{ background:var(--oscuro); color:#fff; }
.crm-tab:focus-visible{ outline:2px solid var(--marca); outline-offset:1px; }
/* Por persona: una tarjeta por cada uno; la de quien tiene contactos parados, marcada. */
.crm-personas{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; }
.crm-persona{ width:100%; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:4px 12px; padding:12px 14px; border:1px solid var(--linea); border-radius:12px; background:var(--sup); color:var(--tinta); font:inherit; text-align:left; cursor:pointer; }
.crm-persona:hover{ border-color:var(--marca); }
.crm-persona.con-parados{ border-left:4px solid var(--parado); }
.crm-persona.sin .crm-av{ background:var(--parado); }
.crm-persona-nom{ font-weight:700; font-size:15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crm-persona-nums{ grid-column:1/-1; display:grid; grid-template-columns:repeat(4,1fr); gap:4px; margin-top:6px; font-size:11.5px; color:var(--suave); text-align:center; }
.crm-persona-nums b{ display:block; font:800 18px/1.1 var(--f-titulo); color:var(--tinta); }
.crm-persona-nums .crm-aviso b{ color:inherit; }
/* La ficha: datos e historial a la izquierda, gestionar a la derecha. */
.crm-ficha{ display:grid; grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr); gap:18px 24px; padding:16px 18px 18px; border-top:1px solid var(--linea); background:color-mix(in srgb,var(--sup-2) 55%,var(--sup)); }
.crm-ficha h3{ font-size:12px; text-transform:uppercase; letter-spacing:.07em; color:var(--suave); margin:0 0 10px; }
.crm-ficha-der{ padding:14px 16px; border:1px solid var(--linea); border-radius:12px; background:var(--sup); align-self:start; }
.crm-ficha-der .crm-editar{ grid-template-columns:1fr; }
dl.crm-datos{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px 18px; margin:0 0 12px; }
dl.crm-datos dt{ font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--suave); }
dl.crm-datos dd{ margin:2px 0 0; font-size:14px; overflow-wrap:anywhere; }
.crm-historial{ margin-top:6px; }
.crm-historial ol{ border-left-color:color-mix(in srgb,var(--marca) 35%,var(--linea)); }
@media (max-width:720px){
  .crm-c{ grid-template-columns:auto minmax(0,1fr); }
  .crm-rapidas{ grid-column:1/-1; justify-content:flex-start; }
  .crm-r span{ display:inline; }
  .crm-ficha{ grid-template-columns:1fr; padding:14px; }
  .crm-tabs{ display:flex; } .crm-tab{ flex:1 1 auto; justify-content:center; padding:0 8px; }
}
@media (prefers-color-scheme:dark){
  :root:not([data-tema="claro"]) .crm-r-wa{ color:#6fd39d !important; }
  :root:not([data-tema="claro"]) .crm-aldia{ color:#8fd3ad; }
}
:root[data-tema="oscuro"] .crm-r-wa{ color:#6fd39d !important; }
:root[data-tema="oscuro"] .crm-aldia{ color:#8fd3ad; }
.crm-hoy li.crm-fila{ display:block; padding:0; border:1px solid var(--linea); border-radius:12px; }

/* ═══ Accesos: diseño 1.13.0 ═══ Una tarjeta por persona y los permisos en interruptores. */
.crm-tab-n{ font-size:12px; font-weight:800; padding:1px 8px; border-radius:999px; background:var(--sup-2); color:var(--suave); }
.ip-personas{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.ip-persona{ display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:6px 14px; padding:12px 14px; border:1px solid var(--linea); border-radius:12px; background:var(--sup); }
.ip-persona.editando{ border-color:var(--marca); }
.ip-persona-av{ display:grid; place-items:center; width:40px; height:40px; border-radius:50%; font:800 14px/1 var(--f-titulo); color:#fff; background:var(--suave); }
.ip-papel-gerente.ip-persona-av{ background:var(--oscuro); } .ip-papel-comercial.ip-persona-av{ background:var(--marca); } .ip-papel-cliente.ip-persona-av{ background:#8a8f98; } .ip-papel-impero.ip-persona-av{ background:#111; }
.ip-persona-txt{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.ip-persona-txt > b{ font-size:14.5px; overflow-wrap:anywhere; }
.ip-persona-papel{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; font-size:12.5px; }
.ip-papel{ font-weight:700; padding:1px 9px; border-radius:999px; background:var(--sup-2); border:1px solid var(--linea); }
.ip-medida{ font-weight:700; color:var(--marca-t); }
.ip-etiquetas{ display:flex; flex-wrap:wrap; gap:4px; }
.ip-et{ font-size:11.5px; font-weight:600; padding:1px 8px; border-radius:6px; background:var(--sup-2); color:var(--suave); }
.ip-et.ip-et-c{ background:color-mix(in srgb,var(--marca) 12%,var(--sup)); color:var(--marca-t); }
.ip-persona-acc{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
@media (max-width:720px){ .ip-persona{ grid-template-columns:auto minmax(0,1fr); } .ip-persona-acc{ grid-column:1/-1; justify-content:flex-start; } }
/* Interruptores (los permisos): la casilla de verdad sigue ahí, para el teclado y los lectores de pantalla. */
.ip-interruptor{ position:relative; gap:10px; }
.ip-interruptor input{ position:absolute; opacity:0; width:38px; height:22px; margin:0; cursor:pointer; }
.ip-interruptor i{ position:relative; flex:none; width:38px; height:22px; border-radius:999px; background:var(--linea-2); transition:background .15s; }
.ip-interruptor i::after{ content:''; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; transition:transform .15s; }
.ip-interruptor input:checked + i{ background:var(--marca); }
.ip-interruptor input:checked + i::after{ transform:translateX(16px); }
.ip-interruptor input:focus-visible + i{ outline:2px solid var(--marca); outline-offset:2px; }
.ip-interruptor input:disabled + i{ opacity:.45; }
.ip-permisos .ip-checks{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px 18px; }
@media (prefers-reduced-motion:reduce){ .ip-interruptor i,.ip-interruptor i::after{ transition:none; } }
