*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:Aptos,'Segoe UI Variable','Segoe UI',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;background:var(--bg2);color:var(--fg);min-height:100dvh;font-size:.93rem;line-height:1.5;transition:background .3s,color .3s;letter-spacing:-.012em}
button,a,input,select,textarea,.ai-thread,.conv-item,.ai-starter{touch-action:manipulation}
body,input,textarea,button,select,.card,.btn{transition:background .22s,color .22s,border-color .22s,box-shadow .22s,transform .18s}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[contenteditable]:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition-duration:0s!important}}
input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type="number"]{-moz-appearance:textfield}
::selection{background:var(--acg);color:var(--fg)}

/* ═══ Layout ═══ */
/* Sistema de 3 breakpoints:
   - ≥1024px (desktop): sidebar fijo al costado, hover-expand 76↔264px.
     El .v respeta el ancho del sidebar con padding-left.
   - 769-1023px (tablet): sidebar overlay (transform translateX).
     Cuando está abierto cubre la pantalla — no necesita padding-left.
   - ≤768px (mobile): igual que tablet pero más compacto.
   Chat (asistente y WhatsApp): 1 columna lista/conversación hasta 1023px. */

.app{max-width:none;margin:0;padding:calc(var(--header-h) + var(--safe-t) + 24px) 28px 56px 104px;transition:padding-left .24s cubic-bezier(.2,.8,.2,1)}
/* Cada vista ocupa el 100% del ancho disponible (ya descontado el
   sidebar y los paddings del .app). Sin tope fijo: en desktop el
   contenido se ajusta automáticamente al máximo, pensando en pantallas
   de 1920px (≈1788px de contenido) y superiores. */
.app>.v{width:100%;margin:0}
/* El padding extra solo aplica en desktop, donde el sidebar vive al
   costado. En tablet/mobile el sidebar es overlay (translateX) y no
   afecta el flujo del contenido. */
@media(min-width:1024px){
  body.sidebar-expanded .app{padding-left:292px}
}

/* ═══ Topbar ═══ */
/* ═══ Navigation tabs ═══ */
.tt{background:var(--bg3);border:1px solid var(--bo);color:var(--fg2);width:38px;height:38px;border-radius:var(--rd);cursor:pointer;font-size:1.05rem;display:flex;align-items:center;justify-content:center}
.tt:hover{background:var(--bgh);color:var(--fg);border-color:var(--bo2)}

/* ═══ Views ═══ */
.v{display:none}.v.act{display:block;animation:up .3s ease}
@keyframes up{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ═══ Cards ═══ */
.cd{background:var(--bg);border:1px solid var(--bo);border-radius:var(--rd2);padding:24px 28px;margin-bottom:18px;box-shadow:var(--sh);position:relative}
.ct{font-size:.79rem;font-weight:650;letter-spacing:.01em;color:var(--fg2);margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--bo);display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-wrap:wrap}
.ct>.push-end,.ct>div[style*="margin-left:auto"]{margin-left:auto}
.ct .i{font-size:.9rem}

/* ═══ Buttons — pill-style primary, clean secondary ═══ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 18px;border-radius:var(--rd);font-size:.82rem;font-weight:650;font-family:inherit;cursor:pointer;border:1px solid transparent;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}
.btn:active:not(:disabled){transform:translateY(1px) scale(.99)}
.btn-p{background:var(--ac);color:#fff;border-color:var(--ac);box-shadow:0 1px 3px var(--acg)}
.btn-p:hover{background:var(--ac2);transform:translateY(-1px);box-shadow:0 4px 16px var(--acg)}
.btn-s{background:var(--bg3);color:var(--fg);border-color:var(--bo)}
.btn-s:hover{background:var(--bgh);border-color:var(--bo2);transform:translateY(-1px)}
.btn-d{background:transparent;color:var(--da);border-color:var(--bo)}
.btn-d:hover{background:color-mix(in srgb,var(--da) 10%,transparent);border-color:var(--da)}
.btn-w{background:var(--wa);color:#fff;border-color:var(--wa)}
.btn-w:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 14px rgba(240,160,32,.3)}
.btn-o{background:transparent;color:var(--fg);border-color:var(--bo)}
.btn-o:hover{background:var(--bgh);border-color:var(--bo2)}
.btn-sm{padding:6px 14px;font-size:.76rem}
.btn-xs{padding:4px 10px;font-size:.72rem}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}
.bar{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}

/* ═══ Form fields ═══ */
.fg{margin-bottom:14px}
.fg label{display:block;font-size:.76rem;font-weight:500;color:var(--fg2);margin-bottom:4px;letter-spacing:.01em}
.fg input,.fg select,.fg textarea{width:100%;min-height:42px;padding:9px 13px;background:var(--bg3);border:1px solid var(--bo);border-radius:var(--rd);color:var(--fg);font-size:.86rem;font-family:inherit;line-height:1.4}
.fg textarea{resize:vertical;min-height:52px}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px var(--acg)}
.fg input::placeholder,.fg textarea::placeholder{color:var(--fg2);opacity:.5}
.gr2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.gr4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:12px}
.fw{grid-column:1/-1}

/* ═══ Tables ═══ */
.tw{overflow-x:auto;border-radius:var(--rd);border:1px solid var(--bo)}
.tbl{width:100%;border-collapse:collapse;font-size:.84rem}
.tbl th{text-align:left;padding:9px 12px;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg2);border-bottom:1px solid var(--bo2);font-weight:600;background:var(--bg3)}
.tbl td{padding:8px 12px;border-bottom:1px solid var(--bo);vertical-align:middle;background:var(--bg)}
.tbl tr:last-child td{border-bottom:none}
.tbl tr{cursor:pointer;transition:background .12s}
.tbl tr:hover td{background:var(--bgh)}
.tbl tr:nth-child(even) td{background:var(--ts)}
.tbl tr:nth-child(even):hover td{background:var(--bgh)}

/* ═══ Listados: viewport fijo, scroll interno, paginación ═══ */
.cd.list-shell{display:flex;flex-direction:column;max-height:var(--list-h);overflow:hidden;min-height:0;margin-bottom:0}
.cd.list-shell>.ct,.cd.list-shell>.h-s,.cd.list-shell>p,.cd.list-shell>.emp,.cd.list-shell>.agenda-overview,.cd.list-shell>.payment-total-card,.cd.list-shell>.acct-bar,.cd.list-shell>.list-help,.cd.list-shell>.fin-totals,.cd.list-shell>.list-pager{flex:0 0 auto}
.list-frame{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.tw.list-scroll{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}
.cd.list-shell>.rec-wrap,.cd.list-shell>.ui-empty{flex:1 1 auto;min-height:0}
.list-scroll thead th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--bo2)}
.list-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:10px 2px 0;margin-top:8px;border-top:1px solid var(--bo);font-size:.78rem;color:var(--fg2);flex:0 0 auto}
.list-pager-size{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.list-pager-size select{min-height:32px;padding:4px 8px;background:var(--bg3);border:1px solid var(--bo);border-radius:var(--rd);color:var(--fg);font:inherit}
.list-pager-range,.list-pager-page{font-variant-numeric:tabular-nums;white-space:nowrap}
.list-pager-nav{display:flex;align-items:center;gap:8px}
#v-serv-realizados.act,#v-pagos.act{display:flex;flex-direction:column;gap:18px;animation:none}
#v-serv-realizados.act>.list-shell,#v-pagos.act>.list-shell{flex:0 0 auto;margin:0}

/* ═══ Badges ═══ */
.bdg{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--rdp);font-size:.7rem;font-weight:600;letter-spacing:.02em}
.bdg-emitida,.bdg-enviada,.bdg-borrador{background:color-mix(in srgb,var(--ac) 15%,transparent);color:var(--ac)}
.bdg-pagada,.bdg-aprobada{background:color-mix(in srgb,var(--ac) 15%,transparent);color:var(--ac)}
.bdg-anulada,.bdg-rechazada{background:color-mix(in srgb,var(--da) 15%,transparent);color:var(--da)}
.bdg-enviada-cot{background:color-mix(in srgb,var(--bl) 15%,transparent);color:var(--bl)}
.bdg-tipo-cliente{background:color-mix(in srgb,var(--ac) 15%,transparent);color:var(--ac)}
.bdg-tipo-proveedor{background:color-mix(in srgb,var(--wa) 15%,transparent);color:var(--wa)}
.bdg-tipo-ambos{background:color-mix(in srgb,var(--bl) 15%,transparent);color:var(--bl)}
.bdg-rol-admin{background:color-mix(in srgb,var(--wa) 15%,transparent);color:var(--wa)}
.bdg-rol-user{background:color-mix(in srgb,var(--ac) 15%,transparent);color:var(--ac)}

/* ═══ Search bar ═══ */
.h-s{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.h-s input{width:260px;padding:8px 14px;background:var(--bg3);border:1px solid var(--bo);border-radius:var(--rd);color:var(--fg);font-size:.84rem;font-family:inherit;text-overflow:ellipsis}
.h-s input:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px var(--acg)}
.emp{text-align:center;padding:56px 20px;color:var(--fg2);background:var(--bg3);border:1px dashed var(--bo2);border-radius:var(--rd2)}
.emp .bi{font-size:2.8rem;margin-bottom:10px}

/* ═══ Company header ═══ */
.ch{display:flex;flex-direction:column;gap:0}
.cht{display:flex;align-items:center;gap:16px}
.la{width:68px;height:68px;border-radius:50%;background:var(--bg3);border:2px dashed var(--bo);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;transition:all .25s;position:relative}
.la img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:none;border-radius:50%}
.la .lp{font-size:0;color:transparent;background:url("/logo-login.png") center/cover no-repeat;width:68px;height:68px;border-radius:50%;text-indent:-9999px;line-height:0}
.la.hl img{display:block}.la.hl .lp{display:none}
.la.hl{border:2px solid var(--bo);background:var(--bg)}
.ci{flex:1}
.cn{font-size:1.45rem;font-weight:800;letter-spacing:-.03em;margin-bottom:0;line-height:1.2}
.ctag{font-size:.78rem;color:var(--ac);font-weight:500}
.hr{border:none;border-top:1px solid var(--bo);margin:12px 0 10px;opacity:.7}
.det{display:grid;grid-template-columns:auto auto;gap:4px 32px;font-size:.8rem;color:var(--fg2);line-height:1.55;justify-content:start;text-align:left}
.det .l{opacity:.65}
.det .e{cursor:text;border-bottom:1px dotted var(--bo);padding:2px 4px;border-radius:3px;min-width:60px;display:inline-block;color:var(--fg)}
.det .e:focus{outline:none;border-bottom-color:var(--ac);background:var(--bgh)}
.det .e:hover{cursor:text;border-bottom:1px dashed var(--ac)}

/* ═══ Invoice meta inline ═══ */
.im{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.im .mf label{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg2);margin-bottom:3px;display:block}
.im .mf input,.im .mf select{padding:8px 11px;background:var(--bg3);border:1px solid var(--bo);border-radius:var(--rd);color:var(--fg);font-size:.84rem;font-family:inherit}
.im .mf input:focus,.im .mf select:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px var(--acg)}

