:root{--fondo:#f6f5f2;--panel:#fff;--borde:#e3e1db;--texto:#2c2c2a;--muted:#73726c;--acento:#534AB7;--acento-s:#eeedfe;--verde:#3B6D11;--ambar:#854F0B;--rojo:#A32D2D;--radio:8px;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
body{margin:0;background:var(--fondo);color:var(--texto);font-size:14px;display:grid;grid-template-columns:190px 1fr;grid-template-rows:52px 1fr;height:100vh;height:100dvh}
.barra{grid-column:1/3;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--borde)}
.marca{color:var(--acento);font-size:16px}
.espacio{flex:1}
.muted{color:var(--muted)}
.pad{padding:16px}
.menu-btn{display:none;border:0;background:none;font-size:20px;cursor:pointer}
.lateral{background:var(--panel);border-right:1px solid var(--borde);padding:12px 8px;display:flex;flex-direction:column;gap:2px}
.lateral a{padding:9px 12px;border-radius:var(--radio);color:var(--texto);text-decoration:none;display:flex;align-items:center;gap:10px}
.lateral svg{width:20px;height:20px;flex:0 0 20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.lateral a:hover{background:var(--fondo)}
.lateral a.activo{background:var(--acento-s);color:var(--acento);font-weight:500}
.solo-gestor,.solo-super{display:none}
body.es-gestor .solo-gestor{display:revert}
body.es-super .solo-super{display:revert}
body.es-gestor .lateral .solo-gestor,body.es-super .lateral .solo-super{display:flex}
/* Solo lectura: se ocultan las acciones de edición */
body.solo-lectura .redactar,body.solo-lectura #lNuevo,body.solo-lectura #fLead > button,body.solo-lectura #fNota{display:none}
body.solo-lectura .tarjeta{cursor:pointer}
main{overflow:auto;min-height:0}
select,input,textarea,button{font:inherit;color:inherit}
input,select,textarea{border:1px solid var(--borde);border-radius:var(--radio);padding:7px 9px;background:#fff;max-width:100%}
textarea{resize:vertical;width:100%}
.btn{border:1px solid var(--borde);background:#fff;border-radius:var(--radio);padding:7px 12px;cursor:pointer}
.btn:hover{border-color:#b4b2a9}
.btn.primario{background:var(--acento);border-color:var(--acento);color:#fff}
.btn.peligro{color:var(--rojo)}
.btn:disabled{opacity:.5}
.chip{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--c,#888) 14%,#fff);color:color-mix(in srgb,var(--c,#888) 75%,#000);border:1px solid color-mix(in srgb,var(--c,#888) 30%,#fff);white-space:nowrap}
.chip.gris{--c:#888780}.chip.verde{--c:#3B6D11}.chip.ambar{--c:#BA7517}.chip.rojo{--c:#E24B4A}
.chip.negocio{font-weight:500}
.chip.etiqueta{cursor:pointer;opacity:.45}.chip.etiqueta.on{opacity:1;font-weight:500}
.punto{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c)}
.badge{background:var(--acento);color:#fff;border-radius:999px;font-size:11px;padding:1px 7px}
.fila{display:flex;align-items:center;justify-content:space-between;gap:6px}
.fila.chips{justify-content:flex-start;flex-wrap:wrap;margin-top:4px}
.recorte{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* Bandeja */
.bandeja{display:grid;grid-template-columns:300px 1fr 300px;height:100%}
.lista-chats{border-right:1px solid var(--borde);display:flex;flex-direction:column;min-height:0;background:var(--panel)}
.lista-chats .filtros{padding:10px;border-bottom:1px solid var(--borde)}
.lista-chats .filtros input{flex:1}
#chats{overflow:auto}
.chat-item{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--borde);background:none;padding:10px 12px;cursor:pointer}
.chat-item:hover{background:var(--fondo)}.chat-item.activo{background:var(--acento-s)}
.chat{display:flex;flex-direction:column;min-height:0}
.chat-cab{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--borde)}
.chat-cab .muted{margin-left:8px}
.volver{display:none;padding:2px 10px}
.mensajes{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:6px}
.msg{max-width:72%;display:flex;flex-direction:column}
.msg.in{align-self:flex-start}.msg.out{align-self:flex-end;align-items:flex-end}
.burbuja{padding:8px 12px;border-radius:12px;background:var(--panel);border:1px solid var(--borde);white-space:normal;word-wrap:break-word}
.msg.out .burbuja{background:#e1f5ee;border-color:#9fe1cb}
.meta{font-size:11px;color:var(--muted);margin-top:2px}
.rojo-t{color:var(--rojo)}.azul-t{color:#185FA5}
.redactar{display:flex;gap:8px;padding:10px;border-top:1px solid var(--borde);background:var(--panel)}
.redactar .acciones{display:flex;flex-direction:column;gap:6px}
.ficha{border-left:1px solid var(--borde);background:var(--panel);overflow:auto;padding:14px}
.form{display:flex;flex-direction:column;gap:10px}
.form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.form label input,.form label select,.form label textarea{color:var(--texto);font-size:14px}
.form.linea{flex-direction:row;flex-wrap:wrap;align-items:flex-end}
label.check{flex-direction:row!important;align-items:center;gap:6px!important}
.etq{display:flex;flex-wrap:wrap;gap:6px}
.nota{display:flex;gap:6px;margin-top:12px}.nota input{flex:1}
.historial{list-style:none;padding:0;margin:0;font-size:13px}.historial li{padding:6px 0;border-bottom:1px solid var(--borde)}
/* Kanban */
.kanban{display:flex;gap:10px;padding:0 16px 16px;overflow-x:auto;align-items:flex-start;min-height:calc(100% - 70px);-webkit-overflow-scrolling:touch}
.columna{flex:0 0 210px;background:#ecebe6;border-radius:12px;display:flex;flex-direction:column;max-height:calc(100vh - 140px)}
.col-cab{padding:10px 12px;border-top:4px solid var(--c);border-radius:12px 12px 0 0;display:flex;justify-content:space-between}
.col-cuerpo{padding:0 8px 8px;overflow:auto;min-height:60px;display:flex;flex-direction:column;gap:8px}
.tarjeta{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:10px;cursor:grab;display:flex;flex-direction:column;gap:4px}
.tarjeta:hover{border-color:#b4b2a9}
.sortable-ghost{opacity:.4}
/* Tablas y reportes */
.tabla-wrap{overflow:auto}
.tabla{width:100%;border-collapse:collapse;background:var(--panel)}
.tabla th,.tabla td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--borde)}
.tabla th{font-weight:500;color:var(--muted);font-size:12px}
.tabla tr[data-id]{cursor:pointer}.tabla tr[data-id]:hover{background:var(--fondo)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:12px}
.kpi{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:4px}
.kpi b{font-size:24px;font-weight:500}
.rejilla{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}
.tarjeta-rep{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:14px}
.tarjeta-rep h4{margin:0 0 10px}
.barra-fila{display:grid;grid-template-columns:130px 1fr 40px;gap:8px;align-items:center;margin:5px 0}
.barra-pista{background:var(--fondo);border-radius:4px;height:12px}
.barra-relleno{background:var(--c,var(--acento));height:12px;border-radius:4px}
.barra-fila b{font-weight:500;text-align:right}
/* Configuración */
.config section{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:16px;margin-bottom:14px}
.config h3{margin-top:0}
.lista-cfg{list-style:none;padding:0;margin:0 0 10px}
.lista-cfg li{display:flex;gap:8px;align-items:center;padding:6px 0}
.lista-cfg input[type=color]{width:40px;padding:2px;height:34px}
.asa{cursor:grab;color:var(--muted)}
pre{white-space:pre-wrap;word-break:break-all;font-size:12px;background:var(--fondo);padding:8px;border-radius:6px}
code{background:var(--fondo);padding:2px 6px;border-radius:4px}
/* Modal, avisos, menú usuario */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:10}
.modal[hidden]{display:none}
.modal-caja{background:var(--panel);border-radius:12px;padding:20px;width:min(480px,94vw);max-height:90vh;overflow:auto}
.modal-caja h3{margin-top:0}
.modal-caja label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);margin-bottom:8px}
.modal-caja label input,.modal-caja label select{font-size:14px;color:var(--texto)}
.acciones{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.clave{font-family:monospace;font-size:20px;background:var(--fondo);padding:10px;border-radius:8px;text-align:center}
.aviso{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#2c2c2a;color:#fff;padding:10px 18px;border-radius:8px;z-index:20}
.aviso.error{background:var(--rojo)}
.alerta{background:#faeeda;color:#633806;border:1px solid #fac775;padding:10px;border-radius:8px;margin-bottom:10px}
.usuario-menu{position:relative}.usuario-menu summary{cursor:pointer;list-style:none}
.usuario-menu .pop{position:absolute;right:0;top:28px;background:var(--panel);border:1px solid var(--borde);border-radius:8px;display:flex;flex-direction:column;min-width:180px;z-index:5}
.usuario-menu .pop a{padding:10px 12px;color:var(--texto);text-decoration:none}.usuario-menu .pop a:hover{background:var(--fondo)}
/* Login */
body.login{display:flex;align-items:center;justify-content:center;height:100vh}
.login-card{background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:28px;width:min(360px,92vw);display:flex;flex-direction:column;gap:12px}
.login-card h1{margin:0;color:var(--acento)}
.login-card label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.login-card label input{font-size:14px;color:var(--texto)}
/* Agenda, citas y visitas (v1.3) */
body.solo-lectura .solo-edita{display:none}
.agenda{max-width:760px}
.dia{margin-bottom:14px}
.dia h4{margin:0 0 6px;font-weight:500}
.dia-lista{display:flex;flex-direction:column;gap:6px;min-height:38px;padding:4px;border-radius:10px;background:color-mix(in srgb,var(--acento) 4%,transparent)}
.dia-lista .vacio{margin:6px 8px;font-size:12px}
.cita-item{display:flex;align-items:center;gap:10px;text-align:left;background:var(--panel);border:1px solid var(--borde);border-left:4px solid var(--c);border-radius:10px;padding:10px 12px;cursor:pointer;width:100%}
.cita-item .cita-hora{font-variant-numeric:tabular-nums;color:var(--muted);min-width:64px;font-size:13px}
.cita-item strong{flex:1;font-weight:500}
.cita-item.cancelada,.cita-item.no_asistio{opacity:.6}.cita-item.cancelada strong{text-decoration:line-through}
.cita-item.sortable-ghost{opacity:.35}
.modal-cab{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-cab h3{margin:0}
.modal-caja .etq{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.modal-caja h4{margin:12px 0 6px}
.dos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.acciones.envolver{flex-wrap:wrap}
.alerta.ok{background:#eaf3de;color:#27500a;border-color:#c0dd97}
.v-item{display:grid;grid-template-columns:1fr 84px 52px 96px 34px;gap:6px;margin-bottom:6px}
.v-item select,.v-item input{min-width:0;width:100%}
.v-total{display:flex;justify-content:space-between;align-items:center;font-size:16px;margin:12px 0;padding:10px 12px;background:var(--acento-s);border-radius:10px}
.v-total b{font-size:20px;color:var(--acento)}
.pago{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}
.modal-caja label.pago-op{margin:0;display:block}
.pago-op input{position:absolute;opacity:0}
.pago-op span{display:block;text-align:center;padding:10px 4px;border:1px solid var(--borde);border-radius:10px;font-size:13px;color:var(--texto);cursor:pointer}
.pago-op input:checked + span{background:var(--acento);border-color:var(--acento);color:#fff}
.historial li.clic,tr.clic{cursor:pointer}
.btn.mini{padding:0 7px;font-size:12px;line-height:20px;float:right}
.ficha .acciones.envolver{justify-content:flex-start;margin:10px 0}
h3.sec{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 10px}
h3.sec .btn{font-size:12px;font-weight:400}
.barra-fila{grid-template-columns:130px 1fr auto}
/* v1.4: corte de caja, cumpleaños */
.pad-x{padding:0 16px}
.cumples{background:#fdf1f7;border:1px solid #f4c0d1;border-radius:12px;padding:10px 12px;margin-top:4px}
.cumples h4{margin:0 0 6px;font-weight:500}
.cumple{display:flex;justify-content:space-between;gap:8px;padding:6px 0;color:var(--texto);text-decoration:none;border-top:1px solid #f4c0d1}
.cumple:first-of-type{border-top:0}.cumple .hoy{color:#993556;font-weight:500}
.corte{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 12px}
.corte div{background:var(--fondo);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:2px}
.corte span{font-size:12px;color:var(--muted)}.corte b{font-size:18px;font-weight:500}
.corte .tot{background:var(--acento-s)}.corte .tot b{color:var(--acento)}
.verde-t{color:var(--verde)}
.ficha label .dos{display:grid;grid-template-columns:1fr 1.6fr;gap:6px}
#cPer label.check{display:flex;flex-direction:row;align-items:center;gap:4px;color:var(--muted)}
/* Móvil */
@media (max-width:900px){
  :root{--nav:60px}
  body{grid-template-columns:1fr;grid-template-rows:52px 1fr}
  .barra{grid-column:1;gap:8px;padding:0 10px}
  html,body{overflow-x:hidden}
  .barra{min-width:0;overflow:visible}
  .barra #selNegocio{max-width:40vw;min-width:0}
  .barra .marca{flex:0 0 auto}
  #avisosBtn{font-size:11px;padding:4px 7px;white-space:nowrap;flex:0 0 auto}
  .usuario-menu{min-width:0;flex:0 1 auto}
  .usuario-menu summary{max-width:22vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #rolActual{display:none}
  /* Menú inferior tipo app */
  .lateral{position:fixed;left:0;right:0;bottom:0;z-index:8;flex-direction:row;justify-content:space-around;align-items:stretch;
    gap:0;padding:4px 4px calc(4px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--borde);
    height:calc(var(--nav) + env(safe-area-inset-bottom));box-shadow:0 -2px 10px rgba(0,0,0,.05)}
  .lateral a{flex:1 1 0;flex-direction:column;justify-content:center;gap:2px;padding:4px 2px;font-size:10.5px;border-radius:10px;min-width:0}
  .lateral a span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .lateral svg{width:23px;height:23px;flex-basis:23px}
  .lateral a.activo{background:none;color:var(--acento)}
  .lateral a.activo svg{stroke-width:2.3}
  main{padding-bottom:calc(var(--nav) + env(safe-area-inset-bottom))}
  .pad{padding:12px}
  .filtros input,.filtros select{flex:1 1 140px;min-width:0}
  .bandeja{grid-template-columns:1fr;grid-auto-rows:auto;height:auto}
  .con-lead .lista-chats{display:none}
  body:not(.con-lead) .chat,body:not(.con-lead) .ficha{display:none}
  .volver{display:inline-block}
  .chat{height:calc(100dvh - 52px - var(--nav) - env(safe-area-inset-bottom))}
  .chat-cab{padding:8px 10px}
  .chat-cab .muted{display:block;margin-left:0;font-size:12px}
  .msg{max-width:86%}
  .redactar{padding:8px}
  .ficha{border-left:0;border-top:1px solid var(--borde)}
  /* Embudo: columnas angostas para desplazarse menos */
  .kanban{gap:8px;padding:0 10px 10px;scroll-snap-type:x proximity}
  .columna{flex:0 0 168px;max-height:calc(100dvh - 52px - var(--nav) - 70px);scroll-snap-align:start}
  .col-cab{padding:8px 9px;font-size:13px}
  .col-cuerpo{padding:0 6px 6px;gap:6px}
  .tarjeta{padding:8px;font-size:12.5px}
  .tarjeta .chip{font-size:10px;padding:1px 6px}
  .tabla th,.tabla td{padding:7px 8px}
  .rejilla{grid-template-columns:1fr}
  .barra-fila{grid-template-columns:100px 1fr 34px}
  .form.linea{flex-direction:column;align-items:stretch}
  .lista-cfg li{flex-wrap:wrap}
  .aviso{bottom:calc(var(--nav) + 14px)}
}
/* Etiquetas con regla (Configuración) */
.etq-regla{display:flex;gap:8px;flex-wrap:wrap;width:100%;padding-left:48px;font-size:12px;color:var(--muted);align-items:center}
.etq-regla input[type=text]{flex:1 1 220px}
.lista-cfg li.etq-li{flex-wrap:wrap;border-bottom:1px solid var(--borde);padding:8px 0}
@media (max-width:900px){
  .v-item{grid-template-columns:1fr 64px 40px;grid-template-areas:"c c c" "p n q" "a a a";padding:8px;border:1px solid var(--borde);border-radius:10px}
  .v-item .v-cat{grid-area:c}.v-item .v-precio{grid-area:p}.v-item .v-cant{grid-area:n}.v-item .v-per{grid-area:a}.v-item .v-quita{grid-area:q}
  .modal{align-items:flex-end}
  .modal-caja{width:100vw;border-radius:16px 16px 0 0;max-height:92dvh;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
  .barra-fila{grid-template-columns:96px 1fr auto}
  .lateral a{font-size:10px}
}

/* v16 · inmobiliario */
.giro-inmo .no-inmo{display:none!important}
.giro-inmo #cumples{display:none}
.giro-inmo #rep .no-inmo + .no-inmo + .rejilla{display:none}
#lateral a[hidden]{display:none!important}
tr.clic{cursor:pointer}
.tabla tr.clic:hover td{background:rgba(0,0,0,.03)}
.alerta ul{margin:.4em 0 .6em 1.1em;padding:0}

/* v18 · propietario, buscador, fotos */
.dueno{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;white-space:nowrap}
.punto-d{width:11px;height:11px;border-radius:50%;background:var(--c);flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.95),0 0 0 3.5px var(--c)}
body:not(.es-todo) .solo-todo{display:none!important}
.busca-global{position:relative;flex:1 1 220px;max-width:380px;margin:0 10px}
.busca-global input{width:100%}
.g-res{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e3dfe8;border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.14);max-height:70vh;overflow:auto;z-index:60}
.g-item{display:block;padding:8px 12px;color:inherit;text-decoration:none;border-bottom:1px solid #f1eef4;line-height:1.35}
.g-item:hover{background:#f6f2fb}
.g-tit{font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:#888;padding:8px 12px 2px}
.cita-datos{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px;margin:8px 0}
.galeria img{width:100%;height:92px;object-fit:cover;border-radius:8px;display:block}
.galeria .foto{position:relative}
.galeria .foto .btn{position:absolute;top:4px;right:4px}
.datos-prop{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.datos-prop span{background:#f4f1f8;border-radius:8px;padding:4px 10px;font-size:.9rem}
.cuatro{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
@media (max-width:700px){.barra{flex-wrap:wrap}.busca-global{order:9;flex-basis:100%;max-width:none;margin:6px 0 0}.cuatro{grid-template-columns:repeat(2,1fr)}}

/* v20 */
.web-prop{background:#f3f8f5;border:1px solid #d6e9de;border-radius:10px;padding:8px 10px;margin:8px 0}
