/* ===== VTPG CRM - sistema visual ===== */
:root{
  /* Paleta cálida. El cliente pidió una interfaz más amable, así que el gris
     frío se cambia por crema y la tinta negra por un marrón oscuro: los mismos
     contrastes, pero sin el filo de oficina. El naranja de la marca no se toca. */
  --bg:#FBF6EE;                                    /* el papel de la página */
  --w:#FFFDF9; --w2:#FBF6EE; --w3:#F5EDE1;         /* las tarjetas, sobre el papel */
  --k:#3B2A1A; --k2:#5A4633; --k3:#6E563D; --k4:#7A6248;  /* el gris apagado de la
     referencia se queda en 4,07:1 sobre crema y estos textos son de 10-11px, así
     que se oscurece lo justo para pasar de 4,5:1 sin perder el tono cálido */
  --o:#FCA629; --o-ink:#944D04; --o-soft:#FDEBCC; --o-line:#F2D49B;
  --ln:#EADFCD; --ln2:#DCCDB4; --ln3:#3B2A1A;
  --ok:#1D6B4F; --ok-soft:#DCEFE5;
  --no:#B3321B; --no-soft:#FBE3DC;
  --in:#22599C; --in-soft:#DEE9F6;
  --mo:#6A3D9A; --mo-soft:#ECE2F6;
  --r:10px; --r-sm:7px; --r-lg:14px; --rail:212px;
  --sh:0 1px 2px rgba(60,35,5,.05), 0 6px 18px rgba(60,35,5,.05);
  --sh-alto:0 2px 6px rgba(60,35,5,.07), 0 18px 46px rgba(60,35,5,.11);
  --lbl:"Figtree",system-ui,-apple-system,sans-serif;  /* las micro-etiquetas ya no van en mono */
  /* Movimiento: curvas fuertes, UI por debajo de 300ms (Emil Kowalski) */
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  color-scheme:light;
}
/* Tema único claro: blanco, naranja y negro. El Modo Puerta es oscuro
   por decisión de producto (uso en la calle), no por el tema del sistema. */

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--k);
  font-family:"Figtree",system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow:hidden;letter-spacing:-.003em}
/* Nunito en los títulos: es la letra redonda del ejemplo que mandó el cliente */
h1,h2,h3,h4{margin:0;font-family:"Nunito","Figtree",system-ui,sans-serif;font-weight:700;letter-spacing:-.015em}
.mono,.kpi-val,.num,td.n,.tnum,kbd{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;letter-spacing:inherit}
a{color:inherit}
svg{display:block;flex-shrink:0}
:focus-visible{outline:2px solid var(--o);outline-offset:1px}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.12s!important;transition-duration:.12s!important}
  .overlay,.toast{animation:none!important}
}

/* micro-etiqueta: la voz del sistema */
.ml{font-family:var(--lbl);font-size:10.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--k4)}

#app{display:flex;height:100%}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.view{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 24px 64px}

/* ===== rail ===== */
.rail{width:var(--rail);flex-shrink:0;background:var(--w);border-right:1px solid var(--ln);
  display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);overflow-y:auto}
.rail-logo{display:flex;align-items:center;padding:16px 16px 15px;border-bottom:1px solid var(--ln)}
.logo-full{width:176px;height:auto;display:block}
.logo-mark{display:none;color:var(--o);line-height:0}
.rail-nav{display:flex;flex-direction:column;padding:8px 0 24px}
.rail-item{display:flex;align-items:center;gap:10px;padding:7px 16px;color:var(--k2);
  position:relative;text-align:left;font-size:13px;font-weight:500;transition:color .14s var(--ease-out),background .14s var(--ease-out)}
.rail-item svg{width:15px;height:15px;stroke:currentColor;opacity:.75}
.rail-item:hover{background:var(--w2);color:var(--k)}
.rail-item.on{color:var(--k);font-weight:600;background:var(--w2)}
.rail-item.on svg{opacity:1;stroke:var(--o-ink)}
.rail-item.on::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--o)}
.rail-item .dot{margin-left:auto;font-family:"IBM Plex Mono",monospace;font-size:10px;font-weight:600;
  background:var(--o);color:var(--k);min-width:17px;height:16px;display:grid;place-items:center;padding:0 4px}
.rail-sec{padding:14px 16px 5px}

/* ===== topbar ===== */
.topbar{display:flex;align-items:center;gap:14px;padding:0 24px;height:54px;background:var(--w);
  border-bottom:1px solid var(--ln);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.topbar::-webkit-scrollbar{display:none}
.crumb{flex-shrink:0}
.crumb h1{font-size:15px;font-weight:600}
.crumb small{display:block;font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;
  color:var(--k4);text-transform:uppercase;margin-top:1px}
.spacer{flex:1;min-width:8px}
.search{display:flex;align-items:center;gap:8px;border:1px solid var(--ln);padding:5px 10px;
  color:var(--k4);font-size:12.5px;flex:0 1 237px;min-width:180px;white-space:nowrap}
/* al encoger, el texto se corta; nunca se parte en dos líneas */
.search > span{overflow:hidden;text-overflow:ellipsis;min-width:0}
@media (max-width:1240px){ .search kbd{display:none} }
.search svg{width:13px;height:13px;stroke:currentColor}
.search kbd{margin-left:auto;font-size:9.5px;color:var(--k4);border:1px solid var(--ln);padding:0 4px}
.seg{display:flex;border:1px solid var(--ln);flex-shrink:0}
.seg button{padding:4px 11px;font-size:12px;font-weight:500;color:var(--k3);white-space:nowrap;
  border-right:1px solid var(--ln)}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--k);color:var(--w);font-weight:600}
.sync{display:flex;align-items:center;gap:6px;font-family:var(--lbl);font-size:10px;
  letter-spacing:.05em;text-transform:uppercase;color:var(--ok);flex-shrink:0}
.sync i{width:5px;height:5px;background:var(--ok);border-radius:50%}
.demoswitch{display:flex;align-items:center;gap:8px;border:1px solid var(--o);background:var(--o-soft);
  padding:3px 3px 3px 9px;flex-shrink:0}
.demoswitch .dl{font-family:var(--lbl);font-size:9px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--o-ink)}
.demoswitch .seg{border:0}
.demoswitch .seg button{border-right:1px solid var(--o-line);color:var(--o-ink);font-size:11.5px}
.demoswitch .seg button:last-child{border-right:0}
.demoswitch .seg button.on{background:var(--k);color:var(--w)}
.avatar{width:27px;height:27px;background:var(--k);color:var(--w);display:grid;place-items:center;
  font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:10.5px;flex-shrink:0}

/* ===== bandas ===== */
.band{display:flex;align-items:baseline;gap:10px;margin:22px 0 10px;border-bottom:1px solid var(--ln);
  padding-bottom:7px}
.band .bn{font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--o-ink);font-weight:600}
.band h2{font-family:var(--lbl);font-size:10.5px;font-weight:600;letter-spacing:.055em;
  text-transform:uppercase;color:var(--k)}
.band .hint{font-size:11.5px;color:var(--k4)}
.band .lnk{margin-left:auto;font-size:12px;font-weight:600;color:var(--o-ink);display:flex;align-items:center;gap:5px}
.band .lnk svg{width:12px;height:12px;stroke:currentColor}

/* Banda 1 */
/* El dashboard se lee al entrar y estorba en cuanto bajas a trabajar, así que
   se va con el scroll como cualquier otro contenido. Estuvo pegado arriba y
   plegándose al bajar, y era peor: al encogerse quitaba su propio alto del
   documento, el navegador recortaba el scroll contra el tope y la banda volvía
   a desplegarse. El resultado era que no se podía bajar. */
.pulso{background:var(--w);padding:18px 24px 14px;margin:0 -24px}
.tiles{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(182px,1fr));border:1px solid var(--ln)}
.tile{padding:17px 18px 15px;text-align:left;display:flex;flex-direction:column;gap:5px;
  border-right:1px solid var(--ln);transition:background .14s var(--ease-out);position:relative}
.tile:last-child{border-right:0}
@media (hover:hover) and (pointer:fine){ .tile:hover{background:var(--w2)} }
.tile.on::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--o)}
.tile-l{font-family:var(--lbl);font-size:10.5px;letter-spacing:.055em;text-transform:uppercase;
  color:var(--k4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile-v{display:flex;align-items:baseline;gap:8px}
.kpi-val{font-size:31px;font-weight:500;line-height:1.05;letter-spacing:-.035em}
.kpi-val small{font-size:14px;color:var(--k4)}
.delta{font-family:"IBM Plex Mono",monospace;font-size:11.5px;font-weight:500}
.delta.up{color:var(--ok)} .delta.down{color:var(--no)} .delta.flat{color:var(--k4)}
.tile-spark{margin-top:4px;height:24px;width:100%}
.segbar{display:flex;height:5px;margin-top:8px}
.segbar i{display:block;height:100%}

/* franja negra: se usa una vez por página */
.headline{margin-top:12px;background:var(--k);color:var(--w);padding:14px 18px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.headline .hk{font-family:var(--lbl);font-size:9.5px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--o);flex-shrink:0;border-right:1px solid rgba(255,255,255,.2);padding-right:14px}
.headline p{margin:0;font-size:15px;line-height:1.4;flex:1;min-width:240px;letter-spacing:-.01em}
.headline b{color:var(--o);font-weight:600}
.headline .hbtn{background:var(--o);color:var(--k);font-weight:600;font-size:12.5px;padding:8px 15px;
  white-space:nowrap;display:flex;align-items:center;gap:7px}
.headline .hbtn svg{width:13px;height:13px;stroke:currentColor}

/* Banda 2 */
.acciones{display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));border:1px solid var(--ln)}
.acard{padding:14px;display:flex;flex-direction:column;gap:9px;border-right:1px solid var(--ln);
  border-bottom:1px solid var(--ln);background:var(--w)}
.acard-h{display:flex;align-items:center;gap:8px}
.acard-h .sw{width:7px;height:7px;flex-shrink:0}
.p-rojo .sw{background:var(--no)} .p-ambar .sw{background:var(--o)}
.p-azul .sw{background:var(--in)} .p-verde .sw{background:var(--ok)}
.acard-t{font-family:var(--lbl);font-size:9.5px;font-weight:600;letter-spacing:.055em;
  text-transform:uppercase}
.p-rojo .acard-t{color:var(--no)} .p-ambar .acard-t{color:var(--o-ink)}
.p-azul .acard-t{color:var(--in)} .p-verde .acard-t{color:var(--ok)}
.acard-age{margin-left:auto;font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--k4);white-space:nowrap}
.acard-s{font-size:14.5px;font-weight:600;line-height:1.3;letter-spacing:-.02em}
.acard-w{font-size:12.5px;color:var(--k2);line-height:1.5;border-left:1px solid var(--ln2);padding-left:11px}
.acard-w em{font-style:normal;font-weight:600;color:var(--k)}
.acard-w .wl{display:block;margin-bottom:3px}
.acard-f{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:2px}
.allgood{border:1px solid var(--ok);background:var(--ok-soft);padding:13px 16px;display:flex;
  align-items:center;gap:11px;font-size:13.5px}
.allgood svg{width:17px;height:17px;stroke:var(--ok)}

/* ===== botones ===== */
.btn{background:var(--k);color:var(--w);font-weight:600;font-size:12.5px;padding:8px 14px;
  display:inline-flex;align-items:center;gap:7px;transition:opacity .12s var(--ease-out);white-space:nowrap}
.btn:hover{opacity:.85}
.btn svg{width:13px;height:13px;stroke:currentColor}
.btn.ghost{background:transparent;color:var(--k2);border:1px solid var(--ln2);font-weight:500}
.btn.ghost:hover{border-color:var(--k3);opacity:1}
.btn.pri{background:var(--o);color:var(--k)}
.btn.sm{padding:5px 10px;font-size:11.5px}
.btn.lg{padding:11px 18px;font-size:14px}
.icb{width:26px;height:26px;display:grid;place-items:center;color:var(--k4)}
.icb:hover{color:var(--k);background:var(--w2)}
.icb svg{width:15px;height:15px;stroke:currentColor}

/* ===== superficies ===== */
.card{background:var(--w);border:1px solid var(--ln)}
.card-h{display:flex;align-items:center;gap:10px;padding:11px 15px;border-bottom:1px solid var(--ln)}
.card-h h3{font-size:13px;font-weight:600}
.card-h .sub{font-size:11.5px;color:var(--k4)}
.card-b{padding:15px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
/* cuatro gráficos: mejor 2x2 que 3 arriba y uno suelto abajo */
@media (min-width:1080px){ .grid.g2.graf4{grid-template-columns:repeat(2,1fr)} }
@media (min-width:1560px){ .grid.g2.graf4{grid-template-columns:repeat(4,1fr)} }
.g3{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chip{border:1px solid var(--ln);padding:5px 11px;font-size:12px;font-weight:500;color:var(--k3);white-space:nowrap}
.chip:hover{border-color:var(--ln2);color:var(--k)}
.chip.on{background:var(--k);color:var(--w);border-color:var(--k);font-weight:600}
/* .tabs era una cuarta familia de pestañas -subrayado naranja- para hacer
   exactamente lo mismo que .seg: cambiar la lista que estás mirando. Aquí solo
   queda lo que le es propio (que pueda desplazarse cuando son seis); el aspecto
   lo hereda del bloque «un solo lenguaje de pestañas», al final de este fichero. */
.tabs{display:flex;overflow-x:auto;margin-bottom:14px;flex-wrap:nowrap}
.tabs button{white-space:nowrap}

/* etiquetas */
.bdg{display:inline-flex;align-items:center;gap:5px;padding:1px 7px;font-size:11px;font-weight:500;
  white-space:nowrap;line-height:1.55;border:1px solid var(--ln)}
.bdg.verde{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-soft)}
.bdg.ambar{background:var(--o-soft);color:var(--o-ink);border-color:var(--o-line)}
.bdg.rojo{background:var(--no-soft);color:var(--no);border-color:var(--no-soft)}
.bdg.azul{background:var(--in-soft);color:var(--in);border-color:var(--in-soft)}
.bdg.gris{background:var(--w2);color:var(--k3)}
.bdg.morado{background:var(--mo-soft);color:var(--mo);border-color:var(--mo-soft)}
.bdg .ab{font-family:"IBM Plex Mono",monospace;font-size:9px;letter-spacing:.06em;opacity:.7}
.sem{width:8px;height:8px;flex-shrink:0;display:inline-block}
.sem.verde{background:var(--ok)} .sem.ambar{background:var(--o)}
.sem.rojo{background:var(--no)} .sem.gris{background:var(--ln2)}

/* tablas */
.tw{overflow-x:auto;border:1px solid var(--ln);background:var(--w)}
table{border-collapse:collapse;width:100%;font-size:12.5px;min-width:660px}
thead th{background:var(--w2);text-align:left;padding:8px 12px;font-family:var(--lbl);
  font-size:9.5px;font-weight:500;letter-spacing:.055em;text-transform:uppercase;color:var(--k4);
  border-bottom:1px solid var(--ln);white-space:nowrap}
tbody td{padding:8px 12px;border-bottom:1px solid var(--ln);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--w2)}
tbody tr.clickable{cursor:pointer}
td.n{text-align:right;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.mini{font-size:11.5px;color:var(--k4)}
.trunc{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pbar{height:4px;background:var(--ln);overflow:hidden;min-width:56px;display:block}
.pbar i{display:block;height:100%}

/* ===== ruta ===== */
.ruta{border:1px solid var(--ln)}
.rstep{display:flex;align-items:center;gap:14px;padding:12px 15px;border-bottom:1px solid var(--ln);background:var(--w)}
.rstep:last-child{border-bottom:0}
.rstep:hover{background:var(--w2)}
.rstep .ord{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--k4);width:18px;flex-shrink:0}
.rstep .rb{flex:1;min-width:0}
.rstep .rt{font-size:14px;font-weight:600;letter-spacing:-.015em}
.rstep .rs{font-size:11.5px;color:var(--k3);display:flex;gap:14px;flex-wrap:wrap;margin-top:2px}
.rstep .rs .mono{color:var(--k2)}
.rstep .rr{display:flex;align-items:center;gap:14px;flex-shrink:0}

/* ===== mapa ===== */
.mapwrap{position:relative;border:1px solid var(--ln);padding:16px;background:var(--w)}
.mapwrap svg.map{display:block;width:100%;height:auto;max-width:860px;margin:0 auto}
.bldg{cursor:pointer} .bldg:hover{opacity:.75}
.maplegend{display:flex;gap:16px;flex-wrap:wrap;margin-top:13px;padding-top:12px;border-top:1px solid var(--ln)}
.maplegend span{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--k3)}
.dominio{position:absolute;top:16px;right:16px;border:1px solid var(--k);background:var(--k);color:var(--w);
  padding:9px 14px;text-align:right;min-width:96px}
.dominio .dv{font-family:"IBM Plex Mono",monospace;font-weight:500;font-size:27px;line-height:1;color:var(--o)}
.dominio .dl{font-family:var(--lbl);font-size:8.5px;letter-spacing:.055em;
  text-transform:uppercase;opacity:.6;margin-top:3px}

/* ===== ficha finca ===== */
.ffhead{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--ln);
  padding:4px 0 16px;margin-bottom:0}
.ffhead .fft{flex:1;min-width:230px}
.ffhead h1{font-size:23px;font-weight:600;letter-spacing:-.028em}
.ffhead .ffm{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.kv{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid var(--ln);font-size:12.5px}
.kv:last-child{border-bottom:0}
.kv span{color:var(--k4);flex-shrink:0}
.kv b{font-weight:500;text-align:right}
.ring{position:relative}
.ring .rv{position:absolute;inset:0;display:grid;place-items:center;font-family:"IBM Plex Mono",monospace;
  font-weight:500;font-size:14px;line-height:1}

/* alzado */
/* ===== alzado de la finca ===== */
.alzado{display:flex;flex-direction:column;align-items:center;padding:16px 14px 12px}
.alz-svg{width:100%;max-width:340px;height:auto;display:block;overflow:visible}
.alz-u{cursor:pointer}
.alz-u rect,.alz-u line{transition:opacity .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .alz-u:hover rect:first-of-type{filter:brightness(.96)} }
.alz-u:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.alz-u.sel rect:first-of-type{filter:brightness(.94)}
.alz-legend{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:14px;
  font-size:11px;color:var(--k3)}
.alz-legend span{display:flex;align-items:center;gap:5px}
.alz-legend i{width:10px;height:10px;display:inline-block;flex-shrink:0}
.alz-pie{margin:9px 0 0;font-size:11.5px;color:var(--k4);text-align:center;max-width:300px;line-height:1.45}
/* la tarjeta no se estira para igualar la columna de al lado */
.grid.g2 > .card:has(.alzado){align-self:start}
.viv-f.sel td{background:var(--o-soft)}
.viv-f.sel .v-lab b{color:var(--o-ink)}

/* unidades */
.uni{display:flex;align-items:flex-start;gap:14px;padding:10px 15px;border-bottom:1px solid var(--ln)}
.uni:last-child{border-bottom:0}
.uni:hover{background:var(--w2)}
.uni .ul{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:12px;width:48px;flex-shrink:0}
.uni .uc{flex:1;min-width:0}
.uni .un{font-size:13px;font-weight:500}
.uni .uh{font-size:11.5px;color:var(--k3);margin-top:2px;line-height:1.45}
.uni .ug{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}

/* ===== modo puerta =====
   Estuvo en oscuro por el uso en la calle, pero rompía la coherencia con el
   resto. Se queda la ergonomía (dianas grandes, una sola mano) y se pasa al
   sistema claro. */
.overlay{position:fixed;inset:0;z-index:100;background:var(--w);display:flex;flex-direction:column;
  animation:mpIn .2s var(--ease-out) both;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);color:var(--k)}
.mp-top{display:flex;align-items:center;gap:13px;padding:13px 18px;border-bottom:1px solid var(--ln);flex-shrink:0}
.mp-top .mt{font-size:15px;font-weight:600;letter-spacing:-.02em}
.mp-top .ms{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.05em;color:var(--k4);margin-top:2px}
.mp-x{width:30px;height:30px;border:1px solid var(--ln2);color:var(--k2);display:grid;place-items:center;flex-shrink:0}
.mp-x svg{width:14px;height:14px;stroke:currentColor}
@media (hover:hover) and (pointer:fine){ .mp-x:hover{border-color:var(--k3);color:var(--k)} }
.mp-off{display:flex;align-items:center;gap:6px;font-family:var(--lbl);font-size:9.5px;
  letter-spacing:.055em;text-transform:uppercase;color:var(--o-ink);border:1px solid var(--o-line);
  background:var(--o-soft);padding:4px 9px;margin-left:auto}
.mp-off svg{stroke:currentColor}
.mp-prog{height:3px;background:var(--w3);flex-shrink:0}
.mp-prog i{display:block;height:100%;background:var(--o);transition:width .22s var(--ease-out)}
.mp-body{flex:1;overflow-y:auto;padding:0 0 24px;-webkit-overflow-scrolling:touch;background:var(--w)}
.mp-u{border-bottom:1px solid var(--ln)}
.mp-u.done{opacity:.45}
.mp-u.open{background:var(--w2)}
.mp-uh{display:flex;align-items:center;gap:14px;padding:15px 18px;width:100%;text-align:left}
@media (hover:hover) and (pointer:fine){ .mp-uh:hover{background:var(--w2)} }
.mp-uh .mul{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:15px;width:52px;flex-shrink:0;color:var(--o-ink)}
.mp-uh .mub{flex:1;min-width:0}
.mp-uh .mun{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-uh .muh{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--k4);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-uh .mur{flex-shrink:0;color:var(--ln2)}
.mp-uh .mur svg{width:14px;height:14px;stroke:currentColor}
.mp-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:0 18px 14px}
.mp-act{min-height:54px;background:var(--w);color:var(--k2);display:flex;align-items:center;
  justify-content:center;gap:8px;font-size:13px;font-weight:600;border:1px solid var(--ln2);
  transition:border-color .14s var(--ease-out),background .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .mp-act:hover{border-color:var(--k3);background:var(--w2)} }
.mp-act:active{background:var(--w3)}
.mp-act svg{width:16px;height:16px;stroke:currentColor}
.mp-act.good{border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}
/* va fuera de la rejilla, así que necesita su propio ancho y margen */
.mp-act.star{background:var(--o);color:var(--k);border-color:var(--o);min-height:50px;
  width:calc(100% - 36px);margin:0 18px 12px;gap:10px}
.mp-act.star .mp-act-sub{color:rgba(10,10,10,.6)}
@media (hover:hover) and (pointer:fine){ .mp-act.star:hover{background:#FDB94F;border-color:#FDB94F} }
.mp-dict{margin:0 18px 12px;display:flex;align-items:center;justify-content:center;gap:9px;min-height:46px;
  border:1px dashed var(--ln2);color:var(--k3);font-size:12.5px;width:calc(100% - 36px)}
.mp-dict svg{width:14px;height:14px;stroke:currentColor}
@media (hover:hover) and (pointer:fine){ .mp-dict:hover{border-color:var(--o);color:var(--o-ink)} }
.mp-heard{margin:0 18px 12px;padding:13px 15px;border:1px solid var(--o-line);background:var(--o-soft);
  font-size:13px;line-height:1.5}
.mp-heard .hl{display:block;font-family:var(--lbl);font-size:9px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--o-ink);margin-bottom:6px;font-weight:600}
.mp-heard .hq{color:var(--k2);font-style:italic}
.mp-heard .hf{display:flex;gap:5px;flex-wrap:wrap;margin-top:10px}
.mp-heard .hf b{font-family:"IBM Plex Mono",monospace;border:1px solid var(--o-line);color:var(--o-ink);
  font-size:10px;padding:2px 7px;background:var(--w)}
.mp-foot{flex-shrink:0;padding:12px 18px;border-top:1px solid var(--ln);background:var(--w2);
  display:flex;align-items:center;gap:22px}
.mp-stat{font-family:var(--lbl);font-size:9.5px;letter-spacing:.055em;text-transform:uppercase;
  color:var(--k4)}
.mp-stat b{display:block;font-size:19px;color:var(--k);font-weight:500;letter-spacing:-.01em}
.mp-done{background:var(--o);color:var(--k);font-weight:600;font-size:13px;padding:11px 20px;margin-left:auto}
@media (hover:hover) and (pointer:fine){ .mp-done:hover{background:#FDB94F} }
.mp-sum{text-align:center;padding:52px 24px}
.mp-sum .big{font-family:"IBM Plex Mono",monospace;font-size:52px;font-weight:500;color:var(--o-ink);line-height:1}
.mp-sum h2{font-size:20px;margin:12px 0 8px;font-weight:600}
.mp-sum p{color:var(--k3);font-size:13.5px;margin:0 auto;max-width:420px;line-height:1.55}
.mp-sumgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:26px auto;max-width:440px;
  border:1px solid var(--ln);background:var(--ln)}
.mp-sumgrid div{background:var(--w2);padding:14px 8px}
.mp-sumgrid b{display:block;font-family:"IBM Plex Mono",monospace;font-size:21px;font-weight:500}
.mp-sumgrid span{font-family:var(--lbl);font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}

/* ===== kanban ===== */
.kb{display:flex;gap:1px;overflow-x:auto;padding-bottom:14px;align-items:flex-start;background:var(--ln);
  border:1px solid var(--ln)}
.kbcol{flex:0 0 244px;background:var(--w);display:flex;flex-direction:column;max-height:66vh}
.kbh{padding:10px 12px;border-bottom:1px solid var(--ln);position:sticky;top:0;background:var(--w);z-index:2}
.kbh .kt{font-size:12px;font-weight:600;display:flex;align-items:center;gap:7px;letter-spacing:-.01em}
.kbh .kc{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--k4);margin-left:auto}
.kbh .ks{font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--k4);margin-top:4px;
  display:flex;justify-content:space-between;gap:8px}
.kbb{overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--w2)}
.kcard{background:var(--w);border:1px solid var(--ln);padding:10px;display:flex;flex-direction:column;
  gap:7px;cursor:pointer}
@media (hover:hover) and (pointer:fine){ .kcard:hover{border-color:var(--k3)} }
.kcard .kn{font-size:12.5px;font-weight:600;line-height:1.3;letter-spacing:-.015em}
.kcard .km{display:flex;justify-content:space-between;font-family:"IBM Plex Mono",monospace;
  font-size:10.5px;color:var(--k3)}
.kcard .age{height:2px;background:var(--ln)}
.kcard .age i{display:block;height:100%}
.kcard .next{font-size:11.5px;display:flex;align-items:center;gap:6px;padding-top:6px;
  border-top:1px solid var(--ln);color:var(--k3)}
.kcard .next svg{width:11px;height:11px;stroke:currentColor}
.kcard .next.none{color:var(--no);font-weight:600}

/* ===== muro de exclusivas ===== */
.muro{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(266px,1fr))}
.xcard{background:var(--w);border:1px solid var(--ln);display:flex;flex-direction:column;cursor:pointer}
@media (hover:hover) and (pointer:fine){ .xcard:hover{border-color:var(--k3)} }
.xphoto{height:96px;position:relative;background:var(--w3);border-bottom:1px solid var(--ln);
  display:flex;align-items:flex-end;justify-content:space-between;padding:9px 11px}
.xphoto::before{content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(135deg,transparent 0 9px,rgba(0,0,0,.028) 9px 10px)}
.xphoto .xp-price{position:relative;font-family:"IBM Plex Mono",monospace;font-weight:500;font-size:14px;
  background:var(--k);color:var(--w);padding:3px 8px}
.xphoto .xp-days{position:absolute;right:11px;top:9px;font-family:"IBM Plex Mono",monospace;font-size:10px;
  color:var(--k3);background:var(--w);padding:2px 7px;border:1px solid var(--ln)}
.xb{padding:12px;display:flex;flex-direction:column;gap:10px;flex:1}
.xt{display:flex;align-items:flex-start;gap:11px}
.xt .xn{flex:1;min-width:0;font-size:13.5px;font-weight:600;line-height:1.3;letter-spacing:-.018em}
.xt .xsub{font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--k4);font-weight:400;margin-top:3px}
.xstatus{display:flex;align-items:center;gap:8px}
.xstats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--ln);border:1px solid var(--ln)}
.xstats div{background:var(--w);padding:6px 3px;text-align:center}
.xstats b{display:block;font-family:"IBM Plex Mono",monospace;font-size:13px;font-weight:500}
.xstats span{font-family:var(--lbl);font-size:8.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}
.xdocs{display:flex;align-items:center;gap:8px;font-family:"IBM Plex Mono",monospace;font-size:10px;color:var(--k4)}
.xports{display:flex;gap:4px;flex-wrap:wrap}
.pchip{font-family:var(--lbl);font-size:9px;letter-spacing:.04em;padding:1px 6px;border:1px solid}
.pchip.live{color:var(--ok);border-color:var(--ok)}
.pchip.err{color:var(--no);border-color:var(--no);background:var(--no-soft)}
.pchip.off{color:var(--k4);border-color:var(--ln2)}

/* timeline */











/* diagnóstico */
.diag{display:flex;flex-direction:column}
.ditem{display:flex;gap:11px;font-size:13px;line-height:1.55;padding:10px 0;border-bottom:1px solid var(--ln)}
.ditem:last-child{border-bottom:0}
.ditem .dd{width:7px;height:7px;flex-shrink:0;margin-top:7px}
.ditem b{font-weight:600}
.foco{background:var(--k);color:var(--w);padding:15px 18px;margin-top:14px}
.foco .fl{font-family:var(--lbl);font-size:9.5px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--o)}
.foco p{margin:6px 0 0;font-size:14.5px;line-height:1.45;letter-spacing:-.01em}

/* funnel */
.funnel{display:flex;align-items:stretch;overflow-x:auto;border:1px solid var(--ln)}
.fnode{flex:1;min-width:92px;padding:12px 9px;text-align:center;border-right:1px solid var(--ln)}
.fnode:last-child{border-right:0}
.fnode b{display:block;font-family:"IBM Plex Mono",monospace;font-size:21px;font-weight:500;letter-spacing:-.02em}
.fnode span{font-family:var(--lbl);font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}
.farrow{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 7px;
  flex-shrink:0;border-right:1px solid var(--ln);background:var(--w2)}
.farrow .fp{font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600}
.farrow .ft{font-family:"IBM Plex Mono",monospace;font-size:8.5px;color:var(--k4)}

/* objetivos */
.goals{display:grid;gap:1px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));background:var(--ln);
  border:1px solid var(--ln)}
.goal{background:var(--w);padding:11px 13px}
.goal .gl{font-family:var(--lbl);font-size:9.5px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--k4)}
.goal .gv{font-family:"IBM Plex Mono",monospace;font-size:17px;margin:3px 0 6px;font-weight:500}
.goal .gv small{font-size:11px;color:var(--k4)}

/* matriz */
.mx{overflow-x:auto;border:1px solid var(--ln);background:var(--w)}
.mx table{min-width:880px}
.mx th.rot{font-size:9px;padding:8px 2px;text-align:center;width:40px}
.mx td.c{text-align:center;padding:4px 2px}
.mxd{width:22px;height:22px;display:inline-grid;place-items:center;font-family:"IBM Plex Mono",monospace;
  font-size:10px;font-weight:600;cursor:pointer;border:1px solid transparent}
.mxd.ok{background:var(--ok-soft);color:var(--ok)}
.mxd.falta{background:var(--no-soft);color:var(--no)}
.mxd.pend{background:var(--o-soft);color:var(--o-ink)}
.mxd.cad{background:var(--o-soft);color:var(--o-ink);border-color:var(--o)}
.mxd.na{background:var(--w2);color:var(--ln2)}

/* agenda */
.week{display:grid;grid-template-columns:52px repeat(6,1fr);gap:1px;min-width:680px;background:var(--ln);
  border:1px solid var(--ln)}
.week .wh{background:var(--w);text-align:center;font-family:var(--lbl);font-size:9.5px;
  letter-spacing:.055em;text-transform:uppercase;color:var(--k4);padding:7px 0}
.week .wt{background:var(--w);color:var(--k4);text-align:right;padding:6px 7px 0 0;
  font-family:"IBM Plex Mono",monospace;font-size:9.5px}






/* pedidos */
/* Score de pedido: número sobre 100 con su semáforo. Una letra no dice
   si hay que llamar hoy; un 82 en verde, sí. */
.score{display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 6px;
  font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:600;
  border:1px solid var(--ln);background:var(--w2);color:var(--k)}
.score i{width:7px;height:7px;flex-shrink:0}
.score.sem-verde{background:var(--ok-soft);border-color:var(--ok-soft);color:var(--ok)}
.score.sem-verde i{background:var(--ok)}
.score.sem-ambar{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.score.sem-ambar i{background:var(--o)}
.score.sem-rojo{background:var(--no-soft);border-color:var(--no-soft);color:var(--no)}
.score.sem-rojo i{background:var(--no)}

/* toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:200;background:var(--k);
  animation:toastIn .2s var(--ease-out) both;
  color:var(--w);padding:11px 18px;font-size:13px;display:flex;align-items:center;gap:14px;
  max-width:calc(100vw - 48px);border-left:2px solid var(--o)}
.toast .u{font-family:var(--lbl);font-size:10.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--o);cursor:pointer}

.protonote{margin:30px 0 0;padding:12px 16px;border:1px solid var(--ln);border-left:2px solid var(--o);
  font-size:11.5px;color:var(--k3);line-height:1.55;background:var(--w2)}
.protonote b{color:var(--k);font-weight:600}
.empty{text-align:center;padding:48px 20px;color:var(--k4)}

/* ===== PC primero; tablet/móvil provisional ===== */
@media (max-width:1180px){ :root{--rail:60px}
  .rail-item{justify-content:center;padding:10px 0}
  .rail-item .rl{display:none}   /* el contador no se esconde: se va a la esquina, más abajo */
  .rail-logo{justify-content:center;padding:15px 0}
  .logo-full{display:none} .logo-mark{display:block}
}
@media (max-width:900px){
  .rail{position:fixed;bottom:0;left:0;right:0;width:100%;height:auto;flex-direction:row;z-index:50;
    border-right:0;border-top:1px solid var(--ln);padding-top:0;padding-bottom:env(safe-area-inset-bottom,0px)}
  .rail-logo{display:none}
  .rail-nav{flex-direction:row;padding:0;overflow-x:auto;width:100%}
  .rail-item{flex:0 0 auto;min-width:56px;padding:11px 8px}
  .rail-item.on::before{left:0;right:0;top:0;bottom:auto;width:auto;height:2px}
  #app{flex-direction:column}
  .view{padding:0 16px 88px}
  .pulso{margin:0 -16px;padding:14px 16px 10px}
  .search{display:none}
  .mp-acts{grid-template-columns:repeat(2,1fr)}
  .mp-act.star{grid-column:span 2}
}

@keyframes mpIn{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.empty svg{margin:0 auto;stroke:var(--ln2)}
.band .bn{display:none}
.acard-rest{background:var(--w2)}
.acard-rest .acard-w{color:var(--k4);font-size:12px}
.acard-rest{background:var(--w2)}
.acard-rest .acard-w{color:var(--k4);font-size:12px;border-color:var(--ln)}



/* ===== Leaflet 1.9.4 (BSD-2), incrustado: la CSP bloquea hojas externas ===== */
/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
	background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
	max-width: none !important;
	max-height: none !important;
	}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
	max-width: none !important;
	max-height: none !important;
	width: auto;
	padding: 0;
	}

.leaflet-container img.leaflet-tile {
	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
	mix-blend-mode: plus-lighter;
}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	behavior: url(#default#VML);
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	cursor:         grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	cursor:         grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #ddd;
	outline-offset: 1px;
	}
.leaflet-container a {
	color: #0078A8;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-size: 0.75rem;
	line-height: 1.5;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	background-image: url(images/layers.png);
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-image: url(images/layers-2x.png);
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	font-size: 13px;
	font-size: 1.08333em;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
	background-image: url(images/marker-icon.png);
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.8);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	line-height: 1.4;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
	text-decoration: underline;
	}
.leaflet-attribution-flag {
	display: inline !important;
	vertical-align: baseline !important;
	width: 1em;
	height: 0.6669em;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	white-space: nowrap;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	background: rgba(255, 255, 255, 0.8);
	text-shadow: 1px 1px #fff;
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 24px 13px 20px;
	line-height: 1.3;
	font-size: 13px;
	font-size: 1.08333em;
	min-height: 1px;
	}
.leaflet-popup-content p {
	margin: 17px 0;
	margin: 1.3em 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-top: -1px;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;
	pointer-events: auto;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	border: none;
	text-align: center;
	width: 24px;
	height: 24px;
	font: 16px/24px Tahoma, Verdana, sans-serif;
	color: #757575;
	text-decoration: none;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
	color: #585858;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	-ms-zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-interactive {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}

/* Printing */

@media print {
	/* Prevent printers from removing background-images of controls. */
	.leaflet-control {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		}
	}

/* ===== mapa real (Leaflet) ===== */
.mapa-barra{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:11px}
.mapa-real{height:clamp(420px,64vh,720px);width:100%;border:1px solid var(--ln);background:var(--w2)}
.pin-wrap{background:none;border:0}
.pin{width:34px;height:34px;border:2.5px solid #fff;color:#fff;font-family:"IBM Plex Mono",monospace;
  font-size:11px;font-weight:600;display:grid;place-items:center;cursor:pointer;
  border-radius:50%;box-shadow:0 2px 7px rgba(0,0,0,.4)}
.pin.toca{border-color:#0A0A0A;border-style:dashed}
.pin:hover{outline:2px solid #0A0A0A;z-index:500}
.mapa-leyenda-zonas{display:flex;gap:16px;flex-wrap:wrap;margin-top:11px}
.mapa-leyenda-zonas span{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--k2)}
.mapa-leyenda-zonas i{width:11px;height:11px;display:inline-block;opacity:.85}
.mapa-leyenda-zonas b{color:var(--k4);font-weight:500}
/* ===== editor de zonas =====
   Va encima del mapa, a la izquierda, porque mientras se arrastra una esquina
   hay que ver a la vez la forma y el número de metros que va marcando. */
.mapa-zona{position:relative}
.ez{position:absolute;left:14px;top:14px;z-index:6;width:278px;max-height:calc(100% - 28px);
  display:flex;flex-direction:column;background:var(--w);border:1px solid var(--ln2);
  box-shadow:var(--sh-alto)}
.ez-h{padding:11px 13px;border-bottom:1px solid var(--ln)}
.ez-h b{display:block;font-size:13px;font-weight:700}
.ez-h .mini{display:block;margin-top:3px;color:var(--k4);line-height:1.4}
.ez-lista{overflow:auto;flex:1}
.ez-z{padding:8px 13px;border-bottom:1px solid var(--ln);cursor:pointer}
.ez-z.sel{background:var(--w3)}
.ez-z-t{display:flex;align-items:center;gap:8px}
.ez-z-t i{width:11px;height:11px;flex-shrink:0}
.ez-z-t b{font-size:12.5px;font-weight:600}
.ez-m2{margin-left:auto;font-size:11.5px;color:var(--k3)}
.ez-z-b{display:flex;align-items:center;gap:7px;margin-top:6px}
.ez-z-b select{max-width:118px;font-size:11.5px;padding:3px 6px}
.ez-del{color:var(--no)}
.ez-aviso{display:flex;gap:8px;align-items:flex-start;padding:9px 13px;
  background:var(--o-soft);border-top:1px solid var(--o-line);
  font-size:11.5px;color:var(--o-ink);line-height:1.45}
.ez-aviso svg{flex-shrink:0;margin-top:1px}
.ez-pie{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 13px;
  border-top:1px solid var(--ln)}
@media (max-width:900px){ .ez{position:static;width:auto;max-height:none;margin-bottom:11px} }

/* ===== el mapa de Google, con lo nuestro encima =====
   El callejero lo pone Google; las zonas, los portales, sus globos y los
   números de zona los dibujamos nosotros en una capa que no recibe clics, para
   que el mapa siga arrastrándose por debajo con normalidad. */
.gm-base{position:absolute;inset:0}
.gm-capa{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.gm-lienzo{position:absolute;left:0;top:0}
.gm-zona-num{position:absolute;left:0;top:0;display:flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;background:var(--zc);color:#fff;
  font-family:"Nunito","Figtree",sans-serif;font-size:15px;font-weight:800;
  box-shadow:0 2px 6px rgba(0,0,0,.35);border:2px solid #fff;will-change:transform}
.gm-globo{position:absolute;max-width:290px;background:var(--w);color:var(--k);
  border:1px solid var(--ln2);box-shadow:var(--sh);padding:6px 9px;font-size:12px;
  line-height:1.45;z-index:3}
.gm-globo i{color:var(--k4);font-style:normal}
/* Google mete su propia tipografía y su propio azul en los rótulos de los
   controles; se dejan con la letra de la casa para que no canten. */
.gm-base .gm-style,
.gm-base .gm-style-cc span{font-family:"Figtree",system-ui,-apple-system,sans-serif}

/* ===== el mapa, con la misma piel que el resto del CRM =====
   El callejero lo dibuja MapLibre en un canvas; todo lo que va encima -fincas,
   zonas, globos y controles- sigue siendo de Leaflet, así que se le da el
   mismo tratamiento que a cualquier tarjeta: crema, esquinas rectas y la
   tipografía de la casa. */
.leaflet-container{font-family:"Figtree",system-ui,-apple-system,sans-serif;background:var(--w2)}
.leaflet-gl-layer canvas{outline:none}
.leaflet-tooltip{font-size:12px;border:1px solid var(--ln2);background:var(--w);color:var(--k);
  border-radius:0;padding:6px 9px;box-shadow:var(--sh);line-height:1.45}
.leaflet-tooltip i{color:var(--k4);font-style:normal}
.leaflet-tooltip-top:before{border-top-color:var(--ln2)}
.leaflet-tooltip-bottom:before{border-bottom-color:var(--ln2)}
.leaflet-control-attribution{font-size:9.5px;background:rgba(251,246,238,.86);color:var(--k4);
  border:1px solid var(--ln);border-right:0;border-bottom:0;padding:2px 7px}
.leaflet-control-attribution a{color:var(--k3);text-decoration:none}
/* los dos botones de zoom: los mismos que los chips de la barra de arriba */
.leaflet-bar{border:0;box-shadow:var(--sh)}
.leaflet-bar a,.leaflet-bar a:hover{border-radius:0;color:var(--k2);background:var(--w);
  border:1px solid var(--ln);width:30px;height:30px;line-height:28px;font-size:17px;font-weight:600}
.leaflet-bar a:first-child{border-bottom:0}
.leaflet-bar a:hover{background:var(--w3);color:var(--k);border-color:var(--ln2)}
.leaflet-bar a.leaflet-disabled{background:var(--w2);color:var(--ln2)}
.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:28px}
.pin-etq{display:inline-block;background:var(--k);color:#fff;font-family:var(--lbl);
  font-size:9.5px;font-weight:600;padding:1px 5px;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.4)}
td select{font:inherit;font-size:12.5px;border:1px solid var(--ln2);background:var(--w);
  padding:4px 7px;color:var(--k);max-width:180px}

/* ===== Modo Puerta: tipos de noticia y marcas ===== */
.mp-act.star{flex-direction:column;gap:1px;min-height:54px}
.mp-act-sub{font-family:var(--lbl);font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;opacity:.65;font-weight:500}
.mp-marcas{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:11px 18px 14px}
.mp-marcas .ml{color:var(--k4)}
.mp-marca{border:1px solid var(--ln2);color:var(--k2);font-size:11.5px;padding:6px 11px;background:var(--w)}
@media (hover:hover) and (pointer:fine){ .mp-marca:hover{border-color:var(--k3);color:var(--k)} }
.mp-marca.on{background:var(--o);border-color:var(--o);color:var(--k);font-weight:600}
.mp-tipos{padding:0 18px 14px}
.mp-tipos-h{display:flex;align-items:center;justify-content:space-between;padding:4px 0 9px}
.mp-tipos-h .ml{color:var(--o-ink)}
.mp-volver{display:flex;align-items:center;gap:6px;color:var(--k3);font-size:12px}
@media (hover:hover) and (pointer:fine){ .mp-volver:hover{color:var(--k)} }
.mp-tipos-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--ln);border:1px solid var(--ln)}
.mp-tipo{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:13px;
  background:var(--w);color:var(--k);text-align:left;min-height:66px;
  transition:background .14s var(--ease-out)}
.mp-tipo svg{stroke:var(--o-ink);margin-bottom:2px}
@media (hover:hover) and (pointer:fine){ .mp-tipo:hover{background:var(--o-soft)} }
.mp-tipo:active{background:var(--o)}
.mt-l{font-size:13px;font-weight:600}
.mt-n{font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}
.mp-sumtipos{margin:16px auto 0;max-width:440px}
.mp-sumtipos > div{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:6px}
@media (max-width:640px){ .mp-tipos-grid{grid-template-columns:1fr} }

/* ===== captación del comercial ===== */
.grafcard .card-h{align-items:flex-start;padding-bottom:10px}
.grafcard .card-b{padding:10px 14px 12px}
.graf{width:100%;height:auto;display:block}
.gc-t{display:flex;flex-direction:column;gap:1px;min-width:0}
.gc-t h3{font-size:13.5px}
.gc-t .sub{margin:0}
.gc-n{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.gc-n b{font-size:22px;font-weight:500;letter-spacing:-.03em}
.gc-p{font-size:11.5px;font-weight:600;padding-left:6px;border-left:1px solid var(--ln)}
.gc-bar{display:block;height:3px;background:var(--w3);margin-top:8px}
.gc-bar i{display:block;height:100%}
.ratios{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;
  background:var(--ln);border:1px solid var(--ln)}
.ratio{background:var(--w);padding:11px 13px}
.ratio .rv{display:flex;align-items:baseline;gap:7px;margin:3px 0 6px}
.ratio .rv b{font-size:16px}
.objfila{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.objring{flex-shrink:0;text-align:center}
@media (max-width:700px){ .objfila{gap:14px} .objring{margin:0 auto} }

/* ===== panel lateral ===== */
/* ===== panel lateral =====
   Faltaba por completo la regla del contenedor, así que el panel se pintaba
   como un bloque normal al final de la página, fuera de la pantalla: se
   abría de verdad pero no se veía, y parecía que los botones no hacían nada. */
.panel{position:fixed;top:0;right:0;bottom:0;width:min(430px,94vw);z-index:300;
  background:var(--w);border-left:1px solid var(--ln2);
  box-shadow:-16px 0 44px rgba(10,10,10,.13);
  display:flex;flex-direction:column;
  animation:panel-entra .24s var(--ease-out)}
@keyframes panel-entra{from{transform:translateX(18px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){ .panel{animation:none} }
.panel-h{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ln)}
.panel-t{font-size:15px;font-weight:600;letter-spacing:-.02em;line-height:1.25}
.panel-b{flex:1;overflow-y:auto;padding:12px 16px 18px}
.panel-f{display:flex;gap:7px;padding:12px 16px;border-top:1px solid var(--ln);background:var(--w2)}
.panel-sec{margin:16px 0 6px;padding-top:11px;border-top:1px solid var(--ln)}
.panel-ring{display:flex;align-items:center;gap:15px;padding:2px 0 10px}
.panel-big{font-size:17px;font-weight:600;letter-spacing:-.02em}
.panel-cita{margin:0;padding:11px 13px;background:var(--w2);border-left:2px solid var(--ln2);
  font-size:12.5px;line-height:1.55;color:var(--k2)}
.panel-b .lnk{font-size:12px;font-weight:600;color:var(--o-ink);display:inline-flex;align-items:center;gap:4px}
.panel-b select{font:inherit;font-size:12px;border:1px solid var(--ln2);background:var(--w);padding:3px 6px;color:var(--k)}
.panel-foto{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--ln);border-bottom:1px solid var(--ln)}
.panel-acc{display:flex;gap:7px;padding:11px 16px;border-bottom:1px solid var(--ln)}
.panel-acc .btn{text-decoration:none}
.foto-ph{background:var(--w2);aspect-ratio:1.5;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:7px;color:var(--k4)}
.foto-ph svg{stroke:var(--ln2)}
.sync .blob{width:6px;height:6px;background:var(--ok);border-radius:50%}

/* ===== modal ===== */
.modal{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center;
  padding:6vh 16px 16px;overflow-y:auto}
.modal-bg{position:fixed;inset:0;background:rgba(10,10,10,.34)}
.modal-caja{position:relative;background:var(--w);border:1px solid var(--ln2);width:min(560px,100%);
  box-shadow:0 30px 70px -30px rgba(0,0,0,.5);animation:modalIn .19s var(--ease-out) both}
@keyframes modalIn{from{opacity:0;transform:translateY(-8px) scale(.99)}to{opacity:1;transform:none}}
.modal-h{display:flex;align-items:flex-start;gap:10px;padding:15px 18px;border-bottom:1px solid var(--ln)}
.modal-b{padding:16px 18px}
.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:13px 18px;border-top:1px solid var(--ln);background:var(--w2)}
.campos{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.campo{display:flex;flex-direction:column;gap:5px}
.campo.ancho{grid-column:span 2}
.campo input,.campo select,.campo textarea{font:inherit;font-size:13px;color:var(--k);background:var(--w);
  border:1px solid var(--ln2);padding:8px 10px;width:100%;border-radius:0}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:2px solid var(--o);outline-offset:-1px;border-color:var(--o)}
.campo input.malo,.campo select.malo{border-color:var(--no);background:var(--no-soft)}
.campo textarea{resize:vertical;font-family:inherit}
.modal-nota{margin:14px 0 0;padding:10px 12px;background:var(--o-soft);border-left:2px solid var(--o);
  font-size:12px;color:var(--o-ink);line-height:1.5}
.modal-error{margin:12px 0 0;padding:9px 12px;background:var(--no-soft);border-left:2px solid var(--no);
  font-size:12.5px;color:var(--no);line-height:1.5}
.nuevo-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--ln);border:1px solid var(--ln)}
.nuevo-op{display:flex;align-items:center;gap:11px;padding:15px 16px;background:var(--w);font-size:13.5px;
  font-weight:500;text-align:left}
.nuevo-op svg{stroke:var(--o-ink)}
@media (hover:hover) and (pointer:fine){ .nuevo-op:hover{background:var(--o-soft)} }

/* ===== buscador ===== */
.buscador{width:min(620px,100%)}
.buscador-h{display:flex;align-items:center;gap:11px;padding:13px 16px;border-bottom:1px solid var(--ln)}
.buscador-h svg{stroke:var(--k4)}
.buscador-h input{flex:1;font:inherit;font-size:15px;border:0;outline:0;background:transparent;color:var(--k)}
.buscador-res{max-height:52vh;overflow-y:auto}
.q-item{display:grid;grid-template-columns:96px 1fr;gap:3px 12px;width:100%;text-align:left;
  padding:10px 16px;border-bottom:1px solid var(--ln);align-items:baseline}
.q-item:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){ .q-item:hover{background:var(--o-soft)} }
.q-tipo{grid-row:span 2}
.q-txt{font-size:13.5px;font-weight:600;letter-spacing:-.015em}
.q-item .mini{grid-column:2}

/* ===== ficha de piso ===== */
.ffprecio{text-align:right;flex-shrink:0}
.ffprecio .kpi-val{font-size:26px}
.galeria{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--ln);border:1px solid var(--ln)}
.galeria .foto-ph{aspect-ratio:1.35}
.galeria .foto-ph.mas{background:var(--w3)}
.galeria .foto-ph.mas b{font-size:17px;color:var(--k3)}
.galeria-pie{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px}
.tile-nota{display:block;margin-top:2px}
.mx-col1{position:sticky;left:0;background:var(--w);z-index:1;min-width:210px;box-shadow:1px 0 0 var(--ln)}
thead .mx-col1{background:var(--w2)}
@media (max-width:1100px){ .galeria{grid-template-columns:repeat(3,1fr)} }
@media (max-width:560px){ .galeria{grid-template-columns:repeat(2,1fr)} .ffprecio{text-align:left}
  .campos,.nuevo-grid{grid-template-columns:1fr} .campo.ancho{grid-column:span 1} }

/* ===== documentos: tabla visual ===== */
.doc-lista{border:1px solid var(--ln);background:var(--w)}
.doc-cab,.doc-fila{display:grid;grid-template-columns:minmax(150px,1.1fr) 116px minmax(180px,1.6fr) 118px;
  gap:18px;align-items:center;width:100%;text-align:left;padding:11px 16px;border-bottom:1px solid var(--ln)}
.doc-cab{background:var(--w2);padding-top:8px;padding-bottom:8px}
.doc-cab span{font-family:var(--lbl);font-size:9.5px;letter-spacing:.055em;
  text-transform:uppercase;color:var(--k4)}
.doc-cab span:last-child,.doc-fila .doc-cifra{text-align:right;justify-content:flex-end}
.doc-fila:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){ .doc-fila:hover{background:var(--w2)} }
.doc-nom{display:flex;align-items:center;gap:8px;min-width:0}
.doc-t{font-size:13.5px;font-weight:600;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.doc-quien{font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-barra{display:flex;height:18px;gap:1px;overflow:hidden;background:var(--ln)}
.doc-barra i{display:block;min-width:0}
.b-ok{background:var(--ok)} .b-pend{background:var(--o)}
.b-cad{background:var(--o);opacity:.45} .b-falta{background:var(--no)} .b-na{background:var(--w3)}
.doc-chips{display:flex;gap:5px;flex-wrap:wrap}
.doc-chips .bdg{cursor:pointer}
.doc-cifra{display:flex;align-items:center;gap:9px}
.doc-cifra b{font-size:15px;font-weight:600;font-family:"IBM Plex Mono",monospace}
.doc-prop{cursor:default}
.doc-leyenda{display:flex;gap:15px;flex-wrap:wrap;margin:11px 0 0}
.doc-leyenda span{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--k3)}
.doc-leyenda i{width:11px;height:11px;display:inline-block}
.doc-vista{aspect-ratio:1.5;background:var(--w2);border:1px solid var(--ln);display:flex;
  flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--k4);margin-bottom:14px}
.doc-vista svg{stroke:var(--ln2)}
.doc-vista.falta{border-style:dashed;border-color:var(--no);background:var(--no-soft)}
.doc-vista.falta svg{stroke:var(--no)}
@media (max-width:900px){
  .doc-cab{display:none}
  .doc-fila{grid-template-columns:1fr;gap:8px}
  .doc-fila .doc-cifra{justify-content:flex-start}
}
.kbh .conv{font-weight:600}
.reg-acts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--ln);border:1px solid var(--ln)}
.reg-act{display:flex;align-items:center;gap:9px;padding:11px 12px;background:var(--w);
  font-size:12.5px;font-weight:600;text-align:left}
.reg-act svg{stroke:var(--o-ink)}
.reg-act:hover{background:var(--o-soft)}
.reg-tipos{display:grid;grid-template-columns:1fr;gap:1px;background:var(--ln);border:1px solid var(--ln)}
.reg-tipo{display:flex;align-items:center;gap:9px;padding:9px 12px;background:var(--w);
  font-size:12.5px;text-align:left}
.reg-tipo svg{stroke:var(--k4)}
.reg-tipo:hover{background:var(--o-soft)}
.reg-tipo:hover svg{stroke:var(--o-ink)}
.reg-marcas{display:flex;gap:6px;flex-wrap:wrap}
.reg-marcas .bdg{cursor:pointer}
.uni .btn{flex-shrink:0;align-self:center}
.mapa-sep{width:1px;height:20px;background:var(--ln2);margin:0 3px}
.sello{border:1px solid var(--ln);padding:3px 7px;color:var(--k4);white-space:nowrap;flex-shrink:0}
/* En portátil no caben todos: lo primero que sobra es el sello de versión, y
   después el rótulo del conmutador de demostración. */
@media (max-width:1480px){ .topbar .sello{display:none} }
@media (max-width:1560px){ .demoswitch .dl{display:none} .demoswitch{padding-left:3px} }
@media (max-width:1180px){ .topbar .sync{display:none} }

/* ===== línea de tiempo por tramos de urgencia ===== */
.tl2{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--ln)}
.tl2-col{background:var(--w);display:flex;flex-direction:column;min-width:0}
.tl2-h{padding:12px 13px 11px;border-bottom:1px solid var(--ln);display:flex;
  flex-direction:column;gap:2px}
.tl2-col.urge .tl2-h{background:var(--o-soft)}
.tl2-col:first-child .tl2-h{background:var(--no-soft)}
.tl2-t{font-size:13.5px;font-weight:600;letter-spacing:-.015em}
.tl2-n{display:flex;align-items:baseline;gap:7px;margin-top:4px}
.tl2-n b{font-size:19px;font-weight:500}
.tl2-h .bdg{align-self:flex-start;margin-top:5px}
.tl2-b{padding:8px;display:flex;flex-direction:column;gap:6px;
  max-height:none;overflow:visible}
.tl2-item{display:grid;grid-template-columns:auto 1fr;gap:2px 9px;width:100%;text-align:left;
  padding:8px 10px;border:1px solid var(--ln);border-left-width:3px;background:var(--w)}
.tl2-item.verde{border-left-color:var(--ok)}
.tl2-item.ambar{border-left-color:var(--o)}
.tl2-item.rojo{border-left-color:var(--no);background:var(--no-soft)}
@media (hover:hover) and (pointer:fine){ .tl2-item:hover{border-color:var(--k3);border-left-width:3px} }
.tl2-dias{grid-row:span 2;align-self:center;font-size:13px;font-weight:600;color:var(--k3);
  min-width:30px;text-align:right}
.tl2-item.rojo .tl2-dias{color:var(--no)}
.tl2-dir{font-size:12.5px;font-weight:600;line-height:1.3;letter-spacing:-.01em;
  overflow-wrap:anywhere}
.tl2-meta{display:flex;align-items:baseline;gap:8px}
.tl2-meta .mono{font-size:11.5px;color:var(--k3)}
.tl2-vacio{padding:14px 4px;text-align:center}
@media (max-width:1100px){ .tl2{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:640px){ .tl2{grid-template-columns:1fr} }

/* ===== barra de filtros ===== */
.filtros{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;padding:11px 13px;
  border:1px solid var(--ln);background:var(--w2);margin-bottom:12px}
.filtro{display:flex;flex-direction:column;gap:3px;min-width:0}
.filtro select{font:inherit;font-size:12.5px;border:1px solid var(--ln2);background:var(--w);
  padding:5px 8px;color:var(--k);max-width:170px}
.filtro select:focus{outline:2px solid var(--o);outline-offset:-1px}
.filtro-busca{display:flex;align-items:center;gap:7px;border:1px solid var(--ln2);background:var(--w);
  padding:5px 9px;min-width:190px}
.filtro-busca svg{stroke:var(--k4)}
.filtro-busca input{font:inherit;font-size:12.5px;border:0;outline:0;background:transparent;
  color:var(--k);width:100%}
.filtro-cuenta{white-space:nowrap}

/* ===== listas ricas (ofertas, visitas) ===== */
.lista-rica{border:1px solid var(--ln);background:var(--w)}
.lr-fila{display:grid;grid-template-columns:minmax(170px,1.1fr) 130px minmax(220px,1.7fr) 140px;
  gap:16px;align-items:center;width:100%;text-align:left;padding:12px 15px;
  border-bottom:1px solid var(--ln);border-left:3px solid var(--ln2);background:var(--w)}
.lr-fila:last-child{border-bottom:0}
.lr-fila.sem-verde{border-left-color:var(--ok)}
.lr-fila.sem-ambar{border-left-color:var(--o)}
.lr-fila.sem-rojo{border-left-color:var(--no)}
.lr-fila.sem-azul{border-left-color:var(--in)}
@media (hover:hover) and (pointer:fine){ .lr-fila:hover{background:var(--w2)} }
.lr-quien{display:flex;flex-direction:column;gap:2px;min-width:0}
.lr-t{font-size:13.5px;font-weight:600;letter-spacing:-.015em;line-height:1.3;overflow-wrap:anywhere}
.lr-importe{display:flex;flex-direction:column;gap:3px}
.lr-importe b{font-size:15px;font-weight:600}
.lr-barra{display:block;height:4px;background:var(--ln);overflow:hidden}
.lr-barra i{display:block;height:100%;background:var(--o)}
.lr-cuando{display:flex;flex-direction:column;gap:1px}
.lr-cuando b{font-size:15px;font-weight:600}
.lr-estado,.lr-res{display:flex;flex-direction:column;gap:5px;align-items:flex-start;min-width:0}
.lr-cita{font-size:12px;color:var(--k2);line-height:1.45;border-left:2px solid var(--ln2);
  padding-left:9px;overflow-wrap:anywhere}
.lr-fin{display:flex;align-items:center;gap:8px;justify-content:flex-end}
.lr-alerta{color:var(--no);font-weight:600}
@media (max-width:1000px){
  .lr-fila{grid-template-columns:1fr;gap:9px}
  .lr-fin{justify-content:flex-start}
}

/* ===== informe de valoración ===== */
.overlay.informe{background:var(--w3);color:var(--k)}
.inf-barra{display:flex;align-items:center;gap:13px;padding:11px 18px;background:var(--k);
  color:#fff;flex-shrink:0}
.inf-barra .mt{font-size:14.5px;font-weight:600}
.inf-barra .ms{font-family:"IBM Plex Mono",monospace;font-size:10px;color:rgba(255,255,255,.55)}
.inf-scroll{flex:1;overflow-y:auto;padding:26px 16px 60px}
.inf-hoja{background:#fff;max-width:820px;margin:0 auto;padding:46px 52px 40px;
  border:1px solid var(--ln);color:#111}
.inf-cab{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  padding-bottom:20px;border-bottom:2px solid var(--o)}
.inf-fecha{text-align:right;line-height:1.6}
.inf-h1{font-size:25px;font-weight:600;letter-spacing:-.025em;margin:26px 0 4px}
.inf-sub{margin:0;font-size:13px;color:#555}
.inf-valor{margin:26px 0;padding:22px 24px;background:var(--o-soft);border-left:3px solid var(--o)}
.inf-cifra{font-family:"IBM Plex Mono",monospace;font-size:38px;font-weight:600;letter-spacing:-.03em;
  line-height:1.1;margin:4px 0 8px}
.inf-horquilla{font-size:14px;margin-bottom:4px}
.inf-m2{font-size:12.5px;color:#555}
.inf-h2{font-size:16px;font-weight:600;letter-spacing:-.02em;margin:30px 0 8px;
  padding-bottom:6px;border-bottom:1px solid var(--ln)}
.inf-p{font-size:13.5px;line-height:1.65;margin:0 0 12px;color:#222}
.inf-tabla{width:100%;border-collapse:collapse;font-size:12.5px;margin:12px 0 4px}
.inf-tabla th{text-align:left;padding:7px 9px;border-bottom:1.5px solid #111;
  font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase}
.inf-tabla td{padding:7px 9px;border-bottom:1px solid var(--ln)}
.inf-tabla tr.inf-destaca td{background:var(--o-soft);font-weight:600}
.inf-aviso{margin:20px 0;padding:14px 16px;background:#FBECEC;border-left:3px solid var(--no);
  font-size:13.5px;line-height:1.6}
.inf-lista{font-size:13.5px;line-height:1.7;padding-left:20px;margin:10px 0}
.inf-lista li{margin-bottom:5px}
.inf-pie{display:flex;justify-content:space-between;gap:24px;margin-top:34px;padding-top:16px;
  border-top:1px solid var(--ln);font-size:12px;line-height:1.6}
.inf-pie .ml{max-width:330px;text-align:right;text-transform:none;letter-spacing:0;font-size:10.5px}

@media print{
  .rail,.topbar,.no-print,#panel,#modal,#toast{display:none!important}
  .overlay.informe{position:static;background:#fff}
  .inf-scroll{overflow:visible;padding:0}
  .inf-hoja{border:0;max-width:none;padding:0}
  .inf-tabla{page-break-inside:avoid}
  .inf-h2{page-break-after:avoid}
  @page{margin:16mm}
}
.doc-fila2{grid-template-columns:minmax(180px,1.1fr) minmax(190px,1.3fr) minmax(190px,1.3fr) 190px}
.doc-grupo{display:flex;flex-direction:column;gap:5px;min-width:0}
.chip-doc{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:11px;
  font-weight:500;border:1px solid var(--ln);background:var(--w);white-space:nowrap}
.chip-doc svg{stroke:currentColor}
.chip-doc.ok{color:var(--ok);border-color:var(--ok-soft);background:var(--ok-soft)}
.chip-doc.falta{color:var(--no);border-color:var(--no-soft);background:var(--no-soft)}
.chip-doc.pend{color:var(--o-ink);border-color:var(--o-line);background:var(--o-soft)}
.chip-doc:hover{border-color:currentColor}
.doc-acc{display:flex;align-items:center;gap:9px;justify-content:flex-end;flex-wrap:wrap}
.pedir-resumen{border:1px solid var(--ln);background:var(--w2);padding:9px 12px;margin-bottom:14px}
.pedir-resumen .kv b{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:1000px){ .doc-fila2{grid-template-columns:1fr} .doc-acc{justify-content:flex-start} }
.publi-fila{grid-template-columns:minmax(190px,1.2fr) minmax(210px,1fr) minmax(170px,1fr) 150px}
.publi-portales{display:flex;gap:5px;flex-wrap:wrap}
@media (max-width:1000px){ .publi-fila{grid-template-columns:1fr} }

/* ===== agenda: color por tipo, contorno hasta confirmar ===== */
.week .wc{background:var(--w);min-height:34px;padding:4px 7px;font-size:11.5px;font-weight:500;
  overflow:hidden;line-height:1.3;border-left:3px solid transparent}
.wc-t{display:block;overflow:hidden;text-overflow:ellipsis}
.week .wc.sigue .wc-t{display:none}
.week .ev-pz{--ev:var(--k)}
.week .ev-vis{--ev:var(--in)}
.week .ev-tas{--ev:var(--o-ink)}
.week .ev-sug{--ev:var(--k4)}
.week .wc.propuesta{background:var(--w);border-left-color:var(--ev);color:var(--ev);
  box-shadow:inset 0 0 0 1px var(--ln)}
.week .wc.firme{background:color-mix(in srgb, var(--ev) 12%, var(--w));
  border-left-color:var(--ev);color:var(--ev);font-weight:600}
.week .wc.firme.ev-pz{background:var(--k);color:var(--w);border-left-color:var(--k)}
.week .wc.sigue{border-top:0}
.ley{width:11px;height:11px;display:inline-block;border-left:3px solid var(--ev);
  background:color-mix(in srgb, var(--ev) 14%, #fff)}
.ley.ev-pz{--ev:var(--k)} .ley.ev-vis{--ev:var(--in)}
.ley.ev-tas{--ev:var(--o-ink)} .ley.ev-sug{--ev:var(--k4)}

/* ===== bandeja de conversaciones ===== */
.cv{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:1px;background:var(--ln);
  border:1px solid var(--ln);min-height:520px}
.cv-lista{background:var(--w);overflow-y:auto;max-height:640px}
.cv-item{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;padding:11px 13px;
  border-bottom:1px solid var(--ln);background:var(--w)}
.cv-item:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){ .cv-item:hover{background:var(--w2)} }
.cv-item.on{background:var(--o-soft);box-shadow:inset 3px 0 0 var(--o)}
.cv-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.cv-n{font-size:13px;font-weight:600;letter-spacing:-.01em}
.cv-p{font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.05em;color:var(--k4);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cv-m{font-size:12px;color:var(--k3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.cv-r{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.cv-hilo{background:var(--w);display:flex;flex-direction:column;min-width:0}
.cv-cab{display:flex;align-items:center;gap:11px;padding:12px 15px;border-bottom:1px solid var(--ln)}
.cv-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;
  background:var(--w2);max-height:420px}
.cv-msg{display:flex}
.cv-msg.nuestro{justify-content:flex-end}
.cv-burbuja{max-width:78%;background:var(--w);border:1px solid var(--ln);padding:9px 12px;
  display:flex;flex-direction:column;gap:5px}
.cv-msg.nuestro .cv-burbuja{background:var(--k);color:var(--w);border-color:var(--k)}
.cv-msg.nuestro .cv-burbuja .ml{color:rgba(255,255,255,.5)}
.cv-msg.nota .cv-burbuja{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.cv-burbuja p{margin:0;font-size:13px;line-height:1.5}
.cv-canal{align-self:flex-start;font-size:9.5px}
.cv-plantillas{display:flex;gap:6px;flex-wrap:wrap;padding:10px 15px;border-top:1px solid var(--ln)}
.cv-envio{display:flex;gap:8px;padding:11px 15px;border-top:1px solid var(--ln);background:var(--w2)}
.cv-envio select{font:inherit;font-size:12.5px;border:1px solid var(--ln2);background:var(--w);padding:7px 8px}
.cv-envio input{flex:1;font:inherit;font-size:13px;border:1px solid var(--ln2);background:var(--w);
  padding:7px 11px;color:var(--k)}
.cv-envio input:focus{outline:2px solid var(--o);outline-offset:-1px}
.cv-vacio{align-items:center;justify-content:center;gap:10px;color:var(--k4)}
.cv-vacio svg{stroke:var(--ln2)}
@media (max-width:900px){ .cv{grid-template-columns:1fr} .cv-lista{max-height:260px} }
/* fotos de piso: si el servicio no carga, queda el marcador de siempre */
.xphoto{background:var(--w3)}
.xp-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.xp-img.sinfoto{display:none}
.foto-ph{position:relative;overflow:hidden}
.foto-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.galeria .foto-ph.mas img{display:none}

/* ===== demanda y cruce ===== */
.seg.sm button{padding:4px 9px;font-size:11px}
.cx-mandos{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 12px;margin-bottom:12px;
  border:1px solid var(--ln);background:var(--w2)}
.cx-expl{font-size:12.5px;color:var(--k3);line-height:1.5;max-width:74ch;margin:0 0 14px}

.cx{border:1px solid var(--ln);background:var(--w);margin-bottom:12px}
.cx-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 14px;border-bottom:1px solid var(--ln)}
.cx-quien{display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left;min-width:0;
  padding:0;transition:color .16s var(--ease-out)}
.cx-n{font-size:14px;font-weight:600;letter-spacing:-.018em}
@media (hover:hover) and (pointer:fine){ .cx-quien:hover .cx-n{color:var(--o-ink)} }
.cx-nota{display:flex;gap:7px;align-items:flex-start;margin:0;padding:9px 14px;font-size:12.5px;
  color:var(--k2);background:var(--w2);border-bottom:1px solid var(--ln)}
.cx-nota svg{color:var(--k4);margin-top:2px}

.cx-lista{display:flex;flex-direction:column}
.cx-m{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:flex-start;
  padding:13px 14px;border-bottom:1px solid var(--ln);border-left:3px solid transparent}
.cx-m:last-child{border-bottom:0}
.cx-m.sem-verde{border-left-color:var(--ok)}
.cx-m.sem-ambar{border-left-color:var(--o)}
.cx-m.sem-rojo{border-left-color:var(--no)}
@media (hover:hover) and (pointer:fine){ .cx-m:hover{background:var(--w2)} }
.cx-ring{display:flex;flex-direction:column;align-items:center;gap:3px}
.cx-info{min-width:0;display:flex;flex-direction:column;gap:4px}
.cx-dir{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.cx-dir b{font-size:13.5px;font-weight:600;letter-spacing:-.015em}
.cx-meta{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.cx-meta b{font-size:14px}
.cx-frase{margin:2px 0 0;font-size:12.5px;color:var(--k2);line-height:1.45}
.cx-frase.grande{font-size:14px;color:var(--k);line-height:1.5;margin-bottom:12px}
.cx-motivos{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}
.mot{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;font-size:10.5px;font-weight:500;
  border:1px solid var(--ln);color:var(--k3);cursor:default}
.mot.si{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-soft)}
.mot.quiza{background:var(--o-soft);color:var(--o-ink);border-color:var(--o-line)}
.mot.no{background:var(--no-soft);color:var(--no);border-color:var(--no-soft)}
.cx-acc{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.cx-acc.fila{flex-direction:row;align-items:center}
.cx-acc .btn{justify-content:center}
.cx-acc .btn[disabled]{opacity:.5;pointer-events:none}
.cx-mas{width:100%;padding:9px;font-size:11.5px;font-weight:500;color:var(--k3);
  border-top:1px solid var(--ln);background:var(--w2);transition:color .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .cx-mas:hover{color:var(--o-ink)} }

.cx-sep{margin:26px 0 12px;padding-top:18px;border-top:1px solid var(--ln2)}
.cx-sep h3{font-size:15px}
.cx-sep p{margin:5px 0 0;font-size:12.5px;color:var(--k3);max-width:74ch;line-height:1.5}
.cx.sin{border-left:3px solid var(--no)}
.cx-busca{padding:13px 14px;display:flex;flex-direction:column;gap:9px}
.cx-busca-t{display:flex;flex-direction:column;gap:6px}
.cx-chips{display:flex;gap:5px;flex-wrap:wrap}
.cx-chips .chip{cursor:default;background:var(--w2)}

/* cobertura */
.cob{border:1px solid var(--ln);background:var(--w)}
.cob-f{display:grid;grid-template-columns:minmax(150px,1fr) minmax(220px,2fr) 88px 110px;gap:14px;
  align-items:center;padding:11px 14px;border-bottom:1px solid var(--ln);border-left:3px solid transparent}
.cob-f:last-child{border-bottom:0}
.cob-f.critico{border-left-color:var(--no);background:var(--no-soft)}
.cob-q{display:flex;flex-direction:column;gap:1px}
.cob-q b{font-size:13px;font-weight:600}
.cob-b{display:flex;flex-direction:column;gap:5px}
.cob-par{display:grid;grid-template-columns:62px 1fr 30px;gap:8px;align-items:center}
.cob-barra{display:block;height:8px;background:var(--w3)}
.cob-barra i{display:block;height:100%}
.cob-barra.dem i{background:var(--o)}
.cob-barra.st i{background:var(--k)}
.cob-par b{font-size:12px;text-align:right}
.cob-idx{display:flex;flex-direction:column;align-items:flex-end;gap:0}
.cob-idx b{font-size:17px;font-weight:600;letter-spacing:-.02em}
.cob-est{display:flex;justify-content:flex-end}

/* candidatos desde la ficha del piso */
.cand{border-top:1px solid var(--ln)}
.cand-f{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--ln);
  border-left:3px solid transparent;width:100%;text-align:left}
.cand-f:last-child{border-bottom:0}
.cand-f.sem-verde{border-left-color:var(--ok)}
.cand-f.sem-ambar{border-left-color:var(--o)}
.cand-f.sem-rojo{border-left-color:var(--no)}
@media (hover:hover) and (pointer:fine){ .cand-f:hover{background:var(--w2)} }
.cand-q{display:flex;align-items:center;gap:12px;flex:1;min-width:0;text-align:left;padding:0}
.cand-i{display:flex;flex-direction:column;gap:2px;min-width:0}
.cand-i b{font-size:13.5px;font-weight:600}
.cand-a{display:flex;gap:6px;align-items:center;flex-shrink:0}

/* panel: de dónde sale el porcentaje */
.pcruce{display:grid;grid-template-columns:46px 1fr auto;gap:10px;align-items:center;
  padding:8px 0;border-bottom:1px solid var(--ln);border-left:3px solid transparent;padding-left:9px}
.pcruce.sem-verde{border-left-color:var(--ok)}
.pcruce.sem-ambar{border-left-color:var(--o)}
.pcruce.sem-rojo{border-left-color:var(--no)}
.pc-pct{font-size:14px;font-weight:600}
.pc-dir{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:12.5px;font-weight:500}
.pq-f{display:grid;grid-template-columns:120px 1fr 70px 52px;gap:9px;align-items:center;
  padding:7px 0;border-bottom:1px solid var(--ln)}
.pq-et{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600}
.pq-f.si .pq-et{color:var(--ok)}
.pq-f.no .pq-et{color:var(--no)}
.pq-f.quiza .pq-et{color:var(--o-ink)}
.pq-txt{font-size:12px;color:var(--k2);line-height:1.4}
.pq-barra{display:block;height:5px;background:var(--w3)}
.pq-barra i{display:block;height:100%;background:var(--k)}
.pq-p{font-size:11px;text-align:right;color:var(--k3)}
.pq-bloq{display:flex;gap:8px;align-items:flex-start;margin:0 0 14px;padding:10px 12px;
  background:var(--no-soft);color:var(--no);font-size:12.5px;line-height:1.45}
.pq-bloq svg{flex-shrink:0;margin-top:1px}

@media (max-width:1180px){
  .cx-m{grid-template-columns:56px 1fr}
  .cx-acc{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}
  .cob-f{grid-template-columns:minmax(130px,1fr) 1fr 70px}
  .cob-est{grid-column:1/-1;justify-content:flex-start}
}

/* ===== desplegables propios =====
   El <select> sigue existiendo y sigue siendo enfocable, pero no se ve:
   así el valor, la validación y los eventos siguen funcionando igual. */
.dd{position:relative;min-width:0;display:block}
.dd > select{position:absolute;inset:0;width:100%;height:100%;opacity:0;
  appearance:none;-webkit-appearance:none;border:0;pointer-events:none}
.dd-btn{display:flex;align-items:center;gap:7px;width:100%;font:inherit;font-size:12.5px;
  border:1px solid var(--ln2);background:var(--w);color:var(--k);padding:5px 8px;text-align:left;
  position:relative;z-index:1;
  transition:border-color .14s var(--ease-out),background .14s var(--ease-out)}
.dd-v{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-btn svg{stroke:var(--k4);flex-shrink:0;transition:transform .18s var(--ease-out)}
.dd-btn[aria-expanded="true"]{border-color:var(--k)}
.dd-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.dd-btn.puesto{border-color:var(--k);font-weight:500}
@media (hover:hover) and (pointer:fine){ .dd-btn:hover{border-color:var(--k3)} }
.dd > select:focus ~ .dd-btn,.dd-btn:focus-visible{outline:2px solid var(--o);outline-offset:-1px}
.dd > select.malo ~ .dd-btn{border-color:var(--no);background:var(--no-soft)}

.filtro .dd{max-width:170px}
.campo .dd-btn{font-size:13px;padding:8px 10px}
.panel-b .dd-btn{font-size:12px;padding:4px 7px}
td .dd{max-width:180px}
td .dd-btn{font-size:12.5px;padding:4px 7px}

.dd-pop{position:fixed;z-index:400;background:var(--w);border:1px solid var(--ln3);
  box-shadow:0 10px 30px rgba(10,10,10,.14);max-height:min(340px,64vh);display:flex;
  flex-direction:column;padding:3px;
  opacity:0;transform:translateY(-4px) scale(.985);transform-origin:top center;
  transition:opacity .13s var(--ease-out),transform .16s var(--ease-out)}
.dd-pop.vis{opacity:1;transform:none}
.dd-op{display:flex;align-items:center;gap:7px;width:100%;padding:6px 8px;font:inherit;font-size:12.5px;
  color:var(--k2);text-align:left;transition:background .1s var(--ease-out),color .1s var(--ease-out)}
.dd-op span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-op svg{stroke:var(--o-ink);flex-shrink:0}
.dd-hueco{width:12px;height:12px;flex-shrink:0}
.dd-op.on{color:var(--k);font-weight:600}
.dd-op:hover,.dd-op:focus{background:var(--w3);color:var(--k);outline:0}
.dd-op:focus-visible{background:var(--o-soft);color:var(--o-ink)}

/* ===== plantillas de documento ===== */
/* lo que hay que rellenar a mano: marcado, porque eso es lo que lo hace una plantilla */
.inf-campo{display:inline-block;border-bottom:1px dotted var(--k3);background:var(--o-soft);
  min-width:90px;height:1.05em;vertical-align:baseline;margin:0 2px}
.inf-check{display:inline-block;width:12px;height:12px;border:1.2px solid var(--k2);
  vertical-align:-1px;margin-right:3px}
.inf-notas{margin:10px 0 4px;display:flex;flex-direction:column;gap:17px}
.inf-notas i{display:block;height:1px;background:var(--ln2)}
.inf-firmas{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:38px;page-break-inside:avoid}
.inf-firma{display:flex;flex-direction:column;gap:0}
.inf-firma i{display:block;height:54px;border-bottom:1px solid var(--k2);margin-bottom:5px}
.inf-firma .mini{color:#666}
.inf-fotos{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:22px 0 6px}
.inf-fotos img{width:100%;height:172px;object-fit:cover;display:block;background:var(--w3)}
.inf-sel{display:flex;flex-direction:column;gap:2px;max-width:230px}
.inf-sel .ml{color:rgba(255,255,255,.55)}
.inf-sel .dd-btn{font-size:12px;padding:4px 7px}
.inf-tabla th{vertical-align:top}
.inf-pie b{font-size:12.5px}
.inf-pie .mini{line-height:1.7;color:#666}

/* el catálogo */
.plt{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:0;
  border:1px solid var(--ln);background:var(--w)}
.plt-c{display:flex;align-items:flex-start;gap:12px;padding:15px 16px;text-align:left;
  border-right:1px solid var(--ln);border-bottom:1px solid var(--ln);
  border-left:3px solid transparent;transition:background .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .plt-c:hover{background:var(--w2)} .plt-c:hover .plt-a{color:var(--o-ink)} }
.plt-c.clave{border-left-color:var(--o)}
.plt-ic{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;
  background:var(--w3);color:var(--k2)}
.plt-c.clave .plt-ic{background:var(--o-soft);color:var(--o-ink)}
.plt-i{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.plt-i b{font-size:13.5px;font-weight:600;letter-spacing:-.015em}
.plt-a{color:var(--ln2);flex-shrink:0;margin-top:9px;transition:color .14s var(--ease-out)}

@media print{
  .inf-campo{background:none}
  .inf-fotos{page-break-inside:avoid}
  .inf-firmas{page-break-inside:avoid}
}

/* la tarjeta de exclusiva entera es clicable; dentro, dos atajos propios */
.xcard{cursor:pointer;transition:border-color .16s var(--ease-out),box-shadow .16s var(--ease-out),
  transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .xcard:hover{border-color:var(--k3);box-shadow:0 6px 20px rgba(10,10,10,.09);transform:translateY(-1px)}
}
.xcard:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.xring{padding:0;background:none;border:0;display:block;border-radius:50%}
.xring:focus-visible{outline:2px solid var(--o);outline-offset:2px}
button.xdocs,button.xports{width:100%;text-align:left;background:none;border:0;padding:0;font:inherit;color:inherit}
@media (hover:hover) and (pointer:fine){
  button.xdocs:hover .pbar,button.xports:hover .pchip{filter:saturate(1.35)}
}
button.xdocs:focus-visible,button.xports:focus-visible{outline:2px solid var(--o);outline-offset:2px}

/* ===== calendario de periodo ===== */
.cal-b{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;font-size:12px;
  border-left:1px solid var(--ln);color:var(--k3);white-space:nowrap;
  transition:background .14s var(--ease-out),color .14s var(--ease-out)}
.cal-b svg{stroke:currentColor}
@media (hover:hover) and (pointer:fine){ .cal-b:hover{background:var(--w3);color:var(--k)} }
.cal-b.on{background:var(--k);color:#fff;border-left-color:var(--k)}
.dd-pop.cal{padding:10px}
.cal-h{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px}
.cal-h b{font-size:12.5px;font-weight:600;text-transform:capitalize}
.cal-prev svg{transform:rotate(90deg)}
.cal-h .icb svg{transform:rotate(-90deg)}
.cal-h .cal-prev svg{transform:rotate(90deg)}
.cal-s{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:3px}
.cal-s span{font-family:"IBM Plex Mono",monospace;font-size:9.5px;font-weight:600;letter-spacing:.06em;
  color:var(--k4);text-align:center}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-v{display:block}
.cal-d{height:31px;font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--k2);
  transition:background .11s var(--ease-out),color .11s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .cal-d:hover{background:var(--w3);color:var(--k)} }
.cal-d.hoy{box-shadow:inset 0 0 0 1px var(--ln2);font-weight:600;color:var(--k)}
.cal-d.medio{background:var(--o-soft);color:var(--o-ink)}
.cal-d.ini,.cal-d.fin{background:var(--k);color:#fff;font-weight:600;box-shadow:none}
.cal-p{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:9px;padding-top:9px;border-top:1px solid var(--ln)}

/* ===== arrastrar tarjetas del pipeline ===== */
.ocard{cursor:grab}
.ocard:active{cursor:grabbing}
[data-arrastra].arrastrando{opacity:.4;transform:rotate(-1deg)}
.kbb{transition:background .14s var(--ease-out),box-shadow .14s var(--ease-out)}
.kbb.encima{background:var(--o-soft);box-shadow:inset 0 0 0 2px var(--o)}

/* buscador dentro del desplegable, para listas largas */
.dd-buscar{display:flex;align-items:center;gap:6px;padding:5px 7px;margin-bottom:3px;
  border:1px solid var(--ln2);background:var(--w)}
.dd-buscar svg{stroke:var(--k4);flex-shrink:0}
.dd-buscar input{font:inherit;font-size:12px;border:0;outline:0;background:transparent;
  color:var(--k);width:100%;min-width:0}
.dd-ops{max-height:min(280px,52vh);overflow-y:auto;overscroll-behavior:contain}
.dd-nada{margin:0;padding:9px 8px;font-size:12px;color:var(--k4)}
.gc-pie{display:flex;align-items:center;gap:6px;margin-top:7px;font-family:var(--lbl);
  font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--k4)}
.gc-meta{display:inline-block;width:14px;height:0;border-top:1.2px dashed var(--o);flex-shrink:0}

/* ===== cabecera de ruta en la zona ===== */
.rutahoy{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:13px 16px;margin-bottom:12px;
  border:1px solid var(--ln);border-left:3px solid var(--o);background:var(--w2)}
.rh-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.rh-t b{font-size:14.5px;font-weight:600;letter-spacing:-.018em}
.rh-p{display:flex;gap:4px;align-items:center}
.rh-b{width:16px;height:5px;background:var(--ln2)}
.rh-b.ok{background:var(--ok)}

/* ===== tabla de viviendas de la finca ===== */
.viv-tw{border:0;border-top:1px solid var(--ln);max-height:none}
.viv-t{width:100%;border-collapse:collapse;font-size:12.5px}
.viv-t thead th{position:sticky;top:0;z-index:2;background:var(--w2);
  font-family:var(--lbl);font-size:9.5px;font-weight:600;letter-spacing:.055em;
  text-transform:uppercase;color:var(--k4);text-align:left;padding:8px 10px;
  border-bottom:1px solid var(--ln2);white-space:nowrap}
.viv-t td{padding:9px 10px;border-bottom:1px solid var(--ln);vertical-align:top}
.viv-f:last-child td{border-bottom:0}
@media (hover:hover) and (pointer:fine){ .viv-f:hover td{background:var(--w2)} }
.ayuda{display:inline-grid;place-items:center;width:13px;height:13px;border:1px solid var(--ln2);
  border-radius:50%;font-size:8.5px;color:var(--k4);cursor:help;margin-left:3px}

.v-lab{white-space:nowrap}
.v-lab b{display:block;font-size:13.5px;font-weight:600;letter-spacing:-.015em}
.v-con{min-width:190px;display:flex;flex-direction:column;gap:3px}
.per{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.per b{font-weight:600}
.rol{font-family:var(--lbl);font-size:8.5px;letter-spacing:.05em;color:var(--k4);
  border:1px solid var(--ln);padding:0 4px}
.tel{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--k2)}
.tel svg{stroke:var(--k4)}
.v-add{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
.mas{display:inline-flex;align-items:center;gap:3px;font-family:var(--lbl);
  font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--k4);
  border:1px dashed var(--ln2);padding:2px 6px;transition:color .14s var(--ease-out),border-color .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .mas:hover{color:var(--o-ink);border-color:var(--o)} }

.v-ges{min-width:168px}
.ges-n{display:flex;align-items:baseline;gap:6px;margin-bottom:5px}
.ges-n b{font-size:13px}
.ges-n.nada b{color:var(--k4)}
.ges-n.medio b{color:var(--o-ink)}
.ges-n.ok b{color:var(--ok)}
.ges-c{display:flex;gap:4px;flex-wrap:wrap}
.int{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:10px;
  border:1px solid var(--ln);background:var(--w);transition:border-color .14s var(--ease-out)}
.int b{font-family:"IBM Plex Mono",monospace;font-size:9.5px;font-weight:700}
.int span{font-size:9.5px;color:var(--k4)}
.int.ok{background:var(--ok-soft);border-color:var(--ok-soft)}
.int.ok b{color:var(--ok)}
.int.no{background:var(--w3)}
.int.no b{color:var(--k3)}
.int.mas2{color:var(--k4);font-size:9.5px;cursor:default}
.int.nuevo{border-style:dashed;border-color:var(--ln2);padding:2px 5px}
.int.nuevo svg{stroke:var(--k4)}
@media (hover:hover) and (pointer:fine){
  .int.ok:hover,.int.no:hover{border-color:var(--k3)}
  .int.nuevo:hover{border-color:var(--o);border-style:solid}
  .int.nuevo:hover svg{stroke:var(--o-ink)}
}

.v-etq{min-width:150px;display:flex;flex-wrap:wrap;gap:4px;align-content:flex-start}
.v-com{max-width:300px}
.v-com .nota{display:block;font-size:12px;color:var(--k2);line-height:1.45;
  border-left:2px solid var(--ln2);padding-left:8px;margin-bottom:3px}
.v-sel{min-width:130px}
.v-sel .dd-btn{font-size:11.5px;padding:4px 7px}

.viv-leg{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:9px 13px;
  border-top:1px solid var(--ln);background:var(--w2);
  font-family:var(--lbl);font-size:9.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}
.viv-leg span{display:inline-flex;align-items:center;gap:5px}
.viv-leg .mini{text-transform:none;letter-spacing:0;font-family:"Instrument Sans",sans-serif}
.lg{width:9px;height:9px;display:inline-block}
.lg.ok{background:var(--ok)} .lg.no{background:var(--ln2)}
.lg.nada{background:var(--w);border:1px dashed var(--ln2)}

/* ===== envíos a la cartera ===== */
.env-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:13px;align-items:start}
.env-cfg .card-b,.env-msg .card-b,.env-prev .card-b{padding:14px 15px}
.env-campo{display:flex;flex-direction:column;gap:6px;margin-bottom:15px}
.env-campo:last-child{margin-bottom:0}
.env-campo .seg{align-self:flex-start;flex-wrap:wrap}
.env-nota{margin:0;font-size:11.5px;color:var(--k4);line-height:1.5}
.env-check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--k2);cursor:pointer}
.env-check input{width:14px;height:14px;accent-color:var(--o);flex-shrink:0;cursor:pointer}
.env-ta{font:inherit;font-size:12.5px;line-height:1.55;color:var(--k);background:var(--w);
  border:1px solid var(--ln2);padding:9px 10px;width:100%;resize:vertical;font-family:inherit}
.env-ta:focus{outline:2px solid var(--o);outline-offset:-1px;border-color:var(--o)}
.env-chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.env-chips .chip{font-family:"IBM Plex Mono",monospace;font-size:10.5px;padding:2px 7px;
  color:var(--o-ink);border-color:var(--o-line);background:var(--o-soft)}
@media (hover:hover) and (pointer:fine){ .env-chips .chip:hover{border-color:var(--o);background:#FDE9C8} }
.env-lopd,.env-ok{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;
  font-size:12px;line-height:1.45;margin-top:4px}
.env-lopd{background:var(--no-soft);color:var(--no)}
.env-ok{background:var(--ok-soft);color:var(--ok)}
.env-lopd svg,.env-ok svg{flex-shrink:0;margin-top:1px;stroke:currentColor}

/* la previsualización, tal como le llega */
.wa{border:1px solid var(--ln);background:#ECE5DD;margin-bottom:12px}
.wa-top{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--k);color:#fff;font-size:12px}
.wa-top svg{stroke:#fff}
.wa-top b,.wa-top span:not(.ml){font-weight:600}
.wa-top .ml{margin-left:auto;color:rgba(255,255,255,.55)}
.wa-cuerpo{padding:14px 12px;min-height:90px;display:flex;justify-content:flex-end}
.wa-burb{position:relative;max-width:88%;background:#D9FDD3;color:#111;font-size:12.5px;line-height:1.5;
  padding:8px 10px 16px;border-radius:7px 0 7px 7px;box-shadow:0 1px 1px rgba(0,0,0,.12)}
/* La hora del globo imita a WhatsApp, pero a 9px su gris se queda en 3:1.
   Se oscurece lo justo: sigue pareciendo WhatsApp y se lee. */
.wa-hora{position:absolute;right:8px;bottom:4px;font-size:9px;color:rgba(0,0,0,.62)}

/* ===== lo de hoy, en la home ===== */
/* section.hoy y no .hoy a secas: los calendarios marcan el día de hoy con la
   clase hoy, y se llevaban este margen y el borde naranja, y el día se salía
   de la rejilla (Lucas) */
section.hoy{display:flex;align-items:stretch;gap:0;border:1px solid var(--ln);border-left:3px solid var(--o);
  background:var(--w);margin:14px 0 4px;flex-wrap:wrap}
.hoy-i{flex:1;min-width:300px;padding:18px 20px;display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.hoy-i h2{font-size:24px;font-weight:600;letter-spacing:-.03em;line-height:1.15}
.hoy-i p{margin:0;font-size:13.5px;color:var(--k3);line-height:1.5;max-width:66ch}
.hoy-i .btn{margin-top:9px}
.hoy-n{display:flex;border-left:1px solid var(--ln)}
.hoy-c{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:16px 20px;min-width:104px;
  border-right:1px solid var(--ln);text-align:left;background:none}
.hoy-c:last-child{border-right:0}
.hoy-c b{font-size:29px;font-weight:500;letter-spacing:-.03em;line-height:1}
.hoy-c span{font-size:11px;color:var(--k4);line-height:1.35}
.hoy-c.rojo b{color:var(--no)} .hoy-c.ambar b{color:var(--o-ink)}
.hoy-c.azul b{color:var(--in)} .hoy-c.ok b{color:var(--k4)}
button.hoy-c{cursor:pointer;transition:background .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ button.hoy-c:hover{background:var(--w2)} }
@media (max-width:820px){ .hoy-n{border-left:0;border-top:1px solid var(--ln);width:100%} .hoy-c{flex:1;min-width:0} }

/* ===== gestiones: urgente, importante, pendiente ===== */
.cajon{margin-bottom:16px}
.cajon-h{display:flex;align-items:center;gap:8px;padding:0 0 8px;border-bottom:1px solid var(--ln);margin-bottom:11px}
.cajon-h i{width:9px;height:9px;flex-shrink:0}
.cajon-h.rojo i{background:var(--no)} .cajon-h.ambar i{background:var(--o)} .cajon-h.azul i{background:var(--in)}
.cajon-h b{font-family:var(--lbl);font-size:11px;font-weight:600;letter-spacing:.055em;
  text-transform:uppercase}
.cajon-h.rojo b{color:var(--no)} .cajon-h.ambar b{color:var(--o-ink)} .cajon-h.azul b{color:var(--in)}
.cajon-h .cnt{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--k4);
  border:1px solid var(--ln);padding:0 6px}
.cajon-h .mini{margin-left:auto}
.cajon-resto{margin:4px 0 0;padding:12px 14px;background:var(--w2);border:1px solid var(--ln);
  font-size:12.5px;color:var(--k3);line-height:1.5}
.cajon-resto .lnk{margin-left:6px}

/* ===== seguimientos y tareas ===== */
.seg-f{grid-template-columns:minmax(170px,1.1fr) minmax(150px,.9fr) minmax(220px,1.6fr) minmax(250px,1.2fr)}
.seg-tipo{display:flex;flex-direction:column;gap:5px;align-items:flex-start;min-width:0}
.seg-tipo .bdg svg{stroke:currentColor}
.seg-m{font-size:13px;font-weight:600;letter-spacing:-.012em;display:block;margin-bottom:4px}
.seg-acc{display:flex;flex-direction:column;gap:8px;align-items:flex-end;justify-content:center}
.seg-bt{display:flex;gap:5px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:1100px){ .seg-f{grid-template-columns:1fr 1fr} .seg-acc{align-items:flex-start} }

/* ===== pestañas de sección =====
   El grupo no se pliega: se entra en él y sus páginas son pestañas. Banda
   negra porque es navegación, y pestaña activa en blanco, apoyada en el borde
   inferior: se funde con la página, así que la pestaña no está sobre el
   contenido, es el contenido. Sin bloques de color que compitan. */
.secc{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;
  margin:14px -24px 0;padding:0 24px;background:var(--k)}
.secc-t{padding-top:10px}
.secc-n{display:flex;align-items:center;flex-shrink:0;padding:0 0 14px}
.secc-n b{font-family:var(--lbl);font-size:10.5px;font-weight:600;
  letter-spacing:.055em;text-transform:uppercase;color:rgba(255,255,255,.62);white-space:nowrap}
.secc-t{display:flex;gap:2px;flex-wrap:wrap;padding-top:10px}
.secc-t button{position:relative;padding:9px 17px 10px;font-size:13.5px;font-weight:500;
  color:rgba(255,255,255,.72);display:flex;align-items:center;gap:7px;white-space:nowrap;
  border-radius:3px 3px 0 0;
  transition:background .16s var(--ease-out),color .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .secc-t button:hover{background:rgba(255,255,255,.1);color:#fff} }
.secc-t button.on{background:var(--w);color:var(--k);font-weight:600}
.secc-t .cnt{font-family:"IBM Plex Mono",monospace;font-size:10px;font-weight:600;
  background:rgba(255,255,255,.16);color:#fff;padding:1px 6px;min-width:17px;
  text-align:center;border-radius:2px}
.secc-t button.on .cnt{background:var(--k);color:#fff}
@media (max-width:760px){ .secc{gap:12px} .secc-t button{padding:9px 12px 10px;font-size:12.5px} }

/* ===== ruta de hoy ===== */
.plan{display:flex;gap:0;flex-wrap:wrap;border:1px solid var(--ln);border-left:3px solid var(--o);
  background:var(--w);margin-bottom:13px}
.plan-i{flex:1;min-width:320px;padding:17px 20px;display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.plan-i h2{font-size:21px;font-weight:600;letter-spacing:-.028em;line-height:1.2}
.plan-i p{margin:0;font-size:13.5px;color:var(--k3);line-height:1.55;max-width:70ch}
.plan-b{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.plan-o{flex:0 1 300px;padding:17px 20px;border-left:1px solid var(--ln);background:var(--w2);
  display:flex;flex-direction:column;gap:5px}
.plan-o p{margin:0;font-size:12.5px;color:var(--k3);line-height:1.55}
.plan.hecha{border-left-color:var(--ok)}
@media (max-width:860px){ .plan-o{border-left:0;border-top:1px solid var(--ln);flex-basis:100%} }

.paradas{border:1px solid var(--ln);background:var(--w)}
.parada{display:grid;grid-template-columns:44px 1fr 66px auto;gap:14px;align-items:flex-start;
  padding:14px 16px;border-bottom:1px solid var(--ln)}
.parada:last-child{border-bottom:0}
.parada.hecha{opacity:.55;background:var(--w2)}
@media (hover:hover) and (pointer:fine){ .parada:hover{background:var(--w2)} }
.par-n{display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:2px}
.par-n .mono{font-size:17px;font-weight:600;color:var(--k4)}
.par-c{min-width:0;display:flex;flex-direction:column;gap:5px}
.par-d{font-size:15px;font-weight:600;letter-spacing:-.02em;text-align:left;padding:0;
  transition:color .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .par-d:hover{color:var(--o-ink)} }
.par-m{display:flex;gap:13px;flex-wrap:wrap;font-family:"IBM Plex Mono",monospace;font-size:10.5px;
  color:var(--k4);letter-spacing:.02em}
.par-frio{color:var(--no);font-weight:600}
.par-not{color:var(--o-ink);font-weight:600}
.par-q{display:flex;gap:9px;align-items:flex-start;padding:9px 11px;margin-top:3px;
  border-left:2px solid var(--ln2);background:var(--w2)}
.par-q svg{flex-shrink:0;margin-top:1px;stroke:var(--k3)}
.par-q b{display:block;font-size:13px;font-weight:600;letter-spacing:-.012em;margin-bottom:2px}
.par-q span{font-size:12.5px;color:var(--k3);line-height:1.5}
.par-q.c-rojo{border-left-color:var(--no);background:var(--no-soft)}
.par-q.c-rojo svg{stroke:var(--no)} .par-q.c-rojo b{color:var(--no)}
.par-q.c-ambar{border-left-color:var(--o);background:var(--o-soft)}
.par-q.c-ambar svg{stroke:var(--o-ink)} .par-q.c-ambar b{color:var(--o-ink)}
.par-q.c-azul{border-left-color:var(--in)}
.par-q.c-azul svg{stroke:var(--in)}
.par-r{display:flex;flex-direction:column;align-items:center;gap:3px}
.par-b{display:flex;flex-direction:column;gap:6px}
.par-b .btn{justify-content:center}
@media (max-width:900px){
  .parada{grid-template-columns:36px 1fr}
  .par-r{flex-direction:row;grid-column:2}
  .par-b{grid-column:2;flex-direction:row}
}
.goal-l{display:flex;justify-content:space-between;gap:8px;align-items:baseline;margin-bottom:6px}
.goal-l b{font-size:12.5px;font-weight:600}
.goal-l span{font-size:10.5px;color:var(--k4)}
.goal-p{display:block;margin-top:5px;font-size:11px;font-weight:600;text-align:right}

/* ===== operaciones: de las arras a la notaría ===== */
.ops{display:flex;flex-direction:column;gap:11px}
.op{border:1px solid var(--ln);border-left:3px solid var(--ln2);background:var(--w)}
.op.sem-rojo{border-left-color:var(--no)} .op.sem-ambar{border-left-color:var(--o)}
.op.sem-azul{border-left-color:var(--in)} .op.sem-verde{border-left-color:var(--ok)}
.op-h{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:12px 15px;border-bottom:1px solid var(--ln)}
.op-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.op-t b{font-size:14.5px;font-weight:600;letter-spacing:-.018em}
.op-f{text-align:right}
.op-f b{font-size:13px}
.op-r{display:flex;gap:8px;align-items:flex-start;margin:0;padding:10px 15px;
  background:var(--no-soft);color:var(--no);font-size:12.5px;line-height:1.45;
  border-bottom:1px solid var(--ln)}
.op-r svg{flex-shrink:0;margin-top:1px;stroke:currentColor}
.op-b{display:grid;grid-template-columns:1fr minmax(210px,auto);gap:16px;padding:13px 15px}
.op-hitos{min-width:0;display:flex;flex-direction:column;gap:7px}
.hitos{display:flex;gap:5px;flex-wrap:wrap}
.hito{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;font-size:11.5px;
  border:1px dashed var(--ln2);color:var(--k4);background:var(--w);
  transition:border-color .14s var(--ease-out),color .14s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .hito:hover{border-color:var(--k3);color:var(--k2)} }
.hito.ok{border-style:solid;border-color:var(--ok-soft);background:var(--ok-soft);color:var(--ok);font-weight:500}
.hito svg{stroke:currentColor}
.op-d{border-left:1px solid var(--ln);padding-left:15px}
@media (max-width:780px){ .op-b{grid-template-columns:1fr} .op-d{border-left:0;padding-left:0;border-top:1px solid var(--ln);padding-top:10px} }

/* ===== coste de captación ===== */
.canales{border:1px solid var(--ln);background:var(--w)}
.can{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,1.4fr) minmax(280px,1.6fr);
  gap:16px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--ln)}
.can:last-child{border-bottom:0}
.can-q{display:flex;flex-direction:column;gap:2px;min-width:0}
.can-q b{font-size:13.5px;font-weight:600}
.can-b{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.can-barra{flex:1;min-width:80px;height:9px;background:var(--w3);display:block}
.can-barra i{display:block;height:100%}
.can-b b{font-size:14px}
.can-n{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
.can-n div{display:flex;flex-direction:column;gap:0}
.can-n b{font-size:13px;font-weight:600}
.can-n span{font-family:var(--lbl);font-size:8.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--k4)}
@media (max-width:1050px){ .can{grid-template-columns:1fr} }

/* ===== duplicados ===== */
.dups{display:flex;flex-direction:column;gap:10px}
.dup{border:1px solid var(--ln);border-left:3px solid var(--o);background:var(--w)}
.dup.certeza-alta{border-left-color:var(--no)}
.dup-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--ln)}
.dup-b{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--ln)}
.dup-f{background:var(--w2);padding:12px 14px;display:flex;flex-direction:column;gap:3px;min-width:0}
.dup-f b{font-size:14px;font-weight:600;letter-spacing:-.015em}
@media (max-width:640px){ .dup-b{grid-template-columns:1fr} }

/* ===== agenda de hoy en el inicio: seguimientos y papeleo del día =====
   El bloque «Hoy» dice cuántos hay; esto dice cuáles son y deja actuar sin
   salir del inicio. Dos columnas que se apilan en pantalla estrecha. */
.agh{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:4px 0 6px}
@media (max-width:1000px){ .agh{grid-template-columns:1fr} }
.agh-col{border:1px solid var(--ln);background:var(--w);display:flex;flex-direction:column;min-width:0}
.agh-h{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--ln);
  background:var(--w2)}
.agh-h svg{stroke:var(--k3);flex:none}
.agh-h div{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.agh-h b{font-size:13.5px;font-weight:600;letter-spacing:-.01em}
.agh-h .mini{font-size:11px}
.agh-n{font-size:15px;font-weight:600;min-width:24px;height:24px;display:inline-flex;
  align-items:center;justify-content:center;background:var(--k);color:var(--w);border-radius:3px;padding:0 6px}
.agh-h .lnk{font-size:11.5px;white-space:nowrap}
.agh-i{padding:11px 14px 11px 17px;border-bottom:1px solid var(--ln);position:relative;min-width:0}
.agh-i:last-child{border-bottom:0}
.agh-i::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ln2)}
.agh-i.sem-rojo::before{background:var(--no)}
.agh-i.sem-ambar::before{background:var(--o)}
.agh-i.sem-azul::before{background:var(--in)}
.agh-c{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:3px}
.agh-c b{font-size:13px;font-weight:600}
.agh-c .mini{color:var(--k4)}
.agh-m{margin:0 0 8px;font-size:12.5px;color:var(--k3);line-height:1.45}
.agh-b{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.agh-ok{display:flex;align-items:center;gap:9px;padding:20px 14px;font-size:12.5px;color:var(--k4)}
.agh-ok svg{stroke:var(--ok);flex:none}
.agh-mas{width:100%;padding:9px;font-size:11.5px;color:var(--k4);background:var(--w2);
  border-top:1px solid var(--ln);cursor:pointer;text-align:center}
@media (hover:hover) and (pointer:fine){ .agh-mas:hover{color:var(--k);background:var(--w3)} }

/* ===== reparto de exclusivas por comercial ===== */
.xrep{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0 2px}
.xrep-b{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:12px;
  border:1px solid var(--ln2);background:var(--w);cursor:pointer;border-radius:3px;
  transition:background .14s var(--ease-out),border-color .14s var(--ease-out)}
.xrep-b .cnt{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--k4);
  background:var(--w2);padding:1px 5px;border-radius:2px}
.xrep-b.on{background:var(--k);color:var(--w);border-color:var(--k)}
.xrep-b.on .cnt{background:rgba(255,255,255,.18);color:var(--w)}
.xrep-b.on .avatar{background:rgba(255,255,255,.2);color:var(--w)}
@media (hover:hover) and (pointer:fine){ .xrep-b:not(.on):hover{border-color:var(--k3)} }
.xp-com{position:absolute;top:9px;left:11px;font-family:"IBM Plex Mono",monospace;font-size:9.5px;
  font-weight:600;letter-spacing:.06em;color:#fff;background:rgba(17,17,16,.72);
  padding:3px 6px;border-radius:2px;backdrop-filter:blur(3px)}

/* ===== buscar comprador para un piso concreto ===== */
/* publicación fantasma: una F crema anaranjada, «para identificarlos a parte del nombre» */
.f-tag{display:inline-grid;place-items:center;width:16px;height:16px;flex-shrink:0;border-radius:4px;
  background:var(--o-soft);color:var(--o-ink);border:1px solid var(--o-line);
  font-style:normal;font-size:10px;font-weight:800;line-height:1}
.f-tag.grande{width:34px;height:34px;font-size:17px;border-radius:7px}
.dd-op.dd-sub{padding-left:26px}
.gira{transform:rotate(180deg)}
.ped-q{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 10px}
.ped-q-c{display:flex;align-items:center;gap:8px;flex:1 1 320px;max-width:520px;padding:0 11px;
  border:1px solid var(--ln2);border-radius:var(--r);background:var(--w);color:var(--k3)}
.ped-q-c:focus-within{border-color:var(--o);outline:2px solid var(--o);outline-offset:-1px}
.ped-q-c input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:13px;
  color:var(--k);padding:9px 0}
.pp-nombres{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.pp-nom{display:inline-flex;align-items:center;gap:7px;padding:6px 6px 6px 11px;border:1px solid var(--ln);
  background:var(--w);border-radius:var(--r);font-size:12.5px;max-width:100%;min-width:0}
.pp-nom b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-nom .cnt{margin-right:4px}
.pp-nom.fant{background:var(--o-soft);border-color:var(--o-line)}
.pp-nom-x{display:grid;place-items:center;width:20px;height:20px;border-radius:4px;color:var(--k3)}
.pp-nom-x:hover{background:var(--w3);color:var(--k)}
.pp-fants{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:-4px 0 12px}
.pp-fants > .ml{margin-right:4px}
.pp-fchip{display:inline-flex;align-items:center;gap:6px}
.pp-fchip.on{background:var(--o-soft);border-color:var(--o);color:var(--o-ink)}
.pp-sel .filtro .dd{min-width:min(320px,80vw)}
.por-fant{display:flex;align-items:center;gap:5px;color:var(--o-ink)}
/* varios anuncios a la vez: una tarjeta pequeña por cada uno */
.pp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin-bottom:14px}
.pp-mini{display:flex;align-items:center;gap:11px;padding:9px 10px;border:1px solid var(--ln);
  background:var(--w);border-radius:var(--r);min-width:0}
.pp-mini.fant{background:var(--o-soft);border-color:var(--o-line)}
.pp-mini-foto{width:64px;height:52px;object-fit:cover;border-radius:5px;flex-shrink:0;background:var(--w3)}
.pp-mini-f{width:64px;display:grid;place-items:center;flex-shrink:0}
.pp-mini-d{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.pp-mini-d > b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-mini-d .mini{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-mini.fant .pp-mini-d .mini:nth-child(2){white-space:normal}
.pp-mini-b{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pp-mini-n{display:flex;flex-direction:column;align-items:center;flex-shrink:0;padding:0 4px}
.pp-mini-n b{font-size:18px;line-height:1.1}
.pp-sel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:2px 0 12px}
.pp-sel .filtro select{min-width:280px}
.pp-piso{display:flex;align-items:stretch;gap:0;border:1px solid var(--ln);background:var(--w);
  margin-bottom:12px;flex-wrap:wrap}
.pp-foto{width:150px;height:auto;min-height:118px;object-fit:cover;background:var(--w3);flex:none;
  border-right:1px solid var(--ln)}
.pp-foto.sinfoto{visibility:hidden;width:0;border:0}
.pp-d{flex:1;min-width:260px;padding:14px 16px;display:flex;flex-direction:column;gap:7px}
.pp-dir{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pp-dir b{font-size:16px;font-weight:600;letter-spacing:-.02em}
.pp-meta{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pp-meta b{font-size:15px}
.pp-acc{display:flex;gap:7px;flex-wrap:wrap;margin-top:2px}
.pp-res{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;
  padding:14px 20px;border-left:1px solid var(--ln);min-width:150px}
.pp-res b{font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1}
.pp-res .mini{color:var(--k4)}
@media (max-width:820px){ .pp-res{border-left:0;border-top:1px solid var(--ln);width:100%}
  .pp-foto{width:100%;height:120px;border-right:0;border-bottom:1px solid var(--ln)} }
.xdem{display:flex;align-items:center;gap:7px;padding:7px 9px;font-size:11.5px;
  border:1px solid var(--ln);background:var(--w2);cursor:pointer;color:var(--k4);text-align:left}
.xdem span{flex:1;min-width:0}
.xdem svg{stroke:var(--k4);flex:none}
.xdem.hay{color:var(--k);border-color:var(--o-line);background:var(--o-soft)}
.xdem.hay svg{stroke:var(--o-ink)}
@media (hover:hover) and (pointer:fine){ .xdem:hover{border-color:var(--k3)} }

/* ==================================================================
   CAPA CÁLIDA - redondeos y sombras
   El cliente mandó una referencia suya: crema, esquinas redondas y sombra
   suave. La paleta y la tipografía ya están arriba, en :root; aquí solo se
   da forma a los contenedores, que en el diseño anterior eran todos a filo.
   Va al final a propósito: es una capa de forma, se lee de una vez y se
   puede afinar sin tocar la estructura de cada componente.
   ================================================================== */

/* --- tarjetas y superficies --- */
.card, .xcard, .acard, .agh-col, section.hoy, .pp-piso, .tw, .cx, .plt-c, .ocard,
.doc-lista, .empty, .allgood, .vacio, .tl2, .protonote, .headline,
.inf-cifra, .goals, .can-c, .dup-c, .op-c, .filtros{
  border-radius:var(--r)}
.card, .xcard, .acard, .agh-col, section.hoy, .pp-piso, .cx, .ocard{box-shadow:var(--sh)}
.tiles .tile{border-radius:var(--r-sm)}
/* Esto ponía overflow:hidden para redondear la esquina y de paso mataba el
   scroll lateral: con doce columnas la tabla no se podía deslizar. `auto`
   recorta igual contra el radio y además deja arrastrarla. */
.tw{overflow:auto}
.xcard, .pp-piso{overflow:hidden}         /* y la foto, también */
.card{overflow:hidden}

/* --- controles --- */
.btn, .chip, .icb, .hbtn, .lnk, .xrep-b, .seg, .tabs button, .filtro select,
.filtro-busca, .search, input, select, textarea, .cal-b, .dd-t{
  border-radius:var(--r-sm)}
.seg{overflow:hidden}
.seg button{border-radius:0}
.bdg, .cnt, .dot, .sw, .pchip, .mot, .score{border-radius:5px}
.avatar{border-radius:50%}
.pbar, .pbar i, .segbar, .segbar i, .lr-barra, .lr-barra i{border-radius:99px}
.dd-pop, .panel, #modal .modal, .toast, .buscador{border-radius:var(--r);box-shadow:var(--sh-alto)}
.dd-pop, .panel{overflow:hidden}
.plt-c{transition:box-shadow .16s var(--ease-out), border-color .16s var(--ease-out)}

/* --- el rail y la barra de arriba, sobre el papel crema --- */
.rail{background:var(--w)}
.view{background:var(--bg)}
.topbar{background:var(--w)}

/* La banda de sección es la única pieza oscura: con marrón cálido en vez de
   negro deja de parecer una barra de sistema y pasa a ser parte de la marca. */
.secc{border-radius:var(--r) var(--r) 0 0}
.secc-t button{border-radius:var(--r-sm) var(--r-sm) 0 0}

@media (hover:hover) and (pointer:fine){
  .xcard:hover, .card:hover, .plt-c:hover{box-shadow:var(--sh-alto)}
}

/* el número de orden de la cola de gestiones: sustituye a las cabeceras de
   cajón, dice lo mismo (qué va primero) ocupando una línea menos */
.acard-ord{display:grid;place-items:center;width:19px;height:19px;flex:none;
  font-size:10.5px;font-weight:600;color:var(--k4);background:var(--w3);border-radius:50%}
.p-rojo .acard-ord{background:var(--no-soft);color:var(--no)}
.p-ambar .acard-ord{background:var(--o-soft);color:var(--o-ink)}
.acciones{border-radius:var(--r);overflow:hidden;box-shadow:var(--sh)}

/* ===== AGENDA ESTILO GOOGLE CALENDAR =====
   Barra lateral con el mes y los calendarios, y a la derecha la rejilla de la
   semana con minutos reales. Los eventos se posicionan en porcentaje sobre la
   franja visible, así que un evento de 9:15 a 10:45 cae donde tiene que caer
   y no en una celda de una hora. */
.gsync{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:11px 14px;margin:13px 0 12px;
  border:1px solid var(--ln);background:var(--w);border-radius:var(--r);box-shadow:var(--sh)}
.gsync-ic{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;
  background:var(--w3);flex:none}
.gsync-ic svg{stroke:var(--k3)}
.gsync-t{display:flex;flex-direction:column;line-height:1.3}
.gsync-t b{font-size:13.5px}
.gsync-n{flex-basis:100%;color:var(--k4)}

.gcal{display:grid;grid-template-columns:212px 1fr;gap:14px;align-items:start}
@media (max-width:1040px){ .gcal{grid-template-columns:1fr} }

.gcal-lat{display:flex;flex-direction:column;gap:14px;border:1px solid var(--ln);background:var(--w);
  border-radius:var(--r);box-shadow:var(--sh);padding:13px}
.gm-h{margin-bottom:7px;font-size:12.5px}
.gm-h b{font-family:"Nunito","Figtree",sans-serif;font-weight:700}
.gm-g{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}
.gm-w{font-size:9.5px;font-weight:700;color:var(--k4);padding-bottom:3px}
.gm-d{font-size:10.5px;padding:3px 0;border-radius:50%;color:var(--k3);line-height:1.5}
.gm-d.ensem{background:var(--o-soft);color:var(--o-ink);font-weight:600}
.gm-d.hoy{background:var(--k);color:var(--w);font-weight:700}
.gm-cal{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--ln);padding-top:11px}
.gm-c{display:flex;align-items:center;gap:7px;font-size:12px;cursor:pointer}
.gm-c input{width:13px;height:13px;flex:none;cursor:pointer}
.gm-c .gm-p{width:9px;height:9px;border-radius:2px;flex:none}
.gm-c span:nth-of-type(2){flex:1;min-width:0}
.gm-c .mini{color:var(--k4)}
.gm-nota{margin:0;font-size:11px;color:var(--k4);line-height:1.45;border-top:1px solid var(--ln);padding-top:10px}

.gcal-main{border:1px solid var(--ln);background:var(--w);border-radius:var(--r);
  box-shadow:var(--sh);overflow:hidden;min-width:0}
.gcal-cab{display:grid;grid-template-columns:56px repeat(6,1fr);border-bottom:1px solid var(--ln)}
.gcal-tz{font-size:9px;color:var(--k4);display:grid;place-items:center;font-weight:700}
.gcal-d{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 0 7px;
  border-left:1px solid var(--ln)}
.gcal-dl{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--k4)}
.gcal-dn{font-size:19px;font-weight:600;line-height:1.15;width:31px;height:31px;display:grid;
  place-items:center;border-radius:50%}
.gcal-d.hoy .gcal-dl{color:var(--o-ink)}
.gcal-d.hoy .gcal-dn{background:var(--o);color:var(--k);font-weight:700}
.gcal-cuerpo{display:grid;grid-template-columns:56px 1fr;height:560px;overflow-y:auto}
.gcal-horas{display:flex;flex-direction:column;justify-content:space-between;padding:0 7px 0 0;
  position:relative;top:-6px}
.gcal-hora{font-family:"IBM Plex Mono",monospace;font-size:9.5px;color:var(--k4);text-align:right;
  line-height:1;height:12px}
.gcal-rejilla{display:grid;grid-template-columns:repeat(6,1fr);position:relative;min-width:0}
.gcol{position:relative;border-left:1px solid var(--ln);display:flex;flex-direction:column;min-width:0}
.gcol.hoy{background:#FFFBF2}
.gcol-h{flex:1;border-bottom:1px solid var(--ln)}
.gcol-h:nth-child(odd){border-bottom-color:var(--ln)}

.gev{position:absolute;overflow:hidden;text-align:left;padding:3px 5px 3px 6px;
  border:0;border-left:3px solid;border-radius:4px;display:flex;flex-direction:column;gap:1px;
  line-height:1.2;cursor:pointer;transition:filter .14s var(--ease-out)}
.gev.prop{background:transparent!important;border:1px dashed var(--ln2);border-left:3px dashed var(--k4)}
.gev.corto{flex-direction:row;align-items:center;gap:5px;padding-top:1px;padding-bottom:1px}
.gev-h{font-family:"IBM Plex Mono",monospace;font-size:9px;opacity:.85;flex:none}
.gev-t{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gev-s{font-size:10px;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (hover:hover) and (pointer:fine){ .gev:hover{filter:brightness(.96)} }

/* la línea de la hora actual solo cruza la columna de hoy, como en Google */
.gcal-ahora{position:absolute;height:0;border-top:2px solid #EA4335;z-index:3;pointer-events:none}
.gcal-ahora i{position:absolute;left:-5px;top:-5px;width:9px;height:9px;border-radius:50%;
  background:#EA4335;display:block}

/* filtros del generador de documentos: nueve plantillas caben de un vistazo,
   así que van chips y buscador, no la rejilla de desplegables de las tablas */
.plt-q{max-width:220px}
.plt-f{gap:10px;margin-top:-4px}
.plt-f .seg.sm .cnt{margin-left:5px;font-size:10px;opacity:.7}

/* ===== UN SOLO LENGUAJE DE PESTAÑAS =====
   Había tres a la vez: la banda oscura de sección, un grupo de píldoras con el
   número pegado al texto («Seguimientos7») y las pestañas sueltas de tabla.
   Ahora es una sola familia con dos niveles:

     nivel 1 · la sección   -> banda oscura, pestaña activa blanca  (.secc)
     nivel 2 · dentro de la página -> misma forma en claro          (.seg dentro de #view)

   El contador es el mismo objeto en los dos, solo cambia el contraste. Los
   .seg del topbar (periodo, rol) se quedan como estaban: son controles de
   chrome, no navegación, y mezclarlos volvería a romper la jerarquía. */
/* width:fit-content y no align-self: .tabs es un div suelto en el flujo, no un
   hijo flex, y sin esto la caja se estiraba a todo el ancho de la página. */
#view .seg, .tabs{background:var(--w3);border:1px solid var(--ln);padding:3px;gap:2px;
  border-radius:var(--r-sm);align-self:flex-start;width:fit-content;max-width:100%}
#view .seg button, .tabs button{padding:6px 13px;font-size:13px;font-weight:500;color:var(--k3);
  border-right:0;border-radius:var(--r-sm);display:flex;align-items:center;gap:7px;flex:none;
  transition:background .16s var(--ease-out),color .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  #view .seg button:not(.on):hover, .tabs button:not(.on):hover{background:rgba(59,42,26,.06);color:var(--k)} }
#view .seg button.on, .tabs button.on{background:var(--w);color:var(--k);font-weight:600;box-shadow:var(--sh)}
#view .seg.sm button{padding:4px 10px;font-size:12px}

/* el contador, idéntico arriba y abajo: antes en el nivel 2 no tenía regla
   ninguna y salía pegado al texto */
#view .seg .cnt, .tabs .cnt{font-family:"IBM Plex Mono",monospace;font-size:10px;font-weight:600;
  background:rgba(59,42,26,.1);color:var(--k3);padding:1px 6px;min-width:17px;
  text-align:center;border-radius:4px;line-height:1.5}
#view .seg button.on .cnt, .tabs button.on .cnt{background:var(--k);color:var(--w)}

/* ===== EL MENÚ LATERAL, CON MÁS PRESENCIA =====
   Con la paleta cálida el rail se quedó plano: texto gris sobre casi blanco y
   la entrada activa apenas se distinguía de las demás. Ahora la activa es una
   pastilla marrón llena -el mismo objeto que la pestaña activa de una sección,
   invertido- y las inactivas suben de contraste. El rail se apoya sobre el
   papel crema para que las pastillas tengan de dónde despegarse. */
.rail{background:var(--bg);border-right:1px solid var(--ln)}
.rail-logo{border-bottom:1px solid var(--ln);padding:16px 14px 15px}
.rail-nav{padding:10px 8px 24px;gap:2px}
.rail-item{padding:9px 12px;font-size:13.5px;font-weight:500;color:var(--k2);
  border-radius:var(--r-sm);gap:11px}
.rail-item svg{width:16px;height:16px;opacity:.65}
@media (hover:hover) and (pointer:fine){
  .rail-item:hover{background:rgba(59,42,26,.06);color:var(--k)}
  .rail-item:hover svg{opacity:.9} }
.rail-item.on{background:var(--k);color:var(--w);font-weight:600;box-shadow:var(--sh)}
.rail-item.on svg{opacity:1;stroke:var(--o)}
/* la barrita naranja de la izquierda sobraba en cuanto la pastilla es sólida */
.rail-item.on::before{display:none}
.rail-item .dot{background:var(--o);color:var(--k);border-radius:20px;height:18px;
  min-width:18px;font-size:10px;padding:0 5px}
.rail-item.on .dot{background:var(--o);color:var(--k)}

/* ===== PLAN DE ZONA =====
   La tira del ciclo: los cinco días de un vistazo, con cuánto se pasó de cada
   uno y qué se quedó colgado. El día de hoy manda visualmente; los pasados que
   dejaron fincas sin pasar se marcan en rojo, porque esas son las que hoy
   aparecen arrastradas abajo. */
.zdias{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;margin-bottom:14px}
.zdia{display:flex;flex-direction:column;gap:7px;padding:12px 13px;text-align:left;
  border:1px solid var(--ln);background:var(--w);border-radius:var(--r);cursor:pointer;
  box-shadow:var(--sh);transition:border-color .16s var(--ease-out),box-shadow .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .zdia:hover{box-shadow:var(--sh-alto)} }
.zdia-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.zdia-h b{font-family:"Nunito","Figtree",sans-serif;font-size:15px;font-weight:700}
.zdia-n{display:flex;flex-direction:column;line-height:1.3}
.zdia-n b{font-size:21px;font-weight:500;letter-spacing:-.03em}
.zdia-n span{font-size:11px;color:var(--k4)}
.zdia-p{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--k4)}
.zdia.pasado{background:var(--w2)}
.zdia.pasado .zdia-n b{color:var(--k4)}
.zdia.hoy{border-color:var(--o);border-width:2px;padding:11px 12px}
.zdia.hoy .zdia-h b{color:var(--o-ink)}
.zdia.proximo{border-style:dashed}
.zdia.sel{outline:2px solid var(--k);outline-offset:-2px}
/* Ciclo largo: las mismas tarjetas, apretadas. Se quitan los rótulos de apoyo
   -«en 3 días», «cerrado»- porque con 28 casillas son ruido, no información. */
.zdias.largo{grid-template-columns:repeat(auto-fit,minmax(98px,1fr));gap:6px}
.zdias.largo .zdia{padding:8px 9px;gap:4px;border-radius:var(--r-sm)}
.zdias.largo .zdia-h .ml,
.zdias.largo .zdia-p .bdg{display:none}
.zdias.largo .zdia-h b{font-size:12.5px}
.zdias.largo .zdia-n b{font-size:17px}
.zdias.largo .zdia-n span{font-size:10px}
.zdias.largo .zdia-p{font-size:10px}
.zdias.largo .zdia.hoy{padding:7px 8px}

/* de dónde viene una finca arrastrada */
.par-arr{display:inline-flex;align-items:center;gap:5px;margin-left:9px;font-size:10.5px;
  font-weight:600;color:var(--no);background:var(--no-soft);padding:1px 7px;border-radius:5px;
  vertical-align:middle}
.par-arr svg{stroke:var(--no)}

/* ===== CÓMO VAS: los cinco círculos del comercial =====
   Rojo, ámbar, verde según lo lejos que estés del objetivo. Es lo primero que
   ve al entrar, antes que nada: lo pidió el cliente con esas palabras. */
.anillos{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
  background:var(--ln);border:1px solid var(--ln);border-radius:var(--r);overflow:hidden;
  box-shadow:var(--sh);margin-bottom:6px}
.anillo{display:flex;align-items:center;gap:13px;padding:15px 16px;background:var(--w)}
.anillo .ring{flex:none}
.anillo-i{display:flex;flex-direction:column;gap:2px;min-width:0}
.anillo-i b{font-size:13.5px;font-weight:600}
.anillo-i .mono{font-size:17px;font-weight:500;letter-spacing:-.02em}
.anillo-i .mono small{font-size:12px;color:var(--k4);font-weight:400}
.anillo.sem-verde{background:linear-gradient(var(--ok-soft),var(--ok-soft)) padding-box,var(--w)}
.anillo.sem-rojo .anillo-i .mono{color:var(--no)}
.anillo.sem-verde .anillo-i .mono{color:var(--ok)}

/* ===== COMENTARIOS =====
   El mismo panel para el seguimiento y para la vivienda: el cliente preguntó
   por los dos y son el mismo objeto. */
.coms{display:flex;flex-direction:column;gap:12px}
.com{display:flex;gap:10px;align-items:flex-start}
.com .avatar{flex:none;width:28px;height:28px;font-size:10px}
.com-c{flex:1;min-width:0}
.com-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.com-h b{font-size:12.5px;font-weight:600}
.com-c p{margin:2px 0 0;font-size:13px;line-height:1.5;color:var(--k2)}
.com-in{width:100%;font:inherit;font-size:13px;padding:10px 11px;border:1px solid var(--ln2);
  border-radius:var(--r-sm);background:var(--w);color:var(--k);resize:vertical;line-height:1.5}
.com-in:focus{outline:2px solid var(--o);outline-offset:-1px;border-color:transparent}
.v-com .btn{margin-top:5px}

/* ===== GANTT DE OPERACIONES =====
   De las arras a la escritura, en una línea por operación. La vertical marca
   hoy: lo que queda a su izquierda ya tendría que estar firmado. */
/* ===== LÍNEA DE PROGRESO DE LA CARTERA =====
   Izquierda el momento 0, derecha el 100. Tres tramos del mismo ancho: el piso
   en gestión, las arras firmadas y la escritura. La barra de cada inmueble dice
   dónde está de verdad, no en qué fecha entró. */
.pg{border:1px solid var(--ln);background:var(--w);border-radius:var(--r);
  box-shadow:var(--sh);margin-bottom:14px;overflow:hidden}
.pg-cab{display:grid;grid-template-columns:238px 1fr 46px;gap:14px;align-items:end;
  padding:10px 14px 8px;border-bottom:1px solid var(--ln);background:var(--w2)}
.pg-esc{position:relative;height:34px}
.pg-t{position:absolute;top:0;display:flex;flex-direction:column;gap:1px;padding-left:9px;
  border-left:2px solid var(--ln2);min-width:0}
.pg-t b{font-size:11px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.pg-t .ml{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pg-t .pg-c{position:absolute;top:0;right:8px;font-size:10px;color:var(--k4)}
.pg-t.fase-gestion{border-left-color:var(--in)}
.pg-t.fase-arras{border-left-color:var(--o)}
.pg-t.fase-firmado{border-left-color:var(--ok)}
.pg-b{max-height:min(46vh,420px);overflow-y:auto}
.pg-f{display:grid;grid-template-columns:238px 1fr 46px;gap:14px;width:100%;align-items:center;
  padding:8px 14px;border-bottom:1px solid var(--ln);text-align:left;cursor:pointer;
  transition:background .14s var(--ease-out)}
.pg-f:last-child{border-bottom:0}
@media (hover:hover) and (pointer:fine){ .pg-f:hover{background:var(--w2)} }
.pg-n{display:flex;flex-direction:column;gap:2px;align-items:flex-start;min-width:0}
.pg-n b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;max-width:100%}
.pg-p{position:relative;height:20px;border-radius:10px;background:var(--w3);overflow:visible}
.pg-sep{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--ln2);opacity:.9}
.pg-barra{position:absolute;left:0;top:0;height:20px;border-radius:10px;display:flex;
  align-items:center;padding:0 10px;min-width:30px;overflow:hidden}
.pg-barra span{font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--k)}
.pg-barra.fase-gestion{background:var(--in-soft);border:1px solid var(--in-soft)}
.pg-barra.fase-arras{background:var(--o-soft);border:1px solid var(--o-line)}
.pg-barra.fase-firmado{background:var(--ok-soft);border:1px solid var(--ok-soft)}
.pg-barra.sem-rojo{background:var(--no-soft);border-color:var(--no-soft)}
.pg-punto{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;
  transform:translate(-50%,-50%);background:var(--k);border:2px solid var(--w);z-index:2}
.pg-pct{font-size:11px;color:var(--k3);text-align:right}
.pg-ley{display:flex;gap:16px;flex-wrap:wrap;align-items:center;padding:9px 14px;
  border-top:1px solid var(--ln);background:var(--w2)}
.pg-ley .ley{width:11px;height:11px;border-radius:3px;display:inline-block;margin-right:6px;
  vertical-align:-1px}
.ley.fase-gestion{background:var(--in-soft);border:1px solid var(--in)}
.ley.fase-arras{background:var(--o-soft);border:1px solid var(--o)}
.ley.fase-firmado{background:var(--ok-soft);border:1px solid var(--ok)}
.op.resalta{outline:2px solid var(--o);outline-offset:2px}
@media (max-width:820px){ .pg-cab,.pg-f{grid-template-columns:1fr;gap:6px}
  .pg-cab .ml,.pg-pct{display:none} }

/* el tope de un piso por persona y día, dicho donde se decide el envío */
.env-tope{display:flex;align-items:flex-start;gap:9px;margin:0 0 12px;padding:10px 13px;
  font-size:12.5px;line-height:1.5;color:var(--k2);background:var(--o-soft);
  border:1px solid var(--o-line);border-radius:var(--r-sm)}
.env-tope svg{stroke:var(--o-ink);flex:none;margin-top:2px}

/* el botón de comentarios: con la palabra escrita, no solo el icono */
.bcom{white-space:nowrap}
.bcom .cnt{margin-left:6px;font-family:"IBM Plex Mono",monospace;font-size:10px;font-weight:600;
  background:var(--k);color:var(--w);padding:1px 6px;min-width:17px;text-align:center;border-radius:4px}
.bcom.hay{border-color:var(--ln2);color:var(--k)}
.bcom.hay svg{stroke:var(--k2)}

/* ===== CAMPAÑA DE WHATSAPP, ESTILO MAILCHIMP =====
   Arriba qué mandas, a cuántos y si está listo; debajo los tres pasos
   numerados. Lo que se manda es un piso, así que la cabecera lleva su foto. */
.camp-h{display:flex;align-items:stretch;gap:0;border:1px solid var(--ln);background:var(--w);
  border-radius:var(--r);box-shadow:var(--sh);margin-bottom:14px;overflow:hidden;flex-wrap:wrap}
.camp-foto{width:170px;flex:none;object-fit:cover;background:var(--w3);border-right:1px solid var(--ln)}
.camp-foto.sinfoto{display:none}
.camp-varias{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:20px 14px;text-align:center;font-size:11px;font-weight:600;color:var(--k4);line-height:1.4}
.camp-varias svg{stroke:var(--k4)}
.camp-i{flex:1;min-width:280px;padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.camp-i h2{font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.2}
.camp-i p{margin:0;font-size:13px;color:var(--k3);line-height:1.5;max-width:64ch}
.camp-pasos{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.camp-paso{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--ln);
  background:var(--w2);border-radius:99px}
.camp-paso i{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;flex:none;
  background:var(--ln);color:var(--k3);font-size:11px;font-weight:700;font-style:normal}
.camp-paso span{display:flex;flex-direction:column;line-height:1.25}
.camp-paso b{font-size:12px;font-weight:600}
.camp-paso small{font-size:10.5px;color:var(--k4)}
.camp-paso.ok{background:var(--ok-soft);border-color:var(--ok-soft)}
.camp-paso.ok i{background:var(--ok);color:#fff}
.camp-paso.ok i svg{stroke:#fff}
.camp-cta{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:7px;
  padding:16px 18px;border-left:1px solid var(--ln);background:var(--w2);min-width:200px}
.camp-cta b{font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1;text-align:center}
.camp-cta .ml{text-align:center;margin-bottom:4px}
.camp-cta .btn[disabled]{opacity:.5;cursor:not-allowed}
@media (max-width:900px){ .camp-cta{border-left:0;border-top:1px solid var(--ln);width:100%}
  .camp-foto{width:100%;height:130px;border-right:0;border-bottom:1px solid var(--ln)} }

/* el piso en pequeño, dentro de un paso o de la previa */
.camp-mini{display:flex;align-items:center;gap:10px;padding:9px;margin-top:9px;
  border:1px solid var(--ln);background:var(--w2);border-radius:var(--r-sm)}
.camp-mini img{width:52px;height:40px;object-fit:cover;border-radius:5px;flex:none;background:var(--w3)}
.camp-mini div{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}
.camp-mini b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* el número del paso, en la cabecera de cada tarjeta */
.paso-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;flex:none;
  background:var(--k);color:var(--w);font-size:11.5px;font-weight:700;
  font-family:"IBM Plex Mono",monospace}

/* ===== destinatarios: marcar, desmarcar, enviar de uno en uno ===== */
.env-chk{width:38px;text-align:center}
.env-chk .env-check{display:inline-flex;margin:0;padding:0}
tr.env-off{opacity:.42}
tr.env-off b{font-weight:500}
.env-mejor{display:inline-flex;align-items:center;gap:6px;margin-top:5px;padding:3px 8px;
  font-size:11px;line-height:1.4;text-align:left;color:var(--o-ink);background:var(--o-soft);
  border:1px solid var(--o-line);border-radius:5px;cursor:pointer}
.env-mejor b{font-weight:700}
.env-mejor svg{stroke:var(--o-ink);flex:none}
@media (hover:hover) and (pointer:fine){ .env-mejor:hover{background:var(--o);color:var(--k)}
  .env-mejor:hover svg{stroke:var(--k)} }

/* elegir varios pisos para una misma persona, dentro del panel */
.camp-pick{display:flex;align-items:center;gap:10px;padding:9px;margin-bottom:7px;cursor:pointer;
  border:1px solid var(--ln);background:var(--w2);border-radius:var(--r-sm);
  transition:border-color .14s var(--ease-out),background .14s var(--ease-out)}
.camp-pick.on{border-color:var(--o);background:var(--o-soft)}
.camp-pick input{width:15px;height:15px;flex:none;cursor:pointer;accent-color:var(--o)}
.camp-pick img{width:46px;height:36px;object-fit:cover;border-radius:5px;flex:none;background:var(--w3)}
.camp-pick-i{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}
.camp-pick-i b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camp-q{max-width:190px}
.env-chips .chip.multi{border-style:dashed}
/* la persona elegida, en el modo de mensaje a una sola */
.camp-per{display:flex;align-items:center;gap:10px;padding:10px;margin-top:9px;
  border:1px solid var(--ln);background:var(--w2);border-radius:var(--r-sm)}
.camp-per .avatar{flex:none}
.camp-per div{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}
.camp-per b{font-size:13px;font-weight:600}

/* ===== filtros avanzados y cuáles quedan a la vista ===== */
.filtro-mas{border-style:dashed}
.filtro-mas .cnt{margin-left:6px;font-family:"IBM Plex Mono",monospace;font-size:10px;
  background:var(--k);color:var(--w);padding:1px 6px;border-radius:4px}
.filtro.editable{outline:1px dashed var(--ln2);outline-offset:3px;border-radius:4px}
.filtro .ml{display:inline-flex;align-items:center;gap:5px}
.filtro-pin{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;flex:none;
  background:var(--w3);cursor:pointer;padding:0}
.filtro-pin svg{stroke:var(--k4);width:10px;height:10px}
.filtro-pin.on{background:var(--o)}
.filtro-pin.on svg{stroke:var(--k)}

/* la nota escrita desde la propia tabla de pedidos */
.ped-nota{max-width:190px}
.nota-btn{display:block;width:100%;text-align:left;font-size:11.5px;line-height:1.4;color:var(--k4);
  padding:5px 8px;border:1px dashed var(--ln2);border-radius:5px;cursor:pointer;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nota-btn.hay{color:var(--k2);border-style:solid;background:var(--w2);white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nota-btn svg{stroke:var(--k4);vertical-align:-2px;margin-right:5px}
@media (hover:hover) and (pointer:fine){ .nota-btn:hover{border-color:var(--k3);color:var(--k)} }

/* ===== filas del cruce más bajas =====
   «que cada pedido sea un poco más bajo para ver más a la vez, y los botones
   de la derecha en cuadrícula en vez de horizontal». Los cuatro botones pasan
   a 2×2, que ocupa la mitad de alto y no obliga a estirar la fila. */
.cx-m{padding:10px 14px;gap:12px}
.cx-info{gap:3px}
.cx-acc{display:grid;grid-template-columns:1fr 1fr;gap:5px;align-items:start;min-width:186px}
.cx-acc .btn{justify-content:center;padding:5px 8px;font-size:11.5px}
.cx-acc.fila{display:flex;flex-direction:row;align-items:center}
.cx-frase{margin:1px 0}
.cx-motivos{gap:4px}
.cx-ring{gap:1px}
@media (max-width:900px){ .cx-acc{grid-template-columns:1fr 1fr 1fr 1fr;min-width:0} }

/* ===== permisos por acción =====
   Cuatro alcances por recurso: ver, crear, editar y eliminar. En la tabla de
   roles van como cuatro puntitos; en el panel de la persona, como cuatro
   desplegables, que es donde de verdad se toca. */
.perm-res{display:flex;gap:3px}
.perm-p{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:4px;
  font-size:9.5px;font-weight:700;font-style:normal}
.perm-p.verde{background:var(--ok-soft);color:var(--ok)}
.perm-p.ambar{background:var(--o-soft);color:var(--o-ink)}
.perm-p.rojo{background:var(--no-soft);color:var(--no)}
.perm-fila{padding:9px 0;border-bottom:1px solid var(--ln)}
.perm-fila:last-of-type{border-bottom:0}
.perm-fila.aMedida{background:var(--o-soft);margin:0 -14px;padding:9px 14px}
.perm-r{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;text-transform:capitalize}
.perm-accs{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.perm-acc{display:flex;flex-direction:column;gap:2px;min-width:0}
.perm-acc select{width:100%;font-size:12px}

/* ===== pedido vs búsqueda activa =====
   Gerard no veía la diferencia entre las dos listas, y en pantalla no la había.
   Esta tira la explica sin abrir nada: dos tarjetas y una flecha en medio. */
.qes{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch;
  margin:0 0 14px}
.qes-c{background:var(--w2);border:1px solid var(--ln);border-radius:var(--r);
  padding:11px 13px;display:flex;flex-direction:column;gap:5px}
.qes-c.on{background:var(--w);border-color:var(--ln2);box-shadow:var(--sh)}
.qes-t{font-family:var(--lbl);font-weight:800;font-size:12px;letter-spacing:.02em;
  color:var(--k)}
.qes-c p{margin:0;font-size:12px;line-height:1.5;color:var(--k3)}
.qes-c .mini{margin-top:auto;padding-top:3px;color:var(--k4)}
.qes-fl{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:5px;color:var(--k4);max-width:132px;text-align:center}
.qes-fl b{font-size:11px;font-weight:700;line-height:1.35}
@media (max-width:820px){
  .qes{grid-template-columns:1fr}
  .qes-fl{flex-direction:row;max-width:none}
  .qes-fl svg{transform:rotate(90deg)}
}

/* la insignia de la tabla de pedidos es un botón: lleva a la búsqueda o la abre */
.bdg.cual{cursor:pointer;border:1px solid transparent;font-family:var(--lbl)}
.bdg.cual:hover{border-color:currentColor}

/* ===== columna «Qué busca» de la lista única de pedidos ===== */
.qbusca{max-width:230px}
.qb{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.qb-c{font-size:11.5px;line-height:1.4;color:var(--k3)}

/* ===== desplegable de varios valores =====
   Se marca y se desmarca sin que la lista se cierre, y el pie lo dice. */
.dd-pop.multi .dd-op.on{background:var(--o-soft)}
.dd-pie{display:flex;align-items:center;gap:6px;padding:8px 11px;
  border-top:1px solid var(--ln);background:var(--w2);color:var(--k4);
  font-size:11px;line-height:1.35;border-radius:0 0 var(--r) var(--r)}
.dd-pie svg{flex:none;color:var(--ok)}

/* ===== columnas de tabla a medida y edición en línea ===== */
.cols-ed{display:flex;flex-direction:column;gap:8px;width:100%;
  background:var(--w2);border:1px solid var(--ln2);border-radius:var(--r);padding:11px 13px}
.cols-l{display:flex;flex-wrap:wrap;gap:6px}
.cols-b{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;cursor:pointer;
  font-family:var(--lbl);font-size:11.5px;font-weight:600;color:var(--k3);
  background:var(--w);border:1px solid var(--ln);border-radius:999px}
.cols-b:hover{border-color:var(--ln2);color:var(--k)}
.cols-b.on{background:var(--k);border-color:var(--k);color:var(--w)}
.cols-p{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cols-p .mini{margin-right:auto}

/* el lápiz solo aparece al pasar por encima, para no llenar la tabla de iconos */
#view td.editable{position:relative}
#view td.editable .ed-l{position:absolute;top:4px;right:4px;opacity:0;
  display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;
  cursor:pointer;color:var(--k4);background:var(--w);border:1px solid var(--ln2);
  border-radius:var(--r-sm);transition:opacity .12s}
#view tr:hover td.editable .ed-l{opacity:1}
#view td.editable .ed-l:hover,#view td.editable .ed-l:focus-visible{opacity:1;color:var(--k);
  border-color:var(--ln3);background:var(--w2)}

/* el pie de la fila de anillos del panel: lo que no tiene objetivo y por tanto
   no puede llevar anillo, dicho en una línea en vez de fingir una métrica */
.anillos-pie{margin:10px 2px 0;font-size:11.5px;color:var(--k4)}
.anillos-pie b{color:var(--k2)}

/* Tantas columnas como anillos haya, para que no quede un hueco vacío al final
   cuando son seis. Por debajo de cierto ancho se parten en dos filas iguales. */
.anillos{display:grid;grid-template-columns:repeat(var(--n,5),1fr)}
@media (max-width:1180px){ .anillos{grid-template-columns:repeat(3,1fr)} }
@media (max-width:700px){ .anillos{grid-template-columns:repeat(2,1fr)} }

/* ===== Oportunidades: cabecera, avisos y tarjetas =====
   Sobre el mockup del cliente, con la paleta cálida y las etapas reales. */
.opo-cab{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin:0 0 4px}
.opo-t h2{margin:0;font-family:var(--lbl);font-size:23px;font-weight:800;letter-spacing:-.02em;color:var(--k)}
.opo-t p{margin:3px 0 0}
.opo-t p b{color:var(--k2);font-family:"IBM Plex Mono",monospace}
.opo-av{display:flex;gap:9px;flex-wrap:wrap;margin-left:auto}
.av{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;cursor:pointer;
  border:1px solid var(--ln);border-radius:var(--r);background:var(--w);
  font-family:var(--lbl);font-size:12px;font-weight:600;color:var(--k3)}
.av b{font-family:"IBM Plex Mono",monospace;font-size:15px;font-weight:700}
.av>svg:last-child{opacity:.5;margin-left:2px}
.av:hover{border-color:var(--ln2)}
.av.on{box-shadow:inset 0 0 0 2px currentColor}
.av-no{background:var(--no-soft);border-color:#F3CDC3;color:var(--no)}
.av-o{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.av-in{background:var(--in-soft);border-color:#C5D8EE;color:var(--in)}
.av-no b,.av-o b,.av-in b{color:inherit}

/* punto de color de la etapa, en la columna y en la lista */
.et-d{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
.et-p{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;color:var(--k2)}
.et-p i{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}

.kbcol{flex:0 0 262px}
.kb-nada{margin:10px 4px;font-size:11.5px;color:var(--k4)}

/* La columna es un flex vertical: sin esto las tarjetas se encogen hasta
   tapar la próxima acción, que es justo lo que hay que ver. */
.kbb>*{flex:0 0 auto}
.ocard{background:var(--w);border:1px solid var(--ln);border-radius:var(--r);
  padding:9px 9px 0;display:flex;flex-direction:column;gap:7px;overflow:hidden;text-align:left}
@media (hover:hover) and (pointer:fine){ .ocard:hover{border-color:var(--ln2)} }
.oc-top{display:flex;align-items:flex-start;gap:9px}
.oc-foto{width:42px;height:42px;border-radius:var(--r-sm);object-fit:cover;flex:none;
  background:var(--w3);border:1px solid var(--ln)}
.oc-foto.sinfoto{visibility:hidden}
.oc-d{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.oc-dir{font-size:12.5px;font-weight:700;line-height:1.3;letter-spacing:-.015em;color:var(--k)}
.oc-n{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.oc-n b{font-size:13px}
.oc-com{font-size:11px;color:var(--k4)}
.oc-b{display:flex}
.oc-t{display:flex;align-items:center;justify-content:space-between;gap:8px}
.oc-t .mini{display:inline-flex;align-items:center;gap:4px}

/* La próxima acción es lo que se hace con la tarjeta, así que ocupa el pie
   entero y se pulsa. En rojo cuando no hay ninguna: es el defecto a corregir. */
.oc-acc{display:flex;align-items:center;gap:8px;width:calc(100% + 18px);margin:2px -9px 0;
  padding:9px;cursor:pointer;text-align:left;border:0;border-top:1px solid var(--ln);
  background:var(--w2);font-family:var(--lbl);font-size:11.5px;font-weight:600;color:var(--k2)}
.oc-acc span{display:flex;flex-direction:column;gap:1px;min-width:0}
.oc-acc small{font-weight:500;font-size:10.5px;color:var(--k4);letter-spacing:.01em}
.oc-acc svg{flex:none;opacity:.7}
.oc-acc:hover{background:var(--w3);color:var(--k)}
.oc-acc.tarde{background:var(--o-soft);color:var(--o-ink);border-top-color:var(--o-line)}
.oc-acc.tarde small{color:var(--o-ink);opacity:.8}
.oc-acc.falta{background:var(--no-soft);color:var(--no);border-top-color:#F3CDC3}
.oc-acc.falta small{color:var(--no);opacity:.8}

@media (max-width:760px){ .opo-av{margin-left:0;width:100%} .av{flex:1} }

/* ===== fecha de la próxima llamada ===== */
.prox{display:inline-flex;align-items:center;gap:5px;font-family:var(--lbl);
  font-size:11.5px;font-weight:700;color:var(--k2)}
.prox.hoy{color:var(--o-ink)}
.prox.tarde{color:var(--no)}
/* el botón de la próxima llamada: dice qué es, cuándo es y abre el calendario.
   El color lo pone el estado, igual que el chip que había antes. */
.prox-cal b{font-weight:700;margin-left:2px}
.prox-cal.hoy b{color:var(--o-ink)}
.prox-cal.tarde b{color:var(--no)}
.prox-cal.tarde{border-color:color-mix(in srgb,var(--no) 35%,transparent)}
.tarde-t{color:var(--no)}
.org{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:var(--k2)}
.nota-v{font-size:11.5px;line-height:1.4;color:var(--k4)}
.nota-v.hay{color:var(--k2)}

/* ===== columnas: orden, ancho y edición en la casilla ===== */
.cols-b{display:inline-flex;align-items:center;gap:3px;padding:3px 5px 3px 3px;
  font-family:var(--lbl);font-size:11.5px;font-weight:600;color:var(--k3);
  background:var(--w);border:1px solid var(--ln);border-radius:999px;cursor:pointer}
.cols-b.on{background:var(--k);border-color:var(--k);color:var(--w);cursor:default;padding-right:3px}
.cols-b.on b{font-weight:700;padding:0 3px}
.cols-f{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;
  border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer;opacity:.65}
.cols-f:hover:not(:disabled){opacity:1;background:rgba(255,255,255,.18)}
.cols-b:not(.on) .cols-f:hover{background:var(--w3)}
.cols-f:disabled{opacity:.2;cursor:default}

/* la tira de la que se tira para cambiar el ancho */
#view th{position:relative}
/* columnas que se arrastran: por la cabecera o por la etiqueta del panel */
.cols-mueve th[data-colarr]{cursor:grab}
.cols-mueve th[data-colarr] .col-ord{cursor:grab}
.cols-b.on[data-colarr]{cursor:grab}
body.moviendo-col, body.moviendo-col *{cursor:grabbing !important;user-select:none}
.col-cogida{opacity:.4}
th.col-antes{box-shadow:inset 3px 0 0 var(--o)}
th.col-despues{box-shadow:inset -3px 0 0 var(--o)}
.cols-b.col-antes{box-shadow:-4px 0 0 var(--o)}
.cols-b.col-despues{box-shadow:4px 0 0 var(--o)}
.col-flota{position:fixed;z-index:9999;pointer-events:none;padding:5px 10px;background:var(--k);
  color:var(--w);font-size:12px;font-weight:600;border-radius:var(--r);box-shadow:0 6px 18px rgba(0,0,0,.18)}
.col-tira{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;
  user-select:none}
.col-tira:hover,body.tirando .col-tira{background:linear-gradient(to right,transparent,var(--o-line))}
body.tirando{cursor:col-resize;user-select:none}
.tw-ped table{table-layout:fixed}
.tw-ped td{overflow:hidden;text-overflow:ellipsis}
.tw-ped .acc-col{width:86px;min-width:86px}
.fila-acc{display:flex;gap:4px}

/* la casilla entera se pulsa para editar */
#view td.editable{cursor:text}
#view td.editable:hover{background:var(--o-soft);box-shadow:inset 0 0 0 1px var(--o-line)}

/* casillas de varias opciones en los formularios */
.campo-multi{border:1px solid var(--ln2);border-radius:var(--r);padding:8px 11px 10px;margin:0}
.campo-multi legend{padding:0 4px}
.multi-l{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:5px}
.multi-o{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--k2);cursor:pointer}
.multi-o input{width:14px;height:14px;accent-color:var(--k)}
/* una de pocas, como botones (Compra / Alquiler) */
.campo-bot{border:0;padding:0;margin:0;min-width:0}
.campo-bot legend{padding:0;margin-bottom:6px}
.bot-l{display:inline-flex;width:max-content;align-self:flex-start;border:1px solid var(--ln2);border-radius:var(--r);overflow:hidden}
.bot-o{position:relative;cursor:pointer}
.bot-o input{position:absolute;opacity:0;width:1px;height:1px}
.bot-o span{display:block;padding:8px 22px;font-size:13px;font-weight:500;color:var(--k3);
  border-right:1px solid var(--ln2);background:var(--w)}
.bot-o:last-child span{border-right:0}
.bot-o:hover span{color:var(--k)}
.bot-o input:checked + span{background:var(--k);color:var(--w);font-weight:600}
.bot-o input:focus-visible + span{outline:2px solid var(--o);outline-offset:-2px}
.perm-col{display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.45;
  color:var(--k2);cursor:pointer;margin-bottom:6px}
.perm-col input{width:15px;height:15px;margin-top:1px;accent-color:var(--k)}

/* el desglose del score, plegado al final de la ficha */
.panel-score{margin-top:14px;border-top:1px solid var(--ln);padding-top:10px}
.panel-score summary{display:flex;align-items:center;gap:6px;cursor:pointer;
  font-family:var(--lbl);font-size:11.5px;font-weight:700;color:var(--k3);
  letter-spacing:.02em;text-transform:uppercase;list-style:none}
.panel-score summary::-webkit-details-marker{display:none}
.panel-score summary:hover{color:var(--k)}
.panel-score[open] summary{margin-bottom:7px}

/* ===== chats de pedidos ===== */
/* Alto fijo, no mínimo: con min-height la caja crecía hasta caber los 45 hilos
   y el cuadro de escribir se iba tres mil píxeles hacia abajo. Con un alto
   definido, la lista y el hilo se desplazan dentro y el compositor no se mueve. */
.ch{display:grid;grid-template-columns:288px 1fr;gap:1px;background:var(--ln);
  border:1px solid var(--ln);border-radius:var(--r);overflow:hidden;
  height:clamp(520px,74vh,880px)}
.ch-l{background:var(--w);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.ch-l .filtro-busca{margin:9px;flex:none}
.ch-ls{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}
.ch-fila{display:flex;flex-direction:column;gap:4px;padding:10px 12px;text-align:left;
  border:0;border-top:1px solid var(--ln);background:transparent;cursor:pointer;width:100%}
.ch-fila:hover{background:var(--w2)}
.ch-fila.on{background:var(--w3)}
.ch-fila.nueva{box-shadow:inset 3px 0 0 var(--o)}
.ch-f1{display:flex;align-items:baseline;gap:8px}
.ch-f1 b{font-size:12.5px}
.ch-f1 .ml{margin-left:auto}
.ch-f2{display:flex;align-items:center;gap:6px;min-width:0}
.ch-f2 .mini{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-r{background:var(--w2);display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
.ch-cab{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 14px;
  background:var(--w);border-bottom:1px solid var(--ln)}
.ch-cab b{font-size:13.5px;display:block}
.ch-nota{margin:0;padding:8px 14px;background:var(--o-soft);border-bottom:1px solid var(--o-line);
  font-size:11.5px;color:var(--o-ink);display:flex;align-items:center;gap:6px}
.ch-hilo{flex:1;min-height:0;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
.ch-red{flex:none}
.ch-m{max-width:74%;align-self:flex-start}
.ch-m.mio{align-self:flex-end;text-align:right}
.ch-can{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--k4);
  letter-spacing:.02em;margin-bottom:3px}
.ch-m p{margin:0;padding:9px 12px;background:var(--w);border:1px solid var(--ln);
  border-radius:var(--r);font-size:12.5px;line-height:1.5;color:var(--k)}
.ch-m.mio p{background:var(--ok-soft);border-color:#BFDFD0}
.ch-red{border-top:1px solid var(--ln);background:var(--w);padding:11px 14px;
  display:flex;flex-direction:column;gap:8px}
.ch-plt{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
/* La fila de los pisos va por encima de la de situaciones y separada con una
   línea: son dos decisiones distintas -de qué piso hablo y en qué punto estoy-
   y juntas se leían como una sola tira de botones. */
.ch-pisos{padding-bottom:9px;margin-bottom:2px;border-bottom:1px solid var(--ln)}
/* el desplegable de qué mensaje, cuando la situación tiene varios */
/* Las situaciones y los pisos crecen -ahora son siete y pueden ser más- y la
   tira venía de no partir nunca y recortar lo que sobrara: «Confirmación
   visita» y «General» se quedaban fuera de la caja, sin forma de pulsarlas.
   Aquí baja de línea, que es lo que tiene que hacer una lista que crece. */
.ch-tira{flex-wrap:wrap;overflow:visible;height:auto;row-gap:3px}

/* ===== DÓNDE BUSCA: EL MAPA PARA DIBUJARLO =====
   Un cuadro grande, porque dibujar una zona en un sello no se puede. El mapa
   manda y la lista de lo dibujado va al lado, que es donde se borra y se
   centra. */
.modal-caja.ancha{width:min(1040px,100%)}
.mb-caja{display:flex;flex-direction:column;max-height:92vh}
.mb-cuerpo{display:flex;gap:0;min-height:0;flex:1;border-top:1px solid var(--ln)}
.mb-mapa{position:relative;flex:1;min-width:0;display:flex;flex-direction:column}
#mapa-busca{flex:1;min-height:430px;background:var(--w2)}
.mb-barra{display:flex;align-items:center;gap:10px;padding:9px 12px;
  border-top:1px solid var(--ln);background:var(--w2);flex-wrap:wrap}
.mb-barra .mini{color:var(--k4)}
.mb-lado{width:264px;flex:0 0 264px;border-left:1px solid var(--ln);padding:13px;
  overflow:auto;display:flex;flex-direction:column;gap:9px}
.mb-lado > .mini{margin-top:auto;color:var(--k4);line-height:1.45}
.mb-z{display:flex;align-items:center;gap:7px;padding:8px 9px;margin-bottom:6px;
  border:1px solid var(--ln);border-radius:var(--r);background:var(--w)}
.mb-z .mini{color:var(--k4)}
/* elegir un barrio entero, arriba del todo del lateral */
.mb-barrio{display:flex;flex-direction:column;gap:5px;padding-bottom:11px;margin-bottom:2px;
  border-bottom:1px solid var(--ln)}
.mb-barrio select{font:inherit;font-size:12.5px;color:var(--k);background:var(--w);
  border:1px solid var(--ln2);border-radius:var(--r);padding:7px 9px}
/* el contador de esquinas mientras se dibuja */
.mb-pts{font-size:12px;color:var(--k2);padding:0 4px 0 2px;white-space:nowrap}
.mb-pts b{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--o-ink)}
.mb-barra .btn[disabled]{opacity:.45;cursor:not-allowed}
/* el mismo mapa metido en el formulario de pedido nuevo: con marco, porque
   ahí no tiene la ventana alrededor, y algo más bajo para que no se coma el
   resto de campos */
.campo-mapa .mb-cuerpo{border:1px solid var(--ln2);border-radius:var(--r);overflow:hidden;margin-top:2px}
.campo-mapa.malo .mb-cuerpo{border-color:var(--no);box-shadow:0 0 0 2px color-mix(in srgb,var(--no) 25%,transparent)}
.mb-cuerpo.en-form #mapa-busca{min-height:340px}
.mb-cuerpo.en-form .mb-lado{width:240px;flex-basis:240px}

/* ===== editar un dato en su sitio =====
   El mismo recuadro flotante que las listas, con el campo dentro. */
.ed-pop{padding:0}
.ed-campos{display:flex;flex-direction:column;gap:9px;padding:11px 12px 8px}
.ed-c{display:flex;flex-direction:column;gap:4px}
.ed-c input,.ed-c textarea{font:inherit;font-size:13px;color:var(--k);background:var(--w);
  border:1px solid var(--ln2);border-radius:var(--r);padding:7px 9px;width:100%}
.ed-c textarea{resize:vertical;min-height:84px;line-height:1.45}
.ed-c input:focus,.ed-c textarea:focus{outline:2px solid var(--o);outline-offset:-1px;border-color:transparent}
.ed-pie{display:flex;align-items:center;gap:8px;padding:8px 12px 10px;border-top:1px solid var(--ln);
  background:var(--w2)}
.ed-pie .mini{color:var(--k4)}

/* ===== el pedido: por qué pisos ha preguntado =====
   Lo primero de la ficha, a lo ancho. Con un piso, la tarjeta va tumbada y la
   foto a la izquierda; con dos o tres, de pie y una al lado de la otra, para
   que se comparen de un vistazo. El que le trajo va marcado en naranja. */
.fp-anuncios{margin-bottom:14px}
.pa-rej{display:grid;gap:12px;padding:12px 14px 14px}
.pa-rej.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.pa-rej.n3{grid-template-columns:repeat(3,minmax(0,1fr))}
.pa-piso{display:flex;flex-direction:column;border:1px solid var(--ln);border-radius:var(--r);
  overflow:hidden;background:var(--w);box-shadow:var(--sh);
  transition:box-shadow .16s var(--ease-out),border-color .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .pa-piso:hover{box-shadow:var(--sh-alto)} }
.pa-piso.origen{border-color:var(--o);box-shadow:0 0 0 1px var(--o),var(--sh)}
.pa-foto{position:relative;display:block;width:100%;height:150px;padding:0;border:0;cursor:pointer;
  background:var(--w3)}
.pa-foto img{width:100%;height:100%;object-fit:cover;display:block}
.pa-foto.sinfoto img{visibility:hidden}
.pa-tag{position:absolute;left:9px;top:9px;font-family:var(--lbl);font-size:10.5px;font-weight:700;
  letter-spacing:.03em;text-transform:uppercase;padding:4px 8px;border-radius:20px;
  background:rgba(255,255,255,.94);color:var(--k2);box-shadow:0 1px 4px rgba(0,0,0,.18)}
.pa-piso.origen .pa-tag{background:var(--o);color:var(--k)}
.pa-d{display:flex;flex-direction:column;gap:5px;padding:11px 13px 12px;flex:1}
.pa-dir{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pa-dir b{font-size:15px;color:var(--k)}
.pa-sub{color:var(--k4)}
.pa-meta{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
/* dónde encontró el piso: lo encontró él, en el color de la marca; nos lo
   pidió a nosotros, en gris, que es otra cosa */
.pa-viafila{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:1px 0 2px}
.pa-viafila .ml{color:var(--k4)}
.pa-via{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:12px;font-weight:600;
  color:var(--k);background:var(--o-soft);border:1px solid color-mix(in srgb,var(--o) 45%,transparent);
  border-radius:20px;padding:3px 10px 3px 7px;cursor:pointer;
  transition:background .14s var(--ease-out),border-color .14s var(--ease-out)}
.pa-via img{border-radius:3px}
.pa-via.nuestro{background:var(--w2);border-color:var(--ln2);color:var(--k2)}
@media (hover:hover) and (pointer:fine){
  .pa-via:hover{border-color:var(--o)}
  .pa-via.nuestro:hover{border-color:var(--k4)} }
.pa-via:active{transform:scale(.97)}
.dd-grupo{font-family:var(--lbl);font-size:10.5px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--k4);padding:8px 10px 4px}
.pa-meta .mono{font-size:15px;color:var(--k)}
.pa-aviso{display:flex;align-items:center;gap:5px;color:var(--o-ink);margin:2px 0 0}
.pa-acc{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
/* un solo piso: tumbada, que de pie desperdicia media pantalla */
.pa-rej.n1 .pa-piso{flex-direction:row}
.pa-rej.n1 .pa-foto{width:240px;height:auto;min-height:150px;flex:none}
@media (max-width:1000px){
  .pa-rej.n2,.pa-rej.n3{grid-template-columns:1fr}
  .pa-rej.n1 .pa-piso{flex-direction:column}
  .pa-rej.n1 .pa-foto{width:100%;height:150px}
}

/* lo que falta para cruzar bien: pegado a la tarjeta que lo necesita */
.cx-falta{display:flex;align-items:center;gap:14px;padding:12px 14px;border-top:1px solid var(--ln);
  background:var(--w2)}
.cx-falta > div{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.cx-falta b{font-size:13px;color:var(--k)}
.cx-falta .mini{color:var(--k3);line-height:1.45}
.cx-falta .btn{flex:none}
@media (max-width:700px){ .cx-falta{flex-direction:column;align-items:flex-start} }

/* ===== ordenar los apartados de la ficha del pedido ===== */
.ord-barra{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.ord-barra.on{padding:11px 14px;border:1px solid var(--o);border-radius:var(--r);
  background:var(--o-soft);box-shadow:var(--sh)}
.ord-barra.on > div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.ord-barra.on b{font-size:13px;color:var(--k)}
.ord-barra.on .mini{color:var(--k3)}
.ord-barra .btn[disabled]{opacity:.45;cursor:not-allowed}
.fp.ordenando .fp-col{min-height:120px;border-radius:var(--r);outline:2px dashed var(--ln2);
  outline-offset:4px;padding:2px}
.ord-bloque{margin-bottom:14px;border-radius:var(--r);background:var(--w);
  box-shadow:0 0 0 1px var(--ln2),var(--sh);transition:opacity .15s var(--ease-out),box-shadow .15s var(--ease-out)}
.ord-bloque.cogido{opacity:.35}
.ord-asa{display:flex;align-items:center;gap:8px;padding:7px 9px 7px 11px;cursor:grab;
  background:var(--w2);border-bottom:1px solid var(--ln);border-radius:var(--r) var(--r) 0 0;user-select:none}
.ord-asa:active{cursor:grabbing}
.ord-asa b{font-size:12.5px;color:var(--k)}
.ord-agarre{font-size:15px;line-height:1;color:var(--k4);letter-spacing:-1px}
.ord-asa .icb[disabled]{opacity:.3;cursor:default}
/* dentro no se toca nada mientras se ordena: solo se mueve. Se ve en pequeño
   para que quepan varias y se pueda comparar el orden de un vistazo */
.ord-dentro{max-height:150px;overflow:hidden;position:relative;pointer-events:none}
.ord-dentro::after{content:"";position:absolute;left:0;right:0;bottom:0;height:46px;
  background:linear-gradient(to bottom,transparent,var(--w))}
.ord-dentro > .card{box-shadow:none;border:0;margin:0}
.ord-hueco{height:44px;margin:0 0 14px;border-radius:var(--r);border:2px dashed var(--o);
  background:color-mix(in srgb,var(--o) 10%,transparent)}
@media (prefers-reduced-motion:reduce){ .ord-bloque{transition:none} }

/* ===== el score de la ficha, plegado ===== */
.score-pleg > summary{list-style:none;cursor:pointer;align-items:center;gap:9px}
.score-pleg > summary::-webkit-details-marker{display:none}
.score-pleg > summary h3{margin:0}
.score-pleg .sp-ver{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--k3)}
.score-pleg .sp-ver svg{transition:transform .18s var(--ease-out)}
.score-pleg[open] .sp-ver svg{transform:rotate(180deg)}
@media (hover:hover) and (pointer:fine){ .score-pleg > summary:hover .sp-ver{color:var(--k)} }
.score-pleg:not([open]) > summary{border-bottom:0}
@media (prefers-reduced-motion:reduce){ .score-pleg .sp-ver svg{transition:none} }
@media (max-width:900px){
  .mb-cuerpo{flex-direction:column}
  .mb-lado{width:auto;flex:0 0 auto;border-left:0;border-top:1px solid var(--ln)}
  #mapa-busca{min-height:300px}
}
.ch-ops select{font:inherit;font-size:12.5px;color:var(--k);background:var(--w);
  border:1px solid var(--ln2);border-radius:var(--r);padding:5px 9px;max-width:270px}
.ch-ops .mini{color:var(--k4)}
.ch-red textarea{font:inherit;font-size:12.5px;line-height:1.5;color:var(--k);
  border:1px solid var(--ln2);border-radius:var(--r);padding:9px 11px;resize:vertical;
  background:var(--w2);width:100%}
.ch-campos{display:flex;gap:5px;flex-wrap:wrap}
.ch-pie{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* Apilado, el alto fijo sobra: la caja crece y la página se desplaza. Lo que
   sí se acota es la lista, para que el hilo y el cuadro de escribir se vean. */
@media (max-width:900px){
  .ch{grid-template-columns:1fr;height:auto}
  .ch-l{max-height:240px}
  .ch-hilo{max-height:46vh}
}

/* ===== detalle de una campaña ===== */
.camp-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:1px;background:var(--ln);border-top:1px solid var(--ln)}
.camp-k{background:var(--w);padding:11px 13px;display:flex;flex-direction:column;gap:2px}
.camp-k b{font-size:20px;line-height:1.1;color:var(--k)}
.camp-r{font-size:12px;line-height:1.45;color:var(--k2);font-style:italic}

/* ===== página de un pedido ===== */
/* «que quede espacio que respire» (Lucas): aire arriba y abajo, y más
   separación entre el nombre, el teléfono, el resto y los botones */
.fp-cab{display:flex;align-items:center;gap:14px 26px;flex-wrap:wrap;margin:10px 0 26px;padding:4px 2px}
.fp-cab > .btn{margin-bottom:0 !important}
.fp-t{flex:1 1 0;min-width:260px;display:flex;align-items:baseline;gap:6px 22px}
.fp-t h2, .fp-t .fp-tel{flex-shrink:0;white-space:nowrap}
.fp-cab > .spacer{display:none}
.fp-t h2{margin:0;font-family:var(--lbl);font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.2}
.fp-tel{font-size:20px;font-weight:600;color:var(--k);text-decoration:none;letter-spacing:-.01em;white-space:nowrap}
.fp-tel:hover{color:var(--o-ink)}
.card-h .prop-btn{margin-left:auto;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px}
.card-h .prop-acc{margin-left:auto;display:flex;gap:7px}
.prop-editando .card-h{flex-wrap:wrap;row-gap:8px}
.prop-editando .card-h h3{white-space:nowrap}
@media (max-width:700px){ .prop-editando .card-h .sub{display:none} }
.prop-ayuda{margin:0;padding:9px 15px;font-size:12px;color:var(--k3);background:var(--o-soft);
  border-bottom:1px solid var(--o-line);line-height:1.5}
.prop-ayuda b{color:var(--o-ink);font-weight:700}
/* mientras se cambia la tarjeta: cada casilla se coge entera y lleva su ✕ */
.prop-editando .fp-rej{background:var(--w2)}
.prop-cel{position:relative;cursor:grab;padding-left:30px !important;padding-right:34px !important;
  background:var(--w);outline:1px dashed var(--ln2);outline-offset:-4px}
.prop-cel:hover{outline-color:var(--o)}
.prop-asa{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:15px;color:var(--k4);line-height:1}
.prop-x{position:absolute;right:7px;top:7px;width:24px;height:24px;display:grid;place-items:center;
  border-radius:6px;color:var(--k3);background:var(--w2);cursor:pointer}
.prop-x:hover{background:var(--no-soft);color:var(--no)}
.prop-cel.col-antes{box-shadow:inset 4px 0 0 var(--o)}
.prop-cel.col-despues{box-shadow:inset -4px 0 0 var(--o)}
.prop-add{display:flex !important;flex-direction:row !important;align-items:center;justify-content:center;gap:7px;
  color:var(--o-ink);font:inherit;font-size:13px;font-weight:600;cursor:pointer;background:transparent;
  outline:1.5px dashed var(--o-line);outline-offset:-5px;min-height:62px}
.prop-add:hover{background:var(--o-soft)}
.prop-menu .dd-op small{margin-left:auto;flex-shrink:0;opacity:.75}
.prop-menu-pie{border-top:1px solid var(--ln);padding:7px}
.prop-menu-pie .btn{width:100%;justify-content:center}
.fp-meta{color:var(--k3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-n{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.fp-n h2{margin:0;font-family:var(--lbl);font-size:22px;font-weight:800;
  letter-spacing:-.02em;color:var(--k)}
.fp-t p{margin:4px 0 0}
.fp-acc{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.fp-acc .prox{margin-right:4px}
@media (max-width:900px){ .fp-t{flex-wrap:wrap;min-width:0;flex-basis:100%} .fp-meta{white-space:normal;flex-basis:100%} .fp-cab{margin:6px 0 20px} }
.fp{display:grid;grid-template-columns:1fr 1fr;gap:13px;align-items:start}
.fp-col{display:flex;flex-direction:column;gap:13px;min-width:0}
.fp-rej{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
  gap:1px;background:var(--ln);border-top:1px solid var(--ln)}
.fp-c{background:var(--w);padding:9px 13px;display:flex;flex-direction:column;gap:3px;min-width:0}
.fp-c b{font-size:12.5px;font-weight:700;color:var(--k);word-break:break-word}
.fp-c.editable{cursor:text}
.fp-c.editable:hover{background:var(--o-soft);box-shadow:inset 0 0 0 1px var(--o-line)}
.fp-hilo{display:flex;flex-direction:column;gap:9px}
@media (max-width:980px){ .fp{grid-template-columns:1fr} }

/* la nota interna del propietario se distingue del mensaje que sale fuera */
.ch-m.interna{align-self:stretch;max-width:none}
.ch-m.interna p{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
/* la línea de escribir del propietario, al lado del canal y del botón */
.ch-linea{flex:1;min-width:140px;font:inherit;font-size:12.5px;color:var(--k);
  border:1px solid var(--ln2);border-radius:var(--r);padding:8px 11px;background:var(--w2)}
/* El rojo tenía que ganarle a la regla de la pestaña activa, que es igual de
   específica y va antes: se nombra el botón para que pese lo mismo y mande. */
.tabs button .cnt.no, .tabs button.on .cnt.no{background:var(--no);color:#fff;margin-left:4px}

/* ===== ordenar pulsando la cabecera de la columna ===== */
#view th .col-ord{display:inline-flex;align-items:center;gap:5px;width:100%;
  padding:0;border:0;background:transparent;cursor:pointer;text-align:left;
  font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit}
#view th .col-ord span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#view th .col-ord svg{flex:none;opacity:.3;transition:opacity .12s}
#view th:hover .col-ord svg{opacity:.65}
#view th.ordenada{background:var(--w3)}
#view th.ordenada .col-ord{color:var(--k)}
#view th.ordenada .col-ord svg{opacity:1;color:var(--o-ink)}
#view th[style*="text-align:right"] .col-ord{justify-content:flex-end}

/* ===== ancho de la lista de chats, arrastrable ===== */
/* el asa del ancho de la lista. Antes se llamaba .ch-tira, igual que la barra
   de situaciones del chat, y su capa invisible se ponía encima de toda la
   barra: cursor de redimensionar y ningún botón se podía pulsar (Lucas) */
.ch-ancho{background:var(--ln);cursor:col-resize;width:1px;position:relative}
.ch-ancho::after{content:"";position:absolute;inset:0 -4px;cursor:col-resize}
.ch-ancho:hover,body.tirando-x .ch-ancho{background:var(--o)}
body.tirando-x{cursor:col-resize;user-select:none}
.ch{grid-template-columns:288px auto 1fr}

/* el canal, en su color y pequeño */
.ch-can i{display:inline-flex;align-items:center}
.ch-can i svg{display:block}

/* llamada perdida de idealista: la tarjeta, sin el discurso */
.ch-perdida{display:flex;flex-direction:column;gap:7px;padding:9px 11px;
  background:var(--w);border:1px solid var(--ln);border-radius:var(--r);max-width:330px}
.ch-p1{display:flex;align-items:center;gap:6px;font-family:var(--lbl);
  font-size:12px;font-weight:700;color:var(--k2)}
.ch-p1 svg{color:var(--no)}
.ch-p2{display:flex;align-items:center;gap:9px}
.ch-p2 img{width:40px;height:40px;border-radius:var(--r-sm);object-fit:cover;
  flex:none;background:var(--w3)}
.ch-p2 span{display:flex;flex-direction:column;gap:1px;min-width:0}
.ch-p2 b{font-size:11.5px;font-weight:700;color:var(--k);line-height:1.3}
.ch-p2 small{font-size:10.5px;color:var(--k4);font-family:"IBM Plex Mono",monospace}
.ch-p3{font-size:11px;color:var(--k4)}

/* editor de mensajes predeterminados */
.plt-ed{margin-bottom:11px}
.plt-txt{margin:0;font-size:12.5px;line-height:1.55;color:var(--k2);white-space:pre-wrap}

/* el enlace del chat se ve y se comporta como un botón */
a.btn{text-decoration:none}

/* ===== menú lateral plegable =====
   Las mismas reglas que ya se aplicaban solas en pantalla estrecha, ahora
   también a mano desde el botón. */
/* Plegar el menú baja al pie: encima del logo lo tapaba, y un botón suelto en
   una esquina no se encuentra. Abajo del todo es donde se busca, y con la
   palabra escrita no hay que adivinar qué hace. */
.rail-pie{margin-top:auto;padding:8px 8px calc(10px + env(safe-area-inset-bottom,0px));
  border-top:1px solid var(--ln)}
.rail-plegar{display:flex;align-items:center;gap:10px;width:100%;padding:8px;
  color:var(--k3);border-radius:var(--r-sm);font-size:12.5px;font-weight:500;
  transition:color .14s var(--ease-out),background .14s var(--ease-out),
             transform .12s var(--ease-out)}
.rail-plegar svg{stroke:currentColor;opacity:.8;flex-shrink:0}
@media (hover:hover) and (pointer:fine){
  .rail-plegar:hover{color:var(--k);background:var(--w3)} }
.rail-plegar:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){ .rail-plegar{transition-duration:.01ms} }
html.rail-mini{--rail:64px}
html.rail-mini .rail-item{justify-content:center;padding:10px 0}
html.rail-mini .rail-item .rl{display:none}
/* «el número de notificaciones que no quede tan encima de los iconos para que
   se puedan ver más fácil» (Lucas). Caía en el centro del icono y le tapaba la
   mitad. Ahora se va a la esquina de arriba, sin pisarlo, y lleva un aro del
   color del fondo para que se despegue también donde se rozan. */
html.rail-mini .rail-item .dot{position:absolute;top:2px;right:1px;min-width:14px;height:14px;
  padding:0 3px;font-size:9px;line-height:14px;text-align:center;
  box-shadow:0 0 0 2px var(--bg)}
html.rail-mini .rail-item.on .dot{box-shadow:0 0 0 2px var(--k)}
/* por debajo de 1180 el menú se pliega solo, y ahí el contador no se veía:
   desaparecía en vez de moverse. Mismo trato que plegándolo a mano, para que
   no cambie la cuenta de sitio según el ancho de la pantalla. */
@media (max-width:1180px){
  .rail-item .dot{display:flex;position:absolute;top:2px;right:1px;min-width:14px;height:14px;
    padding:0 3px;font-size:9px;line-height:14px;align-items:center;justify-content:center;
    box-shadow:0 0 0 2px var(--bg)}
  .rail-item.on .dot{box-shadow:0 0 0 2px var(--k)}
}
@media (max-width:900px){ .rail-item .dot{top:4px;right:6px;box-shadow:0 0 0 2px var(--w)} }
html.rail-mini .rail-logo{justify-content:center;padding:15px 0}
html.rail-mini .logo-full{display:none}
html.rail-mini .logo-mark{display:block}
html.rail-mini .rail-pie{padding:8px 0 calc(10px + env(safe-area-inset-bottom,0px))}
html.rail-mini .rail-plegar{justify-content:center;padding:9px 0}
html.rail-mini .rail-plegar .rl{display:none}
/* en pantalla estrecha ya se pliega solo, así que el botón sobra */
@media (max-width:1180px){ .rail-pie{display:none} }

/* los logos de canal, del tamaño de los iconos para que no canten */
.ch-can i svg, .bdg.con-marca svg{display:block;flex:none}
.bdg.con-marca{gap:5px}
.btn svg[viewBox="0 0 24 24"]:not([stroke]){flex:none}

/* ===== VISTA DE ZONA =====
   La misma información de la tabla, pero grande: una ficha por puerta, para
   mirarla con el móvil en la mano delante del portal. El borde de color dice
   quién vive dentro; el nombre y el comentario son lo que se lee primero. */
.vz-top{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;padding:16px 0 12px}
.vz-top-l h1{font-size:25px;margin:3px 0 7px}
.vz-meta{display:flex;gap:6px;flex-wrap:wrap}
.vz-top-r{margin-left:auto;display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.vz-finca{display:flex;flex-direction:column;gap:4px;min-width:230px}
.vz-nav{display:flex;gap:6px}
.vz-wrap{padding-bottom:20px}
.vz-kpis{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:11px}
.vz-kpis span{display:inline-flex;align-items:baseline;gap:5px;padding:6px 11px;font-size:12.5px;
  color:var(--k2);background:var(--w);border:1px solid var(--ln);border-radius:999px}
.vz-kpis b{font-family:"IBM Plex Mono",monospace;font-size:14px;font-weight:600;color:var(--k)}
.vz-kpis .viva{background:var(--o-soft);border-color:var(--o-line)}
.vz-kpis .viva b{color:var(--o-ink)}
.vz-kpis .pend b{color:var(--no)}

.vz-sec{margin-top:16px}
.vz-sec-h{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.vz-sec-h b{font-family:"Nunito","Figtree",sans-serif;font-size:14.5px;font-weight:800;letter-spacing:-.01em}
.vz-linea{flex:1;height:1px;background:var(--ln)}
.vz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:11px}

.vz-c{--vzc:var(--ln2);background:var(--w);border:1px solid var(--ln);border-left:4px solid var(--vzc);
  border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;transition:box-shadow .18s var(--ease-out)}
.vz-c.viva{background:linear-gradient(var(--o-soft),var(--o-soft)) no-repeat top/100% 3px,var(--w)}
.vz-c.abierta{grid-column:1/-1;box-shadow:var(--sh-alto);border-color:var(--o-line)}
@media (hover:hover) and (pointer:fine){ .vz-c:hover{box-shadow:var(--sh-alto)} }

.vz-btn{display:grid;gap:7px;width:100%;text-align:left;padding:12px 13px 13px}
.vz-h{display:flex;align-items:baseline;gap:7px}
.vz-piso{font-family:"IBM Plex Mono",monospace;font-size:15px;font-weight:600;letter-spacing:-.02em}
.vz-planta{font-size:11px;color:var(--k4)}
.vz-lupa{align-self:center;color:var(--k4)}
@media (hover:hover) and (pointer:fine){ .vz-c:hover .vz-lupa{color:var(--o-ink)} }

.vz-nom{font-family:"Nunito","Figtree",sans-serif;font-size:19px;font-weight:800;line-height:1.15;
  letter-spacing:-.02em;color:var(--k)}
.vz-c:not(.abierta) .vz-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vz-rol{font-size:12px;color:var(--k3);margin-top:-4px}

.vz-cont{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--k2)}
.vz-cont.nada{color:var(--k4)}
.vz-cont.ok{color:var(--ok)}
.vz-cont.no{color:var(--no)}
.vz-cont-n{margin-left:auto;font-size:11px;color:var(--k4)}
.vz-pips{display:inline-flex;gap:3px}
.vz-pips i{width:13px;height:5px;border-radius:2px;background:var(--w3);border:1px solid var(--ln2)}
.vz-pips i.ok{background:var(--ok);border-color:var(--ok)}
.vz-pips i.no{background:var(--no);border-color:var(--no)}

.vz-com{display:block;font-size:13.5px;line-height:1.45;color:var(--k);background:var(--w2);
  border:1px solid var(--ln);border-radius:var(--r-sm);padding:8px 10px;min-height:56px}
.vz-com i{color:var(--k4);font-size:12.5px}
.vz-c:not(.abierta) .vz-com{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.vz-com-q{display:block;margin-top:4px;font-size:10px;font-family:var(--lbl);font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;color:var(--k4)}

.vz-pie{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:8px;border-top:1px dashed var(--ln)}
.vz-ocup{--vzc:var(--ln2);--vzf:var(--w3);display:inline-flex;align-items:center;padding:2px 9px;
  font-size:11.5px;font-weight:600;color:var(--k);background:var(--vzf);
  border:1.5px solid var(--vzc);border-radius:999px}
.vz-prox{display:inline-flex;align-items:baseline;gap:5px}
.vz-prox b{font-size:12.5px;font-weight:600}

.vz-d{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:13px;
  padding:14px 15px 16px;border-top:1px solid var(--ln);background:var(--w2)}
.vz-dc{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.vz-dc .dd{width:100%}
.vz-ancho{grid-column:span 2}
.vz-per{font-size:13px}
.vz-per b{font-weight:600}
.vz-per span{color:var(--k3);font-size:11.5px;margin-left:5px}
.vz-tel{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--k2)}
.vz-acc{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
.vz-nota{margin:0;font-size:12.5px;line-height:1.45;color:var(--k2);background:var(--w);
  border:1px solid var(--ln);border-radius:var(--r-sm);padding:7px 9px;width:100%}
.vz-nota .ml{display:block;margin-top:3px}
.vz-etq{display:flex;gap:5px;flex-wrap:wrap;align-items:center}

.vz-leg{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:18px;padding:10px 13px;
  background:var(--w);border:1px solid var(--ln);border-radius:var(--r);font-size:11.5px;color:var(--k3)}
.vz-leg span{display:inline-flex;align-items:center;gap:5px}
.vz-leg i{width:11px;height:11px;border-radius:3px;flex-shrink:0}
.vz-leg .mini{text-transform:none;letter-spacing:0;font-family:"Figtree",sans-serif}

@media (max-width:900px){
  .vz-ancho{grid-column:span 1}
  .vz-top-r{margin-left:0;width:100%}
  .vz-finca{min-width:0;flex:1}
}

/* ===== GESTIÓN POR VÍA =====
   Teléfono y puerta en dos filas, cada una con sus intentos: se ve de un golpe
   por dónde se ha probado, cuándo y si se llegó a hablar. */
.ges-dos{display:flex;flex-direction:column;gap:5px;min-width:250px}
.ges-via{display:flex;align-items:flex-start;gap:7px}
.ges-via-l{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;width:64px;
  font-family:var(--lbl);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--k4);padding-top:3px}
.ges-via.ok .ges-via-l{color:var(--ok)}
.ges-via.no .ges-via-l{color:var(--k3)}
.ges-via-c{display:flex;gap:4px;flex-wrap:wrap;align-items:center}

.vz-ges{display:flex;flex-direction:column;gap:4px}
.vz-via{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--k3)}
.vz-via-l{display:inline-flex;align-items:center;gap:4px;width:62px;flex-shrink:0;
  font-family:var(--lbl);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.vz-via.ok .vz-via-l{color:var(--ok)}
.vz-via.no .vz-via-l{color:var(--k4)}
.vz-via-d{font-size:10.5px;color:var(--k4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vz-cont{display:flex;align-items:baseline;gap:7px;font-size:12.5px}
.vz-cont b{font-weight:600}
.vz-cont.nada b{color:var(--k4)}
.vz-cont.ok b{color:var(--ok)}
.vz-cont.no b{color:var(--no)}
.vz-d .ges-dos{min-width:0;width:100%}

/* ===== CÓMO VA LA FINCA ===== */
.of-pres{display:flex;align-items:flex-start;gap:9px;padding:10px 11px;border-radius:var(--r-sm);
  margin-bottom:12px;border:1px solid var(--ln)}
.of-pres.si{background:var(--ok-soft);border-color:var(--ok-soft);color:var(--ok)}
.of-pres.no{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.of-pres b{display:block;font-size:13.5px;font-weight:700}
.of-pres span{display:block;font-size:12px;color:var(--k2);margin-top:1px}
.of-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:11px}
.of-d{display:flex;flex-direction:column;gap:2px}
.of-l{font-family:var(--lbl);font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.05em;color:var(--k4)}
.of-v{font-family:"IBM Plex Mono",monospace;font-size:19px;font-weight:600;letter-spacing:-.02em}
.of-s{font-size:11px;color:var(--k3);display:flex;flex-direction:column;gap:3px}
.of-b{display:block;height:4px;border-radius:2px;background:var(--w3);overflow:hidden}
.of-b i{display:block;height:100%;background:var(--k3);border-radius:2px}
.of-b i.ok{background:var(--ok)} .of-b i.no{background:var(--no)} .of-b i.in{background:var(--in)}

/* ===== LO QUE VE LA IA ===== */
.ia-card{margin-bottom:0;border-color:var(--o-line)}
.ia-card .card-h h3{display:inline-flex;align-items:center;gap:6px;color:var(--o-ink)}
.ia-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ia-i{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.45;color:var(--k2)}
.ia-i svg{margin-top:2px}
.ia-i.ok svg{stroke:var(--ok)}
.ia-i.aviso svg{stroke:var(--o-ink)}
.ia-i.info svg{stroke:var(--in)}

/* ===== SEGUIMIENTOS =====
   La dirección deja de comerse la fila, el contacto y su teléfono suben al
   principio y el comentario se lee sin abrir nada. */
.seg-t{width:100%;border-collapse:collapse;font-size:12.5px}
.seg-t td{vertical-align:top;padding:9px 10px}
.seg-f{border-left:4px solid var(--ln2)}
.seg-f.col-verde{border-left-color:var(--ok)}
.seg-f.col-ambar{border-left-color:var(--o)}
.seg-f.col-rojo{border-left-color:var(--no)}
.seg-dir{max-width:190px}
.seg-abrir{font-size:13px;font-weight:600;text-align:left;line-height:1.3;letter-spacing:-.01em}
@media (hover:hover) and (pointer:fine){ .seg-abrir:hover{color:var(--o-ink);text-decoration:underline} }
.seg-con{min-width:160px}
.seg-con b{display:block;font-size:13px;font-weight:600;margin-bottom:3px}
.seg-tel{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;
  background:var(--w3);border:1px solid var(--ln);font-size:11.5px;color:var(--k2);text-decoration:none}
.seg-tel.g{padding:5px 11px;font-size:13px}
@media (hover:hover) and (pointer:fine){
  .seg-tel:hover{background:var(--ok-soft);border-color:var(--ok-soft);color:var(--ok)} }
.seg-com{max-width:330px}
.seg-comtxt{display:block;width:100%;text-align:left;font-size:12.5px;line-height:1.45;color:var(--k2);
  padding:6px 8px;border:1px dashed var(--ln2);border-radius:var(--r-sm);background:var(--w2)}
.seg-comtxt .ml{display:block;margin-top:3px}
@media (hover:hover) and (pointer:fine){
  .seg-comtxt:hover{border-style:solid;border-color:var(--o);background:var(--o-soft);color:var(--k)} }
.seg-fec{min-width:150px}
/* Tiene que leerse como un botón, no como una insignia: el primero de los dos
   clics del cliente es este, y si no se ve, no existe. */
.seg-fecha{display:inline-flex;align-items:center;gap:7px;padding:6px 8px 6px 11px;
  border-radius:999px;border:1px solid var(--ln2);background:var(--w);
  font-size:12px;font-weight:600;color:var(--k2);cursor:pointer;position:relative;
  transition:border-color .14s var(--ease-out),background .14s var(--ease-out),
             box-shadow .14s var(--ease-out),transform .12s var(--ease-out)}
.seg-fecha .sf-t{display:flex;flex-direction:column;align-items:flex-start;gap:1px;line-height:1.2}
.seg-fecha b{font-size:10.5px;font-weight:500;color:var(--k4)}
.seg-fecha > svg:last-of-type{opacity:.55;margin-left:auto}
.seg-fecha.no{background:var(--no-soft);border-color:#EDBCB0;color:var(--no)}
.seg-fecha.no b{color:var(--no)}
.seg-fecha.hoy{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.seg-fecha.hoy b{color:var(--o-ink)}
@media (hover:hover) and (pointer:fine){
  .seg-fecha:hover{border-color:var(--k3);box-shadow:var(--sh)}
  .seg-fecha:hover > svg:last-of-type{opacity:1} }
.seg-fecha:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){ .seg-fecha{transition-duration:.01ms} }
/* la instrucción, donde se mira antes de empezar a trabajar la lista */
.pista-seg{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;
  background:var(--o-soft);border:1px solid var(--o-line);color:var(--o-ink);
  font-size:11.5px;font-weight:600}
.seg-tip{min-width:150px}
.seg-col{display:inline-flex;gap:3px}
.seg-col .sc{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  border:1px solid transparent}
.seg-col .sc i{width:11px;height:11px;border-radius:50%;display:block;opacity:.32;
  transition:opacity .15s var(--ease-out)}
.seg-col .sc.on i{opacity:1;box-shadow:0 0 0 2.5px var(--w),0 0 0 3.5px currentColor}
.seg-col .sc.verde{color:var(--ok)} .seg-col .sc.verde i{background:var(--ok)}
.seg-col .sc.ambar{color:var(--o-ink)} .seg-col .sc.ambar i{background:var(--o)}
.seg-col .sc.rojo{color:var(--no)} .seg-col .sc.rojo i{background:var(--no)}
@media (hover:hover) and (pointer:fine){ .seg-col .sc:hover i{opacity:.75} }
.sc-i{width:11px;height:11px;border-radius:50%;display:inline-block}
.sc-i.verde{background:var(--ok)} .sc-i.ambar{background:var(--o)} .sc-i.rojo{background:var(--no)}

/* la vista ampliada */
.sg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:11px}
.sg-c{display:flex;flex-direction:column;gap:9px;padding:13px 14px;background:var(--w);
  border:1px solid var(--ln);border-left:4px solid var(--ln2);border-radius:var(--r);box-shadow:var(--sh)}
.sg-c.col-verde{border-left-color:var(--ok)}
.sg-c.col-ambar{border-left-color:var(--o)}
.sg-c.col-rojo{border-left-color:var(--no)}
@media (hover:hover) and (pointer:fine){ .sg-c:hover{box-shadow:var(--sh-alto)} }
.sg-h{display:flex;align-items:center;gap:8px}
.sg-dir{font-family:"Nunito","Figtree",sans-serif;font-size:15.5px;font-weight:800;text-align:left;
  line-height:1.2;letter-spacing:-.02em}
@media (hover:hover) and (pointer:fine){ .sg-dir:hover{color:var(--o-ink)} }
.sg-con{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.sg-con b{font-size:14px;font-weight:600}
.sg-com{display:block;width:100%;text-align:left;padding:9px 11px;border-radius:var(--r-sm);
  background:var(--w2);border:1px dashed var(--ln2)}
.sg-com-t{display:block;font-size:13.5px;line-height:1.45;color:var(--k)}
.sg-com .ml{display:inline-flex;align-items:center;gap:4px;margin-top:5px}
@media (hover:hover) and (pointer:fine){
  .sg-com:hover{border-style:solid;border-color:var(--o);background:var(--o-soft)} }
.sg-f{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sg-t{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;padding-top:9px;
  border-top:1px dashed var(--ln)}
.sg-t .sg-tip{display:flex;flex-direction:column;gap:3px;min-width:160px;flex:1}
.sg-meta{display:flex;flex-direction:column;gap:3px;align-items:flex-end}
.cal-seg .cal-d.pasado{color:var(--k4)}

/* la barra de periodo de las métricas */
.met-barra{margin-bottom:10px}
.met-barra .seg button{display:inline-flex;align-items:center;gap:5px}

/* ===== PLAN DE ZONA ===== */
.pz-top{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;padding:16px 0 12px}
.pz-top h1{font-size:25px;margin:0 0 5px}
.pz-sub{margin:0;max-width:60ch;font-size:13px;color:var(--k3);line-height:1.5}
.pz-cifra{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;
  padding:10px 16px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);
  box-shadow:var(--sh)}
.pz-cifra b{font-size:34px;font-weight:600;letter-spacing:-.03em;line-height:1}
.pz-cifra .ml{margin-top:3px}
.pz-desgloses{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:11px;
  margin:12px 0 16px}
.pz-d{background:var(--w);border:1px solid var(--ln);border-radius:var(--r);padding:11px 13px;
  box-shadow:var(--sh)}
.pz-d > .ml{display:block;margin-bottom:8px}
.pz-dr{display:grid;grid-template-columns:1fr 70px 34px 38px;align-items:center;gap:8px;
  padding:3px 0;font-size:12px}
.pz-dl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--k2)}
.pz-dr b{text-align:right;font-size:12.5px}
.pz-dr .ml{text-align:right}
.pz-f{margin-bottom:11px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);
  box-shadow:var(--sh);overflow:hidden}
.pz-fh{display:flex;align-items:center;gap:10px;padding:9px 13px;background:var(--w2);
  border-bottom:1px solid var(--ln);flex-wrap:wrap}
.pz-fd{font-size:13.5px;font-weight:700;font-family:"Nunito","Figtree",sans-serif;letter-spacing:-.015em}
@media (hover:hover) and (pointer:fine){ .pz-fd:hover{color:var(--o-ink)} }
.pz-t{width:100%;border-collapse:collapse;font-size:12.5px}
.pz-t td{padding:7px 10px;border-bottom:1px solid var(--ln);vertical-align:top}
.pz-t tr:last-child td{border-bottom:0}
.pz-lab{white-space:nowrap;font-family:"IBM Plex Mono",monospace}
.pz-per{min-width:150px;display:flex;flex-direction:column;gap:2px}
.pz-per .mono{font-size:11px;color:var(--k3)}
.pz-cont{min-width:170px}
.pz-cont.ok{color:var(--ok)} .pz-cont.no{color:var(--no)} .pz-cont.nada{color:var(--k4)}
.pz-cont .ml{display:block;margin-top:2px}
.des-obj{display:flex;flex-direction:column;gap:3px;min-width:200px;padding:9px 13px;
  background:var(--w);border:1px solid var(--ln);border-radius:var(--r);box-shadow:var(--sh)}
.des-obj b{font-size:18px;font-weight:600;letter-spacing:-.02em}

/* ===== CÓMO ESTÁ EL DÍA DE ZONA ===== */
.rd{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,1.2fr);gap:12px;margin-bottom:14px}
.rd-c{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:9px;align-content:start}
.rd-n{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--w);
  border:1px solid var(--ln);border-radius:var(--r);box-shadow:var(--sh)}
.rd-n b{font-size:23px;font-weight:600;letter-spacing:-.03em;line-height:1.1}
.rd-n.viva{background:var(--o-soft);border-color:var(--o-line)}
.rd-n.viva b{color:var(--o-ink)}
.rd-ia{background:var(--w);border:1px solid var(--o-line);border-radius:var(--r);
  box-shadow:var(--sh);padding:12px 14px}
.rd-ia-h{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin-bottom:9px;color:var(--o-ink)}
.rd-ia-h b{font-family:"Nunito","Figtree",sans-serif;font-size:13.5px;font-weight:800}
.rd-ia-h svg{align-self:center}
.rd-ia .ia-lista{gap:7px}
@media (max-width:1000px){ .rd{grid-template-columns:1fr} }

/* la parada, con el reparto de la finca delante */
.par-viv b{font-weight:700;font-family:"IBM Plex Mono",monospace}
.par-mix{display:inline-flex;align-items:center;gap:5px}
.pm{width:8px;height:8px;border-radius:2px;display:inline-block}
.pm.prop{background:var(--ok)} .pm.inq{background:var(--in)} .pm.vac{background:var(--o)}
.par-niv{display:block;font-family:var(--lbl);font-size:9.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;margin-top:2px;text-align:center}

/* ===== PANTALLA COMPLETA =====
   Esconde el menú lateral y aprieta la cabecera: el contenido pasa a ocupar
   todo el ancho. El botón se queda siempre visible para poder volver. */
/* «que en todas las vistas haya una pestañita, arriba a la derecha» (cliente).
   La barra de arriba puede desbordar en pantallas de portátil, y este botón era
   el último: se salía por la derecha y no había forma de llegar a él. Queda
   pegado al borde derecho pase lo que pase. */
.pantalla{position:sticky;right:0;z-index:3;margin-left:2px;
  display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  flex-shrink:0;border:1px solid var(--ln);border-radius:var(--r-sm);background:var(--w);
  box-shadow:-10px 0 12px -6px var(--w), -18px 0 0 -6px var(--w);
  color:var(--k3);cursor:pointer;
  transition:color .14s var(--ease-out),border-color .14s var(--ease-out),
             background .14s var(--ease-out),transform .12s var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .pantalla:hover{color:var(--k);border-color:var(--ln2);background:var(--w2)} }
.pantalla:active{transform:scale(.94)}
.pantalla.on{background:var(--k);border-color:var(--k);color:var(--w)}
html.pantalla-total .rail{display:none}
html.pantalla-total .topbar{padding-top:6px;padding-bottom:6px}
html.pantalla-total .crumb small,html.pantalla-total .demoswitch .dl,
html.pantalla-total .sync span,html.pantalla-total .search span{display:none}
html.pantalla-total .view{padding-left:18px;padding-right:18px}
@media (prefers-reduced-motion:reduce){ .pantalla{transition-duration:.01ms} }

/* el campo de fecha de los formularios: se pulsa en cualquier parte y sale el mes */
.campo-fecha{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;
  border:1px solid var(--ln2);border-radius:var(--r-sm);background:var(--w);
  font-size:13.5px;color:var(--k);text-align:left;cursor:pointer;
  transition:border-color .14s var(--ease-out),box-shadow .14s var(--ease-out)}
.campo-fecha span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.campo-fecha svg{color:var(--k4);flex-shrink:0}
.campo-fecha[data-valor=""] span{color:var(--k4)}
@media (hover:hover) and (pointer:fine){
  .campo-fecha:hover{border-color:var(--k3);box-shadow:var(--sh)} }
.campo-fecha:focus-visible{outline:2px solid var(--o);outline-offset:1px}
.campo-fecha.malo{border-color:var(--no);background:var(--no-soft)}
.cal-form .cal-d.pasado{color:var(--k4)}
/* «que esté marcado en naranja el día actual de próxima llamada» (Lucas). En el
   resto de calendarios el día elegido va en tinta; aquí no es una elección que
   acabas de hacer, es el dato que ya había, y en naranja se encuentra solo. */
.cal-prox .cal-d.ini{background:var(--o);color:var(--k);font-weight:700;
  box-shadow:0 0 0 1px var(--o-ink)}

/* los logotipos de los canales: son imágenes reales, no iconos de trazo */
.marca{display:inline-block;flex-shrink:0;object-fit:contain;vertical-align:-2px}

/* Idealista lleva su propio color de marca en la etiqueta: el verde lima con la
   letra en negro, que es como se presentan ellos. */
.bdg.can-idealista{background:#C9E24A;border-color:#B2CC38;color:#141400}

/* la cola de desarrollos dentro de Mi día */
.des-fila{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px}
.des-fila p{margin:0;flex:1;min-width:220px}

/* el número de cada zona de trabajo, encima de su polígono en el mapa */
.zona-num span{display:flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:50%;background:var(--zc);color:#fff;font-family:"Nunito","Figtree",sans-serif;
  font-size:15px;font-weight:800;box-shadow:0 2px 6px rgba(0,0,0,.35);border:2px solid #fff}

/* ---- métricas que se pueden ocultar ---- */
.band .pulso-btn{margin-left:auto;align-self:center;font-size:11.5px;padding:3px 9px}
.pulso.pulso-oculto{display:flex;align-items:center;gap:8px;padding:8px 24px}
.pulso.pulso-oculto .btn{margin-left:auto}

/* ---- mensajes: cabecera con «Añadir mensaje» ---- */
.plt-cab{display:flex;align-items:center;gap:14px;margin:0 0 12px;flex-wrap:wrap}
.plt-cab .btn{margin-left:auto}

/* ---- publicaciones: la fila abre el piso; el ojo, la vista previa ---- */
.publi-fila{cursor:pointer}
.publi-fila .lr-t{display:inline-flex;align-items:center;gap:6px}
.publi-prev{width:24px;height:24px;padding:0;flex-shrink:0;color:var(--in);background:var(--in-soft);border-radius:50%}
.publi-prev:hover{background:var(--in);color:#fff}
.publi-ficha{align-self:flex-start;margin-top:5px;font-size:11.5px;padding:3px 9px}

/* ---- ficha del piso: la misma que la del equipo ---- */
.modal-caja.ficha-caja{width:min(1120px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;border-radius:var(--r-lg)}
.ficha-caja .modal-b{overflow-y:auto;background:var(--bg)}
.fp-where{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fp-where .panel-t{font-size:20px;font-weight:800}
.fp-com{font-size:12.5px;font-weight:700;color:var(--o-ink);background:var(--o-soft);border:1px solid var(--o);border-radius:99px;padding:2px 10px}
.fp-wrap{display:flex;flex-direction:column;gap:16px}
.fp-top{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;align-items:start}
.fp-gal{position:relative;background:var(--w);border:1px solid var(--ln);border-radius:14px;overflow:hidden;box-shadow:var(--sh)}
.fp-gal-main{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--w2)}
.fp-nav{position:absolute;top:calc(50% - 60px);width:40px;height:40px;border-radius:99px;border:0;
  background:rgba(255,253,249,.92);color:var(--k);font-size:24px;line-height:1;cursor:pointer;box-shadow:var(--sh)}
.fp-nav.prev{left:10px}.fp-nav.next{right:10px}
.fp-count{position:absolute;top:10px;left:10px;background:rgba(42,26,5,.7);color:#fff;font-size:12px;font-weight:700;padding:3px 8px;border-radius:99px}
.fp-thumbs{display:flex;gap:6px;padding:8px;overflow-x:auto}
.fp-thumb{flex:0 0 auto;border:2px solid transparent;border-radius:8px;padding:0;background:none;cursor:pointer;overflow:hidden}
.fp-thumb img{display:block;width:72px;height:54px;object-fit:cover}
.fp-thumb.on{border-color:var(--o)}
.fp-head{background:var(--w);border:1px solid var(--ln);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--sh)}
.fp-addr{font-family:var(--lbl);font-weight:800;font-size:20px;line-height:1.25;text-wrap:balance}
.fp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.fp-stat{background:var(--w3);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.fp-stat b{font-size:17px;font-variant-numeric:tabular-nums}
.fp-legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fp-legend .ml{margin-right:4px}
.fp-src{font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;white-space:nowrap;letter-spacing:.02em}
.s-id{background:#e3edf8;color:#22599c}.s-ta{background:#ece2f6;color:#6c3f9e}.s-dr{background:#dcefe5;color:#1d6b4f}
.s-crm{background:var(--o-soft);color:var(--o-ink)}.s-ma{background:#efe8de;color:#5c5146}.s-msg{background:#fbeecb;color:#8a5b00}
.fp-progress{height:6px;background:var(--w3);border-radius:99px;overflow:hidden}
.fp-progress span{display:block;height:100%;background:var(--o)}
/* «quitar este hueco» (Lucas): en rejilla, un grupo corto dejaba un hueco
   debajo si el de al lado era más alto. En columnas cada grupo sube hasta
   el anterior, sin huecos. */
.fp-groups{columns:2 380px;column-gap:14px}
.fp-groups .fp-group{break-inside:avoid;margin:0 0 14px;display:block}
.fp-group{background:var(--w);border:1px solid var(--ln);border-radius:14px;padding:14px 16px;box-shadow:var(--sh)}
.fp-group.ancho{column-span:all}
.fp-group h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--k3);display:flex;gap:8px;align-items:center}
.fp-group dl{margin:0}
.fp-row{display:grid;grid-template-columns:minmax(0,11em) minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--ln)}
.fp-row:first-child{border-top:0}
.fp-row dt{color:var(--k3);font-size:13px;font-weight:600}
.fp-row dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.fp-row dd a{color:var(--o-ink)}
.fp-note{display:block;font-weight:500;font-size:12px;color:var(--k3);margin-top:2px}
.fp-pend{color:var(--no);font-style:italic;font-weight:600;margin:0}
.fp-desc{margin:0;max-width:75ch;line-height:1.6}
@media (max-width:560px){ .fp-groups{columns:1} }
@media (max-width:820px){ .fp-top{grid-template-columns:1fr} .fp-row{grid-template-columns:1fr auto} .fp-row dt{grid-column:1/-1} }

/* ---- agendas del equipo ---- */
.ag-vista{margin:12px 0 10px}
.gev-q{display:inline-grid;place-items:center;min-width:18px;height:13px;padding:0 3px;margin-right:4px;border-radius:3px;
  color:#fff;font-style:normal;font-size:8.5px;font-weight:700;font-family:var(--lbl);vertical-align:1px}
.disp-main{padding:12px 14px;overflow-x:auto}
.disp{display:flex;flex-direction:column;min-width:760px}
.disp-fila{display:grid;grid-template-columns:150px repeat(6,minmax(0,1fr));gap:8px;align-items:center;
  padding:9px 0;border-top:1px solid var(--ln)}
.disp-fila.disp-cab{border-top:0;padding-top:0}
.disp-d{display:flex;flex-direction:column;gap:3px;font-size:12px}
.disp-d.hoy b{color:var(--o-ink)}
.disp-esc{display:flex;justify-content:space-between;font-style:normal;font-size:9px;color:var(--k4);font-family:"IBM Plex Mono",monospace}
.disp-esc i{font-style:normal}
.disp-q{display:flex;align-items:center;gap:7px;font-size:12.5px;min-width:0}
.disp-q b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.disp-p{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.disp-c{display:flex;flex-direction:column;gap:4px;min-width:0}
.disp-barra{position:relative;height:16px;background:repeating-linear-gradient(90deg,var(--w2) 0 calc(25% - 1px),var(--ln) calc(25% - 1px) 25%);
  border:1px solid var(--ln);border-radius:4px;overflow:hidden}
.disp-c.hoy .disp-barra{border-color:var(--o-line)}
.disp-ev{position:absolute;top:2px;bottom:2px;border-radius:2px;opacity:.85}
.disp-libre{font-size:10.5px;color:var(--ok);font-weight:600;line-height:1.3}
@media (max-width:900px){ .gcal{grid-template-columns:1fr} }

/* ---- inicio: círculos apretados y pulsables, felicitación ---- */
.anillos.compacto .anillo{padding:9px 10px;gap:9px;min-width:0}
.anillos.compacto .anillo-i{min-width:0}
.anillos.compacto .anillo-i b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.anillos.compacto .anillo-i .mono{font-size:14px;white-space:nowrap}
.anillos.compacto .anillo-i .mono small{font-size:11px}
.anillos.compacto .anillo-i .ml,.anillos.compacto .anillo-ok{white-space:nowrap;font-size:9.5px}
.anillos.compacto .anillo > svg:last-child{width:12px}
.anillo.pulsable{font:inherit;text-align:left;cursor:pointer;color:inherit;border:0;width:100%;
  transition:background .12s var(--ease-out)}
.anillo.pulsable > svg:last-child{margin-left:auto;color:var(--k4);flex-shrink:0}
@media (hover:hover) and (pointer:fine){ .anillo.pulsable:hover{background:var(--w2)} .anillo.pulsable:hover > svg:last-child{color:var(--o-ink)} }
.anillo-ok{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:var(--ok)}
.felicita{display:flex;align-items:center;gap:10px;padding:10px 14px;margin:0 0 8px;border-radius:var(--r);
  background:var(--ok-soft);color:var(--ok);border:1px solid color-mix(in srgb, var(--ok) 25%, transparent);font-size:13px}
.felicita b{font-weight:700}
.felicita div{color:var(--k2)}
.felicita div b{color:var(--ok)}
/* seguimientos y tareas: el resto, con un botón que se vea */
.btn.agh-todas{width:calc(100% - 24px);margin:10px 12px 12px;justify-content:center;color:var(--o-ink);
  background:var(--o-soft);border-color:var(--o-line);font-weight:600}
.btn.agh-todas:hover{background:var(--o);color:var(--k);border-color:var(--o)}
/* el tipo de seguimiento es una etiqueta, no un botón */
.agh-tipo{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--k3)}
/* grupos de gestión: el aviso de días sin hablar */
.ch-aviso{margin-top:4px;align-self:flex-start}
.ch-callado{background:var(--no-soft);color:var(--no);border-color:color-mix(in srgb, var(--no) 25%, transparent)}

/* ---- mi día: alcance de seguimientos ---- */
.seg-alcance{margin:0 0 10px}

/* ---- desarrollos: una menos por fila, más grandes ---- */
.sg-grid.des-grande{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:13px}
.sg-grid.des-grande .sg-c{font-size:13.5px}
/* a pantalla completa */
body.sin-scroll{overflow:hidden}
.des-full{position:fixed;inset:0;z-index:300;background:var(--bg);display:flex;flex-direction:column}
.des-full-h{display:flex;align-items:center;gap:12px;padding:14px 22px;border-bottom:1px solid var(--ln);background:var(--w)}
.des-full-h b{display:block;font-size:17px;font-weight:700}
.des-full-g{flex:1;min-height:0;overflow-y:auto;padding:18px 22px 40px;display:grid;grid-auto-rows:max-content;
  grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:16px;align-content:start}
.des-ficha{display:flex;flex-direction:column;background:var(--w);border:1px solid var(--ln);border-radius:var(--r-lg);
  box-shadow:var(--sh);min-height:max-content}
.des-ficha > .sg-c{border-radius:var(--r-lg) var(--r-lg) 0 0}
.des-ficha > .des-pasos{border-radius:0 0 var(--r-lg) var(--r-lg)}
.des-ficha .sg-c{border:0;border-radius:0;box-shadow:none}
.des-pasos{padding:12px 16px 16px;border-top:1px solid var(--ln);background:var(--w2);display:flex;flex-direction:column;gap:7px}
.des-pasos .pbar{display:block;height:5px;background:var(--w3);border-radius:99px;overflow:hidden}
.des-pasos .pbar i{display:block;height:100%;background:var(--ok)}
.des-pasos ol{list-style:none;margin:2px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.des-paso{display:flex;align-items:flex-start;gap:8px;width:100%;text-align:left;font:inherit;padding:8px 10px;cursor:pointer;
  border:1px solid var(--ln);border-radius:var(--r-sm);background:var(--w);color:var(--k2)}
.des-paso span{display:flex;flex-direction:column;gap:1px;min-width:0}
.des-paso b{font-size:12.5px;font-weight:600}
.des-paso small{font-size:11px;color:var(--k4)}
.des-paso svg{flex-shrink:0;margin-top:2px;color:var(--ok)}
.des-hueco{width:12px;height:12px;flex-shrink:0;margin-top:2px;border:1.5px solid var(--ln2);border-radius:3px}
.des-paso.ok{background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 30%, transparent)}
.des-paso.ok b{color:var(--ok)}
.des-paso.sig{border-color:var(--o);box-shadow:0 0 0 2px var(--o-soft)}
.des-paso.sig b{color:var(--o-ink)}
@media (max-width:560px){ .des-full-g{grid-template-columns:1fr;padding:12px} .des-pasos ol{grid-template-columns:1fr} }

/* ---- ruta de hoy: el mapa con las paradas ---- */
.plan-mapa{flex:1 1 420px;min-width:300px;border-left:1px solid var(--ln);display:flex;flex-direction:column;background:var(--w2)}
#ruta-mapa{flex:1;min-height:260px}
.plan-mapa-p{padding:6px 12px}
.ruta-pin{background:none;border:0}
.ruta-num{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#F28C1E;color:#fff;
  font:700 12px/1 var(--lbl);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.ruta-num.hecha{background:var(--ok)}
@media (max-width:760px){ .plan-mapa{border-left:0;border-top:1px solid var(--ln)} }
/* «esto lo pondría arriba al centro» (Gerard): el objetivo de la semana de
   desarrollos, centrado y con la frase debajo */
.des-fila{justify-content:center;flex-direction:column;text-align:center;gap:6px}
.des-fila .des-obj{align-items:center;min-width:260px}
.des-fila p{flex:none;max-width:60ch}

/* ---- agenda: quesito, reparto del equipo, Google en una línea ---- */
.ag-queso-c{display:flex;justify-content:center;margin:4px 0 2px}
.ag-q-n{font:700 15px var(--lbl);fill:var(--k)}
.ag-q-l{font:600 7px var(--lbl);fill:var(--k4);text-transform:uppercase;letter-spacing:.06em}
.ag-queso-l{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:11.5px}
.ag-queso-l li{display:flex;align-items:center;gap:7px}
.ag-queso-l b{margin-left:auto;font-size:11px}
.gsync-mini{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:11.5px;color:var(--k3);
  padding:4px 10px;border:1px solid var(--ln);border-radius:99px;background:var(--w);cursor:pointer}
.gsync-mini:hover{color:var(--k);border-color:var(--ln2)}
.gsync-mini .blob{width:7px;height:7px;border-radius:50%;background:var(--ok)}
.rep-card{margin-top:14px}
.rep-fila{display:grid;grid-template-columns:170px 1fr 60px 130px;gap:12px;align-items:center;padding:7px 0;border-top:1px solid var(--ln)}
.rep-fila:first-child{border-top:0}
.rep-q{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600}
.rep-barra{display:flex;height:14px;border-radius:4px;overflow:hidden;background:var(--w2)}
.rep-barra i{display:block;height:100%}
.rep-h{font-size:12px;text-align:right}
.rep-r{font-size:11px;color:var(--k3);text-align:right}
.rep-ley{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:11px;color:var(--k3)}
.rep-ley span{display:inline-flex;align-items:center;gap:5px}
@media (max-width:700px){ .rep-fila{grid-template-columns:1fr 60px} .rep-barra{grid-column:1/-1} .rep-r{display:none} }

/* ===== hoja de noticia (pantalla completa de desarrollos) ===== */
.hoja-cuerpo{flex:1;min-height:0;display:grid;grid-template-columns:290px 1fr}
.hoja-lista{overflow-y:auto;border-right:1px solid var(--ln);background:var(--w);padding:8px}
.hoja-li{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font:inherit;padding:9px 10px;border-radius:var(--r-sm);
  background:none;border:1px solid transparent;cursor:pointer;color:var(--k2)}
.hoja-li span{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.hoja-li b{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoja-li small{font-size:11px;color:var(--k4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hoja-li:hover{background:var(--w2)}
.hoja-li.on{background:var(--o-soft);border-color:var(--o-line)}
.hoja-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--k4)}
.hoja-dot.t-rojo{background:var(--no)}.hoja-dot.t-ambar{background:var(--o)}.hoja-dot.t-azul{background:var(--in)}
.hoja-tel{color:var(--ok)}
.hoja-main{overflow-y:auto;padding:18px 24px 50px;display:flex;flex-direction:column;gap:14px;max-width:1100px;width:100%;margin:0 auto}
.hoja-cab{display:grid;grid-template-columns:1fr auto;gap:12px 18px;background:var(--w);border:1px solid var(--ln);
  border-left:4px solid var(--o);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--sh)}
.hoja-cab-t h3{margin:3px 0 2px;font:800 21px/1.2 var(--lbl);letter-spacing:-.02em}
.hoja-cab-tel{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--r);background:var(--w2);color:var(--k3);align-self:start}
.hoja-cab-tel span{display:flex;flex-direction:column}
.hoja-cab-tel b{font-size:15px;color:var(--k)}
.hoja-cab-tel small{font-size:11px}
.hoja-cab-tel.ok{background:var(--ok-soft);color:var(--ok)}
.hoja-cab-tel.ok b{color:var(--ok)}
.hoja-cab-g{grid-column:1/-1;display:grid;grid-template-columns:auto auto minmax(200px,1fr) auto;gap:10px 16px;align-items:end}
.hoja-cab-g .hc.ancho{grid-column:auto}
.hoja-sec{background:var(--w);border:1px solid var(--ln);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--sh);
  display:flex;flex-direction:column;gap:10px}
.hoja-sec h4{margin:0;display:flex;align-items:center;gap:7px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--k2)}
.hoja-sec h4 svg{color:var(--o-ink)}
.hoja-orden{margin-left:auto;text-transform:none;letter-spacing:0;font-weight:500}
.hoja-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.hc{display:flex;flex-direction:column;gap:4px;min-width:0}
.hc.ancho{grid-column:span 2}
.hoja-g .hc:has(textarea){grid-column:1/-1}
.hc input,.hc textarea,.hoja-paso input,.hoja-com-nuevo input,.hoja-com-nuevo select{font:inherit;font-size:13px;padding:7px 9px;
  border:1px solid var(--ln2);border-radius:var(--r-sm);background:#FFFBEA;color:var(--k);width:100%;min-width:0}
.hc input[readonly]{background:var(--w2);color:var(--k3)}
.hc input:focus,.hc textarea:focus,.hoja-paso input:focus,.hoja-com-nuevo input:focus{outline:2px solid var(--o);outline-offset:-1px;border-color:transparent}
.hoja-seg{flex-wrap:wrap}
#view .hoja-seg button.on.c-rojo{background:var(--no);border-color:var(--no)}
#view .hoja-seg button.on.c-ambar{background:var(--o);color:var(--k);border-color:var(--o)}
#view .hoja-seg button.on.c-azul{background:var(--in);border-color:var(--in)}
#view .hoja-seg button.on.c-verde{background:var(--ok);border-color:var(--ok)}
.hoja-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hoja-foto{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:130px;
  border:1.5px dashed var(--ln2);border-radius:var(--r);background:repeating-linear-gradient(135deg,var(--w2) 0 12px,var(--w) 12px 24px);
  color:var(--k3);text-align:center;padding:14px;cursor:text}
.hoja-foto span{font-weight:600;font-size:13px;color:var(--k2)}
.hoja-foto small{font-size:11px}
.hoja-foto:focus{outline:2px solid var(--o);outline-offset:2px;border-color:var(--o)}
.hoja-foto.encima{border-color:var(--o);background:var(--o-soft)}
.hoja-foto.con{padding:6px;background:var(--w)}
.hoja-foto img{max-width:100%;max-height:320px;border-radius:6px;object-fit:contain}
.hoja-elegir{font-size:11.5px;cursor:pointer}
.hoja-pasos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.hoja-paso{display:grid;grid-template-columns:26px 120px 80px auto 1fr 1fr;gap:8px;align-items:center;padding:7px 9px;
  border:1px solid var(--ln);border-radius:var(--r-sm);border-left-width:3px}
.hoja-paso.r-verde{border-left-color:var(--ok);background:color-mix(in srgb, var(--ok-soft) 50%, var(--w))}
.hoja-paso.r-rojo{border-left-color:var(--no)}
.hoja-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--in);color:#fff;font:700 11px var(--lbl)}
.hoja-fu{font-size:12.5px}
.hoja-paso .btn{justify-content:center}
.hoja-sinurl{text-align:center}
.hoja-mas{align-self:flex-start}
.hoja-coms{display:flex;flex-direction:column;gap:8px}
.hoja-com{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:var(--r-sm);background:var(--w2)}
.hoja-com p{margin:0 0 2px;font-size:13px}
.hoja-com-nuevo{display:grid;grid-template-columns:140px 100px 160px 1fr auto;gap:8px;align-items:center}
.hoja-pie{text-align:center}
@media (max-width:1100px){ .hoja-paso{grid-template-columns:26px 1fr auto;} .hoja-paso input{grid-column:span 3} .hoja-paso .hoja-seg{grid-column:span 3} }
@media (max-width:1180px){ .hoja-cab-g{grid-template-columns:auto 1fr} }
@media (max-width:900px){ .hoja-cuerpo{grid-template-columns:1fr} .hoja-lista{display:none} .hoja-g{grid-template-columns:1fr 1fr}
  .hoja-2{grid-template-columns:1fr} .hoja-com-nuevo{grid-template-columns:1fr 1fr} .hoja-cab{grid-template-columns:1fr} .hoja-cab-g{grid-template-columns:1fr} }

/* ===== tabla de viviendas del día de zona ===== */
.viv-card.viv-full{position:fixed;inset:0;z-index:300;margin:0;border-radius:0;display:flex;flex-direction:column;overflow:hidden}
.viv-card.viv-full > .card-b{flex:1;min-height:0;overflow:auto}
.viv-card .card-h{flex-wrap:wrap;row-gap:6px}
.ciclo-pas{display:inline-flex;gap:6px;margin-left:6px}
.ciclo-pas > span{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:99px;
  background:var(--no-soft);color:var(--no)}
.ciclo-pas > span.ok{background:var(--ok-soft);color:var(--ok)}
.viv-t th{position:relative;white-space:nowrap}
.viv-t td{vertical-align:top;position:relative}
.viv-asa{position:absolute;left:0;right:0;bottom:-3px;height:6px;cursor:row-resize;z-index:2}
.viv-asa:hover,body.tirando-y .viv-asa{background:linear-gradient(transparent,var(--o-line))}
body.tirando-y{cursor:row-resize;user-select:none}
.v-com .v-nota{margin:4px 0 2px;font-size:13.5px;line-height:1.45;color:var(--k);white-space:normal}
.v-ant{font-size:11.5px;margin:3px 0}
.v-hist{list-style:none;margin:4px 0 6px;padding:0 0 0 10px;border-left:2px solid var(--ln2);display:flex;flex-direction:column;gap:5px}
.v-hist p{margin:1px 0 0;font-size:12.5px;color:var(--k2)}
/* gestión: objetivo por vía en el ciclo, y en rojo a los 40 días */
.ges-obj{margin-left:5px;font-size:10px;padding:0 4px;border-radius:4px;background:var(--no-soft);color:var(--no)}
.ges-obj.ok{background:var(--ok-soft);color:var(--ok)}
.v-ges.rojo{background:color-mix(in srgb, var(--no-soft) 70%, transparent);box-shadow:inset 3px 0 0 var(--no)}
.ges-caducada{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--no);margin-top:3px}
/* ocupación en colores */
.dd:has(> .ocup-sel) > .dd-btn, .ocup-sel{font-weight:600;border-radius:99px !important;padding-left:10px !important}
.dd:has(> .ocup-sel.o-ok) > .dd-btn, .ocup-sel.o-ok{background:var(--ok-soft) !important;color:var(--ok) !important;border-color:color-mix(in srgb, var(--ok) 35%, transparent) !important}
.dd:has(> .ocup-sel.o-in) > .dd-btn, .ocup-sel.o-in{background:var(--in-soft) !important;color:var(--in) !important;border-color:color-mix(in srgb, var(--in) 35%, transparent) !important}
.dd:has(> .ocup-sel.o-k) > .dd-btn, .ocup-sel.o-k{background:var(--k3) !important;color:#fff !important;border-color:var(--k3) !important}
.dd:has(> .ocup-sel.o-o) > .dd-btn, .ocup-sel.o-o{background:var(--o-soft) !important;color:var(--o-ink) !important;border-color:var(--o-line) !important}
.dd:has(> .ocup-sel.o-gris) > .dd-btn, .ocup-sel.o-gris{background:var(--w2) !important;color:var(--k3) !important}
.vz-modo{margin:6px 0 10px}

/* ---- mi zona: lo de hoy, lo primero y en grande ---- */
.rh-hero{display:grid;grid-template-columns:minmax(300px,1fr) minmax(280px,1.1fr);gap:14px 22px;margin:14px 0 6px;
  padding:20px 22px;background:var(--w);border:1px solid var(--ln);border-left:4px solid var(--o);border-radius:var(--r-lg);box-shadow:var(--sh)}
.rh-hero-i{display:flex;flex-direction:column;gap:6px}
.rh-hero-i h2{margin:0;font:800 24px/1.2 var(--lbl);letter-spacing:-.02em}
.rh-hero-i p{margin:0;color:var(--k3);font-size:13.5px}
.rh-hero-b{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px}
.btn.rh-grande{font-size:15px;padding:11px 18px}
.rh-paradas{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;align-self:start}
.rh-paradas button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;font:inherit;padding:7px 10px;cursor:pointer;
  border:1px solid var(--ln);border-radius:var(--r-sm);background:var(--w);color:var(--k2)}
.rh-paradas button:hover{border-color:var(--o-line);background:var(--w2)}
.rh-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--w3);color:var(--k2);font:700 11px var(--lbl);flex-shrink:0}
.rh-d{flex:1;min-width:0;font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rh-paradas li.sig button{border-color:var(--o);background:var(--o-soft)}
.rh-paradas li.sig .rh-n{background:var(--o);color:var(--k)}
.rh-paradas li.ok button{opacity:.7}
.rh-paradas li.ok .rh-n{background:var(--ok);color:#fff}
.rh-repaso{grid-column:1/-1;display:flex;align-items:center;gap:11px;padding:10px 14px;border-radius:var(--r);
  background:var(--o-soft);color:var(--o-ink);border:1px solid var(--o-line)}
.rh-repaso span{display:flex;flex-direction:column;gap:1px;flex:1}
.rh-repaso small{font-size:11.5px;color:var(--k3)}
.rh-repaso.tarde{background:var(--no-soft);color:var(--no);border-color:color-mix(in srgb, var(--no) 30%, transparent)}
.rh-repaso.ok{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb, var(--ok) 30%, transparent)}
.plan + .rh-repaso, .rh-repaso:not(.rh-hero .rh-repaso){margin:12px 0}
@media (max-width:800px){ .rh-hero{grid-template-columns:1fr} }

/* ---- seguimientos: teléfono de color y fila que se ilumina con su color ---- */
.seg-tel.verde, .seg-tel.verde svg{color:var(--ok)}
.seg-tel.rojo, .seg-tel.rojo svg{color:var(--no)}
.seg-tel.sin{display:inline-flex;align-items:center;gap:4px}
.seg-tel.rojo .mono{font-weight:700}
.seg-t tr.seg-f td{transition:background .14s var(--ease-out)}
.seg-t tr.seg-f.col-verde:hover td{background:color-mix(in srgb, var(--ok-soft) 70%, transparent)}
.seg-t tr.seg-f.col-ambar:hover td{background:color-mix(in srgb, var(--o-soft) 70%, transparent)}
.seg-t tr.seg-f.col-rojo:hover td{background:color-mix(in srgb, var(--no-soft) 70%, transparent)}
.sg-c{transition:box-shadow .14s var(--ease-out),background .14s var(--ease-out)}
.sg-c.col-verde:hover{box-shadow:0 0 0 2px color-mix(in srgb, var(--ok) 35%, transparent);background:color-mix(in srgb, var(--ok-soft) 40%, var(--w))}
.sg-c.col-ambar:hover{box-shadow:0 0 0 2px var(--o-line);background:color-mix(in srgb, var(--o-soft) 40%, var(--w))}
.sg-c.col-rojo:hover{box-shadow:0 0 0 2px color-mix(in srgb, var(--no) 30%, transparent);background:color-mix(in srgb, var(--no-soft) 40%, var(--w))}
.hoja-abrir{margin:2px 0 6px;align-self:flex-start;background:var(--k);color:var(--w);border-color:var(--k)}
.hoja-abrir:hover{background:var(--o);color:var(--k);border-color:var(--o)}

/* ---- conversaciones: filtros rápidos, contexto y sugerencia NEPQ ---- */
.ch-rapidos{display:flex;gap:5px;flex-wrap:wrap;padding:0 0 8px}
.ch-rapidos .chip{display:inline-flex;align-items:center;gap:5px}
.ch-ctx{display:flex;flex-wrap:wrap;gap:6px;padding:8px 14px;border-bottom:1px solid var(--ln);background:var(--w2)}
.ch-ctx-i{display:flex;flex-direction:column;gap:1px;padding:5px 10px;border-radius:var(--r-sm);background:var(--w);border:1px solid var(--ln);min-width:0}
.ch-ctx-i b{font-size:12px;font-weight:600}
.ch-ctx-i.no{border-color:color-mix(in srgb, var(--no) 30%, transparent);background:var(--no-soft)}
.ch-ctx-i.no b{color:var(--no)}
.ch-ctx-i.ok b{color:var(--ok)}
.nepq{margin:0 0 8px;padding:10px 12px;border-radius:var(--r);background:var(--in-soft);border:1px solid color-mix(in srgb, var(--in) 22%, transparent)}
.nepq-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:var(--in);font-size:12.5px}
.nepq-h b{color:var(--in)}
.nepq-a{margin-left:auto;max-width:50%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nepq p{margin:6px 0 8px;font-size:13.5px;line-height:1.5;color:var(--k)}
.nepq-b{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
/* plan de zona: columnas fijas en todos los bloques y nada que se parta */
.pz-t{table-layout:fixed;width:100%;min-width:1126px}
.pz-t td{overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.pz-per{display:table-cell}
.pz-per b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pz-per .mono{display:block;min-height:15px;font-size:11.5px;color:var(--k3);white-space:nowrap}
.pz-t .bdg{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}

/* ---- conversaciones: que el chat se vea ----
   El contexto, la sugerencia y el cuadro de escribir se comían todo el alto y
   del hilo quedaba una franja con un mensaje. Ahora: caja más alta, contexto
   en una columna al lado del hilo, sugerencia en una franja y el pie en una
   sola línea. */
.ch{height:clamp(600px,84vh,1040px)}
.ch-cuerpo{flex:1;min-height:0;display:flex}
.ch-cuerpo .ch-hilo{flex:1;min-width:0}
#view .ch-ctx{flex:none;width:200px;flex-direction:column;flex-wrap:nowrap;gap:6px;padding:12px 10px;
  border-bottom:0;border-left:1px solid var(--ln);background:var(--w);overflow-y:auto}
.ch-ctx-t{margin:0 2px 2px}
.ch-ctx-i{padding:6px 9px}
.ch-ctx-i b,.ch-ctx-i .et-p{font-size:12px;line-height:1.35;overflow-wrap:anywhere}
#view .nepq{margin:0;padding:7px 10px;display:flex;align-items:center;gap:10px}
#view .nepq-h{flex:none;font-size:12px;gap:6px}
#view .nepq p{flex:1;min-width:0;margin:0;font-size:13px;line-height:1.4}
#view .nepq-b{flex:none;gap:5px}
.ch-red{gap:7px;padding:9px 14px}
.ch-red textarea{min-height:64px}
.ch-pie{flex-wrap:nowrap}
.ch-pie-nota{flex:1 1 0;min-width:60px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-pie .btn{flex:none}
@media (max-width:1180px){
  .ch-cuerpo.con-ctx{flex-direction:column-reverse}
  #view .ch-ctx{width:auto;flex-direction:row;flex-wrap:wrap;border-left:0;border-bottom:1px solid var(--ln);padding:8px 14px}
  .ch-ctx-t{display:none}
  .ch-pie{flex-wrap:wrap}
}
/* la etiqueta medía 64px y el «0/2» de este ciclo se metía debajo de los
   intentos: ancho para los dos, y las fichas de intento empiezan alineadas */
.ges-via-l{width:auto;min-width:104px;white-space:nowrap}
.ges-obj{margin-left:auto;flex:none}
.ch{height:max(560px,calc(100vh - 190px));max-height:1040px}
.ch-red .ch-plt:has(.ch-tira){flex-wrap:nowrap;align-items:flex-start}
.ch-red .ch-plt .ch-tira{flex:1 1 auto;min-width:0}
.ch-red .ch-plt > .ml{padding-top:6px;flex:none}
.ch-idioma{flex:none}
.ch-idioma button{font-family:var(--mono);letter-spacing:.04em;min-width:34px}
/* el cuadro de escribir ocupa poco hasta que se escribe en él */
.ch-red textarea{min-height:50px;height:50px;transition:height .15s}
.ch-red textarea:focus{height:120px}
.ch-ico{padding-left:8px;padding-right:8px}
.ch-pie{gap:6px}
/* plan de zona: cada fila igual de alta, todo centrado y cada celda en una o
   dos líneas que no se parten. Antes el nombre iba arriba y lo demás en medio,
   las etiquetas se pegaban unas a otras y bajaban de línea, y el tipo de
   noticia en mayúsculas partía la celda en tres. */
.pz-t td{height:54px;padding:7px 12px;vertical-align:middle}
.pz-per,.pz-est,.pz-cont{line-height:1.3}
.pz-per .mono{min-height:0;margin-top:2px}
.pz-est .bdg{display:inline-block}
.pz-l1{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pz-l2{display:block;margin-top:3px;font-size:11px;color:var(--k3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pz-est .pz-l2{text-transform:lowercase}
.pz-est .pz-l2::first-letter{text-transform:uppercase}
.pz-cont .pz-l2{color:var(--k4)}
.pz-etq{white-space:nowrap}
.pz-etq .bdg{margin-right:4px;max-width:150px;vertical-align:middle}
.pz-acc{white-space:nowrap}
.pz-t{min-width:1000px}
.pz-etq{overflow:hidden}
.pz-etq .bdg{max-width:132px}
.pz-acc{text-align:right}
/* las dos etiquetas encogen a la vez con puntos suspensivos en vez de
   quedarse la segunda cortada */
.pz-etq-w{display:flex;gap:4px;min-width:0;align-items:center}
.pz-etq-w .bdg{flex:0 1 auto;min-width:0;margin:0;max-width:none}
.pz-etq-w .bdg.gris:last-child{flex:none}
.pz-etq-t{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pz-etq-w .pz-mas{flex:none}

/* ===== métricas como en el panel de Lluc ===== */
.mx-sec{margin:0 0 18px}
.mx-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:15px;font-weight:700;margin:0 0 10px;
  font-family:"Nunito","Figtree",sans-serif;letter-spacing:-.01em}
.mx-h > span:not(.bdg):not(.spacer){font-size:12px;font-weight:500;color:var(--k4);font-family:var(--sans,inherit);letter-spacing:0}
.mx-control{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 16px;margin:0 0 18px;
  background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.mx-control > b{font-size:14px;margin-right:4px}
.mx-control span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--k2)}
.mx-control span i{width:8px;height:8px;border-radius:50%;background:var(--no)}
.mx-control span.ok i{background:var(--ok)} .mx-control span.casi i{background:var(--o)}
.mx-det{margin-top:12px;padding-top:11px;border-top:1px dashed var(--ln);display:flex;flex-direction:column;gap:9px}
.mx-vs{margin:0;display:flex;align-items:center;gap:5px;font-size:12px;color:var(--k3)}
.mx-vs.baja b{color:var(--no)} .mx-vs.sube b{color:var(--ok)}
.mx-vs.baja svg{color:var(--no)} .mx-vs.sube svg{color:var(--ok)}
.mx-tramos{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--w3)}
.mx-tramos.fino{height:6px;margin-top:4px}
.mx-tramos i{display:block;height:100%}
.mx-ley{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--k2)}
.mx-ley > span{display:inline-flex;align-items:center;gap:5px}
.mx-ley i{width:8px;height:8px;border-radius:2px;display:inline-block}
.mx-datos{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.mx-dato{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:var(--w2);border-radius:var(--r-sm)}
.mx-dato b{font-size:16px}
.mx-st{margin-top:2px}
.mx-origen{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mx-or{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border:1px solid var(--ln);border-radius:var(--r-sm);background:var(--w)}
.mx-or-l{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--k2)}
.mx-or-l i{width:8px;height:8px;border-radius:2px}
.mx-or b{font-size:20px;letter-spacing:-.02em}
.mx-or-d{font-size:11px;font-weight:600}
.mx-or-d.sube{color:var(--ok)} .mx-or-d.baja{color:var(--no)}
.mx-col{display:flex;gap:14px;flex-wrap:wrap;font-size:12px}
.mx-col span{display:inline-flex;align-items:center;gap:6px}
.mx-col i{width:9px;height:9px;border-radius:50%}
.mx-kp{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:10px}
.mx-kpi{display:flex;flex-direction:column;gap:3px;padding:12px 14px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.mx-kpi b{font-size:24px;letter-spacing:-.02em}
.mx-tas{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.mx-ta{display:flex;flex-direction:column;gap:8px;text-align:left;padding:11px 13px;background:var(--w);
  border:1px solid var(--ln);border-left:3px solid var(--ln2);border-radius:var(--r);cursor:pointer;font:inherit;color:inherit}
.mx-ta.col-verde{border-left-color:var(--ok)} .mx-ta.col-ambar{border-left-color:var(--o)} .mx-ta.col-rojo{border-left-color:var(--no)}
.mx-ta:hover{box-shadow:var(--sh)}
.mx-ta-1{display:flex;align-items:baseline;gap:8px}
.mx-ta-1 b{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mx-ta-2{display:flex;gap:5px;flex-wrap:wrap}
.mx-ta-3{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--k2)}
.av-mini{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--w3);
  font-size:9.5px;font-weight:700;color:var(--k2)}
.mx-sem{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600}
.mx-sem i{width:7px;height:7px;border-radius:50%}
.mx-sem.verde{color:var(--ok)} .mx-sem.verde i{background:var(--ok)}
.mx-sem.ambar{color:var(--o-ink)} .mx-sem.ambar i{background:var(--o)}
.mx-sem.rojo{color:var(--no)} .mx-sem.rojo i{background:var(--no)}
.mx-obj{margin-bottom:6px}
.mx-ref{margin:0 0 18px;font-size:12.5px;color:var(--k3)}
.mx-dia{background:var(--w);border:1px solid var(--ln);border-radius:var(--r);margin-bottom:8px}
.mx-dia > summary{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;list-style:none}
.mx-dia > summary::-webkit-details-marker{display:none}
.mx-dia > summary::after{content:"";margin-left:auto;width:7px;height:7px;border-right:1.6px solid var(--k3);border-bottom:1.6px solid var(--k3);transform:rotate(45deg);transition:transform .15s}
.mx-dia[open] > summary::after{transform:rotate(-135deg)}
.mx-fis{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;padding:0 14px 14px}
.mx-fi{display:flex;flex-direction:column;gap:6px;padding:11px 13px;border:1px solid var(--ln);border-radius:var(--r);background:var(--w2)}
.mx-fi-h{display:flex;align-items:center;gap:8px}
.mx-fi-n{font-weight:700;font-size:13px;text-align:left;background:none;border:0;padding:0;cursor:pointer;color:var(--k)}
.mx-fi-n:hover{color:var(--o-ink)}
.mx-fi p{margin:0}
.mx-fi-p{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--k2)}
.mx-fi-p b{margin-left:3px} .mx-fi-p b.ok{color:var(--ok)}
.mx-fi-k{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.mx-fi-k span{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:99px;background:var(--w);
  border:1px solid var(--ln);font-size:11px;color:var(--k2)}
.mx-fi-k span b{color:var(--k)}
.mx-fi-k span.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}
.mx-fi-k span.pend{color:var(--o-ink);border-color:var(--o-line)}
.mx-dom{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.mx-dm{display:flex;flex-direction:column;gap:3px;padding:12px 14px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);color:var(--k3)}
.mx-dm b{font-size:24px;color:var(--ok);letter-spacing:-.02em}
.mx-dm span{font-size:12px;color:var(--k2)}
.mx-diag{list-style:none;margin:0;padding:12px 16px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);
  display:flex;flex-direction:column;gap:9px}
.mx-diag li{display:flex;gap:9px;align-items:baseline;font-size:12.5px;color:var(--k2);line-height:1.5}
.mx-diag li > i{flex:none;width:8px;height:8px;border-radius:50%;background:var(--no);transform:translateY(-1px)}
.mx-diag li.ok > i{background:var(--ok)} .mx-diag li.amb > i{background:var(--o)}
.mx-diag li b{color:var(--k)}
.mx-foco{margin:8px 0 0;font-size:12.5px;color:var(--k2)}
.mx-foco span{color:var(--o-ink);font-weight:600}
.mx-rk{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit}
.mx-rk.on{color:var(--o-ink)}
.mx-rk-c{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.mx-rk-c > i{width:10px;height:10px;display:inline-block}
@media (max-width:900px){ .mx-origen{grid-template-columns:1fr} }

/* ---- ruta de hoy: el mismo bloque en Mi zona y en Mi día ---- */
.rh-hero{grid-template-columns:minmax(300px,1fr) minmax(320px,1.15fr);align-items:stretch}
.rh-hero .rh-paradas{margin-top:12px}
.rh-mapa{display:flex;flex-direction:column;gap:6px;min-height:320px}
.rh-mapa #ruta-mapa{flex:1;min-height:300px;border-radius:var(--r);overflow:hidden;border:1px solid var(--ln);background:var(--w2)}
/* ---- la tira del ciclo: el estado por el color de fondo ---- */
.zdia.pasado.completo{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 28%,transparent)}
.zdia.pasado.completo .zdia-n b,.zdia.pasado.completo .zdia-e{color:var(--ok)}
.zdia.pasado.atrasado{background:var(--no-soft);border-color:color-mix(in srgb,var(--no) 30%,transparent)}
.zdia.pasado.atrasado .zdia-n b,.zdia.pasado.atrasado .zdia-e{color:var(--no)}
.zdia.hoy{background:var(--k);border-color:var(--k);color:var(--w);box-shadow:0 0 0 3px var(--o-line)}
.zdia.hoy .zdia-h b{color:var(--o)} .zdia.hoy .zdia-n b{color:var(--w)}
.zdia.hoy .zdia-n span,.zdia.hoy .zdia-p,.zdia.hoy .ml{color:color-mix(in srgb,var(--w) 70%,transparent)}
.zdia.proximo{border-style:solid;background:var(--w)}
.zdia-e{display:inline-flex;align-items:center;gap:3px;font-weight:700}
.zdias.largo .zdia-p .zdia-e{display:none}
.zdias-ley{display:flex;gap:14px;flex-wrap:wrap;margin:-6px 0 14px;font-size:11.5px;color:var(--k3)}
.zdias-ley span{display:inline-flex;align-items:center;gap:6px}
.zdias-ley i{width:12px;height:12px;border-radius:3px;border:1px solid var(--ln)}
.zdias-ley i.completo{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 28%,transparent)}
.zdias-ley i.atrasado{background:var(--no-soft);border-color:color-mix(in srgb,var(--no) 30%,transparent)}
.zdias-ley i.hoy{background:var(--k);border-color:var(--k)}
.zdias-ley i.proximo{background:var(--w)}
/* ---- tarjeta de parada más compacta: chips con icono y una línea de aviso ---- */
.par-chips{display:flex;gap:5px;flex-wrap:wrap}
.pc{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;background:var(--w2);
  border:1px solid var(--ln);font-size:11.5px;color:var(--k3)}
.pc b{color:var(--k);font-weight:700}
.pc svg{stroke:var(--k4)}
.pc .pm{width:7px;height:7px;border-radius:50%}
.pc.frio{background:var(--no-soft);border-color:color-mix(in srgb,var(--no) 25%,transparent);color:var(--no)}
.pc.frio b,.pc.frio svg{color:var(--no);stroke:var(--no)}
.pc.not{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.pc.not b{color:var(--o-ink)}
.pc.ok{color:var(--ok)} .pc.ok svg{stroke:var(--ok)}
.par-q{padding:6px 10px;align-items:center}
.par-q > div{display:flex;gap:6px;min-width:0;align-items:baseline}
.par-q b{display:inline;margin:0;white-space:nowrap;font-size:12.5px}
.par-q span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:12px}
.par-arr{margin-left:0;align-self:flex-start;padding:2px 8px;border-radius:99px;background:var(--no-soft)}
.parada{padding-top:11px;padding-bottom:11px}
/* ---- barra del mapa: tipo de mapa, un menú de capas y el encuadre ---- */
.capas{position:relative}
.capas > summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.capas > summary::-webkit-details-marker{display:none}
.capas-n{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:99px;background:var(--k);color:var(--w);font-size:10px;font-weight:700}
.capas-pop{position:absolute;z-index:500;top:calc(100% + 6px);left:0;width:290px;padding:6px;background:var(--w);
  border:1px solid var(--ln);border-radius:var(--r);box-shadow:var(--sh-lg,0 10px 30px rgba(0,0,0,.14));display:flex;flex-direction:column;gap:2px}
.capa-op{display:flex;align-items:flex-start;gap:10px;padding:8px 9px;border:0;background:none;border-radius:var(--r-sm);
  text-align:left;font:inherit;color:var(--k);cursor:pointer}
.capa-op:hover{background:var(--w2)}
.capa-op > span:last-child{display:flex;flex-direction:column;gap:1px}
.capa-op b{font-size:13px;font-weight:600}
.capa-op small{font-size:11.5px;color:var(--k4)}
.capa-ck{flex:none;display:grid;place-items:center;width:17px;height:17px;margin-top:1px;border-radius:4px;border:1.5px solid var(--ln2);color:var(--w)}
.capa-op.on .capa-ck{background:var(--k);border-color:var(--k)}
.mapa-leyenda-zonas{gap:8px 16px;padding:10px 12px;background:var(--w2);border-radius:var(--r);margin-top:10px}
.mapa-leyenda-zonas span{gap:7px}
.mapa-leyenda-zonas .zl-n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;
  background:var(--zc);color:#fff;font-style:normal;font-size:11px;font-weight:800;opacity:1}
.mapa-leyenda-zonas b{color:var(--k2);font-weight:600}
.mapa-leyenda-zonas span.mia b{color:var(--k)}
.mapa-leyenda-zonas span.mia::after{content:"tu zona";font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--o-ink);background:var(--o-soft);padding:1px 6px;border-radius:99px}

/* ---- cartera: encargo, ocupación, características, próxima acción y visitas ---- */
.xp-tags{position:absolute;left:9px;bottom:8px;display:flex;gap:4px;flex-wrap:wrap;max-width:calc(100% - 18px)}
.xp-tags .bdg{font-size:10px;padding:1px 6px;box-shadow:0 1px 3px rgba(0,0,0,.18);display:inline-flex;align-items:center;gap:3px}
.xcard .xp-price{position:absolute;right:10px;bottom:8px}
.xcar{display:flex;flex-wrap:wrap;gap:4px}
.xcar span{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:99px;background:var(--w2);
  border:1px solid var(--ln);font-size:11px;color:var(--k2)}
.xcar span b{color:var(--k)}
.xcar span svg{stroke:var(--k4)}
.xcar span.si{color:var(--ok)} .xcar span.si svg{stroke:var(--ok)}
.xcar span.no{color:var(--k4);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--k4) 50%,transparent)}
.xcar .xcar-est{background:var(--w);font-weight:600}
.xacc{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border-radius:var(--r-sm);text-align:left;
  font:inherit;cursor:pointer;background:var(--in-soft);border:1px solid color-mix(in srgb,var(--in) 22%,transparent);color:var(--in)}
.xacc-t{display:flex;flex-direction:column;flex:1;min-width:0}
.xacc-t .ml{font-size:9.5px}
.xacc-t b{color:var(--k);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xacc-c{font-size:11.5px;font-weight:700;white-space:nowrap}
.xacc > svg:last-child{opacity:.5}
.xacc.hoy{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.xacc.tarde{background:var(--no-soft);border-color:color-mix(in srgb,var(--no) 28%,transparent);color:var(--no)}
.xacc:hover{filter:brightness(.98)}
.xvis{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border:1px dashed var(--ln2);border-radius:var(--r-sm);
  background:var(--w);text-align:left;font:inherit;font-size:11.5px;color:var(--k2);cursor:pointer}
.xvis span{display:flex;align-items:center;gap:6px}
.xvis span svg{flex:none;stroke:var(--k4)}
.xvis span.si{color:var(--ok);font-weight:600} .xvis span.si svg{stroke:var(--ok)}
.xvis span.no{color:var(--o-ink);font-weight:600} .xvis span.no svg{stroke:var(--o-ink)}
.xvis-n{color:var(--k3);font-style:italic}
.xvis:hover{border-color:var(--o-line)}
.xacc-tb,.xvis-tb{display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:none;border:0;padding:0;
  font:inherit;text-align:left;cursor:pointer;color:var(--k)}
.xacc-tb b{font-size:12.5px;font-weight:600}
.xacc-tb span{font-size:11.5px;color:var(--in);font-weight:600}
.xacc-tb.hoy span{color:var(--o-ink)} .xacc-tb.tarde span{color:var(--no)}
.xvis-tb span:first-child{font-size:12px}
/* Los grupos de botones de los formularios: antes medían lo que su texto
   (max-content) y, con dos en la misma fila, el segundo se montaba encima del
   primero y se salía de la caja. Ahora ocupan su columna y, si no caben, las
   opciones bajan a otra fila en vez de salirse. */
.bot-l{display:flex;flex-wrap:wrap;gap:6px;width:auto;max-width:100%;border:0;border-radius:0;overflow:visible;background:none}
.bot-o span{padding:7px 14px;border:1px solid var(--ln2);border-radius:var(--r);background:var(--w);white-space:nowrap}
.bot-o:last-child span{border-right:1px solid var(--ln2)}
.bot-o input:checked + span{border-color:var(--k)}
.modal-h > .icb{margin-left:auto;flex:none}

/* ===== PIPELINE: el tablero manda (Gerard, 5 oct) ===== */
.pp{display:flex;flex-direction:column;gap:8px}
.pp .mono,.pp .kc{font-family:inherit;font-variant-numeric:tabular-nums}
.pp-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pp-vistas button{display:inline-flex;align-items:center;gap:5px}
.pp-n{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:99px;background:var(--no);color:#fff;font-size:10px;font-weight:700}
.pp-av{display:flex;gap:5px;flex-wrap:wrap}
.pp-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;border:1px solid;font:inherit;font-size:12px;cursor:pointer}
.pp-chip b{font-weight:800}
.pp-chip.on{box-shadow:inset 0 0 0 1.5px currentColor}
.pp-como{display:flex;align-items:center;gap:6px}
.pp-filtros .filtros{padding:6px 10px;gap:6px;align-items:center;flex-wrap:wrap}
.pp-filtros .filtro.compacto > .ml{display:none}
.pp-filtros .filtro-busca{min-width:200px}
.pp-filtros .filtro.puesto .dd-btn{border-color:var(--k);font-weight:600}
.pp-kpi{display:flex;align-items:center;gap:6px 20px;flex-wrap:wrap;padding:7px 12px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.pp-k{display:inline-flex;align-items:center;gap:7px}
.pp-k .ml{font-size:9.5px}
.pp-k b{font-size:13.5px;font-weight:700}
.pp-k svg{opacity:.8}
.pp-fb{display:inline-block;width:70px;height:5px;border-radius:99px;background:var(--w3);overflow:hidden}
.pp-fb i{display:block;height:100%}
.pp-kpi-x{margin-left:auto}
.pp-kpi-ver{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;background:none;border:0;padding:0;font:inherit;font-size:12px;color:var(--k3);cursor:pointer}
/* el tablero: las 7 columnas a la vista, cada una con su scroll y la cabecera fija */
.kb.kb2{display:grid;gap:8px;overflow-x:auto;background:none;border:0;padding:0;align-items:stretch;
  height:max(460px,calc(100vh - 250px))}
.kb2 .kbcol{flex:none;max-height:none;min-width:0;min-height:0;border:1px solid var(--ln);border-radius:var(--r);overflow:hidden;background:var(--w2)}
.kb2 .kbcol.final{border-color:color-mix(in srgb,var(--ok) 45%,transparent);box-shadow:inset 0 3px 0 var(--ok)}
.kb2 .kbh{padding:8px 10px;background:var(--w)}
.kb2 .kt{gap:6px}
.kb2 .kt-l{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb2 .kc{margin-left:auto;font-size:11px;font-weight:700;color:var(--k3)}
.kb2 .ks{font-family:inherit;font-size:11px;margin-top:3px;color:var(--k3)}
.kb2 .ks b{color:var(--k)}
.kb-pleg{display:grid;place-items:center;width:22px;height:22px;border:0;border-radius:var(--r-sm);background:none;color:var(--k4);cursor:pointer;flex:none}
.kb-pleg:hover{background:var(--w3);color:var(--k)}
.kb2 .kbb{flex:1;min-height:0;padding:7px;gap:7px}
.kbcol.plegada{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0;background:var(--w);cursor:default}
.kb-v{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;white-space:nowrap}
.kb-vs{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;color:var(--k4)}
.kb-pie{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0;font-size:12.5px;color:var(--k2)}
.kb-pie b{color:var(--ok)}
.kb-pie .mini{margin-left:auto}
/* la tarjeta */
.ocard.oc2{position:relative;display:flex;flex-direction:column;gap:6px;padding:9px 10px 8px 12px;overflow:hidden}
.oc-edad{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--w3)}
.oc-edad::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:var(--e);background:var(--ec)}
.oc-foto2{width:calc(100% + 22px);margin:-9px -10px 0 -12px;height:84px;object-fit:cover;display:block}
.oc-foto2.sinfoto{display:none}
.oc-h{display:flex;align-items:flex-start;gap:6px}
.oc-hd{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.oc2 .oc-dir{font-size:12.5px;font-weight:700;line-height:1.25}
.oc-prop{display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--k2);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oc-prop svg{flex:none;stroke:var(--k4)}
.oc-ring{flex:none;margin-top:-2px}
.oc-ring svg text{font-size:9px}
.oc-chips{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.oc-chips .bdg{font-size:10.5px}
.oc-com2{margin-left:auto;font-size:10px;font-weight:700;color:var(--k4)}
.oc-acc2{display:flex;align-items:center;gap:6px;width:100%;padding:5px 7px;border-radius:var(--r-sm);border:1px solid var(--ln);
  background:var(--w2);font:inherit;font-size:11.5px;color:var(--k2);text-align:left;cursor:pointer}
.oc-acc2 span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oc-acc2 b{flex:none;font-size:11px}
.oc-acc2.hoy{background:var(--o-soft);border-color:var(--o-line);color:var(--o-ink)}
.oc-acc2.tarde,.oc-acc2.falta{background:var(--no-soft);border-color:color-mix(in srgb,var(--no) 28%,transparent);color:var(--no)}
.oc-pie{display:flex;align-items:baseline;gap:6px;font-size:11px;color:var(--k3)}
.oc-pie .mono{font-weight:600;color:var(--k2)}
.oc-bot{display:none;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:1px}
.ocard.oc2:hover .oc-bot,.ocard.oc2:focus-within .oc-bot{display:grid}
.oc-b{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 2px;border:1px solid var(--ln);border-radius:var(--r-sm);
  background:var(--w);font:inherit;font-size:9.5px;color:var(--k2);cursor:pointer;text-decoration:none}
.oc-b:hover{border-color:var(--k);color:var(--k)}
@media (hover:none){ .oc-bot{display:grid} }
/* lista y hoy */
.pp-lista td{vertical-align:middle}
.pp-falta{color:var(--no);font-weight:600}
.pp-hoy-t{margin:0;font-size:13px;color:var(--k2)}
.pp-hoy{display:flex;flex-direction:column;gap:7px}
.pp-h{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:11px 14px;background:var(--w);border:1px solid var(--ln);
  border-left:4px solid var(--o);border-radius:var(--r)}
.pp-h.tarde,.pp-h.falta{border-left-color:var(--no)}
.pp-h-i{flex:1;min-width:260px;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.pp-h-q{font-size:14.5px;font-weight:700;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.pp-h-q b{font-size:12px;color:var(--no)}
.pp-h.hoy .pp-h-q b{color:var(--o-ink)}
.pp-h-d{font-size:13px;color:var(--k2)}
.pp-h-b{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
/* panel lateral */
.po-quien{display:flex;align-items:center;gap:8px;padding:10px 12px;margin:0 0 10px;background:var(--w2);border:1px solid var(--ln);border-radius:var(--r)}
.po-quien > div{flex:1;min-width:0;display:flex;flex-direction:column}
.po-quien b{font-size:14px}
.po-quien .mono{font-size:12px;color:var(--k3)}
.po-tabs{display:flex;width:100%;margin-bottom:10px}
.po-tabs button{flex:1;padding-left:4px;padding-right:4px}
.po-check{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:5px}
.po-check li{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--k3)}
.po-check li i{width:12px;height:12px;border:1.5px solid var(--ln2);border-radius:3px}
.po-check li.ok{color:var(--k)} .po-check li.ok svg{stroke:var(--ok)}
.po-check li .mini{margin-left:auto}
.po-com textarea{width:100%;font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--ln2);border-radius:var(--r-sm);resize:vertical}
.po-com-b{display:flex;align-items:center;justify-content:space-between;margin:6px 0 12px}
.po-nota{padding:8px 0;border-top:1px solid var(--ln)}
.po-nota p{margin:3px 0 0;font-size:13px}
.po-men{color:var(--in);background:var(--in-soft);padding:0 3px;border-radius:3px}
.po-docs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.po-docs li{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--ln);border-radius:var(--r-sm);font-size:12.5px}
.po-docs li span:nth-child(2){flex:1}
.po-chat{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--w2);border-radius:var(--r)}
/* la celebración al firmar */
.celebra{position:fixed;inset:0;z-index:2000;pointer-events:none;overflow:hidden}
.celebra-t{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:18px 28px;background:var(--k);color:var(--w);border-radius:var(--r-lg);box-shadow:0 20px 50px rgba(0,0,0,.25);animation:celT 2.6s ease forwards}
.celebra-t b{font-size:22px;font-weight:800;color:var(--o)}
.celebra-t span{font-size:13px;opacity:.85}
.celebra i{position:absolute;top:-12px;width:8px;height:12px;border-radius:2px;animation:celC 2.2s cubic-bezier(.2,.6,.4,1) forwards}
@keyframes celC{to{transform:translate(var(--dx),105vh) rotate(540deg);opacity:.9}}
@keyframes celT{0%{opacity:0;transform:translate(-50%,-40%) scale(.9)}12%{opacity:1;transform:translate(-50%,-50%) scale(1)}80%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){ .celebra i{display:none} .celebra-t{animation:none} }
.pp-k{flex-direction:column;align-items:flex-start;gap:1px}
.pp-k .ml{white-space:nowrap}
.pp-kv{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.pp-kv svg{width:40px;height:14px}
.pp-kpi{gap:6px 22px;padding:6px 12px}
.kb.kb2{gap:6px}
.oc-pie{white-space:nowrap;overflow:hidden}
.oc-pie .mini{overflow:hidden;text-overflow:ellipsis}
.oc2 .oc-dir{overflow-wrap:anywhere}
.op-f.tarde b{color:var(--no)} .op-f.fin-ok b{color:var(--ok)} .op-f.fin-no b{color:var(--k4)}
/* las etiquetas sobre la foto: fondo opaco para que se lean sobre cualquier foto */
.xp-tags .bdg{background:rgba(255,255,255,.96);border:1px solid rgba(0,0,0,.08);font-weight:700}
.xp-tags .bdg.morado{color:#6B3FA8} .xp-tags .bdg.azul{color:#1F5E9E} .xp-tags .bdg.verde{color:#16683F}
.xp-tags .bdg.ambar{color:#9A5B05} .xp-tags .bdg.gris{color:var(--k2)}
/* ---- Cartera: de quién son los pisos y el periodo, dentro de la pestaña ---- */
.cart-barra{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 12px;padding:8px 12px;
  background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.cart-alc button{display:inline-flex;align-items:center;gap:6px}
.cart-alc-t{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.cart-barra #periodo{margin-left:auto}
.tile-vs{font-size:10px;color:var(--k4);margin-top:-2px}
/* ofertas: la cuenta atrás de las 48 h y los botones en la fila */
.lr-fila.of-fila{cursor:pointer;grid-template-columns:minmax(170px,1.1fr) 130px minmax(160px,1.1fr) minmax(250px,1.3fr)}
.of-fin{flex-wrap:wrap;gap:6px}
.of-cuenta{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;font-size:12px;font-weight:700;
  background:var(--o-soft);color:var(--o-ink)}
.of-cuenta.pronto{background:var(--no-soft);color:var(--no)}
.of-cuenta.tarde{background:var(--no);color:#fff}
.of-bot{display:inline-flex;gap:5px}
/* panel de la exclusiva: el cuadro de mando del piso */
.pe-cab{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.pe-num{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:10px 0 4px}
.pe-num span{display:flex;flex-direction:column;align-items:center;padding:7px 2px;background:var(--w2);border-radius:var(--r-sm);font-size:10.5px;color:var(--k3)}
.pe-num b{font-size:16px;color:var(--k)}
.pe-graf svg{width:100%;height:auto}
.pe-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.pe-l button{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:1px solid var(--ln);border-radius:var(--r-sm);
  background:var(--w);font:inherit;text-align:left;cursor:pointer}
.pe-l button:hover{border-color:var(--o-line);background:var(--w2)}
.pe-l button > span:first-child{flex:1;min-width:0;display:flex;flex-direction:column}
.pe-l b{font-size:13px}
.pe-health{margin-top:14px;border-top:1px solid var(--ln);padding-top:8px}
.pe-health summary{cursor:pointer;margin-bottom:6px}
/* «el calendario al ampliarse tendría que hacerse más grande, y por defecto
   también verse más grande» (Lluc) */
.gcal-cuerpo{height:max(680px,calc(100vh - 300px))}
.pantalla-total .gcal-cuerpo{height:calc(100vh - 170px)}
.pantalla-total .gcal{grid-template-columns:190px 1fr}
.gev-t{font-size:12px}
/* el piso por el que pregunta, detectado, encima de las respuestas rápidas */
.ch-det{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:var(--r-sm);background:var(--o-soft);border:1px solid var(--o-line)}
.ch-det img{width:46px;height:34px;object-fit:cover;border-radius:4px;flex:none}
.ch-det-t{display:flex;flex-direction:column;min-width:0}
.ch-det-t b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-det-t .ml{font-size:9.5px;color:var(--o-ink)}

/* ===== PEDIDOS: una barra, cabecera fija, grupos y acciones en la fila ===== */
.pd-top{margin-bottom:6px}
.pd-tabs{margin:0 0 8px}
.pd-tabs button{font-size:14px;padding:9px 16px}
.kpi-tira{display:flex;align-items:stretch;gap:6px;margin:0 0 8px;overflow-x:auto}
.kpi-tira .tile-fino{flex:1 1 0;min-width:120px;padding:7px 10px}
.kpi-tira .tile-fino .tile-v{font-size:17px}
.kpi-tira .tile-fino .tile-nota{display:none}
.kpi-tira .tile-fino .tile-spark{display:none}
.kpi-tira > .icb{align-self:center;flex:none}
.pd-barra{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 10px;margin:0 0 8px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.pd-barra .ped-q{margin:0;flex:1 1 280px}
.pd-f{display:inline-flex}
.pd-f.puesto .dd-btn{border-color:var(--k);font-weight:600}
.pd-mas{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 10px;margin:-2px 0 8px;background:var(--w2);border:1px dashed var(--ln2);border-radius:var(--r)}
/* cabecera fija: la tabla tiene su propio scroll */
.tw-ped{max-height:calc(100vh - 230px);overflow:auto}
.tw-ped thead th{position:sticky;top:0;z-index:3;background:var(--w)}
.pd-grp td{background:var(--w2);padding:8px 12px;font-size:12.5px;border-top:1px solid var(--ln)}
.pd-grp .mini{margin-left:8px}
.tw-ped .fila-acc{opacity:0;transition:opacity .12s;display:flex;gap:5px;white-space:nowrap}
.tw-ped tr:hover .fila-acc,.tw-ped tr:focus-within .fila-acc{opacity:1}
@media (hover:none){ .tw-ped .fila-acc{opacity:1} }
.pp-pp{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f-bdg{margin-top:3px;font-size:10px}
.ley-score{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;margin:8px 0 0;font-size:12px;color:var(--k3)}
.ley-score > span{display:inline-flex;align-items:center;gap:6px}
.fp-llamar{font-size:14px;padding:9px 16px}
.cx-arriba{display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:12px 16px;border-radius:var(--r);
  background:var(--o-soft);border:1px solid var(--o-line);color:var(--o-ink)}
.cx-arriba > div{flex:1;display:flex;flex-direction:column;gap:2px}
.cx-arriba b{color:var(--k);font-size:14px}
.ia-lee{margin-top:10px;padding-top:9px;border-top:1px dashed var(--ln)}
.ia-lee .ml{display:inline-flex;align-items:center;gap:4px;margin-bottom:4px}
.hist-t{display:block;margin:6px 0 2px}
/* WhatsApp Marketing: paso 1 corto y el botón de enviar al pie de la lista */
.env-mas{margin-top:4px}
.env-mas > summary{list-style:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;margin-bottom:8px}
.env-mas > summary::-webkit-details-marker{display:none}
.env-pie{position:sticky;bottom:0;z-index:4;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 15px;
  background:var(--w);border-top:1px solid var(--ln);box-shadow:0 -6px 16px rgba(0,0,0,.06)}
.env-pie-r{flex:1;display:flex;flex-direction:column;gap:1px;font-size:13.5px}
.env-pie .btn{font-size:14px;padding:9px 18px}

/* ===== IA DOCUMENTOS POR PISO ===== */
.dg-piso{display:grid;grid-template-columns:120px minmax(240px,1fr) minmax(260px,1.3fr);gap:14px;align-items:center;
  padding:12px;margin:0 0 10px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.dg-piso img{width:120px;height:84px;object-fit:cover;border-radius:var(--r-sm)}
.dg-piso-i{display:flex;flex-direction:column;gap:6px;min-width:0}
.dg-piso-i .filtro select{font-weight:700}
.dg-falta{display:flex;flex-direction:column;gap:6px}
.dg-falta-l{display:flex;flex-wrap:wrap;gap:5px}
.dg-falta-l .bdg{cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.dg-aviso{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;margin:0 0 10px;border-radius:var(--r);
  background:var(--no-soft);color:var(--no);border:1px solid color-mix(in srgb,var(--no) 28%,transparent)}
.dg-aviso span{flex:1;min-width:240px;color:var(--k2)}
.dg-aviso b{color:var(--no)}
.plt-c.plt-e{display:flex;flex-direction:column;padding:0;cursor:default;overflow:hidden}
.plt-main{display:flex;align-items:flex-start;gap:11px;padding:12px 13px;border:0;background:none;font:inherit;text-align:left;cursor:pointer;color:inherit;width:100%}
.plt-est{display:flex;align-items:center;gap:6px;padding:7px 10px;border-top:1px solid var(--ln);background:var(--w2)}
.plt-c.e-toca{box-shadow:inset 3px 0 0 var(--no)}
.plt-c.e-firmar{box-shadow:inset 3px 0 0 var(--o)}
.plt-c.e-luego{opacity:.72}
.campo-falta input,.campo-falta textarea{border-color:var(--o);background:var(--o-soft)}
.campo-falta .ml{color:var(--o-ink)}
.inf-relleno{font-weight:700;border-bottom:1px solid currentColor;padding:0 2px}
@media (max-width:900px){ .dg-piso{grid-template-columns:1fr} .dg-piso img{width:100%;height:140px} }
.plt-f .chip{white-space:nowrap}
.ruta-ofi{display:grid;place-items:center;width:40px;height:22px;border-radius:5px;background:#3B2A1A;color:#fff;
  border:2px solid #F28C1E;font:800 9.5px/1 var(--lbl);letter-spacing:.04em;box-shadow:0 2px 6px rgba(0,0,0,.25)}
/* «esto lo haría más pequeño, quizá la mitad» (Gerard): el mapa de Mi zona */
.mapa-real{height:clamp(260px,34vh,380px)}

/* ===== PIPELINE v2, según el boceto de Gerard ===== */
.pp-top{flex-wrap:nowrap}
.pp-q{flex:1 1 220px;min-width:160px;margin:0}
.pp-sel{display:inline-flex}
.pp-sel.puesto .dd-btn{border-color:var(--k);font-weight:600}
.pp-top2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media (max-width:1200px){ .pp-top{flex-wrap:wrap} }
/* las seis cifras, más grandes */
.pp-kpi2{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--ln);border:1px solid var(--ln);border-radius:var(--r);overflow:hidden}
.pp-k2{background:var(--w);padding:9px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.pp-k2 small{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--k4);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp-k2 strong{font-size:21px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.pp-k2 em{font-style:normal;font-size:11.5px;font-weight:700;margin-left:6px}
.pp-k2 em.up{color:var(--ok)} .pp-k2 em.down{color:var(--no)}
@media (max-width:1100px){ .pp-kpi2{grid-template-columns:repeat(3,1fr)} }
/* columnas teñidas con el color de su etapa */
.kb2 .kbcol{background:color-mix(in srgb,var(--et) 9%,var(--w2));border-color:color-mix(in srgb,var(--et) 28%,var(--ln));
  box-shadow:inset 0 3px 0 var(--et)}
.kb2 .kbcol.final{box-shadow:inset 0 3px 0 var(--et),0 0 0 1px color-mix(in srgb,var(--ok) 40%,transparent)}
.kb2 .kbh{background:color-mix(in srgb,var(--et) 14%,var(--w));border-bottom:1px solid color-mix(in srgb,var(--et) 25%,transparent)}
.kb2 .kt{font-size:13px;font-weight:800}
.kb2 .kc{background:var(--w);border-radius:99px;padding:1px 8px;font-size:12px;color:var(--k);margin-left:auto}
.kb2 .ks{display:flex;justify-content:space-between;gap:6px;font-size:11.5px;margin-top:4px;color:var(--k3)}
.kb2 .ks b{color:var(--k);font-weight:700}
.kb-conv{margin-top:6px}
.kb-cb{display:block;height:5px;border-radius:99px;background:color-mix(in srgb,var(--k) 12%,transparent);position:relative}
.kb-cb i{display:block;height:100%;border-radius:99px}
.kb-cb u{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--k);border-radius:2px;text-decoration:none}
.kb-ct{display:flex;justify-content:space-between;margin-top:4px;font-size:10.5px;color:var(--k3)}
.kb-ct b{font-weight:700;color:var(--k2)}
.kbcol.plegada{background:color-mix(in srgb,var(--et) 12%,var(--w))}
/* tarjeta más limpia */
.ocard.oc2{gap:7px;padding:9px 10px 9px 12px;border-radius:10px}
.oc2 .oc-h{display:flex;gap:6px;align-items:flex-start}
.oc2 .oc-dir{flex:1;min-width:0;font-size:12.8px;font-weight:700;line-height:1.25}
.oc-own{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--k2)}
.oc-own b{font-weight:600;color:var(--k)}
.oc-own .bdg{font-size:10px}
.oc-acc2.falta{border-style:dashed}
.oc-pie2{position:relative;min-height:24px;display:flex;align-items:center}
.oc-meta{display:flex;align-items:baseline;gap:7px;font-size:11px;color:var(--k3);width:100%;transition:opacity .12s}
.oc-meta .mono{font-size:12px;color:var(--k)}
.oc-meta .oc-com2{margin-left:auto;background:var(--w3);border-radius:5px;padding:0 5px;font-size:10px;font-weight:700;color:var(--k2)}
.ocard.oc2 .oc-bot{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;opacity:0;pointer-events:none;transition:opacity .12s;margin:0}
.ocard.oc2:hover .oc-bot,.ocard.oc2:focus-within .oc-bot{opacity:1;pointer-events:auto}
.ocard.oc2:hover .oc-meta,.ocard.oc2:focus-within .oc-meta{opacity:0}
.oc2 .oc-b{flex-direction:row;justify-content:center;padding:4px}
@media (hover:none){ .ocard.oc2 .oc-bot{position:static;opacity:1;pointer-events:auto;margin-top:6px} .ocard.oc2 .oc-meta{opacity:1} .oc-pie2{flex-direction:column;align-items:stretch} }
/* previsión del mes */
.pp-prev{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;padding:11px 16px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.pp-pf{display:flex;flex-direction:column}
.pp-pf small,.pp-goal small{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--k4);font-weight:700}
.pp-pf strong{font-size:17px;font-weight:700}
.pp-goal{flex:1;min-width:260px;display:flex;flex-direction:column;gap:4px}
.pp-gb{position:relative;display:block;height:8px;border-radius:99px;background:var(--w3);overflow:hidden}
.pp-gb i{position:absolute;left:0;top:0;bottom:0;border-radius:99px}
.pp-gb i.w{background:color-mix(in srgb,var(--ok) 35%,transparent)}
.pp-gb i.r{background:var(--ok)}
.pp-gl{display:flex;justify-content:space-between;font-size:11px;color:var(--k3)}
.kb.kb2{height:max(440px,calc(100vh - 300px))}
.kb2 .kt-l{white-space:normal;line-height:1.2}
.oc-meta{white-space:nowrap}
.oc2 .oc-acc2{align-items:flex-start;font-size:11.5px;padding:5px 7px}
.oc2 .oc-acc2 span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}
.oc2 .oc-acc2 b{white-space:nowrap}
.pp-top .chip{white-space:nowrap}
.pp-q input::placeholder{text-overflow:ellipsis}
.oc2 .oc-acc2:not(.falta){flex-direction:column;align-items:stretch;gap:1px} .oc2 .oc-acc2:not(.falta) b{font-size:10.5px}
/* vista de hipotecas: solo pedidos */
.hip-cab{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;margin:0 0 10px;border-radius:var(--r);
  background:var(--in-soft);border:1px solid color-mix(in srgb,var(--in) 25%,transparent);color:var(--in)}
.hip-cab > div:nth-child(2){flex:1;min-width:260px;display:flex;flex-direction:column;gap:2px}
.hip-cab b{color:var(--k);font-size:14.5px}
/* oportunidades que entran solas: particulares de portales + Catastro */
.auto-opo{border:1px solid color-mix(in srgb,var(--in) 30%,transparent);border-radius:var(--r);background:var(--in-soft)}
.auto-h{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;border:0;background:none;font:inherit;text-align:left;cursor:pointer;color:var(--in);flex-wrap:wrap}
.auto-h b{color:var(--k);font-size:13.5px}
.auto-l{display:flex;gap:9px;overflow-x:auto;padding:0 12px 12px}
.auto-c{flex:0 0 260px;display:flex;flex-direction:column;gap:5px;padding:10px 12px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r)}
.auto-t{display:flex;align-items:center;justify-content:space-between;gap:6px}
.auto-d{font-size:13px;line-height:1.25}
.auto-n{font-size:12px;color:var(--k2)}
.auto-n b{color:var(--k)}
.auto-cat{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-radius:var(--r-sm);background:var(--w2);font-size:11px}
.auto-cat .ml{display:inline-flex;align-items:center;gap:4px}
.auto-cat .mono{font-size:11px;color:var(--k2)}
.auto-cat .lnk{font-size:11.5px;text-align:left}
.auto-b{display:flex;gap:6px;margin-top:2px}

/* ===== acceso (login) y modo con datos reales ===== */
#acceso{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px 16px;
  background:var(--bg);overflow-y:auto}
.acc-card{width:100%;max-width:372px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r-lg);
  box-shadow:var(--sh-alto);padding:30px 28px 24px;display:flex;flex-direction:column;gap:14px;
  animation:acc-entra .24s var(--ease-out) both}
@keyframes acc-entra{from{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:none}}
.acc-logo{width:176px;height:auto;margin:0 0 6px}
.acc-card h1{font-size:22px;line-height:1.2}
.acc-sub{margin:-8px 0 4px;color:var(--k3);font-size:13px;display:flex;align-items:center;gap:9px}
.acc-f{display:flex;flex-direction:column;gap:5px}
.acc-f span{font-size:12px;font-weight:600;color:var(--k2)}
.acc-f input{font:inherit;font-size:16px;color:var(--k);background:var(--w);border:1px solid var(--ln2);
  border-radius:var(--r-sm);padding:10px 12px;transition:border-color .15s ease, box-shadow .15s ease}
.acc-f input:focus{outline:0;border-color:var(--o);box-shadow:0 0 0 3px var(--o-soft)}
.acc-err{margin:0;font-size:12.5px;color:var(--no);background:var(--no-soft);border-radius:var(--r-sm);padding:8px 10px}
.acc-entrar,.acc-demo{justify-content:center;padding:11px 14px;font-size:14px;border-radius:var(--r-sm)}
.acc-entrar{transition:transform .14s var(--ease-out), opacity .12s ease}
.acc-entrar:active{transform:scale(.97)}
.acc-entrar:disabled{opacity:.6;cursor:progress}
.acc-olvido{align-self:center;font-size:12.5px;color:var(--k3);text-decoration:underline;text-underline-offset:3px}
.acc-olvido:hover{color:var(--k)}
.acc-o{display:flex;align-items:center;gap:10px;color:var(--k4);font-size:11.5px}
.acc-o::before,.acc-o::after{content:"";flex:1;height:1px;background:var(--ln)}
.acc-cargando{align-items:flex-start}
.acc-spin{width:14px;height:14px;border:2px solid var(--o-line);border-top-color:var(--o);border-radius:50%;
  animation:acc-gira .7s linear infinite;flex-shrink:0}
@keyframes acc-gira{to{transform:rotate(360deg)}}
.sesion{flex-shrink:0}
/* en real solo el admin puede mirar con los ojos de otro rol */
.modo-real:not(.real-admin) .demoswitch{display:none}
.modo-real .demoswitch{border-color:var(--ln2);background:var(--w2)}
.modo-real .demoswitch .dl{color:var(--k3)}
.sync.guardando{color:var(--k3)} .sync.guardando i{background:var(--o)}
.sync.error{color:var(--no)} .sync.error i{background:var(--no)}
.pp-txt{font-size:12.5px}
.modo-real .pp-kpi2{grid-template-columns:repeat(4,1fr)}
.sync.offline{color:var(--o-ink)} .sync.offline i{background:var(--o)}

/* ===== Pedidos: feedback de Lucas (15 oct) ===== */
/* aire entre la barra de arriba y los botones de la página */
.pd-top{margin-top:14px}
/* «Más filtros» entra suave, sin salto */
.pd-mas{animation:pdmas-entra .2s var(--ease-out) both}
.pd-mas-f{flex-basis:100%}
@keyframes pdmas-entra{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pd-mas-f .filtros{margin:0;padding:0;border:0;background:none}
.pd-mas-f .filtro-busca,.pd-mas-f .filtro-mas{display:none}
/* la tabla mide lo que suman sus columnas y se desplaza hacia los lados */
.tw-ped table{width:100%}
.tw-ped .acc-col{width:230px;min-width:230px}
/* copiar el teléfono */
.tel-copia{display:inline-grid;place-items:center;width:20px;height:20px;margin-left:4px;vertical-align:middle;
  border-radius:5px;color:var(--k4);transition:background-color .12s ease,color .12s ease,transform .12s var(--ease-out)}
.tel-copia:active{transform:scale(.92)}
@media (hover:hover) and (pointer:fine){ .tel-copia:hover{background:var(--w3);color:var(--k)} }
.tel-copia.ok{color:var(--ok)}
.pd-mas-f .filtro.compacto > .ml{display:none}
/* recordatorios de visita por mandar */
.vis-rec{margin:0 0 12px;border-color:var(--o-line)}
.vis-rec-f{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid var(--ln)}
.vis-rec-f:first-child{border-top:0}

/* ===== Mesa de hipotecas (boceto de Gerard, 16 oct) ===== */
.hp-panel{display:flex;flex-wrap:wrap;gap:1px;background:var(--ln);border:1px solid var(--ln);border-radius:var(--r);overflow:hidden;margin:14px 0 12px}
.hp-k{flex:1 1 170px;display:flex;align-items:center;gap:10px;background:var(--w);padding:10px 12px;min-width:0}
.hp-k-ancho{flex:2 1 300px}
.hp-k small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--k4)}
.hp-k b{display:block;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:20px;line-height:1.2}
.hp-k b em{font-style:normal;font-size:12px;color:var(--k4);font-weight:500}
.hp-k span{font-size:11.5px;color:var(--k3)}
.hp-ring{flex-shrink:0}
.hp-sem{display:flex;align-items:flex-end;gap:4px;height:34px;margin-left:auto;position:relative;padding-bottom:12px}
.hp-sem-d{display:flex;flex-direction:column;align-items:center;gap:2px;width:9px}
.hp-sem-d i{width:9px;border-radius:2px;background:var(--ln2)}
.hp-sem-d i.ok{background:var(--ok)} .hp-sem-d i.hoy{background:var(--o)}
.hp-sem-d em{position:absolute;bottom:0;font-style:normal;font-size:8.5px;color:var(--k4)}
.hp-sem u{position:absolute;left:0;right:0;bottom:34.6px;border-top:1px dashed var(--k4);opacity:.5}
.hp-reparto{display:flex;height:8px;border-radius:4px;overflow:hidden;margin:6px 0 5px;background:var(--w3)}
.hp-leyenda{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--k3)}
.hp-leyenda i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:middle}
.hp-barra{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.hp-q{display:flex;align-items:center;gap:6px;background:var(--w);border:1px solid var(--ln2);border-radius:var(--r-sm);padding:6px 10px;min-width:240px}
.hp-q input{border:0;outline:0;background:none;font:inherit;font-size:13px;width:100%}
.hp-filtros{display:flex;flex-wrap:wrap;gap:6px}
.hp-ord{display:flex;align-items:center;gap:6px}
.hp-ord select{font:inherit;font-size:12.5px;border:1px solid var(--ln2);border-radius:var(--r-sm);padding:5px 8px;background:var(--w)}
.hp-tabla table{min-width:980px}
.hp-tabla td{vertical-align:middle}
.hp-grp td{background:var(--w2);font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--k3)}
.hp-dir{font-weight:600}
.hp-paga{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:20px;background:var(--w3);color:var(--k3);white-space:nowrap}
.hp-paga.p-hipoteca{background:var(--in-soft);color:var(--in)}
.hp-paga.p-vende{background:var(--o-soft);color:var(--o-ink)}
.hp-paga.p-contado{background:var(--ok-soft);color:var(--ok)}
.hp-intentos{display:inline-flex;gap:3px}
.hp-intentos i{width:7px;height:7px;border-radius:50%;background:var(--ln2)}
.hp-intentos i.on{background:var(--k3)}
.hp-cuando{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:20px;white-space:nowrap}
.hp-cuando.c-vencida{background:var(--no-soft);color:var(--no)}
.hp-cuando.c-hoy{background:var(--o-soft);color:var(--o-ink)}
.hp-cuando.c-nuevo{background:var(--in-soft);color:var(--in)}
.hp-cuando.c-luego,.hp-cuando.c-hecho{background:var(--w3);color:var(--k3)}
.hp-acc{text-align:right;width:110px}
.hp-verde{color:var(--ok)}
/* la ficha */
.hp-ficha{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start}
.hp-cola{position:sticky;top:8px;max-height:calc(100vh - 150px);overflow:auto;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);padding:6px}
.hp-cola-h{display:flex;align-items:center;gap:6px;padding:6px 8px;font-size:12.5px}
.hp-cola-i{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:8px;border-radius:var(--r-sm);border:1px solid transparent}
.hp-cola-i:hover{background:var(--w2)} .hp-cola-i.on{background:var(--o-soft);border-color:var(--o-line)}
.hp-cola-i .mini{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.hp-cola-p{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.hp-lead{display:flex;flex-direction:column;gap:12px;min-width:0}
.hp-top{display:flex;align-items:center;justify-content:space-between}
.hp-cab{display:flex;align-items:center;gap:14px;background:var(--k);color:var(--w);border-radius:var(--r-lg);padding:16px 18px;transition:box-shadow .2s var(--ease-out)}
.hp-cab.llamando{box-shadow:0 0 0 3px var(--o)}
.hp-av{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--o);color:var(--k);font-weight:800;flex-shrink:0}
.hp-id{flex:1;min-width:0}
.hp-id h2{font-size:21px;color:var(--w)}
.hp-chips{display:flex;flex-wrap:wrap;gap:5px;margin:5px 0}
.hp-chip{font-size:11.5px;padding:2px 8px;border-radius:20px;background:rgba(255,255,255,.12);color:var(--w)}
.hp-chip.aviso{background:rgba(252,166,41,.25)}
.hp-tel{font-size:24px;font-weight:600;letter-spacing:.02em}
.hp-tel .tel-copia{color:var(--w)}
.hp-llamar{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.hp-btn-llamar,.hp-colgar{justify-content:center;font-size:16px;padding:13px 26px;border-radius:var(--r);transition:transform .14s var(--ease-out),opacity .12s ease}
.hp-btn-llamar:active,.hp-colgar:active{transform:scale(.97)}
.hp-colgar{background:var(--no);color:#fff}
.hp-llamar .btn.ghost{color:var(--w);border-color:rgba(255,255,255,.3);justify-content:center}
.hp-crono{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--o)}
.hp-crono i{width:8px;height:8px;border-radius:50%;background:var(--no);animation:hp-late 1.2s ease-in-out infinite}
@keyframes hp-late{50%{opacity:.3}}
.hp-crono span{font-family:"IBM Plex Mono",monospace;color:var(--w)}
.hp-piso{padding:12px 14px}
.hp-piso-f{display:flex;align-items:center;gap:12px}
.hp-piso-f > div:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}
.hp-piso-p{display:flex;flex-direction:column;align-items:flex-end}
.hp-piso-p b.mono{font-size:18px}
.hp-frase{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;background:var(--w2);border-radius:var(--r-sm);font-size:13.5px}
.hp-frase q{flex:1;quotes:"«" "»"}
.hp-dos{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:12px;align-items:start}
.hp-preg .card-b{display:flex;flex-direction:column;gap:12px}
.hp-lab{display:block;font-size:12px;font-weight:600;color:var(--k2);margin-bottom:5px}
.hp-ops{display:flex;flex-wrap:wrap;gap:5px}
.hp-op{font-size:12.5px;padding:6px 11px;border-radius:20px;border:1px solid var(--ln2);background:var(--w);transition:background-color .12s ease,border-color .12s ease,transform .12s var(--ease-out)}
.hp-op:active{transform:scale(.97)}
.hp-op.on{background:var(--k);color:var(--w);border-color:var(--k)}
.hp-num{display:flex;flex-direction:column;gap:5px}
.hp-in{display:flex;align-items:center;border:1px solid var(--ln2);border-radius:var(--r-sm);background:var(--w);padding:0 10px;max-width:260px}
.hp-in input{border:0;outline:0;background:none;font:inherit;font-size:16px;padding:8px 0;width:100%;font-family:"IBM Plex Mono",monospace}
.hp-in em{font-style:normal;color:var(--k4);font-size:12.5px}
.hp-in:focus-within{border-color:var(--o);box-shadow:0 0 0 3px var(--o-soft)}
.hp-g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hp-viab{padding:14px;display:flex;flex-direction:column;gap:10px;position:sticky;top:8px}
.hp-sem{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-sm);background:var(--w2)}
.hp-sem i{width:14px;height:14px;border-radius:50%;background:var(--ln2);flex-shrink:0}
.hp-sem b{display:block;font-size:15px} .hp-sem span{font-size:12px;color:var(--k3)}
.hp-sem.s-ok{background:var(--ok-soft)} .hp-sem.s-ok i{background:var(--ok)}
.hp-sem.s-medio{background:var(--o-soft)} .hp-sem.s-medio i{background:var(--o)}
.hp-sem.s-mal{background:var(--no-soft)} .hp-sem.s-mal i{background:var(--no)}
.hp-cifras{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hp-cifras small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--k4)}
.hp-cifras b{font-size:20px} .hp-cifras em{font-style:normal;font-size:12px;color:var(--k4)}
.hp-bar-t{display:flex;justify-content:space-between;font-size:12px;color:var(--k3);margin-bottom:4px}
.hp-bar-tr{position:relative;height:8px;border-radius:4px;background:var(--w3);overflow:visible}
.hp-bar-tr i{display:block;height:100%;border-radius:4px;transition:width .25s var(--ease-out)}
.hp-bar-tr u{position:absolute;top:-3px;bottom:-3px;border-left:2px solid var(--k);opacity:.55}
.hp-consejo{margin:0;font-size:13px;padding:8px 10px;border-left:3px solid var(--o);background:var(--w2);border-radius:0 var(--r-sm) var(--r-sm) 0}
.hp-sup{margin:0;font-size:11px;color:var(--k4)}
.hp-pie{position:sticky;bottom:0;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);padding:10px;box-shadow:var(--sh-alto);display:flex;flex-direction:column;gap:10px;z-index:4}
.hp-res{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.hp-res-b{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 6px;border-radius:var(--r-sm);border:1px solid var(--ln2);font-size:12.5px;font-weight:600;transition:transform .12s var(--ease-out),background-color .12s ease}
.hp-res-b:active{transform:scale(.97)}
.hp-res-b.on.c-verde{background:var(--ok);color:#fff;border-color:var(--ok)}
.hp-res-b.on.c-ambar{background:var(--o);color:var(--k);border-color:var(--o)}
.hp-res-b.on.c-azul{background:var(--in);color:#fff;border-color:var(--in)}
.hp-res-b.on.c-gris{background:var(--k3);color:#fff;border-color:var(--k3)}
.hp-res-b.on.c-rojo{background:var(--no);color:#fff;border-color:var(--no)}
.hp-sig{display:flex;flex-wrap:wrap;align-items:center;gap:8px;animation:pdmas-entra .18s var(--ease-out) both}
.hp-sig .hp-lab{margin:0}
.hp-nota{flex:1;min-width:200px;font:inherit;font-size:14px;border:1px solid var(--ln2);border-radius:var(--r-sm);padding:8px 10px}
.hp-pie-ayuda{margin:0;text-align:center}
.hp-resumen{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:10px 0;padding:9px 12px;background:var(--in-soft);border-radius:var(--r-sm);font-size:12.5px;color:var(--k)}
.hp-sem-mini{font-weight:600} .hp-sem-mini.s-ok{color:var(--ok)} .hp-sem-mini.s-medio{color:var(--o-ink)} .hp-sem-mini.s-mal{color:var(--no)}
@media (max-width:1100px){ .hp-ficha{grid-template-columns:1fr} .hp-cola{display:none} .hp-dos{grid-template-columns:1fr} .hp-viab{position:static} }
@media (max-width:700px){ .hp-res{grid-template-columns:repeat(3,minmax(0,1fr))} .hp-cab{flex-wrap:wrap} .hp-tel{font-size:20px} .hp-g2{grid-template-columns:1fr} }
.hp-k-llam{flex:1.6 1 250px}
.hp-k small{white-space:nowrap}
.hp-k-llam{flex:2 1 320px}
.inf-centro{text-align:center}
.inf-nota-plt{font-size:11px;color:var(--o-ink);font-style:italic;margin:0 0 10px}

/* ---- feedback Lucas 16 oct ---- */
/* la botonera de Pedidos en el mismo sitio en las tres pestañas */
.pd-top{margin-top:14px;margin-bottom:6px}
/* Por piso: las pestañas en la fila del selector, sin raya propia */
.pp-sel .pp-tabs-fila{margin-bottom:0}
.pp-total{font-variant-numeric:tabular-nums}
.pp-cols{margin-bottom:6px}
/* el círculo del perfil abre la sesión */
.av-menu{position:relative;display:inline-flex}
.av-btn{border:0;padding:0;cursor:pointer;font:inherit;font-size:11px;font-weight:700;
  transition:box-shadow .15s ease-out, transform .1s ease-out}
.av-btn:focus-visible{outline:2px solid var(--o);outline-offset:2px}
.av-btn[aria-expanded="true"]{box-shadow:0 0 0 3px var(--o)}
.av-btn:active{transform:scale(.94)}
.av-pop{position:fixed;z-index:400;min-width:220px;background:var(--w);
  border:1px solid var(--ln);border-radius:var(--r);box-shadow:var(--sh-alto);padding:6px;
  transform-origin:top right;animation:avPop .14s cubic-bezier(.2,.8,.2,1)}
.av-pop[hidden]{display:none}
@keyframes avPop{from{opacity:0;transform:scale(.96) translateY(-3px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){ .av-pop{animation:none} }
.av-yo{display:flex;flex-direction:column;gap:1px;padding:7px 9px 9px;border-bottom:1px solid var(--ln2);margin-bottom:5px}
.av-yo b{font-size:13px;color:var(--k)}
.av-yo span{font-size:11.5px;color:var(--k4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av-op{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;font:inherit;font-size:13px;
  color:var(--k);padding:8px 9px;border-radius:calc(var(--r) - 2px);cursor:pointer;text-align:left}
@media (hover:hover) and (pointer:fine){ .av-op:hover{background:var(--w2)} }
/* la tarjeta del anuncio en la ficha del pedido, pequeña de serie */
.fp-anuncios .card-h{align-items:center}
.pa-chico .pa-rej{padding:8px 12px 10px;gap:8px}
.fp-anuncios.pa-chico .pa-rej .pa-piso{flex-direction:row}
.fp-anuncios.pa-chico .pa-rej .pa-foto{width:112px;height:auto;min-height:84px;flex:none}
.pa-chico .pa-tag{font-size:9.5px;left:6px;top:6px}
.pa-chico .pa-d{padding:8px 11px;gap:3px}
.pa-chico .pa-sub{display:none}
.pa-chico .pa-dir b,.pa-chico .pa-meta .mono{font-size:14px}
.pa-chico .pa-acc{padding-top:3px}
.pa-txt{display:flex;align-items:flex-start;gap:10px;padding:10px 14px 12px;color:var(--k2)}
.pa-txt b{display:block;font-size:14px;color:var(--k)}
@media (max-width:700px){ .fp-anuncios.pa-chico .pa-rej .pa-piso{flex-direction:row} .fp-anuncios.pa-chico .pa-rej .pa-foto{width:96px;height:auto} }
.fp-anuncios.pa-chico .pa-rej.n1{max-width:620px}
.fp-anuncios.pa-chico .pa-rej.n1 .pa-tag{display:none}
.fp-anuncios.pa-chico .pa-tag{max-width:calc(100% - 12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-est{display:block;text-align:right;font-size:10.5px;color:var(--k4);margin-top:3px}
.ch-est.leido{color:var(--ok)}
.ch-est.fallido{color:var(--no);font-weight:600}
/* la oportunidad del pipeline de un seguimiento */
.seg-opo{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--ln);background:var(--w);border-radius:999px;
  padding:2px 8px;font:inherit;font-size:11.5px;font-weight:600;color:var(--k2);cursor:pointer}
.seg-opo i{width:7px;height:7px;border-radius:50%}
@media (hover:hover) and (pointer:fine){ .seg-opo:hover{border-color:var(--o)} }

/* ================= INICIO DEL ADMIN (ceo.js) =================
   El boceto de Gerard: el equipo en una pieza oscura arriba, el dinero, las
   decisiones, la actividad, la cartera y lo operativo plegado al final. */
.ceo{display:flex;flex-direction:column;gap:16px;padding-bottom:28px}
.ceo-cab{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;margin-top:14px}
.ceo-cab-t{flex:1;min-width:280px}
.ceo-cab h1{font-size:23px;font-weight:800;letter-spacing:-.01em;margin:0 0 5px;color:var(--k)}
.ceo-cab p{margin:0;font-size:13.5px;line-height:1.5;color:var(--k2);max-width:72ch;text-wrap:pretty}
.ceo-per{display:flex;align-items:center;gap:6px}
.ceo-per-l{font-weight:700;font-size:13px;min-width:150px;text-align:center;color:var(--k)}
.ceo-per .icb[disabled]{opacity:.35;cursor:default}

/* la pieza oscura del equipo */
.ceo-eq{display:grid;grid-template-columns:230px 1fr;gap:14px 18px;background:var(--k);color:#F6EEE2;
  border-radius:var(--r-lg);padding:18px 18px 14px;box-shadow:var(--sh-alto)}
.ceo-eq .ml{color:#CDBBA2}
.ceo-eq-l{display:flex;flex-direction:column;gap:10px;padding-right:6px}
.ceo-eq-r{position:relative;width:104px;height:104px}
.ceo-eq-r > span{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ceo-eq-r b{font-size:30px;line-height:1;color:#fff}
.ceo-eq-r small{font-size:10.5px;color:#CDBBA2;margin-top:3px}
.ceo-eq-l p{margin:0;font-size:12.5px;line-height:1.5;color:#E7DACA}
.ceo-eq-l p b{color:#fff}
.ceo-eq-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ceo-m{display:flex;flex-direction:column;gap:6px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);
  border-radius:var(--r);padding:11px 12px}
.ceo-m-l{font-family:var(--lbl);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#CDBBA2}
.ceo-m-v b{font-size:22px;color:#fff;font-variant-numeric:tabular-nums}
.ceo-m-v small{font-size:11.5px;color:#CDBBA2}
.ceo-bar{position:relative;display:block;height:6px;border-radius:99px;background:rgba(255,255,255,.12);overflow:visible}
.ceo-bar > i{display:block;height:100%;border-radius:inherit;background:var(--o);transition:width .4s var(--ease-out)}
.ceo-bar > u{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:#fff;border-radius:1px}
.ceo-m.sem-verde .ceo-bar > i{background:#4FB58A}
.ceo-m.sem-rojo .ceo-bar > i{background:#E2674D}
.ceo-m.sem-gris .ceo-bar > i{background:rgba(255,255,255,.3)}
.ceo-m-p{display:flex;justify-content:space-between;font-size:11.5px;color:#E7DACA}
.ceo-d.up{color:#7BD3A8}.ceo-d.down{color:#F09A86}
.ceo-rep{display:flex;height:4px;gap:1px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.08)}
.ceo-rep i{display:block;min-width:2px}
.ceo-ley{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11px;color:#CDBBA2;align-items:center}
.ceo-ley span{display:inline-flex;align-items:center;gap:5px}
.ceo-ley i{width:8px;height:8px;border-radius:50%;display:inline-block}
.ceo-cart-lado .ceo-ley{color:var(--k3)}

/* chips de estado, en claro y en oscuro */
.ceo-chip{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;font-size:11.5px;font-weight:600;
  padding:3px 9px;border-radius:99px;background:var(--w3);color:var(--k2);white-space:nowrap}
.ceo-chip.sem-verde{background:var(--ok-soft);color:var(--ok)}
.ceo-chip.sem-ambar{background:var(--o-soft);color:var(--o-ink)}
.ceo-chip.sem-rojo{background:var(--no-soft);color:var(--no)}
.ceo-chip.sem-azul{background:var(--in-soft);color:var(--in)}
.ceo-eq .ceo-chip.sem-ambar{background:rgba(252,166,41,.18);color:#FFC874}
.ceo-eq .ceo-chip.sem-verde{background:rgba(79,181,138,.18);color:#8FE0B8}
.ceo-eq .ceo-chip.sem-rojo{background:rgba(226,103,77,.2);color:#FFAD9C}
.ceo-eq .ceo-chip.sem-gris{background:rgba(255,255,255,.1);color:#E7DACA}

/* secciones */
.ceo-sec{display:flex;flex-direction:column;gap:10px}
.ceo-card{background:var(--w);border:1px solid var(--ln);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--sh)}
.ceo-sec-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ceo-sec-h h2{font-family:var(--lbl);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0;color:var(--k2)}
.ceo-sec-h .spacer{flex:1}
.ceo-pie{margin:2px 0 0}

/* el dinero */
.ceo-din-g{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.ceo-din{display:flex;flex-direction:column;gap:5px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);padding:12px 13px;box-shadow:var(--sh)}
.ceo-din-v{font-size:22px;color:var(--k);font-variant-numeric:tabular-nums;line-height:1.15}
.ceo-kvs{display:flex;flex-direction:column;gap:3px;margin-top:2px}
.ceo-kv{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--k3)}
.ceo-kv i{width:7px;height:7px;border-radius:50%}
.ceo-din .lnk{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;margin-top:auto}
.ceo-kv b{margin-left:auto;color:var(--k);font-size:12px}

/* decisiones */
.ceo-dec-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.ceo-dec{display:flex;flex-direction:column;gap:7px;background:var(--w);border:1px solid var(--ln);border-radius:var(--r);
  padding:13px 14px;box-shadow:var(--sh);transition:opacity .25s var(--ease-out)}
.ceo-dec.hecha{opacity:.55}
.ceo-dec-h{display:flex;justify-content:space-between;gap:8px}
.ceo-dec-h .ml{color:var(--no)}
.ceo-dec h3{margin:0;font-size:15px;line-height:1.3;color:var(--k);text-wrap:balance}
.ceo-dec p{margin:0;font-size:12.5px;line-height:1.45;color:var(--k2);flex:1}
.ceo-dec-b{display:flex;gap:6px;flex-wrap:wrap}
.ceo-dec-ok{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ok);flex-wrap:wrap}

/* actividad */
.ceo-frases{display:flex;flex-wrap:wrap;gap:6px}
.ceo-ac{width:100%;border-collapse:collapse;font-size:12.5px}
.ceo-ac th{text-align:left;font-family:var(--lbl);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--k4);padding:6px 8px;border-bottom:1px solid var(--ln);white-space:nowrap}
.ceo-ac td{padding:7px 8px;border-bottom:1px solid var(--ln);vertical-align:middle}
.ceo-ac-f[data-ceocom]{cursor:pointer;transition:background .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .ceo-ac-f[data-ceocom]:hover{background:var(--w2)} }
.ceo-ac-f[data-ceocom]:focus-visible{outline:2px solid var(--o);outline-offset:-2px}
.ceo-ac-f.eq{background:var(--w2)}
.ceo-ac-f.abierto{background:var(--o-soft)}
.ceo-ac-n{display:flex;align-items:center;gap:8px;white-space:nowrap}
.ceo-ac-n .avatar{width:26px;height:26px;font-size:9.5px;flex:none}
.ceo-ac-x{display:inline-flex;color:var(--k4);transition:transform .2s var(--ease-out)}
.ceo-ac-f.abierto .ceo-ac-x{transform:rotate(180deg)}
.ceo-ac-c{white-space:nowrap}
.ceo-ac-c > .ring{display:inline-grid;vertical-align:middle;margin-right:6px}
.ceo-ac-c > span{display:inline-flex;flex-direction:column;vertical-align:middle;line-height:1.15}
.ceo-ac-c small{font-size:10.5px;color:var(--k4)}
.ceo-ac-det td{background:var(--w2);padding:12px 14px}
.ceo-det{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}
.ceo-bars{position:relative;display:flex;align-items:flex-end;gap:4px;height:120px;margin-top:8px}
.ceo-bars-c{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:3px}
.ceo-bars-c i{display:block;width:100%;max-width:26px;border-radius:4px 4px 1px 1px;background:var(--o);min-height:2px}
.ceo-bars-c i.ok{background:var(--ok)}
.ceo-bars-c em{font-style:normal;font-size:10px;color:var(--k4);height:13px}
.ceo-bars > u{position:absolute;left:0;right:0;border-top:1.5px dashed var(--k3)}
.ceo-emb{width:100%;border-collapse:collapse;margin:6px 0 8px;font-size:12.5px}
.ceo-emb td{padding:4px 0;border-bottom:1px solid var(--ln)}
.ceo-emb td.mal{color:var(--no);font-weight:700}
.ceo-det-f{margin:0 0 8px;font-size:12.5px;color:var(--k2)}

/* cartera */
.ceo-cart-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ceo-cart-bar .spacer{flex:1}
.ceo-cart{display:grid;grid-template-columns:1fr 250px;gap:16px}
.ceo-cart-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ceo-cart-col{background:var(--w2);border-radius:var(--r);padding:9px;display:flex;flex-direction:column;gap:8px}
.ceo-cart-h{display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:12.5px}
.ceo-cart-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px}
.ceo-pz{display:flex;flex-direction:column;gap:2px;text-align:left;font:inherit;border:1px solid transparent;border-radius:var(--r-sm);
  padding:7px 8px;cursor:pointer;background:var(--w);transition:opacity .2s var(--ease-out), transform .12s var(--ease-out), box-shadow .15s}
.ceo-pz:active{transform:scale(.97)}
.ceo-pz b{font-size:13px;color:var(--k)}
.ceo-pz-d{font-size:11.5px;color:var(--k2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ceo-pz-p{display:flex;justify-content:space-between;font-size:10.5px;color:var(--k4);font-weight:600}
.ceo-pz-c.rojo{background:var(--no);color:#fff;border-radius:4px;padding:0 4px}
.ceo-pz.sal-verde{background:var(--ok-soft)}
.ceo-pz.sal-ambar{background:var(--o-soft)}
.ceo-pz.sal-rojo{background:var(--no-soft)}
.ceo-pz.apagado{opacity:.3}
.ceo-pz.sel{border-color:var(--k);box-shadow:var(--sh)}
.ceo-pz:focus-visible{outline:2px solid var(--o);outline-offset:1px}
.ceo-cart-res{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;margin-top:10px;border:1px solid var(--ln);border-radius:var(--r);padding:10px 12px}
.ceo-cart-res > div{display:flex;flex-direction:column;flex-basis:100%}
.ceo-cart-res.vacio{flex-direction:column;align-items:flex-start;gap:2px}
.ceo-cart-res .ceo-kv{flex-direction:column;align-items:flex-start;gap:0}
.ceo-cart-res .ceo-kv b{margin:0;font-size:13px}
.ceo-cart-lado{display:flex;flex-direction:column;gap:16px}
.ceo-cart-lado > div{display:flex;flex-direction:column;gap:7px}
.ceo-stack{display:flex;height:9px;border-radius:99px;overflow:hidden;gap:1px;background:var(--w3)}
.ceo-stack i{display:block}
.ceo-hist{display:flex;align-items:flex-end;gap:6px;height:96px}
.ceo-hist-c{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;font-size:11px}
.ceo-hist-c i{display:block;width:100%;border-radius:4px 4px 1px 1px;min-height:2px}
.ceo-hist-c em{font-style:normal;font-size:9.5px;color:var(--k4);white-space:nowrap}
.ceo-pc{display:grid;grid-template-columns:30px 1fr 20px;align-items:center;gap:6px;font-size:11.5px}

/* fuga y líneas */
.ceo-2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}
.ceo-fun{display:flex;align-items:stretch;gap:4px;overflow-x:auto;padding-bottom:4px}
.ceo-fun-n{display:flex;flex-direction:column;gap:3px;min-width:74px;flex:1}
.ceo-fun-n b{font-size:18px;color:var(--k)}
.ceo-fun-b{display:flex;align-items:flex-end;height:54px;background:var(--w2);border-radius:6px;overflow:hidden}
.ceo-fun-b i{display:block;width:100%;background:var(--in-soft);border-top:2px solid var(--in)}
.ceo-fun-p{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:52px;color:var(--k3)}
.ceo-fun-p.ok b{color:var(--ok)}
.ceo-fun-p.peor{background:var(--no-soft);border-radius:var(--r-sm);color:var(--no)}
.ceo-fun-p.peor b{color:var(--no)}
.ceo-fun-t{margin:0;font-size:12.5px;color:var(--k2)}
.ceo-lineas{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ceo-lineas h3{margin:0 0 8px;font-size:13.5px;color:var(--k)}
.ceo-lin{display:grid;grid-template-columns:1fr auto;gap:3px 8px;font-size:12.5px;margin-bottom:9px;color:var(--k2)}
.ceo-lin b{color:var(--k);font-size:12.5px}
.ceo-lin small{color:var(--k4);font-weight:500}
.ceo-bar.fina{grid-column:1 / -1;height:5px;background:var(--w3)}
.ceo-bar.fina.sem-verde > i{background:var(--ok)}
.ceo-bar.fina.sem-rojo > i{background:var(--no)}
.ceo-bar.fina.sem-gris > i{background:var(--ln2)}

/* coste por canal */
.ceo-coste{display:grid;grid-template-columns:minmax(120px,190px) 1fr 70px;gap:8px 12px;align-items:center;font-size:12.5px}
.ceo-coste b{text-align:right;color:var(--k)}
.ceo-bar.ancha{height:9px;background:var(--w3)}

/* lo operativo */
.ceo-oper .ceo-sec-h{align-items:center}
.ceo-oper-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.ceo-oper-i{display:flex;flex-direction:column;gap:2px;border-left:3px solid var(--o);background:var(--w2);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:8px 10px;font-size:12.5px}
.ceo-oper-i.sem-rojo{border-left-color:var(--no)}
.ceo-oper-i .ml{color:var(--no)}

@media (max-width:1180px){
  .ceo-din-g{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ceo-cart{grid-template-columns:1fr}
  .ceo-2{grid-template-columns:1fr}
}
@media (max-width:820px){
  .ceo-eq{grid-template-columns:1fr}
  .ceo-eq-g{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ceo-din-g{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ceo-cart-cols{grid-template-columns:1fr}
  .ceo-det{grid-template-columns:1fr}
  .ceo-lineas{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){ .ceo-bar > i,.ceo-pz,.ceo-dec,.ceo-ac-x{transition:none} }

/* ================= MIS PISOS EN TABLA, LLAMADAS SEGUIDAS, PROPIEDADES (pisos.js) ================= */
.pzt-barra{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0}
.pzt-barra .spacer{flex:1}
.pzt-cols{display:flex;flex-direction:column;gap:8px;border:1px solid var(--ln);background:var(--w);border-radius:var(--r);padding:10px 12px;margin-bottom:10px}
.pzt-cols-l{display:flex;flex-wrap:wrap;gap:6px 14px}
.pzt-w{border:1px solid var(--ln);border-radius:var(--r);background:var(--w);max-height:calc(100vh - 260px);overflow:auto}
.pzt{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;font-size:12.5px}
.pzt th{position:sticky;top:0;z-index:2;background:var(--w2);border-bottom:1px solid var(--ln);padding:0;text-align:left}
.pzt-th{display:flex;align-items:center;gap:4px;width:100%;border:0;background:none;font:inherit;font-family:var(--lbl);font-size:10px;
  font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--k4);padding:8px 9px;cursor:pointer;text-align:left;white-space:nowrap}
.pzt th.ord .pzt-th{color:var(--k)}
@media (hover:hover) and (pointer:fine){ .pzt-th:hover{color:var(--k)} }
.pzt td{padding:6px 9px;border-bottom:1px solid var(--ln);vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pzt .pzt-fija{position:sticky;left:0;z-index:1;background:var(--w);box-shadow:1px 0 0 var(--ln)}
.pzt th.pzt-fija{z-index:3;background:var(--w2)}
.pzt-f{cursor:pointer;transition:background .12s var(--ease-out)}
@media (hover:hover) and (pointer:fine){ .pzt-f:hover td{background:var(--w2)} }
.pzt-f.abierta td{background:var(--o-soft)}
.pzt-piso{display:flex;flex-direction:column;line-height:1.2}
.pzt-piso b{overflow:hidden;text-overflow:ellipsis}
.pzt-nota{display:block;overflow:hidden;text-overflow:ellipsis;color:var(--k2)}
.pzt-sel{font:inherit;font-size:12px;border:1px solid var(--ln);border-radius:var(--r-sm);background:var(--w);padding:3px 6px;max-width:100%}
.pzt-f .pzt-f-x{}
.pzt-cont{display:inline-flex;align-items:center;gap:6px}
.pzt-cont i{width:7px;height:7px;border-radius:50%;background:var(--ln2)}
.pzt-cont.ok i{background:var(--ok)} .pzt-cont.no i{background:var(--no)}
.pzt-como{display:inline-flex;align-items:center;gap:4px;color:var(--k3)}
.pzt-etq{display:inline-flex;gap:4px;overflow:hidden}
.pzt-edif{border:0;background:none;font:inherit;color:var(--k2);padding:0;cursor:pointer;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pzt-edif:hover{color:var(--k)}
span.pzt-f{color:var(--k3)} span.pzt-f.hoy{color:var(--o-ink);font-weight:700} span.pzt-f.tarde{color:var(--no);font-weight:700}
.pzt td.pzt-acc{white-space:nowrap;text-align:right;overflow:visible}
.pzt-acc .btn{margin-left:3px}
.pzt-det td{background:var(--w2);padding:10px 12px;white-space:normal;cursor:default}
.pzt-ficha-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.pzt-mas{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px}

/* llamar seguido */
.pzl{display:flex;flex-direction:column;gap:14px;margin-top:14px}
.pzl-top{display:flex;align-items:center;gap:14px}
.pzl-prog{flex:1;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pzl-bar{flex:1;min-width:120px;height:6px;border-radius:99px;background:var(--w3);overflow:hidden}
.pzl-bar i{display:block;height:100%;background:var(--o);transition:width .3s var(--ease-out)}
.pzl-g{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}
.pzl-quien,.pzl-res{background:var(--w);border:1px solid var(--ln);border-radius:var(--r-lg);padding:18px;display:flex;flex-direction:column;gap:9px;box-shadow:var(--sh)}
.pzl-quien h2{margin:0;font-size:24px;color:var(--k)}
.pzl-tel{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pzl-tel b{font-size:22px;color:var(--k)}
.pzl-llamar{font-size:15px;padding:10px 18px}
.pzl-chips{display:flex;flex-wrap:wrap;gap:5px}
.pzl-edif{display:flex;gap:6px;align-items:flex-start;margin:0;font-size:12.5px;color:var(--k2);background:var(--w2);border-radius:var(--r-sm);padding:8px 10px}
.pzl-h{margin:0;font-size:12.5px;color:var(--k2);display:flex;flex-direction:column;gap:1px;border-left:2px solid var(--ln);padding-left:9px}
.pzl-bot{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pzl-b{display:flex;align-items:center;gap:8px;font:inherit;font-size:13.5px;font-weight:600;border:1px solid var(--ln2);background:var(--w);
  border-radius:var(--r);padding:11px 12px;cursor:pointer;color:var(--k);transition:transform .1s var(--ease-out),background .15s}
.pzl-b:active{transform:scale(.97)}
.pzl-b.on{background:var(--k);color:#fff;border-color:var(--k)}
.pzl-b kbd{font:600 10.5px/1 var(--lbl);border:1px solid var(--ln2);border-radius:4px;padding:2px 5px;color:var(--k4)}
.pzl-b.on kbd{border-color:rgba(255,255,255,.4);color:#fff}
.pzl-res textarea,.pzl-res select{width:100%;font:inherit;font-size:13px;border:1px solid var(--ln2);border-radius:var(--r-sm);padding:8px;background:var(--w)}
.pzl-guardar{align-self:flex-start;font-size:14px;padding:10px 16px}
.pzl-guardar[disabled]{opacity:.45;cursor:default}
.pzl-fin{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:60px 20px;color:var(--ok)}
.pzl-fin h2{margin:0;color:var(--k)} .pzl-fin p{margin:0;color:var(--k2)}
@media (max-width:820px){ .pzl-g{grid-template-columns:1fr} .pzl-bot{grid-template-columns:1fr} }

/* propiedades */
.pr-cab{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0}
.pr-cab .spacer{flex:1}
.pr-expl{margin:4px 0 12px;max-width:80ch}
.pr-t{width:100%;border-collapse:collapse;font-size:12.5px}
.pr-t th{text-align:left;font-family:var(--lbl);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--k4);padding:8px 10px;border-bottom:1px solid var(--ln)}
.pr-t td{padding:8px 10px;border-bottom:1px solid var(--ln);vertical-align:top}
.pr-ops{display:flex;flex-wrap:wrap;gap:4px}
.pr-acc{white-space:nowrap;text-align:right}
.pr-etqs{display:flex;flex-wrap:wrap;gap:6px}
.pr-etq{display:inline-flex;align-items:center;gap:2px}
.pr-tira{display:flex;flex-wrap:wrap;gap:6px}
.pr-val{display:flex;flex-direction:column;align-items:flex-start;gap:1px;border:1px solid var(--ln);background:var(--w);border-radius:var(--r-sm);
  padding:6px 9px;font:inherit;font-size:12.5px;cursor:pointer;text-align:left;max-width:100%}
@media (hover:hover) and (pointer:fine){ .pr-val:hover{border-color:var(--o)} }
.pr-val b{font-weight:600;color:var(--k)}
.pr-ancha{width:100%}
.pr-finca{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.pr-per{display:flex;flex-direction:column;gap:4px;margin-top:6px}

/* comentarios rápidos */
.pc-coms{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.pc-com{border-left:2px solid var(--o);padding-left:9px}
.pc-com p{margin:1px 0 0;font-size:13px;color:var(--k);white-space:pre-wrap}
.pc-coms .btn{align-self:flex-start}
.hp-acc{width:auto;white-space:nowrap}
.hp-acc .btn{margin-left:4px}
.hp-coms{margin-top:12px}
.pzt .lnk{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.pzt-ficha{position:sticky;left:0;width:min(1180px, calc(100vw - var(--rail) - 90px))}
.pantalla-total .pzt-ficha{width:min(1180px, calc(100vw - 90px))}
.btn.hay-com{border-color:var(--o);color:var(--o-ink)}