/* ═══ Items table (editable) ═══ */
.tbl-edit td{border-bottom:1px solid var(--bo)}
.tbl-edit .tdesc{width:100%;min-width:150px;padding:5px 8px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--fg);font-size:.85rem;font-family:inherit}
.tbl-edit .tdesc:focus{outline:none;border-color:var(--ac);background:var(--bg3)}
.tbl-edit .tqty,.tbl-edit .tpr{width:85px;padding:5px 8px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--fg);font-size:.85rem;font-family:inherit;text-align:right}
.tbl-edit .tqty:focus,.tbl-edit .tpr:focus{outline:none;border-color:var(--ac);background:var(--bg3)}

/* ═══ Totals ═══ */
.ts{margin-top:12px;padding-top:10px;border-top:2px solid var(--bo)}
.ts-in{display:flex;justify-content:flex-end;align-items:flex-start;gap:14px;flex-wrap:wrap}
.ts-t{width:270px}
.ts-r{display:flex;justify-content:space-between;padding:4px 0;font-size:.85rem;color:var(--fg2)}
.ts-r .val{font-variant-numeric:tabular-nums;font-weight:500}
.ts-r.ttl{font-size:1.08rem;font-weight:700;color:var(--fg);padding-top:7px;margin-top:5px;border-top:1.5px solid var(--bo2)}
.ts-r.ttl .val{color:var(--ac);font-size:1.18rem;font-weight:800}

/* ═══ Toast ═══ */
.toast{position:fixed;bottom:calc(24px + var(--safe-b));right:calc(24px + var(--safe-r));background:var(--bg);border:1px solid var(--bo2);border-radius:var(--rd);padding:12px 18px;box-shadow:var(--sh2);font-size:.84rem;color:var(--fg);display:flex;align-items:center;gap:9px;transform:translateY(120px);opacity:0;transition:all .35s ease;z-index:9999;max-width:380px}
.toast.show{transform:translateY(0);opacity:1}

/* ═══ Loading ═══ */
.load{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);z-index:9998;display:none;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.load.show{display:flex}
.lb{background:var(--bg);border-radius:var(--rd2);padding:26px 34px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:var(--sh2);border:1px solid var(--bo);min-width:210px;text-align:center}
.lb-logo{width:64px;height:64px;object-fit:contain;background:none;display:block}
.lb .sp{width:18px;height:18px}
.lb span:last-child{font-size:.82rem;color:var(--fg2);letter-spacing:.01em}
.sp{display:inline-block;width:16px;height:16px;border:2px solid var(--fg2);border-top-color:var(--ac);border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ═══ Boot splash (carga inicial con logo de la empresa) ═══ */
/* Fondo fijo oscuro #101312 (igual que el manifest PWA) en ambos temas:
   evita el fondo blanco que se veía en tema claro mientras carga. Solo
   muestra el logo — sin spinner ni texto debajo. */
.boot{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;transition:opacity .35s ease,visibility .35s ease;background:
  radial-gradient(900px 420px at 18% -10%, color-mix(in srgb,var(--ac) 18%, transparent), transparent 62%),
  var(--bg2)}
.boot.hide{opacity:0;visibility:hidden;pointer-events:none}
.boot-card{display:flex;align-items:center;justify-content:center;background:none;border:0;box-shadow:none}
.boot-card img{width:100px;height:100px;object-fit:contain;background:none;display:block;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.85}}

/* ═══ PWA install banner ═══ */
.pwa-banner{position:fixed;top:0;left:0;right:0;z-index:3000;display:none;align-items:center;gap:12px;padding:10px 16px;background:color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:1px solid var(--bo2);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--sh)}
.pwa-banner.show{display:flex;animation:down .3s ease}
@keyframes down{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
.pwa-banner-logo{width:36px;height:36px;border-radius:9px;object-fit:cover;flex-shrink:0}
.pwa-banner-txt{display:flex;flex-direction:column;min-width:0;flex:1}
.pwa-banner-txt strong{font-size:.82rem;color:var(--fg);letter-spacing:-.01em}
.pwa-banner-txt span{font-size:.72rem;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pwa-banner-close{width:30px;height:30px;border-radius:8px;border:none;background:none;color:var(--fg2);cursor:pointer;font-size:1rem;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pwa-banner-close:hover{background:var(--bgh);color:var(--fg)}

/* ═══ Modal ═══ */
.mo{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.55);z-index:9997;display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}
.mo.open{display:flex}
.m{background:var(--bg);border:1px solid var(--bo);border-radius:var(--rd2);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--sh2);animation:up .25s}
.mh{display:flex;justify-content:space-between;align-items:center;padding:18px 22px 12px;border-bottom:1px solid var(--bo)}
.mh h3{font-size:.95rem;font-weight:700;letter-spacing:-.01em}
.mc{font-size:.9rem;cursor:pointer;padding:4px 8px;border-radius:6px;background:none;border:none;color:var(--fg2)}
.mc:hover{color:var(--fg);background:var(--bgh)}
.mb{padding:16px 22px}
.mf{display:flex;gap:10px;justify-content:flex-end;padding:12px 22px 18px;border-top:1px solid var(--bo)}

/* ═══ Config tabs ═══ */
.config-tabs{display:flex;gap:4px;margin-bottom:16px;flex-wrap:wrap}
.config-tabs button{padding:8px 18px;border-radius:var(--rd);font-size:.8rem;font-weight:500;border:1px solid var(--bo);background:var(--bg3);color:var(--fg2);cursor:pointer;font-family:inherit;letter-spacing:-.01em}
.config-tabs button:hover{background:var(--bgh);border-color:var(--bo2)}
.config-tabs button.act{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:600}
.cfg-v{display:none}.cfg-v.act{display:block;animation:up .3s}

/* ═══ Status msg ═══ */
.smsg{padding:9px 14px;border-radius:var(--rd);font-size:.8rem;margin-bottom:12px;display:none;letter-spacing:-.01em}
.smsg.show{display:block}
.smsg.ok{background:color-mix(in srgb,var(--ac) 12%,transparent);color:var(--ac);border:1px solid var(--ac)}
.smsg.err{background:color-mix(in srgb,var(--da) 12%,transparent);color:var(--da);border:1px solid var(--da)}
.smsg.info{background:color-mix(in srgb,var(--bl) 12%,transparent);color:var(--bl);border:1px solid var(--bl)}

/* ═══ Checkbox inline ═══ */
.cb-in{display:flex;align-items:center;gap:7px;margin-bottom:10px}
.cb-in input{width:auto;accent-color:var(--ac)}
.cb-in label{font-size:.84rem;color:var(--fg2);margin:0;cursor:pointer}

/* ═══ CRM / list actions — kebab menu (compact rows) ═══ */
.h-s select,.h-s-sel{padding:7px 10px;background:var(--bg3);border:1px solid var(--bo);border-radius:7px;color:var(--fg);font-size:.82rem;font-family:inherit;min-height:36px}
.tbl th.col-act,.tbl td.col-act{width:1%;white-space:nowrap;vertical-align:middle!important;padding:4px 6px 4px 0;text-align:right}
.act-more{position:relative;display:inline-flex;justify-content:flex-end}
.act-kebab{width:36px;height:36px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--fg2);display:grid;place-items:center;cursor:pointer}
.act-kebab:hover,.act-more.menu-open .act-kebab{background:var(--bg3);color:var(--fg)}
.act-menu{display:none;position:fixed;z-index:80;min-width:216px;padding:6px;border:1px solid var(--bo2);border-radius:12px;background:var(--bg);box-shadow:var(--sh2);flex-direction:column}
.act-more.menu-open .act-menu{display:flex}
.act-menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:8px 10px;border:0;border-radius:8px;background:transparent;color:var(--fg);font:inherit;font-size:.8rem;font-weight:600;text-align:left;cursor:pointer}
.act-menu-item:hover{background:var(--bgh)}
.act-menu-item.is-danger{color:var(--da)}
.act-menu-item:disabled{opacity:.4;cursor:not-allowed}
.act-menu-item i{font-size:1.05rem;width:1.15em;text-align:center}
i[data-icon]{display:inline-block;width:1em;height:1em}

/* ═══ Responsive ═══ */
/* Los breakpoints viven al final del stylesheet (después de los
   componentes) para que la cascada no los pise: una regla dentro de un
   media query NO gana por especificidad, y si el componente se define
   después, su valor gana el empate. Ver sección antes de @media print. */

/* ═══ Print-only elements ═══ */
.print-client-section{display:none;font-size:7pt;text-transform:uppercase;letter-spacing:1px;color:#666;font-weight:700;margin:0 0 4px;padding-bottom:3px;border-bottom:1px solid #ccc}

/* ═══ PRINT — Letter, single page ═══ */
@page{size:Letter;margin:10mm 14mm 12mm 14mm}
/* ═══ Print-only footer ═══ */
.print-footer{display:none;margin-top:8px;padding-top:6px;border-top:1px solid #ccc;font-size:6.5pt;color:#888;text-align:center}
.print-footer-page{float:right}

/* ═══════ HEADER ═══════ */
.header{position:fixed;top:0;left:76px;right:0;min-height:calc(var(--header-h) + var(--safe-t));background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid var(--bo);display:none;align-items:center;padding:var(--safe-t) 20px 0;z-index:1100;gap:12px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:left .24s cubic-bezier(.2,.8,.2,1)}
body.app-ready .header{display:flex}
body.sidebar-expanded .header{left:264px}
.header-brand{font-size:1rem;font-weight:800;color:var(--ac);letter-spacing:-.03em;white-space:nowrap}
.header-subtitle{font-size:.75rem;color:var(--fg2);white-space:nowrap}
.hamburger{background:none;border:1px solid var(--bo);color:var(--fg);width:38px;height:38px;border-radius:var(--rd);cursor:pointer;display:none;align-items:center;justify-content:center}
.hamburger:hover{background:var(--bgh)}
.header-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.user-badge{padding:4px 10px 4px 4px;border-radius:var(--rdp);font-size:.76rem;font-weight:600;color:var(--fg);background:var(--bg3);border:1px solid var(--bo);display:flex;align-items:center;gap:8px;white-space:nowrap}
.user-badge .avatar{width:24px;height:24px;border-radius:50%;background:var(--ac);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:700}
.icon-btn{width:38px;height:38px;border-radius:var(--rd);border:1px solid var(--bo);background:var(--bg3);color:var(--fg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.icon-btn:hover{background:var(--bgh)}
.icon-btn i{font-size:1.05rem}

/* ═══════ SIDEBAR ═══════ */
.sidebar-overlay{position:fixed;inset:0;background:rgba(8,14,12,.48);z-index:2000;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.sidebar-overlay.open{opacity:1;visibility:visible}
.sidebar{position:fixed;top:0;left:0;width:76px;height:100dvh;padding-top:var(--safe-t);padding-bottom:var(--safe-b);background:var(--bg);border-right:1px solid var(--bo);z-index:2001;display:none;flex-direction:column;overflow:hidden;white-space:nowrap;transition:width .24s cubic-bezier(.2,.8,.2,1),transform .24s cubic-bezier(.2,.8,.2,1)}
body.app-ready .sidebar{display:flex}
.sidebar.expanded,.sidebar.open{width:264px}
.sidebar-header{min-height:64px;padding:12px;border-bottom:1px solid var(--bo);display:flex;align-items:center;gap:10px}
.sidebar-mark{width:40px;height:40px;flex-shrink:0;background:none;border:0}
.sidebar-mark img{width:100%;height:100%;object-fit:contain;display:block}
.sidebar-copy{min-width:0;opacity:0;width:0;overflow:hidden;transition:opacity .18s}
.sidebar.expanded .sidebar-copy,.sidebar.open .sidebar-copy{opacity:1;width:auto}
.sidebar-header .brand{font-size:.98rem;font-weight:800;color:var(--fg);letter-spacing:-.03em}
.sidebar-header .brand-sub{font-size:.68rem;color:var(--fg2)}
.sidebar-nav{flex:1;overflow-y:auto;padding:10px 10px 8px;display:flex;flex-direction:column;gap:4px}
.sidebar-nav button{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:44px;padding:0 12px;border-radius:12px;border:none;background:transparent;color:var(--fg);font-size:.86rem;font-weight:550;font-family:inherit;cursor:pointer;text-align:left}
.sidebar.expanded .sidebar-nav button,.sidebar.open .sidebar-nav button{justify-content:flex-start}
.sidebar-nav button:hover{background:var(--bgh)}
.sidebar-nav button:active{transform:scale(.98)}
.sidebar-nav button.act{background:var(--acg);color:var(--ac)}
.sidebar-nav button i{width:22px;flex-shrink:0;font-size:1.18rem;text-align:center}
.sidebar-text{opacity:0;max-width:0;overflow:hidden;transition:opacity .16s}
.sidebar.expanded .sidebar-text,.sidebar.open .sidebar-text{opacity:1;max-width:180px}
.sidebar-divider{height:1px;background:var(--bo);margin:8px 8px}
.sidebar-footer{margin-top:auto;border-top:1px solid var(--bo);padding:12px 10px 16px}
.sidebar-footer .user-info{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px;min-height:36px}
.sidebar.expanded .sidebar-footer .user-info,.sidebar.open .sidebar-footer .user-info{justify-content:flex-start}
.sidebar-footer .avatar{width:28px;height:28px;border-radius:50%;background:var(--ac);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;flex-shrink:0}
.sidebar-logout{width:100%;min-height:40px;padding:0 12px;border-radius:12px;border:1px solid var(--bo);background:transparent;color:var(--fg);font-size:.82rem;font-family:inherit;cursor:pointer;font-weight:550;display:flex;align-items:center;justify-content:center;gap:10px}
.sidebar.expanded .sidebar-logout,.sidebar.open .sidebar-logout{justify-content:flex-start}
.sidebar-logout:hover{background:color-mix(in srgb,var(--da) 10%,transparent);border-color:var(--da);color:var(--da)}
.sidebar-logout i{font-size:1.1rem}
.sidebar-theme{width:100%;min-height:40px;margin-top:8px;padding:0 12px;border-radius:12px;border:1px solid var(--bo);background:transparent;color:var(--fg);cursor:pointer;display:flex;align-items:center;justify-content:center}
.sidebar.expanded .sidebar-theme,.sidebar.open .sidebar-theme{justify-content:flex-start}
.sidebar-theme:hover{background:var(--bgh);border-color:var(--bo2)}
.sidebar-theme i{font-size:1.1rem}

/* ═══════ LOGIN ═══════ */
.login-wrapper{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:max(24px,var(--safe-t)) max(24px,var(--safe-r)) max(24px,var(--safe-b)) max(24px,var(--safe-l));background:
  radial-gradient(900px 420px at 18% -10%, color-mix(in srgb,var(--ac) 18%, transparent), transparent 62%),
  var(--bg2)}
.login-card{background:var(--bg);border:1px solid var(--bo);border-radius:22px;padding:36px 30px;width:100%;max-width:420px;box-shadow:var(--sh2);animation:up .3s}
.login-card h2{font-size:1.15rem;font-weight:700;color:var(--fg);margin-bottom:4px;letter-spacing:-.02em;text-align:center}
.login-card .login-sub{font-size:.82rem;color:var(--fg2);margin-bottom:20px;text-align:center}
.login-card .login-logo{width:84px;height:84px;object-fit:contain;display:block;margin:0 auto 16px;background:none;border:0;box-shadow:none}
.login-card .login-link{font-size:.78rem;color:var(--ac);cursor:pointer;text-align:center;display:block;margin-top:12px;border:none;background:none;font-family:inherit;width:100%}
.login-card .login-link:hover{text-decoration:underline}
.login-card .login-link-muted{font-size:.78rem;color:var(--fg2);text-align:center;display:block;margin-top:12px;border:none;background:none;font-family:inherit;width:100%;cursor:pointer}
.login-card .login-link-muted:hover{color:var(--fg)}

/* ═══════ REGLAS DEL ASISTENTE ═══════ */
.reglas-panel{border:1px solid var(--bo);border-radius:var(--rd);padding:18px;margin-bottom:22px}
.reglas-head h3{font-size:.92rem;font-weight:650;color:var(--fg);margin-bottom:4px;letter-spacing:-.01em}
.reglas-head p{font-size:.8rem;color:var(--fg2);line-height:1.45;max-width:70ch;margin-bottom:14px}
.reglas-alta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.reglas-alta input{flex:1 1 280px;min-width:0;min-height:var(--ui-tap);padding:0 16px;border:1px solid var(--bo);border-radius:var(--ui-pill);background:var(--bg3);color:var(--fg);font:inherit;font-size:.84rem}
.reglas-alta input:focus-visible{outline:2px solid var(--ac);outline-offset:1px}
.reglas-cuenta{margin-bottom:8px}
/* Una regla es una línea: interruptor, texto y borrar. Nada más cabe en algo
   que se lee de un vistazo y se edita pulsándolo. */
.regla{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--bo);border-radius:var(--rd);margin-bottom:8px;background:var(--bg)}
.regla.is-off{opacity:.5}
.regla.is-off .regla-texto{text-decoration:line-through}
.regla-switch{flex:0 0 auto;display:inline-flex;align-items:center}
.regla-switch input{width:18px;height:18px;accent-color:var(--ac);cursor:pointer}
.regla-texto{flex:1 1 auto;min-width:0;font-size:.84rem;color:var(--fg);line-height:1.4;cursor:text;text-align:left;border-radius:6px;padding:2px 4px;margin:-2px -4px;overflow-wrap:anywhere}
.regla-texto:hover{background:var(--bgh)}
.regla-texto:focus-visible{outline:2px solid var(--ac);outline-offset:0}
.regla-edit{flex:1 1 auto;min-width:0;min-height:34px;padding:2px 8px;border:1px solid var(--ac);border-radius:6px;background:var(--bg3);color:var(--fg);font:inherit;font-size:.84rem}
.regla-edit:focus-visible{outline:none}
@media(max-width:768px){
.reglas-panel{padding:12px}
.reglas-alta .btn{width:100%;justify-content:center}
}

/* ═══════ AGENDA · TARJETAS Y CALENDARIO ═══════ */
/* Las tres métricas son botones: filtran la lista. Se ven pulsadas, no solo
   coloreadas, porque el color no puede ser el único indicador. */
.agenda-metric{font:inherit;text-align:left;cursor:pointer;border:1px solid var(--bo);border-radius:12px;background:var(--bg3);color:inherit}
.agenda-metric:hover{border-color:var(--bo2);background:var(--bgh)}
.agenda-metric:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.agenda-metric.is-on{border-color:var(--ac);background:var(--acg)}
.agenda-metric.is-late.is-on{border-color:var(--da);background:color-mix(in srgb,var(--da) 12%,transparent)}
/* Completadas es un cierre, no una alarma: usa el acento, no el peligro. */
.agenda-metric.is-done.is-on{border-color:var(--ac);background:var(--acg)}

.agenda-modes{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;flex:0 0 auto}
.agenda-period{display:flex;align-items:center;gap:8px;margin-left:auto}
.agenda-period strong{font-size:.82rem;color:var(--fg);min-width:11ch;text-align:center}

/* El calendario cede antes que la lista: es un navegador, no el contenido.
   Sin esto, en escritorio el mes de seis semanas dejaba el listado en cero. */
.agenda-calendar{flex:0 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;margin-bottom:12px}
#v-agenda .list-frame{min-height:200px}
/* Calendario: rejilla limpia, sin una caja por día.
   Cada día es un número dentro de un círculo, como en cualquier calendario de
   teléfono actual, y debajo un punto por estado presente. El marco por casilla
   pesaba mucho y a tamaño de celular convertía el mes en una reja. */
.agenda-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px 0}
.agenda-grid-head{font-size:.64rem;font-weight:650;color:var(--fg2);text-align:center;padding:0 0 6px;letter-spacing:.08em;text-transform:uppercase}
.agenda-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;
  padding:3px 0 5px;border:0;background:none;color:var(--fg);font:inherit;cursor:pointer;
  border-radius:12px;transition:background var(--ui-speed)}
.agenda-day:hover{background:var(--bgh)}
.agenda-day:focus-visible{outline:2px solid var(--ac);outline-offset:-2px}
.agenda-day.is-outside{opacity:.28}
/* El número vive en un disco: es lo que se toca y lo que se marca. */
.agenda-day-num{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;
  font-size:.82rem;font-weight:550;font-variant-numeric:tabular-nums;line-height:1;
  transition:background var(--ui-speed),color var(--ui-speed),box-shadow var(--ui-speed)}
.agenda-day.has-any .agenda-day-num{font-weight:700}
/* Hoy: anillo. Día elegido: disco lleno. Los dos a la vez se distinguen. */
.agenda-day.is-today .agenda-day-num{box-shadow:inset 0 0 0 1.5px var(--ac);color:var(--ac)}
.agenda-day.is-picked .agenda-day-num{background:var(--ac);color:var(--on-ac);box-shadow:none}
.agenda-day:hover .agenda-day-num{background:color-mix(in srgb,var(--fg) 8%,transparent)}
.agenda-day.is-picked:hover .agenda-day-num{background:var(--ac2)}
/* Puntos de estado bajo el número. Reservan su alto siempre, para que las
   filas no salten al cambiar de mes. */
.agenda-dots{display:flex;align-items:center;justify-content:center;gap:3px;height:6px}
.agenda-dot{width:5px;height:5px;border-radius:50%;display:block}
.agenda-dot.is-vencidas{background:var(--da)}
.agenda-dot.is-hoy{background:var(--ac)}
.agenda-dot.is-proximas{background:color-mix(in srgb,var(--ac) 55%,var(--bg))}
.agenda-dot.is-cerradas{background:var(--fg2);opacity:.6}
.agenda-day.is-picked .agenda-dot{box-shadow:0 0 0 1.5px var(--bg)}

/* Leyenda: el color por sí solo no basta, y aquí cuesta una línea. */
.agenda-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:10px;font-size:.68rem;color:var(--fg2)}
.agenda-legend span{display:inline-flex;align-items:center;gap:5px}

/* ═══════ ACCESO BIOMÉTRICO ═══════ */
/* El botón de huella no compite con "Ingresar": es la otra vía, no la
   secundaria, así que lleva contorno de acento en vez de relleno. */
.btn-bio{width:100%;justify-content:center;gap:10px;border:1px solid var(--ac);background:color-mix(in srgb,var(--ac) 10%,transparent);color:var(--ac);font-weight:600}
.btn-bio:hover{background:color-mix(in srgb,var(--ac) 18%,transparent)}
.btn-bio i{font-size:1.25rem}
.btn-bio-lg{min-height:52px;font-size:.92rem;margin-top:4px}
.btn-bio-lg i{font-size:1.5rem}
.login-bio{margin-top:12px}
.login-sep{display:flex;align-items:center;gap:10px;margin:14px 0 12px;color:var(--fg2);font-size:.72rem}
.login-sep::before,.login-sep::after{content:"";flex:1;height:1px;background:var(--bo)}

.bio-panel{border:1px solid var(--bo);border-radius:var(--rd);padding:18px}
.bio-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px}
.bio-mark{width:44px;height:44px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ac) 14%,transparent);color:var(--ac)}
.bio-mark i{font-size:1.4rem}
.bio-head h3{font-size:.92rem;font-weight:650;color:var(--fg);margin-bottom:4px;letter-spacing:-.01em}
.bio-head p{font-size:.8rem;color:var(--fg2);line-height:1.45;max-width:62ch}
.bio-estado{font-size:.8rem;padding:10px 12px;border-radius:var(--rd);margin-bottom:14px;border:1px solid var(--bo)}
.bio-estado-on{color:var(--ac);border-color:color-mix(in srgb,var(--ac) 40%,transparent);background:var(--acg)}
.bio-estado-off{color:var(--fg2);background:var(--bg3)}
.bio-lista{margin-top:18px}
.bio-lista h4{font-size:.78rem;font-weight:600;color:var(--fg2);margin-bottom:8px;letter-spacing:-.01em}
.bio-item{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--bo);border-radius:var(--rd);margin-bottom:8px}
.bio-item-nombre{display:flex;align-items:center;gap:8px;font-size:.84rem;color:var(--fg);font-weight:550}
.bio-item-fecha{font-size:.75rem;color:var(--fg2);margin-left:auto}
@media(max-width:768px){
.bio-head{flex-direction:column}
.bio-item-fecha{margin-left:0;width:100%}
.bio-item .btn{width:100%;justify-content:center}
}

/* ═══════ USERS TABLE ═══════ */
.user-avatar-sm{width:28px;height:28px;border-radius:50%;background:var(--ac);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;margin-right:8px}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:10px}
.perm-module{border:1px solid var(--bo);border-radius:var(--rd);padding:12px 14px}
.perm-module h4{font-size:.8rem;font-weight:600;color:var(--fg);margin-bottom:8px;letter-spacing:-.01em}
.perm-module label{font-size:.76rem;color:var(--fg2);display:flex;align-items:center;gap:6px;margin-bottom:3px;cursor:pointer}
.perm-module label input{accent-color:var(--ac)}

/* ═══ Responsive — al final para ganar la cascada sobre los componentes ═══ */
/* Tablet + mobile (≤1023px): el sidebar pasa a ser overlay (transform
   translateX), no afecta el flujo. Se ajusta padding del header y app. */
@media(max-width:1023px){
.hamburger{display:inline-flex;width:44px;height:44px}
.header{left:0!important}
.app,#app-main{padding:calc(var(--header-h) + var(--safe-t) + 20px) max(14px,var(--safe-r)) calc(40px + var(--safe-b)) max(14px,var(--safe-l))!important}
:root,[data-theme="dark"],[data-theme="light"]{--list-h:calc(100dvh - var(--header-h) - var(--safe-t) - var(--safe-b) - 60px)}
.sidebar{width:264px;transform:translateX(-110%)}
.sidebar.open{transform:translateX(0)}
.sidebar .sidebar-copy,.sidebar .sidebar-text{opacity:1;width:auto;max-width:none}
.sidebar-nav button,.sidebar-logout,.sidebar-footer .user-info{justify-content:flex-start}
.user-badge{display:none!important}
.icon-btn{width:44px;height:44px}
.act-kebab{width:44px;height:44px}
.h-s input{min-width:0;flex:1 1 180px}
.h-s select,.h-s-sel{min-height:44px}
input,select,textarea{font-size:16px!important}
.mo{padding:max(12px,var(--safe-t)) 12px max(12px,var(--safe-b));align-items:flex-end}
.m{max-height:calc(100dvh - 24px - var(--safe-t) - var(--safe-b))}
}

/* Solo mobile (≤768px): ajustes internos de grid, fuentes y centrado. */
@media(max-width:768px){
.cd{padding:16px 14px}
.top{flex-direction:column}.nav{width:100%}.nav button{flex:1;text-align:center;padding:7px 6px;font-size:.74rem}
.gr2,.gr3,.gr4{grid-template-columns:1fr}
.bar{flex-direction:column}.bar .btn{justify-content:center;width:100%}
.h-s input{width:100%}.im{flex-direction:column}.im .mf{width:100%}
.cht{flex-direction:column;align-items:center;text-align:center;gap:10px}
.det{grid-template-columns:1fr;text-align:center;justify-content:center}
.ts-t{width:100%}.ts-in{justify-content:center}
.config-tabs button{flex:1;text-align:center;padding:10px 8px;font-size:.8rem;min-height:44px}
.la{width:56px;height:56px}
.tw{border-radius:var(--rd);-webkit-overflow-scrolling:touch}
.pwa-banner{top:calc(var(--header-h) + var(--safe-t) + 6px);left:12px;right:12px;padding:8px 12px;gap:10px;border:1px solid var(--bo2);border-radius:14px}
.pwa-banner-txt span{display:none}
.file-preview-stage{height:160px}
.bubble-media{max-width:100%}
.bubble-media img,.bubble-media video{max-height:220px}
.toast{left:12px;right:12px;bottom:calc(16px + var(--safe-b));max-width:none}
.header-subtitle{display:none}
.mo{padding:0;align-items:stretch}
.m{max-width:100%;max-height:100dvh;height:100dvh;border-radius:0;padding-bottom:var(--safe-b)}
.ct .btn[style*="margin-left:auto"]{margin-left:0!important}
}

@media print{
.header,.sidebar,.sidebar-overlay,.login-wrapper,.hamburger,.icon-btn,.pwa-banner,.boot{display:none!important}
.app,#app-main{padding:0!important}
/* ... existing print styles ... */
.print-footer{display:block!important}
body{background:#fff!important;color:#000!important;font-size:9.5pt!important;line-height:1.25!important;letter-spacing:0!important}
.nav,.bar,.tt,.btn,.toast,.load,.mo,.smsg{display:none!important}
.v.act{display:block!important;opacity:1!important;animation:none!important}
.cd{background:#fff!important;border:none!important;box-shadow:none!important;border-radius:0!important;
padding:0 0 4px!important;margin:0 0 5px!important;break-inside:avoid!important;page-break-inside:avoid!important}
.ct{font-size:7pt!important;padding-bottom:3px!important;margin-bottom:5px!important;
border-bottom:1.5px solid #222!important;color:#222!important}.ct .i{display:none!important}
.ch{flex-direction:column!important;gap:0!important}
.cht{flex-direction:row!important;align-items:center!important;gap:8px!important}
.la{width:42px!important;height:42px!important;border:none!important;
border-radius:50%!important;background:#fafafa!important;min-height:0!important}.la img{border-radius:50%!important}
.cn{font-size:14pt!important;line-height:1.15!important}
.ctag{font-size:7pt!important;margin-bottom:0!important}
.hr{margin:5px 0 4px!important;border-top:1.5px solid #222!important}
.det{font-size:6.5pt!important;gap:1px 14px!important;line-height:1.35!important;
grid-template-columns:auto auto!important;justify-content:start!important;text-align:left!important}
.det .e{border-bottom:none!important;color:#000!important;padding:0!important}.det .l{color:#666!important}
.im{flex-direction:row!important;gap:14px!important}
.im .mf label{font-size:6pt!important;color:#666!important}
.im .mf input,.im .mf select{font-size:8pt!important;padding:2px 5px!important;border:none!important;background:transparent!important;color:#000!important}
.im .mf input[readonly]{font-size:12pt!important;font-weight:800!important;color:#000!important}
/* Client section — clean left-aligned single column */
.print-client-section{display:block!important}
.gr-client{grid-template-columns:1fr!important;gap:1px 0!important;text-align:left!important;max-width:55%!important}
.gr-client .fg{display:flex!important;align-items:baseline!important;gap:6px!important;margin-bottom:1px!important}
.gr-client .fg label{font-size:6.5pt!important;color:#666!important;min-width:65px!important;text-align:right!important;white-space:nowrap!important}
.gr-client .fg input{font-size:7.5pt!important;padding:1px 0!important;min-height:0!important;border:none!important;background:transparent!important;color:#000!important;flex:1!important}
.gr2:not(.gr-client){grid-template-columns:1fr 1fr!important;gap:3px 8px!important}
.fg label{font-size:6.5pt!important;color:#555!important}
.fg input,.fg textarea{font-size:7.5pt!important;padding:2px 5px!important;min-height:0!important;border:none!important;background:transparent!important;color:#000!important}
.tbl{font-size:7.5pt!important}.tbl th{font-size:5.8pt!important;padding:3px 5px!important;
border-bottom:1.5px solid #222!important;color:#222!important;background:#f5f5f5!important}
.tbl td{padding:2px 5px!important;border-bottom:1px solid #ddd!important;background:transparent!important}
.tbl tr:nth-child(even) td{background:#fafafa!important}
.tw{border:none!important}
.tbl-edit .tdesc,.tbl-edit .tqty,.tbl-edit .tpr{font-size:7.5pt!important;padding:1px 3px!important;border:none!important;background:transparent!important;color:#000!important}
.ts{margin-top:3px!important;padding-top:3px!important;border-top-color:#222!important}
.ts-r{padding:1px 0!important;font-size:7.5pt!important;color:#333!important}
.ts-r.ttl{padding-top:3px!important;margin-top:2px!important;border-top-color:#222!important}
.ts-r.ttl .val{font-size:10pt!important;color:#000!important}
.ts-t{width:200px!important}.ts-in{justify-content:flex-end!important}
[contenteditable]{cursor:default!important;border-bottom:none!important}
[contenteditable]:focus{outline:none!important;background:transparent!important}
.cd+.cd{border-top:1px dashed #ddd!important;padding-top:4px!important}
.list-pager{display:none!important}
.cd.list-shell,.list-frame,.tw.list-scroll,#v-serv-realizados.act,#v-pagos.act{max-height:none!important;height:auto!important;overflow:visible!important}
}
/* ═══ WhatsApp / ZapZap ═══ */
#v-whatsapp-chat,#v-assistant{
  --wa-side:#111b21;--wa-head:#202c33;--wa-hover:#202c33;--wa-act:#2a3942;
  --wa-chat:#0b141a;--wa-in:#202c33;--wa-out:#005c4b;--wa-out-fg:#e9edef;--wa-in-fg:#e9edef;
  --wa-muted:#8696a0;--wa-line:#222d34;--wa-accent:#00a884;--wa-tick:#53bdeb;--wa-fail:#f15c6d;
  --wa-input:#2a3942;--wa-compose:#202c33;--wa-chip:#182229
}
[data-theme="light"] #v-whatsapp-chat,[data-theme="light"] #v-assistant{
  --wa-side:#fff;--wa-head:#f0f2f5;--wa-hover:#f5f6f6;--wa-act:#f0f2f5;
  --wa-chat:#efeae2;--wa-in:#fff;--wa-out:#d9fdd3;--wa-out-fg:#111b21;--wa-in-fg:#111b21;
  --wa-muted:#667781;--wa-line:#e9edef;--wa-accent:#1daa61;--wa-tick:#53bdeb;--wa-fail:#e54b4b;
  --wa-input:#fff;--wa-compose:#f0f2f5;--wa-chip:#fff
}
.app:has(#v-whatsapp-chat.act),.app:has(#v-assistant.act){padding-top:calc(var(--header-h) + var(--safe-t))!important;padding-bottom:0!important;padding-right:0!important;overflow:hidden}
#v-whatsapp-chat.act,#v-assistant.act{display:flex;flex-direction:column;animation:none;height:calc(100dvh - var(--header-h) - var(--safe-t));max-height:calc(100dvh - var(--header-h) - var(--safe-t));margin:0;overflow:hidden;min-height:0}
.msg-shell{position:relative;flex:1 1 auto;min-height:0!important;height:auto!important;max-height:100%;display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden;padding:0;margin:0!important;border:0;border-radius:0;box-shadow:none;background:var(--wa-side);color:var(--wa-in-fg)}
.msg-shell input,.msg-shell textarea,.msg-shell button{transition:background .15s,color .15s,border-color .15s,opacity .15s}
.drop-overlay{display:none;position:absolute;inset:0;z-index:8;place-items:center;gap:10px;background:color-mix(in srgb,var(--wa-accent) 18%,var(--wa-chat));color:var(--wa-in-fg);font-weight:700;font-size:.95rem;pointer-events:none;border:2px dashed var(--wa-accent)}.msg-shell.dragover .drop-overlay{display:grid}.drop-overlay i{font-size:2.2rem;color:var(--wa-accent)}
.msg-sidebar{border-right:1px solid var(--wa-line);display:flex;flex-direction:column;min-width:0;min-height:0;max-height:100%;overflow:hidden;background:var(--wa-side)}
.msg-side-head{padding:10px 16px 12px;background:var(--wa-head);border-bottom:1px solid var(--wa-line)}
.msg-side-title{display:flex;align-items:center;justify-content:space-between;font-size:1.12rem;font-weight:700;letter-spacing:-.02em;color:var(--wa-in-fg)}
.msg-side-title .bdg{background:var(--wa-input);color:var(--wa-muted);border:0}.msg-side-title .bdg.on{background:color-mix(in srgb,var(--wa-accent) 18%,transparent);color:var(--wa-accent)}
.msg-search{position:relative;margin-top:10px}.msg-search i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--wa-muted);pointer-events:none}
.msg-search input{width:100%;padding:9px 14px 9px 40px;border-radius:8px;background:var(--wa-input);border:0;color:var(--wa-in-fg);font-family:inherit;font-size:.84rem}
.msg-search input:focus{outline:none;box-shadow:0 0 0 1px var(--wa-accent)}
.conv-list{overflow:auto;flex:1 1 auto;min-height:0;padding:0}
.conv-item{width:100%;display:grid;grid-template-columns:49px 1fr auto;gap:12px;align-items:center;padding:11px 14px;border:0;border-bottom:1px solid var(--wa-line);border-radius:0;background:transparent;color:var(--wa-in-fg);text-align:left;cursor:pointer;font-family:inherit}
.conv-item:hover{background:var(--wa-hover)}.conv-item.act{background:var(--wa-act)}
.conv-avatar,.chat-avatar{display:grid;place-items:center;border-radius:50%;color:#fff;font-weight:700;flex-shrink:0;letter-spacing:.02em}
.conv-avatar{width:49px;height:49px;font-size:.92rem}
.conv-name{display:block;font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--wa-in-fg)}
.conv-item.has-unread .conv-name{font-weight:700}
.conv-preview{display:block;font-size:.8rem;color:var(--wa-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.conv-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px;align-self:start;padding-top:2px}
.conv-time{display:block;white-space:nowrap;font-size:.72rem;color:var(--wa-muted)}
.conv-item.has-unread .conv-time{color:var(--wa-accent);font-weight:650}
.unread{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:20px;background:var(--wa-accent);color:#fff;font-size:.68rem;font-weight:700}
.chat-panel{min-width:0;min-height:0;max-height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--wa-chat);position:relative}
.wa-welcome{margin:auto;text-align:center;max-width:420px;padding:32px 24px;color:var(--wa-muted)}
.wa-welcome-mark{width:72px;height:72px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--wa-accent) 16%,transparent);color:var(--wa-accent);font-size:2.2rem}
.wa-welcome h2{margin:0 0 8px;color:var(--wa-in-fg);font-size:1.7rem;font-weight:300;letter-spacing:-.02em}
.wa-welcome p{margin:0;font-size:.9rem;line-height:1.55}
.wa-room{display:none;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;max-height:100%;overflow:hidden}
.msg-shell.is-open .wa-welcome{display:none}.msg-shell.is-open .wa-room{display:flex}
.chat-head{flex:0 0 auto;min-height:60px;padding:8px 16px;border-bottom:1px solid var(--wa-line);display:flex;align-items:center;gap:12px;background:var(--wa-head)}
.chat-avatar{width:40px;height:40px;font-size:.82rem}
.chat-meta{min-width:0}.chat-meta strong{display:block;font-size:.95rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--wa-in-fg)}.chat-meta span{font-size:.75rem;color:var(--wa-muted)}
.chat-status{margin-left:auto;font-size:.72rem;color:var(--wa-muted);display:flex;align-items:center;gap:6px;white-space:nowrap}.chat-status::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--wa-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--wa-accent) 18%,transparent)}.chat-status.off::before{background:var(--wa-fail);box-shadow:0 0 0 4px color-mix(in srgb,var(--wa-fail) 18%,transparent)}
.chat-messages{flex:1 1 auto;min-height:0;overflow:auto;padding:12px 6.5% 18px;display:flex;flex-direction:column;gap:3px;
  background-color:var(--wa-chat);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'><g fill='none' stroke='%238a9590' stroke-opacity='.07' stroke-width='1.2'><path d='M40 30c12 8 8 22-2 28M90 70c18-6 22 16 6 22M170 40c8 14-10 20-18 8M210 110c14 4 10 24-8 22M50 150c16 2 14 22-4 24M130 180c10 12-8 22-18 10M200 200c12 8 4 22-10 18'/><circle cx='70' cy='210' r='9'/><circle cx='150' cy='90' r='6'/></g></svg>");
  background-size:420px}
.chat-empty{margin:auto;text-align:center;color:var(--fg2);max-width:360px}.chat-empty i{font-size:2.2rem;color:var(--ac)}
#v-whatsapp-chat .chat-empty,#v-assistant .chat-empty{color:var(--wa-muted)}#v-whatsapp-chat .chat-empty i,#v-assistant .chat-empty i{color:var(--wa-accent)}
.wa-day{align-self:center;margin:10px 0 8px;padding:5px 12px;border-radius:8px;background:var(--wa-chip);color:var(--wa-muted);font-size:.72rem;font-weight:650;box-shadow:0 1px 1px rgba(0,0,0,.08);text-transform:capitalize}
.bubble{position:relative;max-width:min(75%,640px);padding:6px 8px 4px 9px;border-radius:8px;background:var(--wa-in);color:var(--wa-in-fg);border:0;box-shadow:0 1px 1.5px rgba(0,0,0,.18);font-size:.91rem;line-height:1.42;white-space:pre-wrap;overflow-wrap:anywhere}
.bubble.out{align-self:flex-end;background:var(--wa-out);color:var(--wa-out-fg);border-top-right-radius:0}
.bubble.in{align-self:flex-start;border-top-left-radius:0}
.bubble.optimistic{animation:aiMessageIn .18s cubic-bezier(.2,.8,.2,1)}
.bubble a{color:var(--wa-tick);text-decoration:underline;text-underline-offset:2px}
.bubble-time{display:flex;align-items:center;justify-content:flex-end;gap:3px;color:var(--wa-muted);font-size:.68rem;margin-top:3px;line-height:1.2;user-select:none;clear:both}
.wa-ticks{display:inline-flex;font-size:.85rem;color:var(--wa-muted);translate:0 1px}.wa-ticks.read{color:var(--wa-tick)}.wa-ticks.fail{color:var(--wa-fail)}.wa-ticks.wait{opacity:.7}
.bubble-media{margin:-2px -4px 6px;max-width:min(100%,320px);border-radius:6px;overflow:hidden;background:rgba(0,0,0,.12)}
.bubble-media img,.bubble-media video{display:block;max-width:100%;max-height:280px;border-radius:6px;cursor:pointer;background:#111}
.bubble-media audio{width:min(260px,100%);margin:4px 2px}
.bubble-media img:not([src]),.bubble-media video:not([src]){min-height:120px}
.file-card{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;background:rgba(0,0,0,.12);text-decoration:none;color:inherit;min-width:180px}.file-card i{font-size:1.45rem;color:var(--ac);flex-shrink:0}.file-card span{display:flex;flex-direction:column;min-width:0;flex:1}.file-card strong{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-card small{opacity:.75;font-size:.72rem}
#v-whatsapp-chat .file-card i,#v-assistant .file-card i{color:var(--wa-accent)}
.file-preview{display:flex;flex-direction:column;gap:8px;min-width:min(100%,220px);max-width:100%}
.file-preview-stage{height:220px;border-radius:8px;overflow:hidden;background:#111;border:1px solid var(--bo)}
.file-preview-stage iframe{width:100%;height:100%;border:0;background:#fff}
.pdf-viewer{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--bg2);color:var(--fg)}
.pdf-viewer[hidden]{display:none}
.pdf-thumbnail{height:100%;width:100%}
.pdf-status{padding:12px;margin:0;font-size:13px}
.pdf-page{overflow:auto;min-height:0;flex:1;padding:8px;text-align:center;overscroll-behavior:contain}
.pdf-page canvas{display:block;margin:0 auto;max-width:100%;background:white}
.pdf-controls{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;flex-wrap:wrap;flex-shrink:0}
.pdf-controls .btn{min-height:44px;min-width:44px}
#chatLightboxPdf{width:min(100%,1100px);height:82vh;height:82dvh;border-radius:var(--rd)}
.file-preview .file-card{min-width:0}
.file-preview .btn{width:44px;min-width:44px;min-height:44px;padding:0;flex:0 0 44px}
.bubble.md{white-space:normal}
.bubble.md p,.ai-msg-body.md p{margin:0 0 .55em}.bubble.md :last-child,.ai-msg-body.md :last-child{margin-bottom:0}
.bubble.md ul,.bubble.md ol,.ai-msg-body.md ul,.ai-msg-body.md ol{margin:0 0 .55em;padding-left:1.2em}
.bubble.md h1,.bubble.md h2,.bubble.md h3,.ai-msg-body.md h1,.ai-msg-body.md h2,.ai-msg-body.md h3{font-size:.95rem;line-height:1.3;margin:0 0 .45em;letter-spacing:-.02em}
.bubble.md blockquote,.ai-msg-body.md blockquote{margin:0 0 .55em;padding:4px 0 4px 10px;border-left:3px solid var(--ac);color:var(--fg2)}
.bubble.md hr,.ai-msg-body.md hr{border:0;border-top:1px solid var(--bo);margin:.7em 0}
.bubble.md img,.ai-msg-body.md img{max-width:100%;height:auto;border-radius:8px}
.bubble.md code,.ai-msg-body.md code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em;background:rgba(0,0,0,.1);padding:.12em .35em;border-radius:4px}
.bubble.md pre,.ai-msg-body.md pre{background:rgba(0,0,0,.14);padding:11px 13px;border-radius:9px;overflow:auto;margin:0 0 .55em}
.bubble.md pre code,.ai-msg-body.md pre code{background:none;padding:0}
.md-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:8px 0;max-width:100%;border:1px solid var(--bo);border-radius:8px;background:var(--bg)}
.md-table-wrap table{width:max-content;min-width:100%;border-collapse:collapse;font-size:.78rem}
.md-table-wrap th,.md-table-wrap td{border-bottom:1px solid var(--bo);border-right:1px solid var(--bo);padding:7px 10px;text-align:left;white-space:nowrap}
.md-table-wrap th{background:var(--bg3);font-weight:650}
.md-table-wrap tr:last-child td{border-bottom:none}
#v-whatsapp-chat .md-table-wrap,#v-assistant .md-table-wrap{background:transparent;border-color:var(--wa-line)}
#v-whatsapp-chat .md-table-wrap th,#v-assistant .md-table-wrap th{background:color-mix(in srgb,var(--wa-head) 80%,transparent)}
.chat-lightbox{display:none;position:fixed;inset:0;z-index:10050;background:rgba(8,12,11,.92);place-items:center;padding:max(16px,var(--safe-t)) 16px max(16px,var(--safe-b))}
.chat-lightbox.show{display:grid}
.chat-lightbox img,.chat-lightbox iframe{max-width:min(96vw,1100px);max-height:86vh;border:0;border-radius:10px;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.chat-lightbox-close{position:absolute;top:calc(10px + var(--safe-t));right:12px;width:44px;height:44px;border:0;border-radius:12px;background:rgba(255,255,255,.12);color:#fff;cursor:pointer;display:grid;place-items:center}
.chat-compose{flex:0 0 auto;padding:8px 12px 10px;background:var(--wa-compose);border-top:1px solid var(--wa-line);z-index:3}
.attach-preview{display:none;align-items:center;gap:9px;margin:0 52px 8px 48px;padding:8px 10px;border:0;border-radius:10px;font-size:.78rem;background:var(--wa-input);color:var(--wa-in-fg)}.attach-preview.show{display:flex}.attach-preview button{margin-left:auto;background:transparent;border:0;color:var(--wa-muted);cursor:pointer}.attach-thumb{width:44px;height:44px;object-fit:cover;border-radius:8px;background:var(--wa-head)}
.compose-row{display:flex;align-items:flex-end;gap:8px}
.compose-row textarea{flex:1;resize:none;min-height:44px;max-height:116px;border-radius:13px;background:var(--bg);border:1px solid var(--bo);color:var(--fg);padding:11px 13px;font-family:inherit}
.compose-icon{width:44px;height:44px;flex:0 0 44px;border-radius:13px;border:1px solid var(--bo);background:var(--bg);color:var(--fg);display:grid;place-items:center;cursor:pointer}
.compose-send{background:var(--ac);color:#fff;border-color:var(--ac);font-size:1.1rem}
.compose-note{font-size:.67rem;color:var(--fg2);padding:7px 2px 0}.compose-note a{color:var(--ac)}
#v-whatsapp-chat .compose-row textarea,#v-assistant .compose-row textarea{min-height:42px;max-height:120px;height:42px;border-radius:21px;background:var(--wa-input);border:0;color:var(--wa-in-fg);padding:11px 16px;font-size:.95rem;line-height:1.35;overflow-y:auto}
#v-whatsapp-chat .compose-row textarea:focus,#v-assistant .compose-row textarea:focus{outline:none}
#v-whatsapp-chat .compose-icon,#v-assistant .compose-icon{width:42px;height:42px;flex:0 0 42px;border-radius:50%;border:0;background:transparent;color:var(--wa-muted);font-size:1.35rem}
#v-whatsapp-chat .compose-icon:hover,#v-assistant .compose-icon:hover{color:var(--wa-in-fg);background:color-mix(in srgb,var(--wa-in-fg) 6%,transparent)}
/* Acción destructiva: se tiñe solo al apuntarla, para que esté a mano sin
   gritar desde la cabecera cada vez que se abre el asistente. */
.compose-icon.is-danger{color:var(--fg2)}
#v-assistant .compose-icon.is-danger:hover,.compose-icon.is-danger:hover{color:var(--da);background:color-mix(in srgb,var(--da) 12%,transparent)}
#v-whatsapp-chat .compose-send,#v-assistant .compose-send{background:var(--wa-accent);color:#fff;font-size:1.15rem}
#v-whatsapp-chat .compose-send:hover,#v-assistant .compose-send:hover{filter:brightness(1.08);color:#fff;background:var(--wa-accent)}
#v-whatsapp-chat .compose-send:disabled,#v-assistant .compose-send:disabled{opacity:.35;cursor:not-allowed;filter:none}
.wa-lightbox{display:none;position:absolute;inset:0;z-index:9;background:rgba(11,20,26,.92);place-items:center;padding:24px;cursor:zoom-out}
.wa-lightbox.show{display:grid}.wa-lightbox img{max-width:min(92vw,980px);max-height:86vh;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.45)}
#v-whatsapp-chat .bdg.on,#v-assistant .bdg.on{background:color-mix(in srgb,var(--wa-accent) 18%,transparent);color:var(--wa-accent)}
#v-assistant .assistant-shell{flex:1 1 auto;min-height:0;max-height:100%;grid-template-columns:minmax(0,380px) minmax(0,1fr);background:var(--wa-side);color:var(--wa-in-fg);margin:0!important;padding:0}
#v-assistant .assistant-side{background:var(--wa-side);border-right:1px solid var(--wa-line)}
#v-assistant .ai-thread-list{padding:0}
#v-assistant .ai-thread.conv-item{margin:0;padding:11px 8px 11px 14px;border:0;border-bottom:1px solid var(--wa-line);border-radius:0;background:transparent;color:var(--wa-in-fg);grid-template-columns:49px minmax(0,1fr) auto;align-items:center;gap:12px}
#v-assistant .ai-thread.conv-item:hover,#v-assistant .ai-thread.act,#v-assistant .ai-thread.menu-open{background:var(--wa-act);border-color:transparent;box-shadow:none}
#v-assistant .ai-thread-open{display:block;padding:0;min-width:0;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;border:0;background:transparent}
#v-assistant .ai-thread-title{font-size:.95rem;font-weight:500}
#v-assistant .ai-thread-preview{grid-column:auto;font-size:.8rem;color:var(--wa-muted);margin-top:2px}
#v-assistant .ai-thread-time{color:var(--wa-muted);font-size:.72rem}
#v-assistant .ai-thread-kebab{color:var(--wa-muted)}
#v-assistant .ai-thread-kebab:hover,#v-assistant .ai-thread.menu-open .ai-thread-kebab{background:color-mix(in srgb,var(--wa-in-fg) 8%,transparent);color:var(--wa-in-fg)}
#v-assistant .ai-thread-menu{background:var(--wa-head);border-color:var(--wa-line);color:var(--wa-in-fg)}
#v-assistant .ai-thread-menu button{color:var(--wa-in-fg)}
#v-assistant .ai-thread-menu button:hover{background:var(--wa-act)}
#v-assistant .assistant-main{background:var(--wa-chat);background-image:none}
#v-assistant .assistant-head{min-height:60px;padding:8px 16px;background:var(--wa-head);border-bottom:1px solid var(--wa-line);backdrop-filter:none}
#v-assistant .assistant-messages{padding:12px 6.5% 18px;gap:3px;background-color:var(--wa-chat);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'><g fill='none' stroke='%238a9590' stroke-opacity='.07' stroke-width='1.2'><path d='M40 30c12 8 8 22-2 28M90 70c18-6 22 16 6 22M170 40c8 14-10 20-18 8M210 110c14 4 10 24-8 22M50 150c16 2 14 22-4 24M130 180c10 12-8 22-18 10M200 200c12 8 4 22-10 18'/><circle cx='70' cy='210' r='9'/><circle cx='150' cy='90' r='6'/></g></svg>");background-size:420px}
#v-assistant .assistant-compose{padding:8px 12px 10px;background:var(--wa-compose);border-top:1px solid var(--wa-line);backdrop-filter:none}
#v-assistant .compose-note{color:var(--wa-muted)}
#v-assistant .ai-runtime{background:transparent;border:0;color:var(--wa-muted);padding:0;font-weight:500}
#v-assistant .ai-meta{margin-left:auto}
#v-assistant .msg-side-title #aiNewThread{width:40px;height:40px;color:var(--wa-muted)}
#v-assistant .ai-copy{opacity:.7;color:var(--wa-muted);font-size:.68rem}
#v-assistant .ai-msg-runtime{color:var(--wa-tick)}
#v-assistant .ai-wait span{background:var(--wa-accent)}
#v-assistant .ai-empty{margin:auto;width:min(100%,440px);padding:32px 24px;text-align:center;color:var(--wa-muted)}
#v-assistant .ai-empty h3,#v-assistant .ai-empty h2{margin:0 0 8px;color:var(--wa-in-fg);font-size:1.7rem;font-weight:300;letter-spacing:-.02em}
#v-assistant .ai-empty>p{margin:0 auto;max-width:none;color:var(--wa-muted)}
#v-assistant .ai-empty-mark{width:72px;height:72px;margin:0 auto 18px;border-radius:50%;background:color-mix(in srgb,var(--wa-accent) 16%,transparent);border:0;color:var(--wa-accent);font-size:2.2rem}
#v-assistant .ai-starters{margin-top:18px}
#v-assistant .ai-starter{background:var(--wa-in);border-color:var(--wa-line);color:var(--wa-in-fg)}
#v-assistant .ai-starter i{color:var(--wa-accent)}
#v-assistant .attach-preview,#v-assistant .ai-attach-preview{background:var(--wa-input);color:var(--wa-in-fg);border:0}
.assistant-shell{position:relative;height:calc(100dvh - var(--header-h) - var(--safe-t));max-height:calc(100dvh - var(--header-h) - var(--safe-t));min-height:0;display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);overflow:hidden;padding:0;background:var(--bg);border:0;border-radius:0;box-shadow:none;margin:0}
.assistant-side{display:flex;flex-direction:column;min-width:0;min-height:0;border-right:1px solid var(--bo);background:color-mix(in srgb,var(--bg2) 94%,var(--ac) 6%)}
.assistant-side-head{padding:18px 16px 14px;border-bottom:1px solid var(--bo);display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px}.assistant-side-kicker{display:block;color:var(--ac);font-size:.64rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.assistant-side-head strong{display:block;margin-top:2px;font-size:1rem;letter-spacing:-.02em}.ai-new-label{display:none}
.ai-thread-list{flex:1;min-height:0;overflow:auto;padding:8px}
.ai-thread{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:0;padding:6px 6px 6px 12px;margin:2px 0;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--fg);position:relative}
.ai-thread:hover{background:var(--bgh)}.ai-thread.act{background:var(--bg);border-color:var(--bo2);box-shadow:0 4px 16px rgba(5,24,17,.08)}
.ai-thread.menu-open{z-index:6;background:var(--bg);border-color:var(--bo2)}
.ai-thread-open{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;width:100%;min-width:0;padding:5px 4px 5px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.ai-thread-title{font-size:.84rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-thread-time{font-size:.65rem;color:var(--fg2);font-variant-numeric:tabular-nums}
.ai-thread-preview{grid-column:1/-1;font-size:.72rem;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-thread-more{position:relative;flex:0 0 auto}
.ai-thread-kebab{width:36px;height:36px;border:0;border-radius:9px;background:transparent;color:var(--fg2);display:grid;place-items:center;cursor:pointer}
.ai-thread-kebab:hover,.ai-thread.menu-open .ai-thread-kebab{background:var(--bg3);color:var(--fg)}
.ai-thread-menu{display:none;position:absolute;right:0;top:calc(100% - 2px);z-index:8;min-width:216px;padding:6px;border:1px solid var(--bo2);border-radius:12px;background:var(--bg);box-shadow:var(--sh2)}
.ai-thread.menu-open .ai-thread-menu{display:flex;flex-direction:column}
.ai-thread.menu-up .ai-thread-menu{top:auto;bottom:calc(100% - 2px)}
.ai-thread-menu button{display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:8px 10px;border:0;border-radius:8px;background:transparent;color:var(--fg);font:inherit;font-size:.8rem;font-weight:600;text-align:left;cursor:pointer}
.ai-thread-menu button:hover{background:var(--bgh)}
.ai-thread-menu button.is-danger{color:var(--da)}
.ai-thread-menu i{font-size:1.05rem;width:1.15em;text-align:center}
.assistant-main{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background-color:var(--bg);background-image:radial-gradient(color-mix(in srgb,var(--fg2) 9%,transparent) .7px,transparent .7px);background-size:24px 24px}
.assistant-head{min-height:68px;padding:10px 18px;border-bottom:1px solid var(--bo);display:flex;align-items:center;gap:12px;flex:0 0 auto;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px)}
.assistant-orb{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:var(--ac);background:var(--acg);border:1px solid color-mix(in srgb,var(--ac) 30%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);font-size:1.15rem}.assistant-titleblock{min-width:0;flex:1}.assistant-head h2{margin:0;font-size:.96rem;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.assistant-head p{margin:2px 0 0;color:var(--fg2);font-size:.7rem}.assistant-tools{margin-left:auto;display:flex;align-items:center;gap:6px;flex-shrink:0}.assistant-tools .btn{width:36px;min-height:36px;padding:0;border-radius:9px}.ai-meta{display:inline-flex;align-items:center;gap:6px;min-width:0}.msg-panel-back{display:none}.ai-status{display:inline-flex;align-items:center;gap:7px;font-size:.68rem;padding:6px 9px;border-radius:8px;background:var(--bg3);color:var(--fg2);white-space:nowrap}.ai-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 13%,transparent)}.ai-status.on{background:rgba(53,201,152,.1);color:#35c998}.ai-status.err{background:rgba(248,113,113,.1);color:#f87171}
.ai-runtime{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid color-mix(in srgb,var(--ac) 22%,var(--bo));border-radius:8px;background:var(--acg);color:var(--ac);font-size:.66rem;font-weight:600;white-space:nowrap}.ai-msg-runtime{display:inline-flex;align-items:center;gap:4px;color:var(--ac);font-weight:600}.ai-msg-runtime::before{content:'·';color:var(--fg2);font-weight:400}
.assistant-messages{flex:1 1 auto;min-height:0;overflow:auto;padding:32px max(18px,calc((100% - 900px)/2));display:flex;flex-direction:column;gap:18px;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.ai-msg{position:relative;display:flex;align-items:flex-start;gap:10px;width:min(100%,860px)}.ai-msg.optimistic{animation:aiMessageIn .18s cubic-bezier(.2,.8,.2,1)}.ai-msg.user{align-self:flex-end;flex-direction:row-reverse;width:auto;max-width:min(78%,720px)}.ai-msg-icon{width:30px;height:30px;flex:0 0 30px;border-radius:9px;background:var(--bg3);border:1px solid var(--bo);display:grid;place-items:center;color:var(--ac)}.ai-msg.user .ai-msg-icon{background:var(--ac);border-color:var(--ac);color:#fff}.ai-msg-content{min-width:0}.ai-msg-body{padding:12px 14px;border:1px solid var(--bo);border-radius:6px 15px 15px 15px;background:color-mix(in srgb,var(--bg2) 94%,transparent);white-space:pre-wrap;line-height:1.6;font-size:.86rem;overflow-wrap:anywhere;box-shadow:0 7px 24px rgba(4,23,16,.06)}.ai-msg.user .ai-msg-body{background:var(--acg);border-color:color-mix(in srgb,var(--ac) 24%,transparent);border-radius:15px 6px 15px 15px}.ai-msg-meta{display:flex;align-items:center;gap:8px;margin:5px 3px 0;color:var(--fg2);font-size:.64rem;font-variant-numeric:tabular-nums}.ai-msg.user .ai-msg-meta{justify-content:flex-end}.ai-copy{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;opacity:0;transition:opacity .18s,color .18s}.ai-msg:hover .ai-copy,.ai-copy:focus-visible{opacity:1}.ai-copy:hover{color:var(--ac)}.ai-msg-body.md{white-space:normal}.ai-msg-body.md p,.ai-msg-body.md ul,.ai-msg-body.md ol,.ai-msg-body.md pre{margin:0 0 .65em}.ai-msg-body.md :last-child{margin-bottom:0}.ai-msg-body.md ul,.ai-msg-body.md ol{padding-left:1.25em}.ai-msg-body.md code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em;background:rgba(0,0,0,.1);padding:.12em .35em;border-radius:4px}.ai-msg-body.md pre{background:rgba(0,0,0,.14);padding:11px 13px;border-radius:9px;overflow:auto}.ai-msg-body.md pre code{background:none;padding:0}.ai-msg-body.md a{color:var(--ac)}.ai-pending{opacity:.88}.ai-wait{display:inline-flex;align-items:center;gap:7px;margin-top:9px;color:var(--fg2);font-size:.74rem}.ai-wait span{width:5px;height:5px;border-radius:50%;background:var(--ac);animation:aiPulse 1s infinite}.ai-wait span:nth-child(2){animation-delay:.15s}.ai-wait span:nth-child(3){animation-delay:.3s}@keyframes aiPulse{0%,80%,100%{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@keyframes aiMessageIn{from{opacity:0;transform:translateY(5px) scale(.99)}to{opacity:1;transform:none}}
.ai-empty{margin:auto;width:min(100%,720px);padding:40px 18px;text-align:left}.ai-empty-mark{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--acg);border:1px solid color-mix(in srgb,var(--ac) 28%,transparent);color:var(--ac);font-size:1.35rem}.ai-empty h3{margin:18px 0 7px;font-size:clamp(1.35rem,3vw,2rem);line-height:1.12;letter-spacing:-.045em;text-wrap:balance}.ai-empty>p{max-width:58ch;color:var(--fg2);font-size:.86rem;line-height:1.6}.ai-starters{display:grid;grid-template-columns:1.15fr .85fr;gap:8px;margin-top:22px}.ai-starter{min-height:58px;padding:11px 13px;border:1px solid var(--bo);border-radius:11px;background:color-mix(in srgb,var(--bg2) 88%,transparent);color:var(--fg);font:inherit;font-size:.76rem;text-align:left;cursor:pointer}.ai-starter i{display:block;margin-bottom:4px;color:var(--ac);font-size:1rem}.ai-starter:hover{border-color:color-mix(in srgb,var(--ac) 40%,var(--bo));background:var(--acg);transform:translateY(-1px)}
.assistant-compose{padding:10px max(18px,calc((100% - 900px)/2)) 14px;border-top:1px solid var(--bo);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(16px);flex:0 0 auto}.assistant-compose-inner{border:1px solid var(--bo2);border-radius:15px;background:var(--bg2);padding:7px;box-shadow:0 14px 36px rgba(4,23,16,.12),inset 0 1px 0 rgba(255,255,255,.04)}.assistant-compose .compose-row{align-items:flex-end}.assistant-compose textarea{min-height:42px;max-height:150px;padding:10px 8px;border:0;background:transparent;box-shadow:none!important;resize:none}.assistant-compose .compose-icon{border:0;background:transparent}.assistant-compose .compose-send{border-radius:10px;background:var(--ac);color:#fff}.assistant-compose .compose-note{display:flex;justify-content:space-between;gap:12px;padding:7px 4px 0;font-size:.63rem}.ai-attach-preview{display:none;align-items:center;gap:8px;margin:0 4px 5px;padding:7px 9px;border-radius:8px;background:var(--bg3);font-size:.72rem;color:var(--fg2)}.ai-attach-preview.show{display:flex}.ai-shortcut{font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:1023px){
.app:has(#v-whatsapp-chat.act),.app:has(#v-assistant.act){padding-left:0!important;padding-right:0!important}
#v-whatsapp-chat.act,#v-assistant.act,.assistant-shell{height:calc(100dvh - var(--header-h) - var(--safe-t));max-height:calc(100dvh - var(--header-h) - var(--safe-t));margin:0}
#v-assistant.act{overflow:hidden}
.msg-shell,.assistant-shell,#v-assistant .assistant-shell{grid-template-columns:1fr}
.msg-sidebar,.assistant-side{position:absolute;inset:0;z-index:2}
.msg-shell.has-chat .msg-sidebar,.assistant-shell.has-chat .assistant-side{display:none}
.msg-panel-back{display:grid!important;width:44px;height:44px;flex:0 0 44px;border-radius:12px}
.bubble{max-width:88%}
.chat-messages{padding:8px 4% 14px}
.assistant-messages,.assistant-compose{padding-left:12px;padding-right:12px}
.assistant-compose{padding-bottom:calc(12px + var(--safe-b) + var(--kb))}
.chat-compose{padding-bottom:calc(10px + var(--safe-b) + var(--kb))}
.assistant-head{padding:8px 10px;gap:8px;min-height:56px}
#v-assistant .msg-side-title #aiNewThread{width:auto;min-width:44px;height:36px;border-radius:18px;padding:0 12px;display:inline-flex;align-items:center;gap:4px;font-size:.78rem;font-weight:650;color:var(--wa-in-fg)}
#v-assistant .assistant-messages{padding:8px 4% 14px}
.ai-thread-kebab{width:44px;height:44px}
.ai-new-label{display:inline}
#aiNewThread{min-height:44px;padding:0 12px}
.ai-thread{min-height:52px;padding:8px 6px 8px 10px}
.ai-msg.user{max-width:88%}
.ai-starters{grid-template-columns:1fr}
.ai-empty{padding:28px 6px}
.ai-copy{opacity:1}
.ai-shortcut{display:none}
.assistant-compose textarea,#aiInput,#waChatInput{min-height:44px}
.assistant-compose .compose-icon{width:44px;height:44px;flex:0 0 44px}
.conv-item{min-height:64px;padding:12px 16px}
.conv-list,.ai-thread-list,.chat-messages{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
}
@media(max-width:640px){
.ai-meta,.chat-status{display:none!important}
}
@media(hover:none){
.btn-p:hover,.btn-s:hover,.btn-o:hover,.btn-w:hover,.btn-d:hover{transform:none;box-shadow:none;filter:none}
.btn-p:hover{background:var(--ac)}
.btn-s:hover,.btn-o:hover{background:var(--bg3)}
.tbl tr:hover td{background:var(--bg)}
.tbl tr:nth-child(even):hover td{background:var(--ts)}
.ai-thread:hover{background:transparent}
.ai-thread.act:hover{background:var(--wa-act)}
.ai-starter:hover{transform:none;background:color-mix(in srgb,var(--bg2) 88%,transparent);border-color:var(--bo)}
.conv-item:hover{background:transparent}
.conv-item.act:hover{background:var(--wa-act)}
.sidebar-nav button:hover{background:transparent}
.sidebar-nav button.act:hover{background:var(--acg)}
}

/* Nested list frames. Los totales monetarios viven en .fin-totals. */
/* El alto lo manda la tarjeta, no el scroller. Dárselo al scroller y soltar
   el tope de la tarjeta hacía que la lista midiera una pantalla entera y el
   título, los filtros y el relleno se sumaran encima: la tarjeta acababa
   sobresaliendo del viewport y la página entera scrolleaba. La cadena flex de
   arriba (.list-shell → .list-frame → .list-scroll) ya reparte el espacio
   sobrante, así que basta con no interrumpirla. */
.cd.list-shell>.list-frame>.list-scroll,
.cd.list-shell:has(> .summary-cards)>.list-scroll{flex:1 1 auto;min-height:0;max-height:none}

/* Shared file workspace and document editor, using the existing theme tokens. */
/* ═══════ Cloud: composición propia. La forma de los controles vive en ui.css ═══════ */
.cloud-shell{display:flex;flex-direction:column;gap:14px;position:relative;min-height:0}
.cloud-topbar{display:flex;align-items:center;gap:var(--ui-gap-lg);min-width:0}
.cloud-breadcrumb{display:flex;align-items:center;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none;flex:1}
.cloud-breadcrumb::-webkit-scrollbar{display:none}
.cloud-breadcrumb i{color:var(--fg2);font-size:.85rem;flex-shrink:0}
.cloud-crumb{flex-shrink:0;border:0;background:none;padding:8px 6px;border-radius:8px;color:var(--fg2);font:inherit;font-size:.9rem;cursor:pointer;white-space:nowrap}
.cloud-crumb:hover{background:var(--bgh);color:var(--fg)}
.cloud-breadcrumb .cloud-crumb:last-child{color:var(--fg);font-weight:650;font-size:1.05rem;letter-spacing:-.02em}
.cloud-topbar-tools{display:flex;align-items:center;gap:var(--ui-gap);flex-shrink:0}
.cloud-warn{margin:0;padding:12px 14px;border-radius:var(--rd);background:color-mix(in srgb,var(--wa) 12%,transparent);color:var(--wa);font-size:.82rem}
.cloud-selection{display:flex;align-items:center;gap:var(--ui-gap);padding:8px 10px;border-radius:var(--rd2);background:var(--acg);color:var(--fg);font-size:.85rem}
.cloud-selection[hidden]{display:none}
.cloud-selection strong{margin-right:auto;font-size:.85rem}
.cloud-dropzone{flex:1;min-height:0;overflow:auto;border:1px solid var(--bo);border-radius:var(--rd2);background:var(--bg)}
.cloud-dropzone.is-dragging{outline:2px dashed var(--ac);outline-offset:-6px;background:var(--acg)}
.cloud-listhead,.cloud-item{display:grid;grid-template-columns:34px var(--ui-tile) minmax(0,1fr) 150px 110px 170px var(--ui-tap);align-items:center;gap:12px;padding:0 14px}
.cloud-listhead{position:sticky;top:0;z-index:1;min-height:42px;border-bottom:1px solid var(--bo);background:var(--bg);color:var(--fg2);font-size:.74rem;font-weight:650}
.cloud-listhead .cloud-listhead-name{grid-column:2 / 4}
.cloud-items{list-style:none;margin:0;padding:0}
.cloud-item{min-height:60px;border-bottom:1px solid var(--bo);transition:background .14s}
.cloud-item:last-child{border-bottom:0}
.cloud-item:hover{background:var(--bgh)}
.cloud-item.is-picked{background:var(--acg)}
.cloud-pick{display:grid;place-items:center;width:34px;height:44px;cursor:pointer}
.cloud-pick input{width:18px;height:18px;accent-color:var(--ac);cursor:pointer}
.cloud-open{display:grid;gap:2px;min-width:0;padding:8px 0;border:0;background:none;color:var(--fg);font:inherit;text-align:left;cursor:pointer}
.cloud-item-name{display:flex;align-items:center;gap:8px;min-width:0;font-size:.92rem;font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cloud-open:hover .cloud-item-name{text-decoration:underline}
.cloud-item-meta,.cloud-item-note{color:var(--fg2);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cloud-item-col{color:var(--fg2);font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.cloud-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--fg2);font-size:.78rem}
.cloud-usage,.cloud-pages{display:inline-flex;align-items:center;gap:8px}
.cloud-usage i{font-size:1.05rem;color:var(--ac)}
.cloud-shell.is-grid .cloud-listhead{display:none}
.cloud-shell.is-grid .cloud-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding:14px}
.cloud-shell.is-grid .cloud-item{grid-template-columns:1fr var(--ui-tap);grid-template-areas:"pick more" "thumb thumb" "open open";justify-items:start;gap:6px;padding:12px;border:1px solid var(--bo);border-radius:var(--rd2);min-height:150px}
.cloud-shell.is-grid .cloud-pick{grid-area:pick;height:auto;justify-self:start}
.cloud-shell.is-grid .ui-more{grid-area:more}
.cloud-shell.is-grid .cloud-thumb{grid-area:thumb;justify-self:center;width:54px;height:54px;font-size:1.7rem}
.cloud-shell.is-grid .cloud-open{grid-area:open;width:100%;text-align:center;justify-items:center}
.cloud-shell.is-grid .cloud-item-col{display:none}
.cloud-transfer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--bo)}.cloud-transfer>div{flex:1;min-width:150px;overflow-wrap:anywhere}.cloud-transfer small{display:block;color:var(--fg2)}.cloud-transfer progress{accent-color:var(--ac);max-width:100%;width:160px}
.cloud-media img,.cloud-media video{max-width:100%;max-height:65vh}.cloud-media audio{width:100%}
.cloud-editor-shell>.ct{gap:12px;flex-wrap:wrap}.cloud-editor-shell h3{margin:0;overflow-wrap:anywhere}.cloud-editor-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0}.cloud-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cloud-editor-panes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid var(--bo);border-radius:var(--rd);height:65vh;min-height:350px;overflow:hidden}
#cloudCode{min-width:0;min-height:0;overflow:hidden}.cloud-markdown{padding:24px;overflow:auto;min-width:0;line-height:1.7;background:var(--bg);border-left:1px solid var(--bo);overflow-wrap:anywhere}.cloud-markdown pre{overflow:auto;background:var(--bg2);padding:16px}.cloud-markdown table{border-collapse:collapse;display:block;overflow:auto}.cloud-markdown td,.cloud-markdown th{border:1px solid var(--bo);padding:8px}.cloud-markdown blockquote{border-left:3px solid var(--ac);margin-left:0;padding-left:16px;color:var(--fg2)}
.cloud-editor-panes[data-mode=source],.cloud-editor-panes[data-mode=preview]{grid-template-columns:minmax(0,1fr)}.cloud-editor-panes[data-mode=source] .cloud-markdown,.cloud-editor-panes[data-mode=preview] #cloudCode{display:none}
@media(max-width:1023px){
 .cloud-listhead{display:none}
 .cloud-item{grid-template-columns:var(--ui-tile) minmax(0,1fr) var(--ui-tap);gap:10px;padding:0 8px;min-height:56px}
 .cloud-item-col,.cloud-pick{display:none}
 .cloud-item.is-picked .cloud-pick{display:grid}
 .cloud-topbar-tools .ui-tool{width:var(--ui-tap);padding:0;justify-content:center}
 .cloud-topbar-tools .ui-tool span{display:none}
 .cloud-editor-panes[data-mode=split]{grid-template-columns:minmax(0,1fr);grid-template-rows:1fr 1fr;height:75vh}
 .cloud-markdown{padding:14px;border-left:0;border-top:1px solid var(--bo)}
 .cloud-editor-toolbar .push-end{display:none}
}
@media(max-width:767px){
 .cloud-shell{gap:10px}
 .cloud-dropzone{border-left:0;border-right:0;border-radius:0;margin-inline:calc(var(--mobile-panel-space) * -1)}
 .cloud-items{padding-bottom:80px}
 .cloud-footer{flex-direction:column;align-items:stretch;gap:6px;font-size:.7rem}
 .cloud-pages{justify-content:space-between;order:1}
 .cloud-pages .ui-tool{width:var(--ui-tap);padding:0;justify-content:center}
 .cloud-pages .ui-tool span{display:none}
 .cloud-pages>span{flex:1;text-align:center}
 .cloud-usage{order:2;justify-content:center}
}
@media(prefers-reduced-motion:reduce){.cloud-item{transition:none}}
.cloud-icon-action{width:42px;padding:8px}.cloud-icon-action i{font-size:20px}

/* Cloud: la cabecera de cada columna ordena por ella. Ordenar una lista de
   archivos es de lo que más se hace y vivía enterrado entre ocho campos del
   diálogo de filtros. */
.cloud-sort{display:inline-flex;align-items:center;gap:5px;padding:2px 0;border:0;background:none;color:inherit;font:inherit;font-weight:650;cursor:pointer}
.cloud-sort:hover{color:var(--fg)}
.cloud-sort.is-on{color:var(--ac)}
.cloud-sort:focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:var(--rd)}
.cloud-sort i{font-size:.9rem}
/* La tira de tipos se corta a la derecha sin decirlo: un degradado avisa. */
.cloud-shell .ui-chips{position:relative;mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}

/* Las áreas de Configuración comparten la tira desplazable de Contabilidad:
   en dos filas ocupaban 110 px antes del primer campo. */
.config-tabs.acct-tabs{flex-wrap:nowrap;margin-bottom:14px}
.config-tabs.acct-tabs button{flex:0 0 auto;white-space:nowrap}
