  :root{
    --paper:#f3f1ec;--paper2:#e8e6df;--card:#ffffff;--card2:#f5f4ef;
    --ink:#15282d;--muted:#5a686c;--faint:#8c9699;--line:#e1ddd3;--line2:#d3cdc0;
    --pine:#004b57;--pine2:#0a6b79;--pine-tint:#dcebed;--pine-tint2:#bcdade;--teal:#0a6b79;
    --honey:#cf8a2c;--honey-soft:#f2d6a3;--honey-tint:#f7ecd6;
    --green:#1f8f73;--red:#c8584a;--blue:#3f7fa6;--blue-tint:#e6eef3;--plazo-color:#cf8a2c;
    --r:15px;--sh:0 1px 2px rgba(20,40,45,.05),0 6px 20px rgba(20,50,55,.07);
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{-webkit-text-size-adjust:100%}
  body{font-family:'Hanken Grotesk',sans-serif;color:var(--ink);min-height:100vh;line-height:1.45;-webkit-font-smoothing:antialiased;
    background:radial-gradient(900px 500px at 100% -5%,rgba(207,138,44,.07),transparent 55%),radial-gradient(800px 480px at -5% 105%,rgba(0,75,87,.08),transparent 55%),var(--paper);}
  .dsp{font-family:'Bricolage Grotesque',sans-serif}
  .mono{font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums}
  svg.ic{width:18px;height:18px;flex:none}
  /* minmax(0,1fr) y no 1fr en la columna del contenido: con 1fr la columna NO
       puede achicarse por debajo del ancho mínimo de lo que tiene adentro, así que
       una tabla ancha --el enhancer de columnas le fija min-width en píxeles--
       empujaba la columna y con ella la página entera. Operaciones desbordaba 296px
       a lo ancho por esto. Es el mismo caso que .g-2/.g-2e/.g-3/.g-4, pero un nivel
       más arriba: acá afecta a TODAS las pantallas. */
    .shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}
  .side{background:linear-gradient(180deg,#02333b,#16281f);color:#dfe8e0;padding:20px 14px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}
  .side::-webkit-scrollbar{width:0}
  .brand{display:flex;align-items:center;gap:11px;padding:4px 8px 16px}
  .logo{width:38px;height:38px;border-radius:11px;background:linear-gradient(150deg,#0a6b79,#004b57);display:grid;place-items:center;flex:none;box-shadow:0 6px 16px rgba(0,75,87,.4);border:1px solid rgba(255,255,255,.08)}
  .brand h1{font-family:'Bricolage Grotesque';font-weight:700;font-size:18px;letter-spacing:-.3px;color:#fff;line-height:1.05}
  .brand small{display:block;color:#7fb0b8;font-size:9px;letter-spacing:1.5px;text-transform:uppercase;margin-top:2px}
  .ws{margin:0 6px 14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09);border-radius:11px;padding:9px 11px;display:flex;align-items:center;gap:9px}
  .ws .wsi{width:26px;height:26px;border-radius:7px;background:#2c7355;display:grid;place-items:center;font-weight:700;font-size:12px;color:#fff;flex:none}
  .ws b{font-size:12.5px;display:block;color:#fff}.ws span{font-size:10px;color:#8fae9c}
  .glabel{color:#6f8a7a;font-size:9.5px;letter-spacing:1.6px;text-transform:uppercase;padding:14px 12px 6px;font-weight:700}
  .nav{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;color:#bcccc0;font-weight:500;font-size:13.5px;cursor:pointer;border:1px solid transparent;transition:.16s;position:relative}
  .nav{appearance:none;-webkit-appearance:none;background:transparent;text-align:left;width:100%;font-family:inherit;line-height:inherit}
  .nav .ic{opacity:.75;width:17px;height:17px}
  .nav:hover{background:rgba(255,255,255,.05);color:#fff}
  .nav.on{background:rgba(255,255,255,.07);color:#fff}
  .nav.on::before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--honey)}
  .nav.on .ic{opacity:1;color:var(--honey-soft)}
  .nav:focus-visible{outline:2px solid var(--honey-soft);outline-offset:2px}
  .chlist-row-click{cursor:pointer;transition:background-color .12s ease}
  .chlist-row-click:hover{background:var(--card2)}
  .chlist-row-click:focus-visible{outline:2px solid var(--pine);outline-offset:-2px;background:var(--pine-tint)}
  .chlist-row-click td[role="button"]:focus-visible{outline:2px solid var(--pine);outline-offset:-2px}
  .nav .pill-n{margin-left:auto;font-size:10px;background:rgba(207,138,44,.25);color:var(--honey-soft);padding:1px 7px;border-radius:99px;font-weight:700;font-family:'JetBrains Mono'}
  .wrap{display:flex;flex-direction:column;min-height:100vh}
  .topbar{position:sticky;top:0;z-index:15;background:linear-gradient(180deg,rgba(247,236,214,.55),rgba(244,240,231,.9));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(207,138,44,.12),0 6px 20px -14px rgba(0,75,87,.18);padding:13px 28px;display:flex;align-items:center;gap:12px}
  body[data-view="rent"] .topbar{display:none}
  body[data-view="rent"] .main{padding-top:28px}
  .htitle.fin-title{margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid rgba(0,75,87,.12)}
  .htitle.fin-title h2{font-size:29px;line-height:1.05;letter-spacing:-.2px}
  .htitle.fin-title .sub{font-size:13.5px;margin-top:7px;color:var(--muted)}
  .crumb{font-size:12.5px;color:var(--faint)}.crumb b{color:var(--ink)}
  .search{margin-left:auto;position:relative;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:7px 12px;color:var(--faint);font-size:12.5px;min-width:240px}
  .search input{border:0;background:none;outline:none;font:inherit;color:var(--ink);width:100%}
  .search input::placeholder{color:var(--faint)}
  .search-dd{position:absolute;top:calc(100% + 7px);left:auto;right:0;min-width:min(460px,92vw);max-width:92vw;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 44px rgba(0,75,87,.18);padding:6px;max-height:min(70vh,540px);overflow:auto;z-index:120;display:none}
  @media(max-width:700px){.search-dd{min-width:0;left:0;right:0}}
  .search-dd.show{display:block}
  .sdd-cat{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);padding:10px 10px 5px;position:sticky;top:0;background:var(--card);z-index:1}
  .sdd-cat::after{content:"";flex:1;height:1px;background:var(--line)}
  .sdd-n{order:3;flex:none;background:var(--card2);border-radius:20px;padding:1px 6px;font-size:9.5px;color:var(--muted)}
  /* Cada fila dice sola lo que es: el icono lleva el color del tipo y el tipo
     va escrito en la segunda linea. Asi no depende del encabezado, que al
     bajar por la lista se pierde de vista. */
  .sdd-item{display:flex;gap:9px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;font-size:13px}
  .sdd-ico{flex:0 0 auto;width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
  .sdd-ico>svg{width:13px;height:13px}
  .sdd-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  /* El titular largo se comia el monto: una linea cada uno, y con puntos
     suspensivos si no entra. */
  .sdd-t1{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sdd-t2{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sdd-tipo{font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:9.5px;color:var(--faint)}
  .sdd-monto{flex:0 0 auto;font-family:"JetBrains Mono";font-size:12px;font-weight:600;color:var(--ink)}
  .sdd-item mark{background:var(--honey-soft);color:var(--ink);border-radius:3px;padding:0 1px}
  .sdd-item:hover,.sdd-item.sel{background:var(--pine-tint)}
  .sdd-item:hover .sdd-t1,.sdd-item.sel .sdd-t1{color:var(--pine)}
  .newmenu{position:relative}
  .newmenu-dd{position:absolute;top:calc(100% + 7px);right:0;min-width:250px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(0,75,87,.16);padding:6px;z-index:40;display:none}
  .newmenu-dd.show{display:block}
  .newmenu-head{padding:8px 9px 9px;margin-bottom:3px;border-bottom:1px solid var(--line)}
  .newmenu-head b{display:block;font-size:13px;color:var(--ink)}
  .newmenu-head span{display:block;font-size:11px;color:var(--muted);margin-top:1px}
  /* Encabezado cuando el "+" está acotado a un contrato */
  .newmenu-head.ctx{background:var(--pine-tint);border-radius:9px;border-bottom:0;margin:-2px -2px 5px}
  .newmenu-head.ctx b{color:var(--pine);display:flex;align-items:center;gap:6px}
  .newmenu-head.ctx span{color:var(--pine2);font-weight:600}
  .newmenu-item{display:flex;align-items:center;gap:11px;width:100%;padding:8px 9px;border-radius:11px;cursor:pointer;font-size:13px;font-weight:600;background:none;border:0;text-align:left;color:var(--ink);transition:.14s}
  .newmenu-item:hover{background:var(--card2)}
  .newmenu-item:active{transform:scale(.98)}
  .newmenu-item .nmi-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;flex:none}
  .newmenu-item .nmi-ico .ic{width:16px;height:16px}
  .newmenu-item .nmi-chev{margin-left:auto;flex:none;color:var(--faint);opacity:0;transform:translateX(-3px);transition:.14s}
  .newmenu-item:hover .nmi-chev{opacity:1;transform:translateX(0)}
  .fab-new{position:fixed;right:24px;bottom:24px;z-index:38;width:58px;height:58px;border-radius:50%;border:0;background:var(--pine);color:#fff;display:grid;place-items:center;box-shadow:0 14px 32px rgba(0,75,87,.32);cursor:pointer;transition:.16s}
  .fab-new:hover{transform:translateY(-2px);background:var(--pine2)}
  .fab-new .ic{width:25px;height:25px}
  .fab-menu{position:fixed;right:24px;bottom:92px;z-index:39;width:min(300px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 48px rgba(0,75,87,.22);padding:7px;display:none}
  .fab-menu.show{display:block}
  .sync-mini{margin-top:auto;padding:14px 9px 4px;color:rgba(223,232,224,.72);font-size:11.5px;line-height:1.35;border-top:1px solid rgba(255,255,255,.08)}
  .sync-mini b{display:block;color:#fff;font-size:12px;margin-bottom:2px}
  .rs-build{padding:0 9px 10px;color:rgba(223,232,224,.4);font-size:9.5px;letter-spacing:.02em;cursor:pointer;user-select:none}
  .install-prompt{position:fixed;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:37;width:min(430px,calc(100vw - 24px));background:rgba(255,255,255,.97);border:1px solid var(--line);border-left:4px solid var(--pine);border-radius:16px;box-shadow:0 18px 50px rgba(20,50,55,.18);padding:12px 13px;display:none;align-items:center;gap:11px}
  .install-prompt.on{display:flex}
  .install-prompt img{width:38px;height:38px;border-radius:10px;object-fit:cover;flex:none}
  .install-prompt b{display:block;font-size:13px;color:var(--ink)}
  .install-prompt span{display:block;font-size:11.5px;color:var(--muted);line-height:1.25}
  .install-prompt .ip-actions{margin-left:auto;display:flex;gap:6px;align-items:center}
  .install-prompt .btn{min-height:34px;padding:6px 10px}
  .update-banner{bottom:calc(150px + env(safe-area-inset-bottom));border-left-color:var(--honey)}
  .net-banner{display:none;align-items:center;justify-content:center;gap:8px;padding:9px 14px;font-size:12.5px;font-weight:700;color:#fff;text-align:center}
  .net-banner.on{display:flex}
  .net-banner.off{background:var(--red)}
  .net-banner.back{background:var(--green)}
  .busy-overlay{display:none;position:fixed;inset:0;z-index:200;background:rgba(21,40,45,.28);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);align-items:center;justify-content:center}
  .busy-overlay.on{display:flex}
  .busy-box{background:var(--card);border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.28);padding:18px 26px;display:flex;flex-direction:column;align-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--ink);min-width:230px;overflow:hidden}
  .busy-track{width:190px;height:40px;position:relative;overflow:hidden}
  .busy-track::after{content:'';position:absolute;left:0;right:0;bottom:3px;height:2px;background:repeating-linear-gradient(90deg,var(--line2) 0 6px,transparent 6px 12px)}
  .busy-tractor{position:absolute;bottom:2px;color:var(--pine);display:inline-flex;animation:busyDrive 3.2s ease-in-out infinite}
  .busy-tractor svg{width:26px;height:26px}
  /* Rolado = pasar la topadora y voltear el monte para hacer campo -- el
     loader le hace un guiño: va tumbando los árboles a medida que avanza. */
  .busy-tree{position:absolute;bottom:4px;color:var(--pine2);transform-origin:bottom center;animation-duration:3.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
  .busy-tree svg{width:16px;height:16px;display:block}
  .busy-tree.t1{left:44px;animation-name:busyTree1}
  .busy-tree.t2{left:90px;animation-name:busyTree2}
  .busy-tree.t3{left:136px;animation-name:busyTree3}
  @keyframes busyDrive{
    0%{left:0;opacity:1}
    88%{left:158px;opacity:1}
    91%{left:158px;opacity:0}
    92%{left:0;opacity:0}
    96%{left:0;opacity:1}
    100%{left:0;opacity:1}
  }
  @keyframes busyTree1{0%,24%{transform:rotate(0)}27%,90%{transform:rotate(88deg)}92%,100%{transform:rotate(0)}}
  @keyframes busyTree2{0%,49%{transform:rotate(0)}52%,90%{transform:rotate(88deg)}92%,100%{transform:rotate(0)}}
  @keyframes busyTree3{0%,75%{transform:rotate(0)}78%,90%{transform:rotate(88deg)}92%,100%{transform:rotate(0)}}
  /* Pantalla de apertura (login cargando / boot de sesión). Autocontenida a
     propósito -- no depende de .login-logo-frame ni de sus ~6 breakpoints
     superpuestos, que en algunos anchos dejaban un fondo blanco sólido
     detrás del logo transparente. */
  .rs-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 120% at 50% 12%,#0d6e63 0%,#004b57 46%,#00323b 100%);overflow:hidden}
  .rs-splash-content{display:flex;flex-direction:column;align-items:center;gap:20px;animation:rsSplashIn .55s ease both}
  .rs-splash-logowrap{width:min(200px,52vw);filter:drop-shadow(0 20px 36px rgba(0,0,0,.38))}
  .rs-splash-logowrap img{width:100%;display:block;animation:rsSplashFloat 2.6s ease-in-out infinite}
  .rs-splash-brand{font-family:'Bricolage Grotesque',sans-serif;color:#f3efe6;font-weight:800;letter-spacing:.14em;font-size:13px;text-transform:uppercase;text-align:center}
  .rs-splash-status{display:flex;align-items:center;gap:10px;color:#cfe3dc;font-size:13px}
  .rs-splash-dots{display:inline-flex;gap:5px}
  .rs-splash-dots i{width:6px;height:6px;border-radius:50%;background:#e2c48a;display:inline-block;animation:rsSplashDot 1.1s ease-in-out infinite;font-style:normal}
  .rs-splash-dots i:nth-child(2){animation-delay:.15s}
  .rs-splash-dots i:nth-child(3){animation-delay:.3s}
  @keyframes rsSplashIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
  @keyframes rsSplashFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
  @keyframes rsSplashDot{0%,50%,100%{opacity:.35;transform:translateY(0)}25%{opacity:1;transform:translateY(-4px)}}
  .gm-head{display:flex;align-items:center;gap:10px}
  .gm-btn{width:22px;height:22px;border-radius:7px;background:var(--pine);color:#fff;display:inline-grid;place-items:center;font-weight:800;font-size:14px}

  .sdd-empty{display:flex;flex-direction:column;align-items:center;gap:3px;padding:22px 12px;color:var(--muted);font-size:12.5px;text-align:center}
  .sdd-empty>svg{color:var(--faint);margin-bottom:3px}
  .sdd-empty b{color:var(--ink);font-size:13px}
  .sdd-empty span{font-size:11.5px;color:var(--faint)}
  .chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
  .chip2{border:1px solid var(--line);background:var(--card);color:var(--muted);border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
  .chip2:hover{border-color:var(--pine2);color:var(--pine)}
  .chip2.on{background:var(--pine);border-color:var(--pine);color:#fff}
  .chip2 .cnt{background:rgba(0,75,87,.1);color:inherit;border-radius:999px;padding:0 7px;font-size:11px;font-weight:700}
  .chip2.on .cnt{background:rgba(255,255,255,.22)}
  .opsearch{display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--faint);flex:1;min-width:220px}
  .opsearch input{border:0;background:none;outline:none;font:inherit;color:var(--ink);width:100%}
  /* Los 8 tipos de operación entran en UNA fila. Con minmax(180px) entraban 6
     y las 2 restantes quedaban en una segunda fila con medio ancho vacío.
     auto-fit + un mínimo más chico las reparte parejo y no deja el hueco. */
  /* Cabecera del detalle de operación en modo edición: ocupa el lugar del hero
     y se distingue con el borde ámbar, para que quede claro que lo de abajo
     sigue siendo la operación y no otro formulario. */
  .dt-edit{border:1px solid var(--honey);border-radius:14px;background:var(--honey-tint);padding:13px 14px 12px;margin-bottom:12px}
  .dt-edit-hd{display:flex;align-items:center;gap:7px;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:#a9641c;margin-bottom:11px}
  .dt-edit .field{margin-bottom:10px}
  .dt-edit .field input,.dt-edit .field select{background:var(--card)}
  .dt-edit-nota{margin:9px 0 0;padding-top:9px;border-top:1px dashed rgba(169,100,28,.35)}
  .dt-edit-nota.peligro{color:#a9641c;font-weight:600}
  .dt-edit-origin{margin:3px 0 10px;padding:10px 11px;border:1px solid rgba(169,100,28,.28);border-radius:11px;background:rgba(255,255,255,.44)}
  .dt-edit-origin-hd{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8a581c}
  .opcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(134px,1fr));gap:9px;margin-bottom:12px}
  .opcard{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 10px;cursor:pointer;transition:.15s;min-width:0}
  /* Nada envuelve: al meterlas en una fila, "207 op · +$165M" se partía en dos
     renglones y las tarjetas pasaban de 64 a 95px de alto. */
  .opcard>div:last-child{min-width:0;overflow:hidden}
  .opcard .tico{flex:0 0 26px;width:26px;height:26px;border-radius:8px}
  /* Barra de filtros en una sola línea: buscador elástico y el resto del ancho
     natural. Antes el .seg2 tenía width:100% y se comía toda la fila, y las dos
     fechas caían en un renglón aparte con el resto vacío. */
  /* Los tres controles con la MISMA altura, o la fila se ve desprolija (venían
     de 39, 42 y 36px cada uno). */
  .opfilters{display:flex;gap:9px;align-items:center;flex-wrap:wrap;--ctl:40px}
  .opfilters>*{height:var(--ctl)}
  .opfilters .seg2{width:auto;flex:none;padding:3px}
  .opfilters .seg2 button{flex:none;padding:0 15px;min-height:0;height:100%}
  .opfilters .opsearch{padding:0 12px;min-width:200px}
  .opfilters .btn{padding:0 14px}
  .drange{display:flex;align-items:center;gap:7px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:0 10px;flex:none}
  .drange .lb{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--faint);flex:none}
  .drange input{border:0;background:none;outline:none;font:inherit;font-size:12.5px;color:var(--ink);padding:2px 0;width:118px;min-width:0}
  .drange .sep{color:var(--faint);flex:none;display:inline-flex}
  /* En el celular los tres controles se apilan, así que van a ancho completo:
     con el ancho natural quedaban de 331, 302 y 341px, cada uno terminando en
     un borde distinto. */
  @media(max-width:640px){
    /* width:100% no alcanzaba: .opsearch y .seg2 son items flex con flex-basis
       propio, y el basis le gana al width sobre el eje principal. El buscador
       terminaba en 57px (el input adentro, en 8) en un celular de 412px: un
       recuadro con la lupa y nada mas. Con flex-basis 100% cada control ocupa
       su propia fila, que es lo que decia la intencion de arriba. */
    .opfilters>*{width:100%;flex:0 0 100%}
    .opfilters .opsearch,.opfilters .seg2{flex:0 0 100%;min-width:0}
    .drange{flex:1 1 auto}
    .drange input{flex:1 1 0;width:auto}
    .opfilters .seg2{display:flex}
    .opfilters .seg2 button{flex:1}
  }
  .chklist{display:flex;flex-direction:column;gap:7px}
  .subtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
  .calgrp{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700;margin:10px 0 4px;display:flex;align-items:center;gap:6px}
  .calgrp.hoy{background:#d3e8e4;color:var(--pine);margin-left:-8px;margin-right:-8px;padding:7px 8px;border-left:4px solid var(--honey);border-radius:8px;box-shadow:0 2px 8px rgba(0,75,87,.12)}
  .calgrp span{background:var(--pine-tint);color:var(--pine);border-radius:20px;padding:0 7px;font-size:10px}
  .calgrp.hoy span{background:var(--card);font-weight:800}
  .calgrp:first-child{margin-top:0}
  .calrow{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:5px 2px;border-bottom:1px solid var(--line)}
  .calrow .cn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Los saldos bancarios se cargaban con class="inp saldo-inp" y NINGUNA de las
     dos existía en el CSS, así que ese input salía con el estilo crudo del
     navegador --sin borde redondeado, con la tipografía del sistema-- en el
     medio de una pantalla que usa el estilo de la app en todo lo demás. */
  .calrow input{border:1px solid var(--line2);background:var(--card);border-radius:9px;padding:7px 10px;
    font-size:13px;color:var(--ink)}
  .calrow input:focus{outline:none;border-color:var(--pine);box-shadow:0 0 0 3px rgba(0,75,87,.08)}
  .calrow .cd{color:var(--faint);flex:none}
  /* Las 3 listas del Calendario (Para depositar/A vencer/A cubrir) no tenían
     techo: con la cartera real podían estirar la página mucho más de lo que
     entra en pantalla. Con altura contenida + scroll propio, como el resto
     de los listados largos de la app. */
  .calscroll{max-height:340px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:auto;scrollbar-width:thin;scrollbar-color:var(--pine) var(--card2)}
  .aichat{display:flex;flex-direction:column;max-width:860px;margin:0 auto}
  .aimsgs{flex:1;min-height:300px;max-height:54vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px 2px}
  .aimsg{display:flex}
  .aimsg.user{justify-content:flex-end}
  .aimsg.bot{justify-content:flex-start}
  .aibub{max-width:84%;padding:11px 14px;border-radius:14px;font-size:13.5px;line-height:1.55}
  .aimsg.user .aibub{background:var(--pine);color:#fff;border-bottom-right-radius:4px}
  .aimsg.bot .aibub{background:var(--card2,#fff);border:1px solid var(--line);border-bottom-left-radius:4px}
  .aibub .aili{margin:2px 0 2px 4px}
  .aibub b{font-weight:700}
  .aitool{font-size:11.5px;color:var(--muted);display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--pine-tint);border-radius:20px}
  .aithink{display:inline-flex;gap:4px;align-items:center}
  .aithink span{width:7px;height:7px;border-radius:50%;background:var(--faint);animation:aibounce 1.2s infinite}
  .aithink span:nth-child(2){animation-delay:.2s}.aithink span:nth-child(3){animation-delay:.4s}
  @keyframes aibounce{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
  .aiwelcome{margin:auto;text-align:center;color:var(--muted);max-width:420px;padding:24px}
  .aiwelcome svg{color:var(--pine);opacity:.8}
  .aiwelcome h3{margin:10px 0 6px;color:var(--ink)}
  .aiwelcome p{font-size:13px;line-height:1.5}
  .aisug{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
  .aicomposer{display:flex;gap:8px;align-items:flex-end;margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
  #aiinput,#chatinput{flex:1;width:100%;resize:none;max-height:120px;min-height:44px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:13.5px;background:var(--card);color:var(--ink);box-sizing:border-box}
  #aiinput:focus,#chatinput:focus{outline:none;border-color:var(--pine2)}
  .aicomposer .btn-pri{padding:11px 16px;align-self:stretch}
  /* Popup de @menciones (personas del equipo + IA) */
  .mention-pop{position:absolute;left:8px;right:8px;bottom:calc(100% + 6px);max-width:340px;background:var(--card);border:1px solid var(--line2);border-radius:12px;box-shadow:var(--sh);padding:5px;z-index:60;max-height:230px;overflow-y:auto}
  .mention-opt{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;background:none;border-radius:9px;cursor:pointer;text-align:left;color:var(--ink)}
  .mention-opt:hover,.mention-opt.on{background:var(--pine-tint)}
  .mment-av,.mment-ia{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:none}
  .mment-av{background:var(--pine);color:#fff}
  .mment-ia{background:var(--honey-tint);color:var(--honey)}
  .mment-n{display:flex;flex-direction:column;line-height:1.2;min-width:0}
  .mment-n b{font-size:13px}
  .mment-n span{font-size:11px;color:var(--muted);text-transform:capitalize}
  .chattext .ment,.aibub .ment{color:var(--pine2);font-weight:700;background:var(--pine-tint);border-radius:5px;padding:0 3px}
  /* Tabla editable de cheques reconocidos por la IA */
  .chkreco{margin:10px 0;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:10px 11px}
  .chkreco-h{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;margin-bottom:8px}
  .chkreco-h b{color:var(--pine)}
  /* Tabla en filas: una fila por cheque. table-layout fixed + width 100% => sin
     scroll horizontal, así los desplegables de Banco/Titular no se cortan. */
  .chkreco-t{margin-top:2px;table-layout:fixed;width:100%}
  .chkreco-t th{font-size:9px;letter-spacing:.04em;white-space:nowrap;padding:4px 5px}
  .chkreco-t td{padding:4px 4px;vertical-align:middle}
  .chkreco-t th:nth-child(1),.chkreco-t td:nth-child(1){width:17%}
  .chkreco-t th:nth-child(2),.chkreco-t td:nth-child(2){width:18%}
  .chkreco-t th:nth-child(3),.chkreco-t td:nth-child(3){width:23%}
  .chkreco-t th:nth-child(4),.chkreco-t td:nth-child(4){width:25%}
  .chkreco-t th:nth-child(5),.chkreco-t td:nth-child(5){width:17%}
  .chkreco-t .combo{width:100%;position:relative}
  .chkedit{width:100%;min-width:0;border:1px solid var(--line2);border-radius:8px;padding:7px 7px;font:inherit;font-size:12px;background:var(--card);color:var(--ink)}
  .chkreco-t .combo .chkedit{padding-right:22px}
  .chkreco-t .combo-pop{min-width:170px}
  .chkedit.r{text-align:right}
  .chkedit:focus{outline:none;border-color:var(--pine2)}
  /* Encabezado de filtros de Financieras */
  .fin-filter{padding:15px 16px}
  .fin-fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px}
  .fin-fbar{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
  .fin-factions{display:flex;gap:8px;margin-left:auto}
  @media(max-width:640px){.fin-fgrid{grid-template-columns:1fr 1fr}.fin-fgrid .field:first-child{grid-column:1/-1}.fin-fbar{gap:10px}.fin-factions{margin-left:0;width:100%}.fin-factions .btn{flex:1;justify-content:center}}
  .chip2{padding:8px 13px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--pine);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;transition:.14s}
  .chip2:hover{border-color:var(--pine2);background:var(--pine-tint)}
  .opcardai{max-width:84%;border:1px solid var(--pine2);border-radius:14px;background:var(--card);padding:13px 15px;border-bottom-left-radius:4px}
  .opcardai .oct{font-weight:800;color:var(--pine);display:flex;align-items:center;gap:7px;font-size:14px}
  .opcardai .ocsum{font-size:12.5px;color:var(--muted);margin:6px 0 10px;line-height:1.45}
  .opcardai .ocr{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:5px 0;border-bottom:1px solid var(--line)}
  .opcardai .ocr span{color:var(--muted)}
  .opcardai .ocwarn{margin-top:9px;font-size:12px;color:var(--honey);display:flex;align-items:center;gap:6px}
  .opcardai .ocacts{margin-top:11px}
  .aithumbs{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 0}
  .pdfdrop{display:flex;align-items:center;gap:12px;border:1.5px dashed var(--pine2);background:var(--pine-tint);border-radius:12px;padding:11px 13px;margin-bottom:8px}
  .pdfdrop .pdfdt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
  .pdfdrop .pdfdt b{color:var(--pine);font-size:13px;display:flex;align-items:center;gap:6px}
  .pdfdrop .btn{flex:none}
  /* Par de tarjetas "elegí cómo cargar" (comprobante vs. a mano) con el mismo
     peso visual -- antes eran un botón chico al lado de un párrafo largo,
     que en mobile quedaba angosto y feo (texto en columna de una palabra).
     Se apilan en pantallas muy angostas para no achicarse de más. */
  .loadchoice{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:2px 0 4px}
  .loadchoice-opt{display:flex;align-items:center;gap:10px;text-align:left;border:1.5px solid var(--line2);background:var(--card);border-radius:13px;padding:11px 12px;cursor:pointer;transition:.15s;font-family:inherit;color:inherit}
  .loadchoice-opt:hover{border-color:var(--pine2);background:var(--pine-tint)}
  .loadchoice-opt .lc-ico{width:34px;height:34px;border-radius:10px;background:var(--pine-tint);color:var(--pine);display:grid;place-items:center;flex:none}
  .loadchoice-opt .lc-txt{display:flex;flex-direction:column;gap:1px;min-width:0}
  .loadchoice-opt .lc-txt b{font-size:12.5px;line-height:1.2;color:var(--ink)}
  .loadchoice-opt .lc-txt span{font-size:10.5px;color:var(--muted);line-height:1.25}
  @media(max-width:400px){.loadchoice{grid-template-columns:1fr}}
  .chatfiles{display:flex;gap:8px;flex-wrap:wrap;padding:8px 0 0}
  .chatfile{display:inline-flex;align-items:center;gap:6px;background:var(--pine-tint);border:1px solid var(--line);border-radius:20px;padding:4px 8px 4px 10px;font-size:12px;color:var(--pine);font-weight:600}
  .chatfile .chatfx{background:none;border:0;cursor:pointer;color:var(--muted);display:flex;padding:0}
  .chatattachs{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,160px));gap:8px;margin:2px 0 8px}
  .chatattach{display:block;border-radius:14px;overflow:hidden;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);max-width:190px}
  .chatrow:not(.mine) .chatattach{background:var(--paper);border-color:var(--line)}
  .chatattach img{display:block;width:100%;height:108px;object-fit:cover;background:var(--paper2)}
  .chatattach .afn{display:block;padding:6px 8px;font-size:11px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chatattach.file{display:flex;align-items:center;gap:8px;padding:9px 10px;min-height:38px}
  .aithumb{position:relative;width:62px;height:62px;border-radius:9px;overflow:hidden;border:1px solid var(--line)}
  .aithumb img{width:100%;height:100%;object-fit:cover}
  .aithx{position:absolute;top:2px;right:2px;width:18px;height:18px;border:none;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
  .aiclip{display:flex;align-items:center;justify-content:center;width:42px;align-self:stretch;border:1px solid var(--line);border-radius:12px;color:var(--pine);cursor:pointer;background:var(--card);transition:.14s}
  .aiclip:hover{border-color:var(--pine2);background:var(--pine-tint)}
  .aimsgimgs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
  .aimsgimgs img{width:84px;height:84px;object-fit:cover;border-radius:8px}
  .chatrow{display:flex;gap:10px;align-items:flex-start;padding:7px 2px;position:relative}
  /* flex:1 hacía que CUALQUIER mensaje, aunque fuera "HOLA", estirara la
     burbuja hasta el max-width de la fila -- las burbujas cortas se veían
     enormes. Con flex:0 1 auto, la burbuja se ajusta al contenido (como
     cualquier chat) y el max-width de abajo sólo actúa de tope para los
     mensajes largos. */
  .chatmsg{flex:0 1 auto;min-width:0;max-width:78%}
  .chatwho{font-size:12px;font-weight:700;color:var(--pine);margin-bottom:2px}
  .chatwho .chatt{font-weight:400;color:var(--faint);font-size:11px;margin-left:6px}
  .chattext{font-size:13.5px;line-height:1.5}
  .pinb{flex:none;border:none;background:none;color:var(--line);cursor:pointer;padding:2px;border-radius:6px}
  .pinb:hover{color:var(--honey)}.pinb.on{color:var(--honey)}
  .aimsg.bot .chatwho{margin-bottom:4px}
  .chatact{margin-top:8px;font-size:12px;color:var(--pine);background:var(--pine-tint);border-radius:8px;padding:5px 9px;display:inline-flex;align-items:center;gap:6px}
  .opactions{display:flex!important;flex-wrap:wrap!important;gap:7px!important;align-items:center!important}.opactions>span{font-weight:800;margin-right:2px}.opactions .btn{padding:6px 10px!important}
  .briefcard{border-left:3px solid var(--pine)}
  .briefh{font-weight:800;color:var(--pine);display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:10px}
  .brieflist{display:flex;flex-direction:column;gap:2px}
  .briefrow{display:flex;align-items:center;gap:9px;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line)}
  .briefrow b{margin-left:auto;color:var(--pine);font-variant-numeric:tabular-nums}
  .briefrow.urg{color:var(--red)}.briefrow.urg b{color:var(--red)}
  .briefrow svg{flex:none;color:var(--pine)}.briefrow.urg svg{color:var(--red)}
  .remrow{display:flex;gap:11px;align-items:flex-start;padding:9px 2px;border-bottom:1px solid var(--line)}
  .remrow.done{opacity:.5}.remrow.done>div>div:first-child{text-decoration:line-through}
  .remchk{flex:none;width:22px;height:22px;border:1.5px solid var(--line);border-radius:6px;background:var(--card);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;padding:0}
  .remchk.on{background:var(--green);border-color:var(--green)}
  .rempanel{display:grid;gap:14px}
  .remgroup{border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,var(--paper));overflow:hidden}
  .remgroup-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:rgba(11,92,98,.04)}
  .remgroup-h b{color:var(--pine);letter-spacing:.08em;text-transform:uppercase;font-size:11px}
  .remitem{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:flex-start;padding:13px 14px;border-bottom:1px solid var(--line)}
  .remitem:last-child{border-bottom:none}
  .remitem.done{opacity:.72}.remitem.done .remtext{text-decoration:line-through;color:var(--muted)}
  .remtext{font-weight:750;color:var(--ink);line-height:1.35}
  .remmeta{display:flex;flex-wrap:wrap;gap:8px;margin-top:5px;color:var(--muted);font-size:12px}.remmeta b{color:var(--red)}
  .rembadge{border:1px solid var(--line);background:var(--pine-tint);color:var(--pine);border-radius:999px;padding:3px 8px;font-weight:800;font-size:11px}
  .remdel{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:10px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer}
  .remdel:hover{border-color:var(--red);color:var(--red);background:#fff5f2}
  @media(max-width:680px){.remitem{grid-template-columns:auto 1fr;gap:10px}.remdel{grid-column:2;justify-self:start;width:auto;padding:0 10px}}
  .urow{display:flex;gap:11px;align-items:center;padding:10px 8px;border:1px solid var(--line);border-radius:11px;margin-bottom:8px}
  .urow:hover{border-color:var(--pine2);background:var(--pine-tint)}
  .evrow{display:flex;gap:11px;align-items:center;justify-content:space-between;padding:11px 2px;border-bottom:1px solid var(--line)}
  .evrow:last-child{border-bottom:none}
  .evtxt b{color:var(--pine)}
  .evacts{display:flex;gap:6px;flex:none}
  .chattabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
  .chattab{display:flex;align-items:center;gap:6px;padding:8px 13px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:12.5px;font-weight:600;cursor:pointer}
  .chattab.on{background:var(--pine);border-color:var(--pine);color:#fff}
  .chattab.on svg{color:#fff}
  .chattab-new{border-style:dashed;color:var(--muted)}
  .grpmembers{max-height:220px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;padding:4px;margin-top:4px}
  .grpmember{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:8px;cursor:pointer;font-size:13px}
  .grpmember:hover{background:var(--pine-tint)}
  .chathead{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--pine);font-size:13.5px;padding-bottom:11px;margin-bottom:6px;border-bottom:1px solid var(--line);flex-wrap:wrap}
  .chat-room-meta{display:flex;flex-direction:column;min-width:0;gap:1px;line-height:1.2}
  .chat-room-sub{font-size:11px;color:var(--muted);font-weight:500}
  .chathead svg{flex:none}
  .chatbadge{background:var(--red);color:#fff;border-radius:20px;padding:1px 9px;font-size:11px;font-weight:700}
  .chatfeed{min-height:320px!important;max-height:58vh;background:linear-gradient(180deg,#f7f5ef,#f2eee5);border-radius:14px;padding:18px!important;scrollbar-color:var(--line) transparent}
  .chatrow{max-width:82%;padding:4px 0;margin:4px 0}
  .chatrow .chatmsg{background:var(--card);border:1px solid var(--line);border-radius:4px 15px 15px 15px;padding:9px 12px;box-shadow:0 2px 8px rgba(0,75,87,.06)}
  .chatrow.mine{margin-left:auto;flex-direction:row-reverse}
  .chatrow.mine .chatmsg{background:var(--pine);border-color:var(--pine);color:#fff;border-radius:15px 4px 15px 15px}
  .chatrow.mine .chatwho,.chatrow.mine .chatt{color:#d7ebe5}
  .chatrow.mine .chattext{color:#fff}
  .chatread{margin-top:5px;display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:#cfe7df;font:700 10.5px/1.1 'Hanken Grotesk',sans-serif;padding:0;cursor:pointer;opacity:.92;float:right}
  .chatread .ticks{font-size:13px;letter-spacing:-3px;margin-right:2px}.chatread.read{color:#7ed7ff}.chatread small{font-size:10.5px;font-weight:700}.chatread:hover{text-decoration:underline}
  .readrow{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}.readrow:last-child{border-bottom:0}.readrow .rmeta{flex:1}.readrow b{display:block;color:var(--ink)}.readrow span{font-size:12px;color:var(--muted)}
  .chatrow.mine .pinb{color:var(--pine)}
  .chatpanel{border:1px solid rgba(0,75,87,.14)!important;box-shadow:0 8px 28px rgba(28,59,46,.08)!important;overflow:hidden}
  .chatpanel .chathead{padding:14px 16px;margin:0;background:var(--card);border-bottom:1px solid var(--line)}
  .chatpanel .aicomposer{margin:0;padding:12px;background:var(--card);border-top:1px solid var(--line)}
  .chattool{width:42px;height:42px;border-radius:50%!important;padding:0!important;display:grid!important;place-items:center;flex:none}
  .chattool.recording{background:var(--red)!important;color:#fff!important;border-color:var(--red)!important;animation:micpulse 1.2s infinite}
  .chatrec{font-size:11px;font-weight:800;color:var(--red);min-width:34px;text-align:center}
  .chataudio{display:block;width:min(300px,65vw);height:36px;margin-top:4px}
  .chatwarnings{margin-top:14px}
  .chatwarnings .note{font-size:12px;padding:10px 13px}
  @keyframes micpulse{50%{box-shadow:0 0 0 7px rgba(200,88,74,.15)}}
  .briefbub{background:var(--pine-tint)!important;border-color:var(--pine2)!important}
  .briefbub .chatwho{color:var(--pine)}

  .chat-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:14px;align-items:stretch}
  .chat-sidebar{min-width:0}
  .chat-list-card{height:100%;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px;box-shadow:0 8px 24px rgba(28,59,46,.06)}
  .chat-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 4px 10px;border-bottom:1px solid var(--line);margin-bottom:7px}
  .chat-list-head b{display:block;color:var(--ink);font-size:14px}.chat-list-head span{display:block;color:var(--muted);font-size:11.5px;margin-top:1px}
  .chat-list{display:flex;flex-direction:column;gap:4px}
  .chatitem{width:100%;display:flex;align-items:center;gap:10px;border:0;background:transparent;text-align:left;color:var(--ink);padding:10px 8px;border-radius:13px;cursor:pointer;font:inherit;transition:.14s}
  .chatitem:hover{background:var(--card2)}.chatitem.on{background:var(--pine-tint);box-shadow:inset 3px 0 0 var(--pine)}
  .chatav{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:none;background:var(--card2);color:var(--pine);border:1px solid var(--line)}
  .chatitem.on .chatav{background:var(--pine);border-color:var(--pine);color:#fff}
  .chatmeta{flex:1;min-width:0}.chatmeta b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chatmeta span{display:block;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
  .chattime{font-size:10.5px;color:var(--faint);align-self:flex-start;margin-top:3px;white-space:nowrap}
  .chat-main{min-width:0}.chatback{display:none}
  .chatpanel{height:100%;display:flex;flex-direction:column}.chatpanel .chatfeed{flex:1;min-height:430px!important}
  @media(max-width:760px){
    body[data-chat-open="1"] .topbar,body[data-chat-open="1"] .mtab,body[data-chat-open="1"] .fab-new,body[data-chat-open="1"] .install-prompt{display:none!important}
    body[data-chat-open="1"] .main{padding:0!important}body[data-chat-open="1"] .views,body[data-chat-open="1"] .live{height:100dvh!important}
    .chat-layout{display:block}.chat-list-card{border-radius:14px}.chat-layout:not(.open) .chat-main{display:none}.chat-layout.open .chat-sidebar{display:none}
    .chat-layout.open .chat-main{position:fixed;inset:0;z-index:70;background:var(--paper);display:flex;flex-direction:column}
    .chat-layout.open .chatpanel{border-radius:0!important;border:0!important;box-shadow:none!important;height:100dvh!important;background:var(--card)}
    .chat-layout.open .chatpanel .chathead{padding:calc(12px + env(safe-area-inset-top)) 12px 11px!important;gap:9px;flex-wrap:nowrap}
    .chat-layout.open .chatpanel .chathead>div{margin-left:auto!important}.chat-layout.open .chatpanel .chathead .btn span{display:none}
    .chatback{display:grid;width:38px;height:38px;border:0;border-radius:50%;place-items:center;background:var(--pine-tint);color:var(--pine);font:inherit;cursor:pointer;flex:none}
    .chat-layout.open .chatfeed{min-height:0!important;max-height:none!important;flex:1!important;border-radius:0!important;padding:13px 12px!important}
    .chat-layout.open .aicomposer{padding:10px 10px calc(10px + env(safe-area-inset-bottom))!important}
    .chat-layout.open .chatrow{max-width:92%}.chatwarnings{display:none}
  }

  .conlist{display:flex;flex-direction:column;margin-top:10px}
  .briefcab{font-size:12.5px;margin-bottom:8px}
  .briefrow{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;font-size:12.5px;margin-bottom:5px;background:var(--card);border:1px solid var(--line)}
  .briefrow.urg{border-left:3px solid var(--red)}
  .briefrow[data-act]:hover{background:var(--card2);border-color:var(--pine)}
  .briefrow .bemo{flex:none;font-size:15px}
  .briefrow .btxt{flex:1;min-width:0}
  .briefrow .bd{font-family:'JetBrains Mono';font-weight:700;color:var(--pine);white-space:nowrap}
  .briefrow .bchev{flex:none;color:var(--muted);font-weight:700}
  .briefrow.ok{color:var(--pine)}
  .alerts-center>h3{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .dash-alert-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:12px;margin-top:14px}
  .dash-alert{position:relative;display:flex;width:100%;max-width:100%;min-width:0;min-height:184px;box-sizing:border-box;flex-direction:column;align-items:stretch;justify-content:space-between;gap:12px;overflow:hidden;text-align:left;padding:15px;border:1px solid var(--line);border-top:3px solid var(--honey);border-radius:11px;background:var(--card2);color:var(--ink);font:inherit;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
  .dash-alert.urgent{border-top-color:var(--red);background:#fbf2f0}
  .dash-alert:hover{transform:translateY(-2px);border-color:var(--pine2);box-shadow:0 4px 14px #102d3512}
  .dash-alert:focus-visible{outline:2px solid var(--pine);outline-offset:2px}
  .dash-alert-top{display:flex;align-items:center;justify-content:space-between}
  .dash-alert-icon{width:36px;height:36px;display:grid;place-items:center;flex:none;border-radius:10px;background:var(--card);font-size:18px}
  .dash-alert-priority{font-size:9px;text-transform:uppercase;letter-spacing:.55px;font-weight:800;color:var(--red);background:#fff;border:1px solid #edc9c3;border-radius:20px;padding:4px 7px}
  .dash-alert-copy{display:grid;gap:5px;flex:1;min-width:0;align-content:start}
  .dash-alert-copy b{font-size:12px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .dash-alert-copy small{font-size:12px;color:var(--pine);font-weight:750;font-variant-numeric:tabular-nums}
  .dash-alert-arrow{display:flex;align-items:center;gap:4px;border-top:1px solid var(--line);padding-top:8px;font-size:10px;color:var(--pine);font-weight:700;align-self:stretch;justify-content:flex-end}
  @media(max-width:1180px){.dash-alert-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
  @media(max-width:820px){.dash-alert-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.dash-alert{min-height:170px}}
  @media(max-width:520px){.dash-alert-grid{gap:8px}.dash-alert{min-height:164px;padding:12px}.dash-alert-copy b{-webkit-line-clamp:4}.dash-alert-priority{font-size:8px}}
  @media(max-width:360px){.dash-alert-grid{grid-template-columns:1fr}.dash-alert{min-height:130px}}
  .presu-itrow{border:1px solid var(--line);border-radius:12px;padding:0 12px 12px;margin-bottom:10px;background:var(--card2)}
  .presu-ithead{display:flex;align-items:center;justify-content:space-between;margin:0 -12px 10px;padding:8px 12px;border-bottom:1px solid var(--line);font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--pine);font-weight:700}
  .presu-itx{width:24px;height:24px;border:1px solid var(--line);background:var(--card);border-radius:7px;cursor:pointer;color:var(--red);display:grid;place-items:center;padding:0}
  .presu-itx:hover{background:#fbeeeb;border-color:var(--red)}
  .apu-det{margin-top:8px;border-top:1px dashed var(--line);padding-top:6px}
  .apu-det>summary{cursor:pointer;font-size:11px;color:var(--muted);font-weight:600;list-style:none}
  .apu-det>summary::-webkit-details-marker{display:none}
  .apu-det>summary::before{content:'> ';color:var(--pine)}
  .apu-det[open]>summary::before{content:'v '}
  .pchip-add{border-color:var(--pine-tint);color:var(--pine);font-weight:500}
  .pchip-add:hover{background:var(--pine-tint);border-color:var(--pine)}
  .presu-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
  .presu-chip{font:inherit;font-size:11px;line-height:1.35;border:1px solid var(--line);border-radius:20px;padding:3px 10px;cursor:pointer;color:var(--muted);background:var(--card)}
  .presu-chip:hover{border-color:var(--pine);color:var(--pine)}
  /* Texto que se arma solo con los parámetros, mostrado tal cual va a salir. */
  .presu-prev{font-size:11.5px;line-height:1.5;color:var(--ink);background:var(--card2);border:1px dashed var(--line2);border-left:3px solid var(--pine2);border-radius:9px;padding:9px 11px;margin:2px 0 8px;white-space:pre-wrap}
  /* Vista previa del documento en pantalla: los estilos reales de la hoja
     viven dentro de @media print (#printArea está oculto), así que acá se
     replican los mínimos para poder revisarlo antes de imprimir. */
  .docprev{background:#fff;color:#333;border:1px solid var(--line);border-radius:12px;padding:20px 22px;overflow-x:auto}
  .docprev .phead{display:flex;align-items:center;gap:12px;border-bottom:2px solid #004b57;padding-bottom:12px;margin-bottom:14px}
  .docprev .phead .plogo{width:52px;flex:none}
  .docprev .phead .plogo img{width:52px;height:38px;object-fit:contain;display:block}
  .docprev .phead .pname{font-family:'Bricolage Grotesque';font-size:18px;font-weight:800;color:#004b57;line-height:1.05}
  .docprev .phead .psub{font-size:9px;letter-spacing:1.4px;text-transform:uppercase;color:#7a8a86;margin-top:2px}
  .docprev .phead .pright{margin-left:auto;text-align:right;font-size:10.5px;color:#555}
  .docprev .pz-ref{margin:6px 0 2px;font-size:12px}
  .docprev .pz-ref b{color:#004b57}
  .docprev .pz-sd{margin-top:6px;color:#666;font-size:11px}
  .docprev .pz-title{font-family:'Bricolage Grotesque';font-size:16px;font-weight:800;letter-spacing:.5px;text-align:center;color:#004b57;margin:14px 0 12px;padding:9px;background:#eef4f3;border-radius:6px;border:1px solid #cfe0dd}
  .docprev .pz-data{width:100%;border-collapse:collapse;margin:4px 0 6px;font-size:11.5px}
  .docprev .pz-data td{padding:5px 8px;border-bottom:1px solid #eee;vertical-align:top}
  .docprev .pz-data td.pk{width:200px;color:#004b57;font-weight:700}
  .docprev .pz-h{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#004b57;font-weight:800;margin:14px 0 4px;border-left:3px solid #cf8a2c;padding-left:8px}
  .docprev .pz-p{font-size:11.5px;text-align:justify;margin:0 0 6px;color:#333}
  .docprev .pz-price{width:100%;border-collapse:collapse;margin-top:4px;font-size:11.5px}
  .docprev .pz-price th{background:#004b57;color:#fff;padding:6px 8px;text-align:left;font-weight:700}
  .docprev .pz-price th.r,.docprev .pz-price td.r{text-align:right}
  .docprev .pz-price td{border-bottom:1px solid #e4ded2;padding:5px 8px}
  .docprev .pz-note{font-size:10.5px;color:#666;margin:6px 0 0}
  .docprev .pz-sign{display:flex;justify-content:space-around;gap:30px;margin-top:34px;text-align:center;font-size:11px;color:#333}
  .docprev .pz-sign .pz-line{border-top:1px solid #333;margin-bottom:6px;width:170px}
  .docprev .pfoot{margin-top:18px;font-size:10px;color:#888;border-top:1px solid #ddd;padding-top:8px}
  /* Editor de presupuesto por pasos, con el documento en vivo al costado. */
  .pe-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:start}
  .pe-form{min-width:0}
  .pe-doc{min-width:0;position:sticky;top:12px}
  .pe-doclbl{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--pine);margin-bottom:7px}
  .pe-doc .docprev{max-height:calc(100vh - 120px);overflow:auto}
  .pe-steps{display:flex;gap:7px;margin-bottom:12px;flex-wrap:wrap}
  .pe-step{flex:1;min-width:112px;display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer;font:600 12.5px/1 var(--font-app,inherit);color:var(--muted);transition:.15s}
  .pe-step:hover{border-color:var(--pine2)}
  .pe-step.on{border-color:var(--pine);background:var(--pine-tint);color:var(--pine);box-shadow:0 2px 8px rgba(0,75,87,.10)}
  .pe-n{width:21px;height:21px;border-radius:50%;background:var(--card2);display:grid;place-items:center;font-size:10.5px;font-weight:800;flex:none;color:var(--muted)}
  .pe-step.on .pe-n{background:var(--pine);color:#fff}
  .pe-step.done .pe-n{background:var(--green);color:#fff}
  .pe-step.done{color:var(--ink)}
  .pe-h{display:flex;align-items:center;gap:8px;font-family:'Bricolage Grotesque',sans-serif;font-size:15px;font-weight:700;color:var(--pine);margin:0 0 12px}
  .pe-sub{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 0 6px;padding-top:10px;border-top:1px solid var(--line)}
  .pe-nav{display:flex;gap:9px;margin-top:12px}
  .pe-det{border:1px solid var(--line);border-radius:12px;background:var(--card2);margin-top:12px;overflow:hidden}
  .pe-det>summary{cursor:pointer;padding:11px 13px;font-size:12.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px;list-style:none}
  .pe-det>summary::-webkit-details-marker{display:none}
  .pe-det>summary::after{content:'▾';margin-left:auto;color:var(--muted);font-size:11px}
  .pe-det[open]>summary{border-bottom:1px solid var(--line)}
  .pe-det[open]>summary::after{content:'▴'}
  .pe-std{font-size:10px;font-weight:700;background:var(--pine-tint);color:var(--pine);border-radius:20px;padding:2px 8px;text-transform:uppercase;letter-spacing:.04em}
  .pe-detin{padding:12px 13px}
  .pe-rev>.pe-h{padding:11px 13px 0;margin-bottom:0;font-size:13px}
  .pe-rev-open{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
  @media(max-width:1080px){.pe-wrap{grid-template-columns:1fr}.pe-doc{position:static}.pe-doc .docprev{max-height:none}}
  /* Detalle de un movimiento de gasoil: la cifra de litros manda, después el
     stock que quedó, y sólo los datos que existen. */
  .dt-ico{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;color:#fff;flex:none}
  .dt-hero{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:12px}
  .dt-big{font-family:var(--font-num);font-size:30px;font-weight:800;line-height:1;letter-spacing:-.02em}
  .dt-big small{font-size:15px;font-weight:700;opacity:.65}
  .dt-sub{font-size:12px;color:var(--muted);margin-top:5px}
  .dt-tag{margin-left:auto;color:#fff;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border-radius:20px;padding:4px 12px;flex:none}
  /* Encabezado del detalle de operación. El cliente y la fecha estaban en una
     línea gris chiquita al pie de la cifra, y son justo los dos datos que uno
     busca al abrir. Ahora tienen su propio renglón, con ícono y peso. */
  .dt-hero.hero2{display:block;padding:0;overflow:hidden;position:relative}
  /* Franja de color del tipo de operación: da identidad sin recargar. */
  .hero2::before{content:'';position:absolute;inset:0 auto 0 0;width:4px;background:var(--hero-c,var(--pine))}
  .hero2-top{display:flex;align-items:flex-start;gap:12px;padding:15px 17px 14px 20px}
  .hero2-lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:800;color:var(--faint);margin-bottom:6px}
  .hero2-meta{display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line);background:rgba(255,255,255,.5)}
  .hero2-m{display:flex;flex-direction:column;gap:3px;padding:10px 14px 11px 20px;min-width:0;flex:1 1 140px;
           border-left:1px solid var(--line)}
  .hero2-m:first-child{border-left:0}
  .hero2-k{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:var(--faint)}
  .hero2-k>svg{color:var(--honey);flex:none}
  .hero2-v{font-size:13px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .hero2-v.flojo{color:var(--faint);font-weight:600;font-style:italic}
  .hero2-x{font-weight:600;color:var(--muted);font-size:11.5px}
  @media(max-width:560px){
    .hero2-m{flex:1 1 50%;padding-left:14px}
    .hero2-m:nth-child(odd){border-left:0}
    .hero2-m:nth-child(n+3){border-top:1px solid var(--line)}
  }
  .dt-stock{border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:var(--card2);margin-bottom:12px}
  .dt-stockhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted)}
  .dt-stockhead b{font-family:var(--font-num);font-size:15px;color:var(--ink);font-weight:800}
  .dt-bar{height:7px;border-radius:5px;background:var(--line);overflow:hidden;margin:8px 0 5px}
  .dt-bar i{display:block;height:100%;border-radius:5px}
  .dt-stocksub{font-size:11px;color:var(--faint)}
  .dt-sec{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--pine);margin:14px 0 6px}
  .dt-box{border:1px solid var(--line);border-radius:12px;overflow:hidden}
  .dt-row{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--line);font-size:12.5px}
  .dt-row:last-child{border-bottom:0}
  .dt-row>svg{color:var(--pine2);flex:none}
  .dt-k{color:var(--muted)}
  /* flex para que un botón inline (ej. editar sueldo) quede al lado del valor
     y no caiga solo a la línea de abajo como un cuadrito suelto. */
  .dt-v{margin-left:auto;font-weight:600;color:var(--ink);text-align:right;display:flex;align-items:center;gap:6px;justify-content:flex-end}
  .dt-v .presu-itx{flex:none}
  .dt-obs{border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:12.5px;color:var(--ink);background:var(--card2);white-space:pre-wrap}
  /* Franja de "cuánto deja este cheque", arriba de todo en la trazabilidad. */
  .dt-gan{border:1px solid var(--line);border-radius:12px;background:var(--card2);padding:4px 12px;margin-bottom:12px}
  .dt-ganit{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line)}
  .dt-ganit:last-child{border-bottom:0}
  .dt-ganit>span{display:flex;align-items:center;gap:6px}
  .dt-ganit>span>svg{color:var(--pine2);flex:none}
  .dt-ganit b{font-family:var(--font-num);font-size:13.5px;font-weight:800}
  .dt-ganit.tot b{font-size:15px}
  /* Hitos de certificación (cada N ha) derivados de la forma de pago. */
  .certplan{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
  .certhito{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;border:1px solid var(--line);border-radius:20px;padding:3px 10px;color:var(--muted);background:var(--card)}
  .certhito.ok{background:#d6ece2;border-color:#b9ddcd;color:var(--green)}
  .combo{position:relative}
  .combo>input{width:100%;padding-right:26px}
  .combo-arrow{position:absolute;right:6px;top:6px;border:0;background:none;cursor:pointer;color:var(--muted);font-size:13px;padding:2px 4px;line-height:1}
  .combo-pop{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:70;background:var(--card);border:1px solid var(--line2);border-radius:9px;box-shadow:0 10px 26px rgba(0,0,0,.16);max-height:190px;overflow:auto;display:none}
  .combo-pop.on{display:block}
  .combo-opt{padding:8px 11px;font-size:12.5px;cursor:pointer;border-bottom:1px solid var(--line)}
  .combo-opt:last-child{border-bottom:0}
  .combo-opt:hover{background:var(--pine-tint);color:var(--pine)}
  /* <select> normalizados: mismo desplegable estilo combo en toda la app.
     El trigger es un input dentro de .combo, así hereda el look de los combos;
     el <select> nativo queda oculto detrás como fuente de valor. */
  /* El wrapper reemplaza al <select> como hijo del layout, asi que tiene que
     comportarse como el: en una fila flex, compartir el ancho en vez de
     quedarselo. Sin esto el `flex:1` que el select tenia dejaba de aplicar (ya
     no es hijo directo) y el width:100% del wrapper aplastaba a los hermanos:
     en la fila de forma de pago, "Monto" y "N° de cheque" quedaban en 22px y
     parecian dos botones rotos. flex-basis 0 los hace repartir parejo. */
  .combo.cbsel{width:100%;min-width:0;flex:1 1 0;isolation:auto!important}
  .combo.cbsel>.cbsel-trigger{cursor:text;text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
  .combo.cbsel>.combo-arrow{pointer-events:none}
  .cbsel-pop{z-index:190!important}
  .cbsel-pop .combo-opt.on{background:var(--pine-tint);color:var(--pine);font-weight:600}
  .cbsel-pop .combo-opt.cbsel-dis{opacity:.55;pointer-events:none;font-style:italic}
  /* Alta desde el propio desplegable: lo que se escribio y no esta en la lista.
     Va primero y separado por una linea, para que no se confunda con una opcion
     existente. Aparece en los <select> marcados data-nuevo y en los combo() de
     texto libre, por eso la regla no cuelga de .cbsel-pop. Dos clases alcanzan
     para ganarle al bloque .combo-opt{...!important} que viene mas abajo. */
  .combo-opt.cbsel-nuevo{color:var(--pine)!important;background:var(--pine-tint)!important;border-radius:9px!important}
  /* La linea separadora solo tiene sentido si abajo hay opciones de las que separarse. */
  .combo-opt.cbsel-nuevo:not(:last-child){border-bottom:1px solid var(--line2)!important;margin-bottom:3px}
  .combo-opt.cbsel-nuevo b{font-weight:700;margin-right:2px}
  .combo-opt.cbsel-nuevo:hover{background:var(--pine)!important;color:#fff!important}
  .mesrow td{background:var(--card2);font-weight:700;font-size:11px;text-transform:capitalize;color:var(--muted);border-top:1px solid var(--line);padding:6px 8px!important}
  /* Banda de sección para tablas agrupadas: se distingue claramente de las
     filas de datos (fondo, borde superior grueso, mayúsculas, negrita). */
  tr.secrow td{background:var(--card2)!important;border-top:2px solid var(--line2)!important;border-bottom:1px solid var(--line)!important;padding:11px 10px!important;font-weight:800!important;font-size:11.5px!important;text-transform:uppercase;letter-spacing:.5px}
  tr.secrow+tr td{border-top:0}
  /* Sub-encabezado de día (nivel 2): más liviano e indentado, para no competir
     con la banda de sección de nivel 1. */
  tr.emit-week-day td{background:#faf8f2!important;border-top:1px solid var(--line)!important;border-bottom:0!important;font-weight:600!important;font-size:11.5px!important;text-transform:none!important;letter-spacing:0!important;color:var(--muted)!important;padding:8px 10px 8px 22px!important}
  tr.emit-week-day td b{color:var(--ink)!important;font-weight:700}
  .opgrp{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
  .opgrp>summary{display:flex;align-items:center;gap:8px;padding:11px 13px;cursor:pointer;font-size:12.5px;font-weight:600;list-style:none;background:var(--card2)}
  .opgrp>summary::-webkit-details-marker{display:none}
  .opgrp>summary::before{content:'>';color:var(--pine);font-size:12px;transition:transform .15s}
  .opgrp[open]>summary::before{transform:rotate(90deg)}
  .opgrp>summary .opgrp-h{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .opgrp>div{padding:4px 10px 10px}
  .selbar{padding:12px 16px;font-size:12.5px;color:var(--muted);background:var(--card2);border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}
  .selbar.active{color:var(--ink);background:var(--pine-tint);border-top:2px solid var(--pine)}
  .selbar .selc-n{font-family:'Bricolage Grotesque';font-size:20px;font-weight:700;color:var(--pine);line-height:1}
  .selbar .selc-tot{font-family:'JetBrains Mono';font-weight:700;color:var(--pine);font-size:19px}
  .selbar .selc-sep{margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:400}
  .selacts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 16px 14px}
  .selacts .btn{justify-content:center}
  @media(max-width:640px){.selacts{grid-template-columns:1fr 1fr}}
  .conrow{display:flex;align-items:center;gap:11px;padding:10px 9px;border-radius:11px;margin-bottom:6px;background:var(--card);border:1px solid var(--line);transition:.14s}
  .conrow[data-act]:hover{border-color:var(--pine2);box-shadow:0 2px 10px rgba(20,50,55,.06)}
  .conrow .cinfo{flex:1;min-width:0}
  .conrow .cinfo b{font-size:13px}
  .conrow .cinfo .hint{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
  .conrow-ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center}
  .conrow.urg .conrow-ic{background:#fbe7e3;color:var(--red)}
  .conrow.warn .conrow-ic{background:var(--honey-tint);color:var(--honey)}
  .conrow.info .conrow-ic{background:var(--blue-tint);color:var(--blue)}
  .conrow-amt{flex:none;font-size:12.5px;color:var(--muted);text-align:right}
  /* Barra de impersonación. Deliberadamente llamativa: el riesgo de esta
     función no es técnico, es olvidarse de que está activa. */
  .impbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    margin:-4px 0 14px;padding:10px 14px;border-radius:11px;
    background:linear-gradient(90deg,#8a3b12,#b8641f);color:#fff;font-size:13px;
    box-shadow:0 4px 14px rgba(138,59,18,.3)}
  .impbar svg{flex:none}
  .impbar span{flex:1;min-width:200px;line-height:1.35}
  .impbar b{color:#ffe2c4}
  .impbar .btn{flex:none;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.35);color:#fff;font-weight:600}
  .impbar .btn:hover{background:rgba(255,255,255,.26)}
  .conrow .btn{flex:none}
  .okrow{display:flex;align-items:center;gap:9px;margin-top:12px;color:var(--green);font-size:13.5px}
  .selcount{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;font-size:12.5px;color:var(--muted);background:var(--pine-tint);border:1px solid var(--line);border-radius:9px;padding:7px 11px}
  .selcount b{color:var(--ink)}
  .selctot{margin-left:auto;color:var(--pine);font-weight:600}
  .selctot b{color:var(--pine);font-family:'JetBrains Mono',monospace}
  /* .egrhdr se estiliza junto a .ing-sec/.dsec (encabezado de sección único) */
  .pagoline{margin-bottom:7px}
  /* Una forma de pago que necesita mas datos (un cheque propio) deja de ser una
     fila suelta y pasa a ser una tarjeta: encabezado con medio y monto, y el
     detalle adentro con los .field de siempre. Sin esto el detalle parecia
     pegado de otra pantalla. */
  .pagoline.con-detalle{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:9px 10px;margin-bottom:10px}
  .pagorow{display:flex;gap:7px;align-items:center}
  .pagosub{margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
  .pagosub .frow{gap:9px}
  .pagosub .field{margin-bottom:0}
  .pagosub .field input,.pagosub .field select,.pagosub .cbsel-trigger{background:var(--card)}
  .pagosub .pagovenc{margin-top:8px;font-size:11.5px;color:var(--muted);line-height:1.4}
  .pagorow select.pagomedio{flex:1.1}.pagorow .pagomonto{flex:1}.pagorow .pagoref{flex:1.2}
  .pagorow .cbsel{flex:1.1 1 0}
  .pagorow select,.pagorow input{min-width:0;border:1px solid var(--line2);background:var(--card);border-radius:9px;padding:9px 10px;font-family:'Hanken Grotesk';font-size:13px;color:var(--ink)}
  .pagorow input.mono{font-family:'JetBrains Mono'}
  .pagorow select:focus,.pagorow input:focus{outline:none;border-color:var(--pine)}
  .btn-x{flex:none;border:none;background:var(--card2);color:var(--muted);border-radius:8px;width:32px;height:32px;cursor:pointer;display:flex;align-items:center;justify-content:center}
  .btn-x:hover{background:#f1d9d2;color:var(--red)}
  .pagobal{border-radius:12px;padding:11px 14px;border:1px solid var(--line)}
  .pagobal .pbrow{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}
  .pagobal .pbrow b{font-family:'JetBrains Mono'}
  .pagobal .pbrest{border-top:1px solid rgba(0,0,0,.08);margin-top:5px;padding-top:7px;font-weight:700;font-size:14px}
  .pagobal.under{background:#fbe9d2}.pagobal.under .pbrest{color:#a9641c}
  .pagobal.over{background:#f7dcd5}.pagobal.over .pbrest{color:var(--red)}
  .pagobal.ok{background:#d6ece2}.pagobal.ok .pbrest{color:var(--green)}
  /* Variante de una sola linea: el aviso de cuanto falta cubrir en un rechazo.
     Las reglas de arriba pintan .pbrest, que esta variante no tiene. */
  .pagobal.simple{display:flex;align-items:center;gap:6px;font-size:13px;padding:9px 12px}
  .pagobal.simple b{font-family:var(--font-num)}
  .pagobal.simple.under{color:#a9641c}
  .pagobal.simple.over{color:var(--red)}
  .pagobal.simple.ok{color:var(--green)}
  #login{position:fixed;inset:0;z-index:9999;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:20px}
  .logincard{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:28px 26px;box-shadow:0 16px 50px rgba(0,40,40,.12)}
  .loginbrand{display:flex;align-items:center;gap:10px;font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:20px;color:var(--pine)}
  .loginbrand .wsi{width:34px;height:34px;border-radius:9px;background:var(--pine);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px}
  .loginsub{color:var(--muted);font-size:13.5px;margin:4px 0 20px}
  .loginlab{display:block;font-size:12px;font-weight:600;color:var(--muted);margin:10px 0 5px}
  .logininp{width:100%;box-sizing:border-box;padding:11px 13px;border:1px solid var(--line);border-radius:11px;font:inherit;font-size:14px;background:var(--paper);color:var(--ink)}
  .logininp:focus{outline:none;border-color:var(--pine2)}
  .loginquick{margin:20px 0 10px;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-top:1px solid var(--line);padding-top:16px}
  .loginchips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .loginchip{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:var(--paper);cursor:pointer;text-align:left;font:inherit}
  .loginchip:hover{border-color:var(--pine2);background:var(--pine-tint)}
  .loginchip>div{display:flex;flex-direction:column;min-width:0}
  .loginchip b{font-size:13px}.loginchip span{font-size:11px;color:var(--muted)}
  .loginerr{display:none;margin-top:12px;padding:9px 11px;border-radius:10px;background:#f9e7e3;color:var(--red);font-size:12.5px;line-height:1.35}
  .loginerr.on{display:block}
  .loginstatus{display:flex;align-items:center;gap:9px;margin-top:16px;color:var(--muted);font-size:13px}
  .loginspin{width:36px;height:12px;border:0;border-radius:0;display:inline-flex;align-items:center;justify-content:center;position:relative;animation:none;color:var(--pine)}
  .loginspin::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:-12px 0 0 currentColor,12px 0 0 currentColor;animation:loginDots 1.05s ease-in-out infinite;opacity:.78}
  .loginhelp{margin-top:14px;color:var(--muted);font-size:11.5px;line-height:1.4}
  @keyframes loginDots{0%,100%{transform:translateY(0) scale(.72);opacity:.42;box-shadow:-12px 0 0 currentColor,12px 0 0 currentColor}35%{transform:translateY(-1px) scale(1);opacity:1;box-shadow:-12px 0 0 rgba(12,106,96,.42),12px 0 0 rgba(12,106,96,.42)}65%{transform:translateY(0) scale(.86);opacity:.7;box-shadow:-12px 0 0 rgba(12,106,96,.9),12px 0 0 rgba(12,106,96,.9)}}
  /* Brand and authentication experience */
  .logo{overflow:hidden;background:#fff;padding:3px;border-radius:12px}
  .logo::before{content:'';width:100%;height:100%;display:block;background:url('./Logo%20RS.png') center/contain no-repeat}
  .logo svg{display:none}
  #login{background:
    radial-gradient(circle at 12% 18%,rgba(207,138,44,.22),transparent 28%),
    radial-gradient(circle at 88% 82%,rgba(31,143,115,.22),transparent 30%),
    linear-gradient(145deg,#082e32 0%,#123d35 48%,#0d241f 100%);
    padding:clamp(14px,4vw,48px);overflow:auto;isolation:isolate}
  #login::before{content:'';position:fixed;inset:0;pointer-events:none;opacity:.18;z-index:-1;
    background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);
    background-size:48px 48px;mask-image:linear-gradient(to bottom,black,transparent 85%)}
  .login-shell{width:min(1040px,100%);min-height:min(650px,calc(100vh - 48px));display:grid;grid-template-columns:1.08fr .92fr;
    background:rgba(255,255,255,.98);border:1px solid rgba(255,255,255,.22);border-radius:30px;overflow:hidden;
    box-shadow:0 32px 90px rgba(0,18,20,.38);animation:loginEnter .55s cubic-bezier(.2,.8,.2,1)}
  .login-showcase{position:relative;padding:clamp(30px,5vw,64px);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;
    color:#fff;background:linear-gradient(150deg,#123f38,#082f35 70%,#10251f)}
  .login-showcase::after{content:'';position:absolute;width:420px;height:420px;border:1px solid rgba(242,214,163,.26);border-radius:50%;
    right:-210px;bottom:-170px;box-shadow:0 0 0 42px rgba(255,255,255,.025),0 0 0 84px rgba(255,255,255,.018)}
  .login-logo-frame{width:min(310px,78%);aspect-ratio:1.35;background:#fff;border-radius:22px;padding:14px;display:grid;place-items:center;
    box-shadow:0 18px 50px rgba(0,0,0,.24);transform:rotate(-1deg);transition:.35s}
  .login-logo-frame:hover{transform:rotate(0) translateY(-3px)}
  .login-logo-frame img{width:100%;height:100%;object-fit:contain}
  .login-hero h1{font-family:'Bricolage Grotesque';font-size:clamp(30px,4vw,48px);line-height:1.02;letter-spacing:-1.7px;margin-top:34px;max-width:430px}
  .login-hero p{color:#c9dcd4;font-size:15px;max-width:430px;margin-top:14px}
  .login-points{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:30px}
  .login-point{display:flex;gap:9px;align-items:center;font-size:12px;color:#dce9e3;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08);padding:10px 12px;border-radius:12px}
  .login-point::before{content:'\2713';width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:rgba(242,214,163,.18);color:var(--honey-soft);font-weight:800}
  .login-panel{padding:clamp(30px,5vw,66px);display:flex;flex-direction:column;justify-content:center;background:linear-gradient(180deg,#fff,#f6f4ee)}
  .login-panel .loginbrand{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--pine);margin-bottom:22px}
  .login-panel .loginbrand .wsi{background:var(--pine);color:#fff}
  .login-panel h2{font-family:'Bricolage Grotesque';font-size:34px;letter-spacing:-.8px;line-height:1.1}
  .login-panel .loginsub{margin:9px 0 24px;font-size:14px;line-height:1.5}
  .login-panel .loginlab{margin-top:14px}
  .login-panel .logininp{min-height:48px;background:#fff;border-color:#d7d4ca;transition:.18s}
  .login-panel .logininp:focus{border-color:var(--pine);box-shadow:0 0 0 4px rgba(0,75,87,.09);transform:translateY(-1px)}
  .login-panel .btn-pri{min-height:49px;justify-content:center;font-size:14px;border-radius:12px}
  .login-panel .btn-pri:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,75,87,.25)}
  .login-secure{display:flex;align-items:center;gap:8px;margin-top:18px;padding-top:17px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}
  .login-secure::before{content:'\1F512';width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--pine-tint);color:var(--pine);font-weight:800}
  .login-loading{grid-template-columns:1fr;min-height:300px;max-width:520px}
  .login-loading .login-panel{text-align:center;align-items:center}
  .login-loading .login-logo-frame{width:160px;aspect-ratio:1.3;margin-bottom:22px}

  /* Login y marca Rolado: versi&oacute;n limpia/pro */
  .logo{overflow:visible!important;background:transparent!important;padding:0!important;border:0!important;box-shadow:none!important;border-radius:0!important;width:48px;height:48px}
  .logo::before{content:'';width:100%;height:100%;display:block;background:url('./logo-rs-beige-new.png') center/contain no-repeat;filter:drop-shadow(0 6px 12px rgba(0,0,0,.20))}
  .brand{align-items:center;gap:13px;padding:2px 8px 20px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:8px}
  .brand h1{font-family:'Arial Black','Impact','Bricolage Grotesque',sans-serif;text-transform:uppercase;font-weight:900;font-size:17px;line-height:.95;letter-spacing:.7px;color:#fff}
  .brand small{max-width:142px;color:#d7e5dd;font-size:8.5px;line-height:1.15;letter-spacing:1.45px;font-weight:900;text-transform:uppercase;margin-top:6px}
  .ws{display:none!important}
  #login{background:
    radial-gradient(900px 480px at 12% 18%,rgba(72,116,71,.34),transparent 54%),
    radial-gradient(780px 520px at 88% 72%,rgba(207,138,44,.20),transparent 55%),
    linear-gradient(135deg,#071b1d 0%,#0a3435 45%,#0d231c 100%)}
  #login::before{opacity:.16;background-size:42px 42px}
  .login-shell{width:min(1120px,100%);min-height:min(690px,calc(100vh - 48px));grid-template-columns:1fr .84fr;background:rgba(250,248,241,.98);border-radius:34px;border:1px solid rgba(255,255,255,.20);box-shadow:0 34px 90px rgba(0,12,14,.48)}
  .login-showcase{padding:clamp(32px,5.2vw,72px);background:linear-gradient(150deg,#092b2f 0%,#0c443f 52%,#142416 100%);justify-content:space-between;gap:38px}
  .login-showcase::after{width:520px;height:520px;right:-250px;bottom:-220px;border-color:rgba(242,214,163,.16);box-shadow:0 0 0 50px rgba(255,255,255,.02),0 0 0 100px rgba(255,255,255,.014)}
  .login-mark{display:flex;align-items:center;gap:22px;position:relative;z-index:1}
  .login-mark img{width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 18px 24px rgba(0,0,0,.28))}
  .login-wordmark{display:flex;flex-direction:column;text-transform:uppercase;line-height:.94;letter-spacing:.9px}
  .login-wordmark strong{font-family:'Arial Black','Impact','Bricolage Grotesque',sans-serif;font-size:clamp(35px,5.6vw,60px);font-weight:900;color:#f7f3e8;letter-spacing:1px;text-shadow:0 2px 18px rgba(0,0,0,.28)}
  .login-wordmark b{font-family:'Arial Black','Impact','Bricolage Grotesque',sans-serif;font-size:clamp(22px,3vw,34px);font-weight:900;color:#2f7a3d;letter-spacing:2.2px;text-shadow:0 1px 10px rgba(0,0,0,.18)}
  .login-wordmark span{margin-top:10px;color:#d9ded8;font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:2.7px;line-height:1.35}
  .login-logo-frame{background:transparent!important;box-shadow:none!important;border-radius:0!important;padding:0!important;transform:none!important;width:auto!important;aspect-ratio:auto!important}
  .login-logo-frame img{width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 16px 24px rgba(0,0,0,.24))}
  .login-hero h1{font-family:'Bricolage Grotesque',sans-serif;font-size:clamp(34px,4.2vw,52px);line-height:.98;letter-spacing:-1.4px;margin-top:0;max-width:500px;color:#fff}
  .login-hero p{max-width:510px;color:#d5e2dd;font-size:15.5px;line-height:1.6;margin-top:16px}
  .login-points{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:34px}
  .login-point{background:rgba(255,255,255,.075);border-color:rgba(255,255,255,.10);backdrop-filter:blur(8px)}
  .login-panel{background:linear-gradient(180deg,#fbfaf5,#f0ede4);padding:clamp(34px,5vw,68px)}
  .login-panel .loginbrand{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.16em;color:#40635d;margin-bottom:20px}
  .login-panel .loginbrand .wsi{display:none}
  .login-panel h2{font-family:'Bricolage Grotesque';font-size:38px;letter-spacing:-1px;color:#102a2e}
  .login-panel .loginsub{font-size:14.5px;color:#586967;margin:9px 0 27px;line-height:1.55}
  .login-panel .logininp{min-height:52px;border-radius:14px;background:#fff;border-color:#d6d0c3;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
  .login-panel .btn-pri{min-height:52px;border-radius:14px;background:linear-gradient(135deg,#004b57,#0d6e63)}
  .login-secure{border-top-color:#ded8cb}
  @media(max-width:760px){
    .login-shell{grid-template-columns:1fr;min-height:100dvh;border-radius:0}
    .login-showcase{min-height:310px;padding:26px 22px 30px;gap:18px}
    .login-mark{gap:13px;align-items:center}
    .login-mark img,.login-logo-frame img{width:76px;height:76px}
    .login-wordmark strong{font-size:31px;letter-spacing:.4px}
    .login-wordmark b{font-size:19px;letter-spacing:1.4px}
    .login-wordmark span{font-size:8px;letter-spacing:1.5px;margin-top:7px;max-width:230px}
    .login-hero h1{font-size:30px;max-width:310px}
    .login-hero p{font-size:13px;max-width:320px;margin-top:10px}
    .login-panel{padding:28px 22px calc(28px + env(safe-area-inset-bottom))}
    .login-panel h2{font-size:31px}
  }
  @keyframes loginEnter{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
  @media(max-width:760px){
    #login{padding:0;align-items:stretch}
    .login-shell{min-height:100dvh;border-radius:0;grid-template-columns:1fr;box-shadow:none}
    .login-showcase{min-height:230px;padding:24px 22px 28px;justify-content:flex-end}
    .login-logo-frame{width:148px;position:absolute;top:20px;right:20px;border-radius:15px;padding:8px}
    .login-hero h1{font-size:29px;margin:0;max-width:230px;letter-spacing:-1px}
    .login-hero p{font-size:12.5px;max-width:240px;margin-top:8px}
    .login-points{display:none}
    .login-panel{padding:28px 22px calc(28px + env(safe-area-inset-bottom));justify-content:flex-start}
    .login-panel h2{font-size:28px}
  }

  /* Overrides finales para que el login pro no herede el layout viejo en celular */
  @media(max-width:760px){
    #login{padding:0!important;align-items:stretch!important}
    .login-shell{min-height:100dvh!important;border-radius:0!important;grid-template-columns:1fr!important;box-shadow:none!important}
    .login-showcase{min-height:310px!important;padding:26px 22px 30px!important;justify-content:space-between!important;gap:18px!important}
    .login-mark{gap:13px!important;align-items:center!important}
    .login-mark img,.login-logo-frame img{width:76px!important;height:76px!important}
    .login-wordmark strong{font-size:31px!important;letter-spacing:.4px!important}
    .login-wordmark b{font-size:19px!important;letter-spacing:1.4px!important}
    .login-wordmark span{font-size:8px!important;letter-spacing:1.5px!important;margin-top:7px!important;max-width:230px!important}
    .login-hero h1{font-size:30px!important;margin:0!important;max-width:310px!important;letter-spacing:-.9px!important}
    .login-hero p{font-size:13px!important;max-width:320px!important;margin-top:10px!important}
    .login-panel{padding:28px 22px calc(28px + env(safe-area-inset-bottom))!important;justify-content:flex-start!important}
    .login-panel h2{font-size:31px!important}
  }

  /* Login RS: direcci&oacute;n de arte final, sobria y legible */
  .side .brand{padding:2px 8px 22px!important;margin-bottom:8px!important;border-bottom:1px solid rgba(236,219,178,.16)!important;justify-content:flex-start!important}
  .side .brand-word{display:none!important}
  .side .logo{width:174px!important;height:118px!important;border-radius:0!important;background:transparent!important;padding:0!important;border:0!important;box-shadow:none!important;filter:drop-shadow(0 14px 24px rgba(0,0,0,.22))!important}
  .side .logo::before{filter:none!important;background:url('./logo-rs-beige-new.png') center/contain no-repeat!important;background-size:contain!important}
  #login{background:
    radial-gradient(760px 460px at 16% 12%,rgba(191,158,96,.20),transparent 62%),
    radial-gradient(900px 520px at 86% 78%,rgba(25,82,61,.48),transparent 68%),
    linear-gradient(135deg,#061313 0%,#092b2c 42%,#172218 100%)!important;color:#102624!important}
  #login::before{opacity:.10!important;background-image:linear-gradient(rgba(255,255,255,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.10) 1px,transparent 1px)!important;background-size:56px 56px!important}
  .login-shell{width:min(1050px,calc(100vw - 80px))!important;min-height:min(640px,calc(100vh - 76px))!important;display:grid!important;grid-template-columns:minmax(0,1.08fr) 430px!important;background:transparent!important;border:1px solid rgba(236,226,205,.55)!important;border-radius:30px!important;overflow:hidden!important;box-shadow:0 42px 95px rgba(0,0,0,.44),0 1px 0 rgba(255,255,255,.20) inset!important}
  .login-showcase{position:relative!important;display:flex!important;flex-direction:column!important;justify-content:space-between!important;gap:42px!important;padding:clamp(34px,5.6vw,70px)!important;background:
    linear-gradient(120deg,rgba(7,43,41,.96),rgba(13,67,57,.92)),
    radial-gradient(520px 360px at 78% 18%,rgba(204,169,102,.16),transparent 58%)!important;color:#fff!important;overflow:hidden!important}
  .login-showcase::before{content:'';position:absolute;inset:26px;border:1px solid rgba(244,239,227,.16);border-radius:24px;pointer-events:none}
  .login-showcase::after{content:''!important;position:absolute!important;width:610px!important;height:610px!important;right:-290px!important;bottom:-300px!important;border:1px solid rgba(244,239,227,.12)!important;border-radius:50%!important;box-shadow:0 0 0 62px rgba(244,239,227,.035),0 0 0 124px rgba(244,239,227,.018)!important}
  .login-brand-lockup{position:relative;z-index:1;display:flex;align-items:center;gap:20px;max-width:560px}
  .login-emblem{width:118px;height:118px;flex:0 0 118px;display:grid;place-items:center;border-radius:26px;background:linear-gradient(145deg,#f4efe3,#d7c59d);border:1px solid rgba(255,255,255,.58);box-shadow:0 22px 42px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.8)}
  .login-emblem img{width:92px!important;height:92px!important;object-fit:contain!important;filter:none!important}
  .login-brand-copy{display:flex;flex-direction:column;gap:5px;min-width:0}
  .login-brand-copy .over{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:2.4px;text-transform:uppercase;color:#d7c59d;font-weight:800}
  .login-brand-copy strong{font-family:'Bricolage Grotesque',sans-serif;font-size:clamp(31px,3.8vw,48px);line-height:.98;letter-spacing:-1.4px;color:#fff;font-weight:800}
  .login-brand-copy small{font-family:'JetBrains Mono',monospace;font-size:10px;line-height:1.35;letter-spacing:1.7px;text-transform:uppercase;color:#cbd8ce;font-weight:700;max-width:360px}
  .login-hero{position:relative;z-index:1;max-width:560px}
  .login-hero h1{font-family:'Bricolage Grotesque',sans-serif!important;font-weight:800!important;font-size:clamp(40px,5vw,64px)!important;line-height:.94!important;letter-spacing:-2px!important;margin:0!important;color:#fbf8ef!important;text-wrap:balance!important}
  .login-hero p{max-width:510px!important;color:#dce7df!important;font-size:16px!important;line-height:1.7!important;margin-top:18px!important;text-shadow:none!important}
  .login-points{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important;margin-top:32px!important;max-width:570px!important}
  .login-point{min-height:58px!important;border-radius:16px!important;background:rgba(255,255,255,.075)!important;border:1px solid rgba(244,239,227,.14)!important;color:#eef4ef!important;font-size:12px!important;font-weight:700!important;line-height:1.25!important;padding:12px 13px!important;backdrop-filter:blur(10px)!important}
  .login-point::before{content:''!important;width:7px!important;height:7px!important;border-radius:50%!important;background:#d7c59d!important;box-shadow:0 0 0 5px rgba(215,197,157,.14)!important;display:block!important;flex:0 0 7px!important}
  .login-panel{background:linear-gradient(180deg,#f8f5ed 0%,#eee7d8 100%)!important;padding:clamp(42px,5vw,66px)!important;display:flex!important;flex-direction:column!important;justify-content:center!important;border-left:1px solid rgba(20,48,45,.08)!important}
  .login-panel .loginbrand{font-family:'JetBrains Mono',monospace!important;font-size:10px!important;letter-spacing:2.6px!important;text-transform:uppercase!important;color:#8a7650!important;font-weight:800!important;margin-bottom:18px!important}
  .login-panel h2{font-family:'Bricolage Grotesque',sans-serif!important;font-size:40px!important;line-height:1!important;letter-spacing:-1.2px!important;color:#112b2a!important;font-weight:800!important;margin:0!important}
  .login-panel .loginsub{margin:12px 0 30px!important;color:#52615e!important;font-size:14.5px!important;line-height:1.55!important;max-width:330px!important}
  .loginlab{font-size:11.5px!important;letter-spacing:.02em!important;color:#425350!important;font-weight:800!important;margin:14px 0 7px!important}
  .logininp{height:52px!important;border-radius:15px!important;border:1px solid #cfc3aa!important;background:#fffdf8!important;color:#0e2626!important;font-size:15px!important;padding:0 15px!important;box-shadow:0 1px 0 rgba(255,255,255,.85) inset!important;transition:border-color .16s,box-shadow .16s,transform .16s!important}
  .logininp:focus{outline:none!important;border-color:#0e625b!important;box-shadow:0 0 0 4px rgba(14,98,91,.14),0 10px 28px rgba(14,45,43,.08)!important;transform:translateY(-1px)!important}
  .login-panel .btn-pri{height:54px!important;min-height:54px!important;border-radius:15px!important;background:linear-gradient(135deg,#063f3d,#0c6a60)!important;box-shadow:0 18px 34px rgba(5,58,54,.24)!important;border:0!important;font-family:'Bricolage Grotesque',sans-serif!important;font-size:15px!important;font-weight:800!important;letter-spacing:.01em!important}
  .login-panel .btn-pri:hover{transform:translateY(-2px)!important;box-shadow:0 22px 40px rgba(5,58,54,.30)!important}
  .login-secure{margin-top:20px!important;padding-top:18px!important;border-top:1px solid #ddd2ba!important;color:#68756f!important;font-size:11.5px!important}
  .login-secure::before{background:#e7ddc8!important;color:#07504c!important}
  .login-loading{width:min(440px,calc(100vw - 44px))!important;min-height:410px!important;display:grid!important;grid-template-columns:1fr!important;place-items:center!important;background:linear-gradient(180deg,#f8f5ed,#ebe2d1)!important;border-radius:34px!important;border:1px solid rgba(255,255,255,.55)!important;box-shadow:0 35px 85px rgba(0,0,0,.42)!important}
  .login-loading .login-panel{background:transparent!important;border:0!important;padding:44px!important;align-items:center!important;text-align:center!important}
  .login-loading .login-logo-frame{width:148px!important;height:148px!important;margin:0 0 24px!important;border-radius:32px!important;background:linear-gradient(145deg,#f4efe3,#d7c59d)!important;display:grid!important;place-items:center!important;box-shadow:0 22px 42px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.8)!important}
  .login-loading .login-logo-frame img{width:114px!important;height:114px!important;object-fit:contain!important;filter:none!important}
  .loginstatus{color:#203936!important;font-size:13.5px!important;font-weight:700!important;justify-content:center!important;margin-top:0!important;max-width:230px!important;line-height:1.45!important}
  .loginspin{border:0!important;width:38px!important;height:13px!important;color:#0c6a60!important;background:transparent!important}
  @media(max-width:860px){
    .login-shell{width:100%!important;min-height:100dvh!important;border-radius:0!important;grid-template-columns:1fr!important;border:0!important}
    .login-showcase{min-height:auto!important;padding:28px 22px 26px!important;gap:26px!important}
    .login-showcase::before{inset:14px;border-radius:20px}
    .login-brand-lockup{gap:14px!important}
    .login-emblem{width:86px!important;height:86px!important;flex-basis:86px!important;border-radius:20px!important}
    .login-emblem img{width:68px!important;height:68px!important}
    .login-brand-copy .over{font-size:8.5px!important;letter-spacing:1.7px!important}
    .login-brand-copy strong{font-size:27px!important;letter-spacing:-.8px!important}
    .login-brand-copy small{font-size:8px!important;letter-spacing:1.1px!important;max-width:220px!important}
    .login-hero h1{font-size:34px!important;letter-spacing:-1.1px!important;max-width:330px!important}
    .login-hero p{font-size:13.5px!important;line-height:1.55!important;margin-top:10px!important;max-width:330px!important}
    .login-points{display:none!important}
    .login-panel{padding:30px 22px calc(30px + env(safe-area-inset-bottom))!important;border-left:0!important}
    .login-panel h2{font-size:34px!important}
    .login-panel .loginsub{max-width:none!important;margin-bottom:24px!important}
  }

  /* Login RS: composici&oacute;n refinada solicitada */
  .login-showcase{justify-content:center!important;padding:clamp(42px,6vw,76px)!important;gap:34px!important;overflow:hidden!important}
  .login-showcase::before{inset:22px!important;border-color:rgba(244,239,227,.11)!important}
  .login-showcase::after{right:-320px!important;bottom:-330px!important;opacity:.75!important}
  .login-brand-lockup{display:grid!important;grid-template-columns:124px minmax(0,360px)!important;align-items:center!important;gap:20px!important;max-width:540px!important;margin:0 auto!important}
  .login-emblem{width:118px!important;height:118px!important;flex-basis:auto!important;border-radius:22px!important;background:linear-gradient(145deg,#f2ead9,#d8c7a6)!important;box-shadow:0 20px 38px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.78)!important}
  .login-emblem img{width:92px!important;height:92px!important}
  .login-brand-copy{gap:4px!important;align-self:center!important}
  .login-brand-copy .over{font-size:10px!important;letter-spacing:3.5px!important;color:#d7c59d!important;margin-bottom:5px!important}
  .login-brand-copy strong{font-size:clamp(42px,5.6vw,60px)!important;line-height:.86!important;letter-spacing:-2px!important;max-width:340px!important;text-shadow:0 5px 0 rgba(5,32,31,.28)!important}
  .login-brand-copy small{font-size:10px!important;letter-spacing:2.2px!important;color:#f3f0e7!important;max-width:340px!important;font-weight:900!important}
  .login-hero{max-width:540px!important;margin:26px auto 0!important;padding-top:26px!important;border-top:1px solid rgba(244,239,227,.13)!important;text-align:left!important}
  .login-hero h1{font-size:clamp(25px,3vw,34px)!important;line-height:1.03!important;letter-spacing:-.8px!important;max-width:480px!important;color:#f6f0e2!important;text-shadow:none!important}
  .login-hero p{font-size:14.5px!important;line-height:1.65!important;color:#d7e1dc!important;max-width:455px!important;margin-top:13px!important}
  .login-points{display:none!important}
  .login-panel{padding:clamp(42px,5vw,64px)!important}
  .login-panel h2{font-size:36px!important;letter-spacing:-.9px!important}
  .login-panel .loginsub{font-size:14px!important;margin-bottom:28px!important}
  @media(max-width:860px){
    .login-showcase{padding:32px 24px 28px!important;justify-content:center!important;gap:24px!important}
    .login-brand-lockup{grid-template-columns:86px minmax(0,1fr)!important;gap:15px!important;margin:0!important;max-width:360px!important}
    .login-emblem{width:84px!important;height:84px!important;border-radius:18px!important}
    .login-emblem img{width:66px!important;height:66px!important}
    .login-brand-copy .over{font-size:8px!important;letter-spacing:2px!important;margin-bottom:3px!important}
    .login-brand-copy strong{font-size:34px!important;line-height:.88!important;letter-spacing:-1.1px!important;max-width:220px!important;text-shadow:0 3px 0 rgba(5,32,31,.22)!important}
    .login-brand-copy small{font-size:7.6px!important;letter-spacing:1.1px!important;max-width:215px!important}
    .login-hero{margin:18px 0 0!important;padding-top:18px!important;max-width:360px!important}
    .login-hero h1{font-size:23px!important;max-width:315px!important}
    .login-hero p{font-size:12.7px!important;max-width:320px!important;margin-top:8px!important}
  }

  /* Restaurar tipograf&iacute;a original de la app: los experimentos de marca no salen del login */
  .brand h1{font-family:'Bricolage Grotesque',sans-serif!important;font-weight:700!important;font-size:18px!important;letter-spacing:-.3px!important;text-transform:none!important;line-height:1.05!important;color:#fff!important}
  .brand small{font-family:'Hanken Grotesk',sans-serif!important;color:#7fb0b8!important;font-size:9px!important;letter-spacing:1.5px!important;text-transform:uppercase!important;font-weight:500!important;line-height:1.2!important;margin-top:2px!important;max-width:none!important}
  .btn,.login-panel .btn-pri{font-family:'Hanken Grotesk',sans-serif!important}

  .av-btn{border:0;cursor:pointer;padding:0;font:inherit;color:#fff}
  .av-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,75,87,.20)}
  .aidetect{background:linear-gradient(180deg,var(--pine-tint),var(--card));border:1px solid var(--pine2);border-radius:14px;padding:13px 15px;margin-bottom:16px}
  .ckdhead{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--pine);font-size:13px;margin-bottom:10px}
  .ckdhead>svg{flex:none}
  .ckdbank{background:var(--pine);color:#fff;border-radius:20px;padding:2px 10px;font-size:11px;font-weight:700}
  .ckdcount{margin-left:auto;background:#fff;border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:2px 10px;font-size:11px;font-weight:600}
  .ckdlist{max-height:210px;overflow-y:auto;border:1px solid rgba(0,75,87,.14);border-radius:10px;background:var(--card)}
  .ckdrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid rgba(0,75,87,.08);cursor:pointer}
  .ckdrow:hover{background:var(--pine-tint)}
  .ckdchev{flex:none;color:var(--muted)}
  .ckdrow:last-child{border-bottom:0}
  .ckddot{flex:none;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center}
  .ckddot.ok{background:#d6ece2;color:var(--green)}.ckddot.no{background:#f7dcd5;color:var(--red)}
  .ckdinfo{flex:1;min-width:0}
  .ckdnum{font-size:12.5px;font-weight:600;color:var(--ink)}
  .ckdmeta{font-size:11px;color:var(--muted)}
  .ckdright{flex:none;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
  .ckdmonto{font-family:'JetBrains Mono',monospace;font-size:12.5px;font-weight:600}
  .ckdtag{font-size:10px;font-weight:700;border-radius:20px;padding:1px 8px}
  .ckdtag.ok{background:#d6ece2;color:var(--green)}.ckdtag.no{background:#f7dcd5;color:var(--red)}
  /* auto-fit en vez de 4 columnas fijas: en un panel angosto (chat lateral,
     mobile) 4 por fila dejaba el input de Sellado/IVA/Percepción tan
     angosto que el monto no entraba y se cortaba. Así se acomoda solo a
     menos columnas por fila en vez de apretar el número hasta cortarlo. */
  .ckdcosts{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:7px;margin-top:11px}
  .ckdcost.neto{grid-column:span 1;background:var(--pine-tint);border-color:var(--pine2)}
  .ckdcost.neto b{color:var(--pine)}
  .detinp{width:100%;box-sizing:border-box;border:1px solid var(--pine2);border-radius:7px;padding:3px 6px;font:inherit;font-family:'JetBrains Mono',monospace;font-size:12px;background:var(--card);color:var(--ink);text-align:right;margin-top:2px}
  .detinp:focus{outline:none;border-color:var(--pine);background:#fff}
  .detinp-warn{border-color:var(--honey);background:var(--honey-tint)}
  .detinp-warn::placeholder{color:#a9641c;font-weight:600}
  .ckdsub{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--pine);text-transform:uppercase;letter-spacing:.02em;margin:12px 0 6px}
  .ckdsub svg{flex:none;width:10px;height:10px}
  .ckddet2{display:flex;flex-direction:column;gap:8px}
  .ckdcard{border:1px solid var(--line);border-radius:11px;padding:10px 11px;background:var(--card)}
  .ckdcardh{display:flex;align-items:center;gap:8px;margin-bottom:9px}
  .ckdcardh .ckdinfo{flex:1;min-width:0}
  .ckdcardg{display:grid;grid-template-columns:repeat(auto-fit,minmax(78px,1fr));gap:8px}
  .ckdcardg label{display:flex;flex-direction:column;font-size:10.5px;color:var(--muted);font-weight:600}
  .ckdpror{color:var(--honey);font-weight:700}
  .ckdcardp{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
  .ckdcalc{display:flex;flex-direction:column;font-size:10px;color:var(--muted);font-weight:600}
  .ckdcalc b{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--ink);margin-top:3px;font-weight:600}
  .ckdcalc.neto{color:var(--pine)}
  .ckdcalc b.netoc{color:var(--green);font-size:13px;font-weight:700}
  @media(max-width:560px){.ckdcardg{grid-template-columns:1fr 1fr}.ckdcardp{grid-template-columns:1fr 1fr 1fr}}
  .ckdcost{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:7px 9px;cursor:pointer}
  .ckdcost:hover{border-color:var(--pine2)}
  .ckdcost.ro{cursor:default}
  .ckdcost.ro .detinp{background:var(--card2,#f2f1ec);color:var(--muted);border-color:var(--line);cursor:default}
  .ckdhint2{font-size:11px;color:var(--pine);margin-top:8px;font-weight:600}
  .ckddet2{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--card2,#fafaf7)}
  .ckdcheq{white-space:normal;min-width:150px}
  .ckdcheq b{font-weight:600}
  .ckdok{color:var(--green);font-weight:600}.ckdno{color:var(--red);font-weight:600}
  .ckdtab thead th{position:sticky;top:0;background:var(--card)}
  .ckddet{margin-top:11px;background:var(--card);border:1px solid var(--pine2);border-radius:10px;padding:10px}
  .ckddett{font-size:12px;font-weight:700;color:var(--pine);margin-bottom:7px}
  .ckdtab{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}
  .ckdtab th{text-align:right;color:var(--muted);font-weight:600;padding:3px 6px;border-bottom:1px solid var(--line)}
  .ckdtab th:first-child{text-align:left}
  .ckdtab td{text-align:right;padding:4px 6px;border-bottom:1px solid rgba(0,0,0,.04)}
  .ckdtab td:first-child{text-align:left}
  .ckdtab tfoot td{font-weight:700;border-top:1px solid var(--line)}
  .ckdcost span{display:block;font-size:10.5px;color:var(--muted);margin-bottom:2px}
  .ckdcost b{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--pine)}
  .ckdmatch{margin-top:10px;font-size:11.5px;font-weight:600;border-radius:9px;padding:7px 10px}
  .ckdmatch.ok{background:#d6ece2;color:var(--green)}
  .ckdmatch.warn{background:#fbe9d2;color:#a9641c}
  @media(max-width:560px){.ckdcosts{grid-template-columns:1fr 1fr}}
  /* Liquidación de venta con diseño de comprobante (22/09/2026): resumen tipo
     recibo -- nominal, un renglón por descuento, neto destacado -- y tarjetas
     por cheque sin scroll anidado. Todo bajo .aidetect.liq para no tocar los
     .ckd* que siguen usando Financieras y el chat. */
  .aidetect.liq{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:0;overflow:hidden;box-shadow:0 1px 2px rgba(21,40,45,.04),0 8px 24px -14px rgba(0,75,87,.28)}
  .liq-head{display:flex;align-items:center;gap:11px;padding:14px 16px 13px;background:linear-gradient(135deg,var(--pine) 0%,var(--pine2) 100%);color:#fff}
  .liq-ico{flex:none;width:32px;height:32px;border-radius:10px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center}
  .liq-tit{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .liq-tit b{font-size:14px;font-weight:700;letter-spacing:-.1px}
  .liq-tit span{font-size:11px;color:rgba(255,255,255,.72)}
  .liq-chips{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
  .liq .liq-chips .ckdbank{background:#fff;color:var(--pine);padding:3px 10px;white-space:nowrap}
  .liq-tna{font-family:var(--font-num);font-size:10.5px;font-weight:600;color:rgba(255,255,255,.85)}
  .liq-resumen{padding:6px 16px 12px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 11px) bottom/100% 1px no-repeat}
  .liq-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid rgba(21,40,45,.06);cursor:text}
  .liq-row.ro,.liq-nom,.liq-neto{cursor:default}
  .liq-lab{display:flex;align-items:baseline;gap:6px;font-size:12.5px;color:var(--muted);min-width:0}
  .liq-lab i{font-style:normal;color:var(--faint);width:8px;text-align:center}
  .liq-lab em{font-style:normal;font-size:10px;font-weight:700;color:var(--honey);background:var(--honey-tint);border-radius:20px;padding:1px 7px}
  .liq-nom .liq-lab em{color:var(--muted);background:var(--card2)}
  .liq-nom{padding:9px 0 7px}
  .liq-nom .liq-lab{font-weight:700;color:var(--ink);font-size:13px}
  .liq-nom b{font-family:var(--font-num);font-size:15px;font-weight:700;color:var(--ink)}
  .liq .detinp.liq-inp{width:150px;max-width:52%;margin:0;padding:4px 8px;border:1px solid transparent;border-radius:8px;background:transparent;font-size:13px;color:var(--ink);transition:border-color .15s,background .15s}
  .liq .liq-row:not(.ro):hover .detinp.liq-inp{border-color:var(--line2);background:var(--card2)}
  .liq .detinp.liq-inp:focus{border-color:var(--pine2);background:#fff;box-shadow:0 0 0 3px var(--pine-tint)}
  .liq .liq-row.ro .detinp.liq-inp{color:var(--muted);background:transparent;border-color:transparent}
  .liq-neto{border-bottom:0;margin-top:6px;padding:10px 12px;border-radius:11px;background:var(--pine-tint)}
  .liq-neto .liq-lab{color:var(--pine);font-weight:700;font-size:13px}
  .liq-neto b{font-family:var(--font-num);font-size:17px;font-weight:700;color:var(--pine);letter-spacing:-.2px}
  .liq #det_cierre .ckdmatch{margin-top:7px;display:flex;align-items:center;gap:6px}
  .liq-sub{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:13px 16px 7px}
  .liq-sub span{font-size:10.5px;font-weight:700;color:var(--pine);text-transform:uppercase;letter-spacing:.06em}
  .liq-sub em{font-style:normal;font-size:10.5px;color:var(--faint)}
  .liq-cheques{display:flex;flex-direction:column;gap:8px;padding:0 12px}
  .liq .liq-card{border:1px solid var(--line);border-radius:12px;padding:10px 12px 9px;background:var(--card2)}
  .liq .liq-card.no{border-color:#f0c9c1;background:#fdf6f4}
  .liq-cardh{display:flex;align-items:center;gap:9px;margin-bottom:9px}
  .liq-num{font-family:var(--font-num);font-size:13px;font-weight:700;color:var(--ink)}
  .liq-cardh .ckdmeta b{color:var(--ink);font-weight:600}
  .liq-cardh .ckdtag{flex:none}
  .liq-cardg{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:8px}
  .liq-cardg label{position:relative;display:flex;flex-direction:column;gap:3px;font-size:10.5px;font-weight:600;color:var(--muted);min-width:0}
  /* El aviso va DEBAJO del campo: arriba desalineaba el campo respecto de los
     de al lado, y a la derecha del rótulo lo tapaba en pantallas angostas. */
  .liq-cardg label .liq-flag{order:3;align-self:flex-start;margin:0;line-height:14px}
  .liq-cardg .detinp{margin:0;padding:6px 8px;border-radius:8px;border-color:var(--line2);background:var(--card);font-size:12.5px}
  .liq-cardg .detinp:focus{border-color:var(--pine2);box-shadow:0 0 0 3px var(--pine-tint)}
  .liq-cardg .detinp.detinp-warn{border-color:var(--honey);background:var(--honey-tint)}
  .liq-flag{display:inline-block;margin-left:5px;font-size:9.5px;font-weight:700;border-radius:20px;padding:0 6px;vertical-align:1px}
  .liq-flag.pror{color:var(--honey);background:var(--honey-tint)}
  .liq-flag.falta{color:var(--red);background:#f7dcd5}
  .liq-cardp{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:9px;padding-top:8px;border-top:1px dashed var(--line2);font-size:10.5px;color:var(--faint)}
  .liq-cardp b{font-family:var(--font-num);font-weight:600;color:var(--muted);margin-left:2px}
  .liq-cardp .liq-cneto{margin-left:auto;font-size:11px;font-weight:700;color:var(--pine)}
  .liq-cardp .liq-cneto b.netoc{font-size:13.5px;font-weight:700;color:var(--green)}
  .liq-avisos{padding:4px 12px 0}
  .liq-avisos .ckdmatch{display:flex;align-items:center;gap:6px;margin-top:6px}
  .liq-como{margin:10px 16px 13px;font-size:11px;color:var(--muted);line-height:1.5}
  .liq-como summary{cursor:pointer;font-weight:600;color:var(--pine2);list-style:none;display:inline-flex;align-items:center;gap:5px}
  .liq-como summary::-webkit-details-marker{display:none}
  .liq-como summary::before{content:'?';width:15px;height:15px;border-radius:50%;background:var(--pine-tint);color:var(--pine);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
  .liq-como[open] summary{margin-bottom:5px}
  /* Custodia (22/09/2026): número aparte dentro de "Capital en cartera" --
     no suma al capital, pero se ve al lado. Una tarjeta nueva rompía la
     grilla pareja de 8 del tablero. */
  .kpi .kpi-custodia{display:inline-flex;align-items:center;gap:5px;margin-top:6px;padding:2px 9px;border-radius:20px;background:rgba(74,93,138,.12);color:#4a5d8a;font-size:11px;font-weight:600;cursor:pointer;position:relative;z-index:1}
  .kpi .kpi-custodia b{font-family:var(--font-num);font-weight:700}
  .kpi .kpi-custodia:hover{background:rgba(74,93,138,.2)}
  @media(max-width:560px){.liq-cardg{grid-template-columns:1fr 1fr}.liq-cardg label:first-child{grid-column:1/-1}.liq .detinp.liq-inp{width:130px}}
  .ccgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
  .cck{background:var(--pine-tint);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
  .cck .lab{font-size:11.5px;color:var(--muted);margin-bottom:4px}
  .cck .val{font-size:18px;font-weight:700;color:var(--pine);font-family:'Bricolage Grotesque',sans-serif}
  @media(max-width:560px){.ccgrid{grid-template-columns:1fr}}
  .trazarow{display:flex;align-items:center;gap:12px;cursor:pointer}
  .trazarow .trchev{color:var(--muted);flex:none}
  .tlcycle{margin-bottom:14px}
  .tlchead{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--pine);font-size:13px;margin:6px 0}
  .tlchead .tlmonto{margin-left:auto;font-family:'JetBrains Mono',monospace;color:var(--ink);font-weight:600}
  .tline{position:relative;padding-left:6px}
  .tlev{position:relative;display:flex;gap:11px;padding:0 0 14px 18px;border-left:2px solid var(--line)}
  .tlev:last-child{border-left-color:transparent}
  .tlev .tldot{position:absolute;left:-13px;top:0;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--pine-tint);color:var(--pine);border:2px solid var(--card)}
  .tlev.tl-out .tldot{background:#fbe9d2;color:var(--honey)}
  .tlev.tl-rej .tldot,.tlev.tl-baja .tldot{background:#f7dcd5;color:var(--red)}
  .tlev.tl-acr .tldot{background:#dbeaf5;color:var(--blue)}
  .tlev.tl-mov .tldot{background:var(--pine-tint);color:var(--pine)}
  /* Un paso que sabemos que pasó pero no está registrado. Va punteado, como el
     resto de lo deducido en la app: se distingue de un dato cargado sin
     desaparecer del recorrido, que es lo que hacía antes. */
  .tlev.tlfalta .tldot{background:#fdf5e6;color:var(--honey);border-style:dashed;border-color:var(--honey)}
  .tlev.tlfalta .tlt{color:var(--muted)}
  /* Cadena de manos del cheque: registrado = lleno, deducido = punteado */
  .tchain{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:4px}
  .tchip{background:var(--pine);color:#fff;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:700}
  .tchip.inf{background:transparent;color:var(--muted);border:1px dashed var(--line2);font-weight:600}
  .tarrow{color:var(--faint);font-weight:700}
  /* "Vienen de": desglose de ex tenedores en el movimiento interno */
  .mvfrom{margin-top:10px;background:var(--card2);border:1px solid var(--line);border-radius:11px;padding:10px 12px}
  .mvfrom-h{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;display:flex;align-items:center;gap:6px;margin-bottom:8px}
  .mvfrom-row{display:flex;align-items:center;gap:9px;justify-content:space-between;padding:3px 0}
  .mvfrom-n{font-family:var(--font-num);font-size:12px;color:var(--muted)}
  .tlbody{flex:1;min-width:0;padding-top:1px}
  .tlt{font-weight:600;font-size:13px;display:flex;gap:8px;align-items:baseline}
  .tlt .tldate{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--muted);font-weight:500}
  /* 9 pestañas a 18px de padding no entran en una fila y saltaban a dos,
     comiendo 50px de alto en la ficha de un activo. Con 14px entran. */
  .subtab{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--muted);font:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:.14s}
  .subtab:hover{border-color:var(--pine2);color:var(--pine)}
  .subtab.on{background:var(--pine);border-color:var(--pine);color:#fff;box-shadow:0 6px 18px rgba(0,75,87,.22)}
  .subtab.on svg{color:#fff}
  @media(max-width:560px){.subtab span{display:none}.subtab{padding:11px 14px}}
  .condt{width:100%;border-collapse:collapse;font-size:12px}
  .condt th{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;padding:8px 7px;text-align:left;border-bottom:1px solid var(--line);background:var(--paper)}
  .condt td{padding:7px;border-bottom:1px solid var(--line2,#eee);white-space:nowrap}
  .condt .r{text-align:right}
  .condt tbody tr:last-child td{border-bottom:0}
  .condt .mch{color:var(--pine);font-weight:700}
  .condt tfoot td{padding:9px 7px;font-weight:700;background:var(--paper);border-top:1px solid var(--line)}
  .condt input.cuota-dia{width:46px;text-align:right;border:1px solid var(--pine2);border-radius:7px;padding:4px 6px;font:inherit;background:var(--card);color:var(--pine);font-weight:700}
  .condt input.cuota-dia:focus{outline:none;box-shadow:0 0 0 2px var(--pine-tint)}
  .chkrow{display:flex;align-items:center;gap:12px;padding:10px 13px;border:1px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer;transition:.13s}
  .chkrow:hover{border-color:var(--pine2)}
  .chkrow:has(input:checked){border-color:var(--pine);background:var(--pine-tint);box-shadow:0 0 0 1px var(--pine) inset}
  .chkrow input{width:17px;height:17px;flex:none;accent-color:var(--pine);cursor:pointer}
  .chkrow .ci{flex:1;min-width:0}
  .chkrow .ci .t{font-weight:700;font-size:13px;color:var(--ink);line-height:1.25}
  .chkrow .ci .s{font-size:11.5px;color:var(--faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chkrow .rt{text-align:right;flex:none;white-space:nowrap}
  .chkrow .rt .m{font-weight:700;font-size:13px;color:var(--pine)}
  .chkrow .rt .d{font-size:11px;color:var(--muted);margin-top:2px}
  /* Una fila de casilla es un <label>, y dentro de un .field la regla
     `.field label{display:block;text-transform:uppercase}` le gana por
     especificidad: la fila se rompe y el texto sale en versalitas grises.
     Pasó en el modal de rechazo. Se blinda acá en vez de depender de que
     nadie vuelva a envolver una lista en un .field. */
  .field .chkrow{display:flex;align-items:center;text-transform:none;letter-spacing:normal;font-size:13px;color:var(--ink);font-weight:400;margin-bottom:0}
  .opcard:hover{border-color:var(--pine2);transform:translateY(-1px)}
  .opcard.on{border-color:var(--pine);box-shadow:0 0 0 1px var(--pine) inset}
    .opcard .t{font-weight:700;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .opcard .n{font-size:10.5px;color:var(--faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .btn{display:inline-flex;align-items:center;gap:7px;border:none;border-radius:10px;padding:8px 14px;font-family:'Hanken Grotesk';font-weight:600;font-size:13px;cursor:pointer;transition:.14s}
  .btn-pri{background:var(--pine);color:#fff;box-shadow:0 4px 12px rgba(0,75,87,.22)}.btn-pri:hover{background:var(--pine2)}
  .btn-gho{background:var(--card);color:var(--ink);border:1px solid var(--line2)}.btn-gho:hover{background:var(--card2)}
  .btn-sm{padding:5px 10px;font-size:11.5px;border-radius:8px}
  .av{width:33px;height:33px;border-radius:50%;background:linear-gradient(135deg,var(--pine2),#02333b);display:grid;place-items:center;font-weight:700;font-size:12px;color:#fff;flex:none}
  .main{padding:24px 28px 80px;max-width:1340px;width:100%}
  .htitle{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:20px}
  .htitle h2{font-family:'Bricolage Grotesque';font-size:27px;font-weight:700;letter-spacing:-.6px}
  .htitle .sub{color:var(--muted);font-size:13px;margin-top:2px}
  .seg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}
  .seg span{font-size:12px;padding:5px 12px;border-radius:7px;color:var(--muted);cursor:pointer;font-weight:600}
  .seg span.on{background:var(--pine);color:#fff}
  .kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}
  .kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:15px 16px;box-shadow:var(--sh);position:relative}
  .kpi .lab{color:var(--muted);font-size:11px;letter-spacing:.3px;text-transform:uppercase;font-weight:600;display:flex;align-items:center;gap:7px}
  .kpi .lab .ic{width:14px;height:14px;opacity:.85;color:var(--pine)}
  .kpi .val{font-family:'Bricolage Grotesque';font-size:25px;font-weight:700;margin-top:9px;letter-spacing:-.5px}
  .kpi .val.sm{font-size:20px}
  .kpi .sub{font-size:11.5px;margin-top:6px;display:flex;align-items:center;gap:5px;color:var(--faint)}
  .up{color:var(--green)}.down{color:var(--red)}
  .kpi .ic-corner{position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--pine-tint)}
  .kpi .ic-corner .ic{width:16px;height:16px;color:var(--pine)}
  .grid{display:grid;gap:13px;margin-bottom:13px}
  /* minmax(0,1fr) y no 1fr: una columna 1fr NO puede achicarse por debajo del
     ancho mínimo de su contenido, así que basta una tabla ancha adentro para
     que la columna crezca y la página entera desborde a lo ancho. Con minmax(0,…)
     la columna respeta la grilla y la tabla scrollea dentro de su tarjeta. */
  .g-2{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.g-2e{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  /* Barra compacta de métricas (resumen) */
  /* auto-fit y no 4 fijas: el modal de obra tiene 5 KPIs y el quinto caia solo
     a una segunda fila dejando un hueco vacio enorme. Asi se acomoda a
     cualquier cantidad de celdas. */
  .statbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(152px,1fr));gap:11px;background:transparent;border:0;border-radius:0;overflow:visible}
  .statbar .st-val{white-space:nowrap}
  .statbar .st-cell{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px 14px;box-shadow:0 1px 2px rgba(20,50,55,.05),0 8px 18px -10px rgba(20,50,55,.10)}
  .statbar .st-lab{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);font-weight:700;display:flex;align-items:center;gap:6px}
  .statbar .st-val{font-family:'Bricolage Grotesque';font-size:20px;font-weight:700;letter-spacing:-.5px;margin-top:4px;color:var(--ink)}
  .statbar .st-sub{font-size:10.5px;color:var(--faint);margin-top:2px}
  .bankchips{display:flex;flex-wrap:wrap;gap:8px}
  .bankchip{border:1px solid var(--line);border-top-width:3px;border-radius:9px;padding:8px 12px;cursor:pointer;background:var(--card);min-width:150px}
  .bankchip .bc-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
  .bankchip .bc-bank{font-weight:700;font-size:12.5px}.bankchip .bc-amt{font-family:'JetBrains Mono';font-weight:700;color:var(--blue);font-size:13px}
  .bankchip .bc-sub{font-size:10.5px;margin-top:3px}
  @media(max-width:720px){.g-4{grid-template-columns:1fr 1fr}.statbar{grid-template-columns:repeat(auto-fit,minmax(138px,1fr))}}
  .card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:17px 18px;box-shadow:var(--sh)}
  .card h3{font-family:'Bricolage Grotesque';font-size:16px;font-weight:700;letter-spacing:-.3px;display:flex;align-items:center;justify-content:space-between;gap:10px}
  .tag{font-family:'Hanken Grotesk';font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--faint);font-weight:700}
  .hint{color:var(--muted);font-size:12.5px;margin-top:4px}
  .deck{background:linear-gradient(120deg,var(--honey-tint),var(--card) 60%);border-color:var(--honey-soft)}
  .row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
  .row.first{border-top:none;margin-top:4px}
  .chk{flex:none;width:46px;height:46px;border-radius:11px;background:var(--card2);border:1px solid var(--line);display:grid;place-items:center;font-family:'Bricolage Grotesque';font-size:12px;font-weight:700;color:var(--pine)}
  .rm{flex:1;min-width:0}.rm b{font-size:13.5px}
  .rm .l{color:var(--muted);font-size:11.5px;display:flex;gap:9px;flex-wrap:wrap;margin-top:2px}
  .rec{flex:none;text-align:right;min-width:120px}
  .badge{font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:99px;display:inline-block}
  .b-vend{background:var(--pine-tint);color:var(--pine)}.b-dep{background:var(--blue-tint);color:var(--blue)}.b-hold{background:var(--honey-tint);color:#a9641c}
  .rec .why{font-size:10.5px;color:var(--faint);margin-top:4px;max-width:175px;margin-left:auto}
  .st{font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
  .st::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
  .st-act{background:var(--pine-tint);color:var(--pine)}.st-pend{background:var(--honey-tint);color:#a9641c}
  .st-venc{background:#f7e3df;color:var(--red)}.st-vend{background:var(--blue-tint);color:var(--blue)}
  /* Un estado por color: verde la plata que entró, violeta lo que se entregó,
     gris lo que ya está fuera de juego. Antes todo esto caía en .st-act. */
  .st-ok{background:#daf0e8;color:var(--green)}
  .st-ent{background:#e9e4f5;color:#6a5aa8}
  .st-baja{background:#e8e8e6;color:#7b7b76}
  /* Un adelanto no es un pago: es plata entregada A CUENTA antes de liquidar.
     Va en el ambar de 'pendiente' porque eso es: falta el resto. */
  .st-adel{background:var(--honey-tint);color:#a9641c}
  /* Marcar una línea de pago como adelanto mientras se carga la operación.
     Apagado es un botón más; encendido toma el ámbar de "pendiente", que es
     lo que un adelanto deja: el resto. */
  .pagoadel{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line2);background:var(--card2);color:var(--muted);border-radius:9px;padding:0 9px;height:34px;font-size:11px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;cursor:pointer;white-space:nowrap;transition:.14s}
  .pagoadel:hover{border-color:var(--honey);color:#a9641c}
  .pagoadel.on{background:var(--honey-tint);border-color:var(--honey);color:#a9641c}
  .tbl{width:100%;border-collapse:collapse;margin-top:10px}
  .tbl th{text-align:left;font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-weight:700;padding:8px 8px;border-bottom:1px solid var(--line)}
  .tbl td{padding:10px 8px;border-bottom:1px solid var(--line);font-size:12.5px;vertical-align:middle}
  .tbl tr:last-child td{border-bottom:none}
  .tbl tbody tr:hover{background:var(--card2)}
  .tbl .mono{font-size:12px}
  .grp{font-family:'Bricolage Grotesque';font-weight:700;font-size:12px;padding:11px 8px 5px;display:flex;justify-content:space-between}
  /* Encabezado de grupo mes/año dentro de las tablas de listados */
  tr.grpmes>td{background:var(--card2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
    padding:7px 10px!important;position:sticky;top:0;z-index:1}
  tr.grpmes .gm-t{font-family:'Bricolage Grotesque';font-weight:700;font-size:12.5px;text-transform:capitalize}
  tr.grpmes .gm-s{font-size:11.5px;color:var(--muted);margin-left:auto;font-family:'JetBrains Mono'}
  .grp .t{color:var(--ink)}
  .tico{width:24px;height:24px;border-radius:7px;display:inline-grid;place-items:center;flex:none}.tico .ic{width:14px;height:14px}
  .bars{display:flex;align-items:flex-end;gap:9px;height:150px;margin-top:16px}
  .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%}
  .bcol{width:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;height:100%}
  .bseg{width:100%;border-radius:5px 5px 0 0;transition:height .5s ease}
  .b-op{background:linear-gradient(180deg,var(--honey),#b06f1f)}.b-real{background:linear-gradient(180deg,var(--pine2),var(--pine))}
  .blab{font-size:10.5px;color:var(--faint);font-family:'JetBrains Mono'}
  .hbar{display:flex;align-items:center;gap:10px;margin:9px 0;font-size:12.5px}
  .hbar .nm{width:120px;flex:none;color:var(--muted)}
  .hbar .tr{flex:1;height:9px;background:var(--card2);border-radius:5px;overflow:hidden}
  .hbar .tr i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--pine2),var(--honey));transition:width .5s}
  .hbar .vv{width:64px;text-align:right;font-family:'JetBrains Mono';font-size:11.5px}
  .bankbar{display:flex;align-items:center;gap:11px;margin:12px 0}
  .bankbar:first-child{margin-top:0}
  /* La placa del banco, igual que en el Directorio: APAISADA (78x34) y el logo
     sobre BLANCO. Son logotipos horizontales y oscuros -- en el cuadrado de
     32px que habia no se leia ninguno, y sobre el color de marca varios
     desaparecen (BBVA azul sobre azul, Santander rojo sobre rojo). Ver
     frontend-directory.js.
     El monograma --los que no tienen logo-- mide lo mismo, o las filas quedan
     de distinto alto y los nombres no alinean. */
  .bb-badge{width:78px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:800;letter-spacing:.6px;flex:0 0 78px;overflow:hidden}
  .bb-badge.bb-logo{background:#fff;border:1px solid var(--line)}
  .bb-badge.bb-logo img{max-width:84%;max-height:74%;object-fit:contain;display:block}
  @media(max-width:700px){.bb-badge{width:62px;height:30px;flex:0 0 62px}}
  .bb-body{flex:1;min-width:0}
  .bb-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}
  .bb-name{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bb-val{font-family:var(--font-num);font-size:12px;color:var(--muted);flex:none}
  .bb-track{height:8px;background:var(--card2);border-radius:5px;overflow:hidden}
  .bb-track i{display:block;height:100%;border-radius:5px;transition:width .5s}
  /* Feed de Actividad / Auditoría */
  .auditlist{display:flex;flex-direction:column;margin-top:8px}
  .auditrow{display:flex;gap:11px;padding:11px 4px;border-bottom:1px solid var(--line)}
  .auditrow:last-child{border-bottom:none}
  .audit-ic{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:0 0 30px;background:var(--card2)}
  .audit-main{flex:1;min-width:0}
  .audit-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .audit-line b{font-size:13.5px;font-weight:600}
  .audit-meta{font-size:11.5px;color:var(--muted);margin-top:3px;font-family:var(--font-num)}
  .audit-detail{margin-top:6px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--card2);font-size:12px}
  .audit-facts{display:flex;gap:14px;flex-wrap:wrap}
  .audit-facts span{display:flex;flex-direction:column;gap:2px;color:var(--ink)}
  .audit-facts b{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
  .audit-reason{margin-top:6px;color:var(--muted);font-size:11.5px}
  .mov-highlight{background:#fff4d7;box-shadow:inset 4px 0 var(--honey)}
  /* Directorio como lista al estilo de la app */
  .dirlist{display:flex;flex-direction:column}
  .dir-row{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid var(--line)}
  .dir-row:last-child{border-bottom:none}
  .dir-main{flex:1;min-width:0}
  .dir-main b{font-size:14px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dir-sub{font-size:12px;color:var(--muted);margin-top:2px;font-family:var(--font-num)}
  .dir-acts{display:flex;gap:7px;flex:none}
  @media(max-width:640px){.dir-acts .btn span{display:none}.dir-acts .btn{padding:8px 10px}}
  .hbars.big{margin-top:10px}
  .fuelbar .nm{width:150px;color:var(--ink);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fuelbar .vv{width:86px}
  .fuelbar .pct{width:38px;text-align:right;color:var(--muted);font-family:'JetBrains Mono';font-size:11px}
  .leg{display:flex;align-items:center;gap:8px;font-size:12.5px}
  .leg .sw{width:10px;height:10px;border-radius:3px;flex:none}
  .kan{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-top:14px}
  .kcol{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:11px;min-height:80px}
  .kh{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}
  .kh .d{width:8px;height:8px;border-radius:50%}.kh .c{margin-left:auto;font-family:'JetBrains Mono';color:var(--faint)}
  .kcard{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:7px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
  .kcard b{font-size:12.5px}.kcard .m{color:var(--muted);font-size:11px;margin-top:2px}.kcard .d2{color:var(--faint);font-size:10.5px;margin-top:4px}
  .kcard .acts{display:flex;gap:6px;margin-top:8px}
  .cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:14px}
  .cal .dh{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);text-align:center;font-weight:700;padding-bottom:2px}
  .cell{background:var(--card2);border:1px solid var(--line);border-radius:9px;min-height:78px;padding:6px}
  .cell.mutedcell{opacity:.42;background:#f3efe6}
  .cell .dn{font-size:11px;color:var(--faint);font-family:'JetBrains Mono'}
  .cell.today{border-color:var(--pine);background:var(--pine-tint)}
  .chip{font-size:9.5px;font-weight:700;padding:2px 5px;border-radius:5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ch-dep{background:#dcecdf;color:var(--pine)}.ch-venc{background:#f7e0db;color:var(--red)}.ch-cub{background:var(--blue-tint);color:var(--blue)}
  .cell.nohabil{background:repeating-linear-gradient(135deg,var(--card2),var(--card2) 6px,rgba(0,0,0,.03) 6px,rgba(0,0,0,.03) 12px)}
  .calneto{font-size:9px;font-weight:700;margin-top:4px;padding-top:3px;border-top:1px dashed var(--line);text-align:right}
  .calneto.pos{color:var(--green)}.calneto.neg{color:var(--red)}
  .tl-day{margin-bottom:6px}
  .tl-date{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;padding:10px 0 4px;border-bottom:1px solid var(--line);margin-bottom:4px}
  .tl-ev{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid var(--line)}
  .tl-ev:hover{background:var(--card2)}
  .tl-dot{width:8px;height:8px;border-radius:50%;flex:none}
  .tl-ic{color:var(--muted);flex:none;display:flex}
  .tl-main{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}
  .tl-main b{font-size:12.5px}.tl-main .hint{font-size:11px}
  .tl-amt{font-size:12.5px;font-weight:700;white-space:nowrap}
  .gauge{display:flex;align-items:center;gap:20px;margin-top:8px}
  /* Cisterna estilo acoplado/trailer (antes era un tanque vertical). */
  .tank-wrap{display:flex;align-items:center;gap:18px;margin-top:10px;min-height:190px}
  .tank-svg{width:250px;height:147px;flex:none}
  .tank-info{flex:1;min-width:170px}
  @media(max-width:560px){.tank-wrap{gap:16px;min-height:150px;flex-wrap:wrap}.tank-svg{width:220px;height:129px}}
  .note{margin-top:18px;border:1px dashed var(--line2);border-radius:13px;padding:13px 16px;color:var(--muted);font-size:12px;background:var(--card2)}
  .note b{color:var(--pine)}
  .calcgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-top:14px}
  .calc{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:13px}
  .calc .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--faint);font-weight:600}
  .calc .v{font-family:'Bricolage Grotesque';font-size:18px;font-weight:700;margin-top:6px}
  .typebtns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
  /* min-height + line-height: los rótulos de 2 líneas ("Reemplazo Cheque
     Rechazado") hacían que esa fila fuera más alta y el bloque se veía desparejo. */
  .tb{display:flex;align-items:center;gap:9px;min-height:52px;line-height:1.2;border:1.5px solid var(--line2);background:var(--card);border-radius:12px;padding:10px 12px;font-size:12.5px;font-weight:600;cursor:pointer;transition:.15s;color:var(--ink)}
  .tb:hover{border-color:var(--pine-tint2,#cfe0d6)}
  /* El color de selección lo pone tbBoton() inline (border-color/box-shadow
     según OPTYPE_COLOR de cada tipo) -- acá sólo el respaldo genérico para
     cualquier .tb.on que no pase por tbBoton(). */
  .tb.on{border-color:var(--pine);box-shadow:0 2px 8px rgba(0,75,87,.12)}.tb .ic{width:16px;height:16px;flex-shrink:0}
  /* Chip de ícono a color por tipo de operación (OPTYPE_COLOR/tbBoton): la
     tarjeta se queda blanca y legible, sólo el chip lleva el color -- teñir
     toda la tarjeta pastel las volvía casi indistinguibles entre sí. */
  .tb-ico{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none}
  .tb-ico .ic{width:15px;height:15px}
  .dsub{font-size:12px;color:var(--muted);margin-top:2px}
  .dsep{height:1px;background:var(--line);margin:18px 0 4px}
  /* .dsec se estiliza junto a .ing-sec/.egrhdr (encabezado de sección único) */
  .dsec::after{content:'';flex:1;height:1px;background:var(--line)}
  /* ESTADOS VACÍOS — únicos para toda la app.
     .empty2 sólo estaba definido dentro de .chbox, así que sus ~38 usos fuera
     de ese contexto salían como texto pelado sin estilo (se veían "de otra
     app"). Ahora los dos son cajas discretas, coherentes con el resto. */
  /* Celda de tabla que abre un detalle: se nota que es clickeable */
  .celda-link{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
.celda-link:hover{background:var(--card2)}
.actactions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.req{color:var(--red);font-weight:700}
  .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    text-align:center;color:var(--muted);font-size:13px;padding:30px 16px;
    background:var(--card2);border:1px dashed var(--line);border-radius:12px}
  /* En bloque y no en flex. Con `display:flex` cada trozo de la frase se vuelve
     un item independiente: un `<b>` en el medio partía la oración en tres
     columnas separadas por 8px, y en una tarjeta angosta quedaba ilegible
     ("Cargalos en | Editar ficha | : sin el valor..."). En bloque el texto
     fluye como texto, que es lo que es. */
  .empty2{display:block;color:var(--muted);font-size:12.5px;padding:12px 14px;line-height:1.5;
    background:var(--card2);border:1px dashed var(--line);border-radius:10px}
  .empty2::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;
    background:var(--line2);margin-right:8px;vertical-align:middle}
  .empty2>svg{vertical-align:-3px;margin-right:2px}
  /* Recorrido de un rechazo: cheque -> operación de reemplazo -> con qué se pagó.
     La línea vertical une los pasos; el último no la lleva. */
  .rtrace{display:flex;flex-direction:column;gap:0;margin:4px 0}
  .rstep{display:flex;gap:11px;padding:0 0 14px;position:relative}
  .rstep:last-child{padding-bottom:0}
  .rstep:not(:last-child)::before{content:'';position:absolute;left:10px;top:22px;bottom:2px;width:2px;background:var(--line)}
  .rdot{flex:0 0 22px;height:22px;border-radius:50%;background:var(--pine-tint);color:var(--pine);
    display:grid;place-items:center;font-size:11px;font-weight:800;position:relative;z-index:1}
  .rstep b{font-size:12.5px}
  .rstep .hint{margin-top:2px}
  /* Dentro de una tabla el borde discontinuo choca: se usa la versión plana. */
  td>.empty,td>.empty2{background:transparent;border:none;justify-content:center}
  td>.empty2::before{display:none}
  /* forms / drawer */
  .scrim{position:fixed;inset:0;background:rgba(20,30,24,.42);z-index:150;opacity:0;pointer-events:none;transition:.2s}
  .scrim.on{opacity:1;pointer-events:auto}
  /* Igual que el modal: el scroll va en .dbody, no en el contenedor. */
  .drawer{position:fixed;top:0;right:0;height:100vh;width:min(440px,100%);background:var(--paper);z-index:160;box-shadow:-10px 0 40px rgba(20,30,24,.18);transform:translateX(100%);transition:.26s cubic-bezier(.4,0,.2,1);overflow:hidden;display:flex;flex-direction:column}
  .drawer.on{transform:none}
  .dhead{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--paper);z-index:2}
  .dhead h3{font-family:'Bricolage Grotesque';font-size:18px;font-weight:700}
  .xbtn{width:32px;height:32px;border-radius:9px;border:1px solid var(--line2);background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--muted)}
  .dbody{padding:18px 20px;flex:1;overflow-y:auto;min-height:0}
  .dfoot{padding:14px 20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;position:sticky;bottom:0;background:var(--paper)}
  /* Un poco más compacto: en formularios largos (editar un activo tiene 14
     campos) el aire de más obligaba a scrollear de más sin aportar claridad. */
  .field{margin-bottom:12px}
  .field label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:5px}
  .field input,.field select,.field textarea{width:100%;border:1px solid var(--line2);background:var(--card);border-radius:10px;padding:9px 11px;font-family:'Hanken Grotesk';font-size:14px;color:var(--ink);box-sizing:border-box}
  .field input.mono{font-family:'JetBrains Mono'}
  .field textarea{resize:vertical;min-height:64px;line-height:1.5}
  .field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--pine);box-shadow:0 0 0 3px rgba(0,75,87,.08)}
  /* auto-fit: las columnas vacías COLAPSAN. Antes era `1fr 1fr` fijo, así que un
     campo oculto (ej. "Impuesto al cheque") igual reservaba su mitad y el campo
     de al lado ("Método") quedaba angosto con un hueco al costado. También hace
     que baje a una columna solo cuando no entra, sin media query. */
  .frow{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
  .liveband{background:var(--pine);color:#fff;border-radius:12px;padding:14px 16px;margin-top:6px}
  /* Ingreso de cheques: primero se identifica el motivo comercial de toda la
     operación. Son dos opciones explícitas para no confundir una venta con un
     cobro de campo, y el detalle no se repite dentro de cada cheque. */
  .ing-origen-card{border:1px solid var(--line);border-left:4px solid var(--pine);border-radius:13px;padding:14px 15px;background:linear-gradient(135deg,var(--pine-tint),var(--card) 65%)}
  .ing-origen-kicker{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--pine)}
  .ing-origen-title{font-size:15px;font-weight:750;color:var(--ink);margin:4px 0 11px}
  .ing-origen-options{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .ing-origen-option:nth-child(3){grid-column:1/-1}
  .cheque-month-head td{padding:8px 10px!important;background:var(--card2);border-top:1px solid var(--line2);color:var(--pine);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
  .cheque-month-head td>small{float:right;color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:0;text-transform:none}
  /* Resolución de cheques vencidos: dos caminos distintos, sin que "dar de
     baja" parezca la única salida. La variante retroactiva concentra primero
     la explicación y el tipo de operación; la baja queda claramente separada. */
  .retro-resumen{display:flex;gap:10px;align-items:flex-start;padding:12px 13px;margin-bottom:14px;border:1px solid #e7d7bd;border-left:4px solid var(--honey);border-radius:12px;background:#fffaf0;color:var(--ink)}
  .retro-resumen>svg{color:var(--honey);margin-top:1px;flex:none}.retro-resumen b,.retro-resumen small{display:block}.retro-resumen b{font-size:12.5px}.retro-resumen small{margin-top:3px;color:var(--muted);font-size:11.5px;line-height:1.35}
  .retro-opcion{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--card);margin-top:11px}.retro-opcion-principal{border-color:#b9d5d3;background:linear-gradient(145deg,#f8fcfb,#fff)}
  .retro-opcion-tit{display:flex;gap:10px;align-items:flex-start}.retro-opcion-tit b,.retro-opcion-tit small{display:block}.retro-opcion-tit b{font-size:13px;color:var(--ink)}.retro-opcion-tit small{margin-top:3px;color:var(--muted);font-size:11.5px;line-height:1.35}
  .retro-opcion-ico{display:grid;place-items:center;width:31px;height:31px;border-radius:10px;flex:none;background:var(--pine-tint);color:var(--pine)}.retro-opcion-ico-baja{background:#fff0ed;color:var(--red)}
  .retro-opcion .field{margin:13px 0 0}.retro-en-drawer{margin:0 0 14px!important;border-left:4px solid var(--pine)!important;background:#f4faf9!important;line-height:1.4}.retro-en-drawer span{color:var(--muted);font-size:11.5px}
  .ing-origen-option{appearance:none;display:flex;align-items:flex-start;gap:9px;min-width:0;text-align:left;border:1px solid var(--line2);border-radius:11px;padding:11px;background:var(--card);color:var(--ink);cursor:pointer;transition:.15s}
  .ing-origen-option>svg{margin-top:2px;color:var(--pine);flex:none}
  .ing-origen-option span{display:grid;gap:2px;min-width:0}
  .ing-origen-option b{font-size:12.5px}.ing-origen-option small{font-size:11px;line-height:1.3;color:var(--muted)}
  .ing-origen-option:hover{border-color:var(--pine);transform:translateY(-1px)}
  .ing-origen-option.on{border-color:var(--pine);background:var(--pine);box-shadow:0 3px 8px rgba(0,75,87,.18);color:#fff}
  .ing-origen-option.on>svg,.ing-origen-option.on small{color:#fff}
  .ing-cheque-origen{display:flex;gap:9px;align-items:flex-start;background:var(--card2);border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-top:10px;color:var(--pine)}
  .ing-cheque-origen>div{display:grid;gap:2px;min-width:0}.ing-cheque-origen span{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
  .ing-cheque-origen b{font-size:12.5px;color:var(--ink)}.ing-cheque-origen small{font-size:11px;line-height:1.3;color:var(--muted)}
  @media(max-width:560px){.ing-origen-options{grid-template-columns:1fr}.ing-origen-option{padding:10px}}
  .liveband .lr{display:flex;justify-content:space-between;font-size:12.5px;padding:3px 0}
  .liveband .lr b{font-family:'JetBrains Mono'}
  .liveband .big{border-top:1px solid rgba(255,255,255,.18);margin-top:6px;padding-top:8px}
  .liveband .big .v{font-family:'Bricolage Grotesque';font-size:22px;font-weight:700;color:var(--honey-soft)}
  /* En reemplazos el resultado forma parte del formulario: se viste como un
     bloque del modal, no como la banda verde de resumen de otras operaciones. */
  .liveband.liveband-modal{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:10px}
  .liveband-modal .reemplazo-seleccion-wrap{overflow-x:auto;margin:0 0 8px;border:1px solid var(--line);border-radius:9px;background:var(--card)}
  .liveband-modal .reemplazo-seleccion{color:var(--ink)}
  .liveband-modal .reemplazo-seleccion caption{background:var(--card2);color:var(--muted);font-size:10px}
  .liveband-modal .reemplazo-seleccion th,.liveband-modal .reemplazo-seleccion td{border-bottom:1px solid var(--line);color:var(--ink)}
  .liveband-modal .reemplazo-seleccion thead th{color:var(--muted)}
  .liveband-modal .reemplazo-seleccion tfoot th,.liveband-modal .reemplazo-seleccion tfoot td{color:var(--pine);border-top:1px solid var(--line2)}
  .liveband-modal .lr{padding:5px 1px;color:var(--muted)}
  .liveband-modal .lr b{color:var(--ink)}
  .liveband-modal .lr.big{border-top:1px solid var(--line);margin-top:5px;padding-top:9px;color:var(--ink)}
  .liveband-modal .lr.big .v{color:var(--pine);font-size:19px}
  .liveband-modal .replace-overdue{color:var(--red)}
  .liveband-modal .replace-overdue b{color:var(--red)}
  .liveband-modal .replace-allocation-hint{color:var(--muted)}
  /* El neto liquidado es el numero que se lee primero --es la plata que entra--
     asi que va igual de grande que el resultado, no perdido entre los renglones. */
  /* Un paso que todavía no corresponde: se VE (así se sabe qué viene después)
     pero no se puede tocar. Apagarlo del todo escondería el formulario y no se
     entendería qué falta. */
  .paso-bloqueado{opacity:.45;pointer-events:none;filter:saturate(.4)}
  .paso-aviso{display:flex;align-items:center;gap:8px;background:var(--card2);border:1px dashed var(--line2);border-radius:10px;padding:9px 12px;font-size:12.5px;color:var(--muted);font-weight:600;margin:10px 0 2px}
  .liveband .lr.destacado{border-top:1px solid rgba(255,255,255,.18);margin-top:6px;padding-top:8px;align-items:baseline}
  .liveband .lr.destacado>span:first-child{font-size:12.5px}
  .liveband .lr.destacado b{font-family:'Bricolage Grotesque';font-size:22px;font-weight:700}
  /* Un resultado negativo va en rojo. Antes salia del mismo color que uno a
     favor y habia que leer el signo para darse cuenta. */
  .liveband .big .v.malo,.liveband .lr.destacado b.malo{color:#ff9a8d}
  /* OJO con pointer-events: el toast vive siempre en el DOM, invisible pero
     ocupando lugar. Sin esto se comía el toque del tab del MEDIO de la barra
     inferior (Cheques), que cae justo debajo: el botón "no andaba" y no había
     ningún error, porque el click se lo llevaba un cartel invisible.
     Un toast no es interactivo, así que nunca debería recibir toques. */
  .toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:11px 20px;border-radius:12px;font-size:13px;font-weight:600;z-index:250;opacity:0;pointer-events:none;transition:.25s;box-shadow:0 10px 30px rgba(0,0,0,.25);display:flex;align-items:center;gap:9px}
  .toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
  /* Aviso de error: el mismo toast pero en rojo. Un problema que impide
     guardar no puede verse igual que un «Cheque agregado». */
  .toast.err{background:#b3261e;box-shadow:0 10px 30px rgba(179,38,30,.35)}
  /* Bloqueo dentro del formulario. El toast se va a los 2 segundos; esto se
     queda arriba del modal hasta que el dato deje de estar mal. */
  .fbloq{display:none;align-items:flex-start;gap:9px;background:#fdecea;border:1px solid #f0b4ae;border-left:4px solid #b3261e;color:#8c1d18;border-radius:10px;padding:10px 12px;font-size:12.5px;font-weight:600;margin:0 0 11px;line-height:1.4}
  .fbloq.on{display:flex}
  .fbloq b{font-weight:800}
  .fbloq svg{flex:none;margin-top:1px}
  .field.bad>input,.field.bad>select,.field.bad>.combo>.cbsel-trigger,.field.bad>.cbsel>.cbsel-trigger{border-color:#b3261e!important;background:#fdecea}
  .btn.btn-pri[disabled],.btn[disabled]{opacity:.45;pointer-events:none}
  /* Confirmación con el estilo de la app, en vez del confirm() del navegador,
     que aparece pegado arriba de la pantalla, dice "Claude" y no respeta nada
     del diseño. Va por encima del modal general (z 60/70) porque muchas
     confirmaciones salen desde adentro de uno. */
  .cfscrim{position:fixed;inset:0;background:rgba(20,30,24,.55);z-index:260;opacity:0;pointer-events:none;transition:.18s}
  .cfscrim.on{opacity:1;pointer-events:auto}
  /* Mismo lenguaje que los modales de la app: ícono en pastilla de color,
     cuerpo aireado y pie separado con los botones, en vez de una caja plana. */
  .cfbox{position:fixed;left:50%;top:50%;transform:translate(-50%,-46%) scale(.97);z-index:261;
    width:min(430px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:20px;
    box-shadow:0 26px 64px rgba(20,40,45,.30);padding:0;overflow:hidden;opacity:0;pointer-events:none;transition:.18s}
  .cfbox.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
  .cfbox h4{font-size:17px;font-weight:700;margin:0;padding:20px 22px 0;display:flex;align-items:center;gap:11px;line-height:1.25}
  /* El ícono viene de ic() con width/height inline: se pisa para convertirlo en
     una pastilla del mismo estilo que .dt-ico de los modales. */
  .cfbox h4>svg{flex:none;box-sizing:border-box;width:36px!important;height:36px!important;padding:9px;border-radius:12px;background:var(--pine-tint);color:var(--pine)}
  .cfbox .cftxt{font-size:13.5px;color:var(--muted);line-height:1.55;white-space:pre-line;padding:10px 22px 0}
  .cfbox .cfbody{padding:12px 22px 0}
  .cfbox textarea,.cfbox input{width:100%;box-sizing:border-box;border:1px solid var(--line2);border-radius:11px;
    padding:9px 11px;font:inherit;font-size:13.5px;background:var(--card2);color:var(--ink);resize:vertical}
  .cfbox textarea:focus,.cfbox input:focus{outline:none;border-color:var(--pine);background:var(--card)}
  .cfbox .cfacts{display:flex;gap:9px;margin:18px 0 0;padding:14px 22px;border-top:1px solid var(--line);background:var(--card2)}
  .cfbox .cfacts .btn{flex:1;justify-content:center}
  .cfbox.peligro h4{color:var(--red)}
  .cfbox.peligro h4>svg{background:#f7e3df;color:var(--red)}
  /* second-layer modal */
  .scrim2{position:fixed;inset:0;background:rgba(20,30,24,.5);z-index:170;opacity:0;pointer-events:none;transition:.2s}
  .scrim2.on{opacity:1;pointer-events:auto}
  /* overflow:hidden en el contenedor para que las esquinas redondeadas recorten
     todo; el scroll vive en .mbody, así la barra queda DENTRO del modal y no
     rompe el borde (antes el scroll estaba acá y cortaba la esquina). */
  .modal{position:fixed;z-index:175;top:50%;left:50%;transform:translate(-50%,-48%) scale(.97);opacity:0;pointer-events:none;transition:.2s;width:min(760px,94vw);max-height:88vh;overflow:hidden;background:var(--paper);border-radius:18px;box-shadow:0 30px 80px rgba(20,30,24,.35);display:flex;flex-direction:column}
  .modal.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
  /* Los modales que muestran TABLAS necesitan aire: con 680px y nueve columnas
     los importes se partian en dos lineas. En pantallas chicas sigue mandando
     el 94vw, asi que no cambia nada en el celular. */
  /* El ancho no es una talla unica: sale del contenido (ver rsAncharModal en
     frontend-navigation.js, que mide la tabla mas ancha y escribe --mancho).
     Una tabla de seis columnas no tiene por que ocupar lo mismo que una de
     nueve: quedaba media pantalla en blanco a la derecha. */
  .modal.modal-ancho{width:min(var(--mancho,1180px),96vw)}
  .mhead{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--paper);z-index:2}
  /* Botón volver: aparece cuando este modal se abrió encima de otro */
  /* Antes era un círculo con solo "‹" (pine-tint sobre paper, casi invisible;
     luego pine sólido, pero seguía sin leerse como botón salvo con el tooltip
     al hover). Ahora es una píldora con ícono + texto "Volver" SIEMPRE visible,
     sin depender del hover para saber qué hace. */
  .mback{height:30px;border-radius:15px;border:0;background:var(--pine);color:#fff;display:flex;align-items:center;gap:4px;cursor:pointer;font:700 13px/1 var(--font-app,inherit);flex:none;margin-right:10px;padding:0 12px 0 9px;box-shadow:0 3px 8px rgba(0,75,87,.28);white-space:nowrap}
  .mback svg{flex:none}
  .mback:hover{background:var(--pine2)}
  .mhead h3{flex:1;min-width:0}
  .mhead h3{font-family:'Bricolage Grotesque';font-size:17px;font-weight:700}
  .mbody{padding:18px 20px;overflow-y:auto;flex:1;min-height:0}
  /* SCROLLBAR — fino y discreto en toda la app. La barra nativa de Windows es
     gruesa y gris; acá queda como una guía sutil que aparece sobre el fondo. */
  *{scrollbar-width:thin;scrollbar-color:rgba(20,30,24,.22) transparent}
  ::-webkit-scrollbar{width:10px;height:10px}
  ::-webkit-scrollbar-track{background:transparent}
  ::-webkit-scrollbar-thumb{background:rgba(20,30,24,.20);border-radius:8px;border:3px solid transparent;background-clip:content-box}
  ::-webkit-scrollbar-thumb:hover{background:rgba(20,30,24,.34);border:3px solid transparent;background-clip:content-box}
  ::-webkit-scrollbar-corner{background:transparent}
  .mfoot{padding:13px 20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;position:sticky;bottom:0;background:var(--paper)}
  /* El aviso que bloquea el guardado vive en el pie, no en el cuerpo: el pie
     es sticky, así que se ve aunque el formulario esté scrolleado. */
  .mfoot .fbloq,.dfoot .fbloq{flex:1 1 100%;margin:0 0 10px}
  .chtable{width:100%;border-collapse:collapse;margin-top:6px}
  .chtable th{text-align:left;font-size:9.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);font-weight:700;padding:7px 7px;border-bottom:1px solid var(--line)}
  .chtable td{padding:8px 7px;border-bottom:1px solid var(--line);font-size:12px}
  .chtable tfoot td{font-weight:700;border-top:2px solid var(--line2);border-bottom:none;font-family:'JetBrains Mono'}
  .chtable .del{color:var(--red);cursor:pointer;font-weight:700;font-size:11px}
  .chbox{border:1px dashed var(--line2);border-radius:12px;padding:6px 12px 12px;margin-top:6px;background:var(--card2)}
  .chbox .empty2{text-align:center;color:var(--faint);font-size:12px;padding:18px}
  /* ingreso de cheques */
  /* ENCABEZADO DE SECCIÓN — único para toda la app.
     Antes había cuatro estilos distintos (.ing-sec, .egrhdr, .dsec y el del
     modal de obra), así que cada modal separaba sus secciones de una forma
     diferente y algunos casi no se distinguían. Ahora es una banda con barra
     de acento, igual en todos lados. */
  /* Rediseñado 2026-08-19: la banda con gradiente pálido ocupaba mucho y se
     veía lavada -- en un formulario largo (ej. editar un activo) tres de esas
     bandas pesaban más que los campos. Ahora es un rótulo fino con línea de
     apoyo: separa igual pero deja el protagonismo al contenido. */
  .ing-sec,.egrhdr,.dsec{
    display:flex;align-items:center;gap:8px;
    font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:800;
    color:var(--pine);
    background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;
    padding:0 2px 7px;margin:22px 0 12px;
  }
  .ing-sec>svg,.egrhdr>svg,.dsec>svg{color:var(--honey);flex:none}
  /* La primera sección de un modal no necesita separarse de lo de arriba. */
  .mbody>.ing-sec:first-child,.mbody>.egrhdr:first-child,.mbody>.dsec:first-child,
  .dbody>.ing-sec:first-child,.dbody>.egrhdr:first-child,.dbody>.dsec:first-child{margin-top:0}
  .seg2{display:inline-flex;background:var(--card2);border:1px solid var(--line2);border-radius:10px;padding:3px;gap:3px;width:100%}
  /* nowrap: "Cheques a plazo" se partía en dos renglones y dejaba el segmento
     desparejo (una opción de 1 línea y la otra de 2). */
  .seg2 button{flex:1;border:none;background:transparent;padding:9px 8px;border-radius:7px;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s;white-space:nowrap;min-height:38px}
  .seg2 button.on{background:var(--pine);color:#fff;box-shadow:0 2px 6px rgba(0,75,87,.25)}
  .calc-panel{background:var(--card2);border:1px solid var(--line);border-radius:13px;padding:4px 14px;margin-top:6px}
  /* Secciones del modal de obra: cada bloque es una tarjeta con encabezado
     propio y su subtotal a la derecha. Antes eran sólo una línea fina y con
     4+ secciones no se distinguía dónde empezaba y terminaba cada una. */
  .osec{border:1px solid var(--line);border-radius:14px;background:var(--card);margin-bottom:14px;overflow:hidden}
  .osec-h{display:flex;align-items:center;gap:11px;padding:11px 14px;background:var(--card2);border-bottom:1px solid var(--line);border-left:3px solid var(--pine)}
  .osec-n{width:23px;height:23px;border-radius:7px;background:var(--pine);color:#fff;font-size:11.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 23px}
  .osec-tt{font-weight:700;font-size:13.5px;line-height:1.25}
  .osec-tt small{display:block;font-weight:400;font-size:11.5px;color:var(--muted);margin-top:1px}
  .osec-v{margin-left:auto;text-align:right;font-weight:800;font-size:14px;white-space:nowrap}
  .osec-v small{display:block;font-weight:600;font-size:10.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
  .osec-b{padding:13px 14px}
  .anexos-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid var(--line)}
  .anexos-actions .hint{max-width:620px;line-height:1.4}
  .anexos-list{display:grid;gap:9px;margin-top:11px}
  .anexo-item{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
  .anexo-item-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
  .anexo-item-h b{display:block;margin-top:3px;font-size:13px}
  .anexo-item-k{display:block;color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
  .anexo-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:7px;margin-top:10px}
  .anexo-items>div{padding:8px 9px;border-left:3px solid var(--honey);border-radius:6px;background:var(--card)}
  .anexo-items b,.anexo-items span{display:block}
  .anexo-items b{font-size:12px}
  .anexo-items span,.anexo-condiciones{margin:3px 0 0;color:var(--muted);font-size:11.5px;line-height:1.4}
  .anexo-condiciones{padding-top:9px;border-top:1px solid var(--line);white-space:pre-wrap}
  /* Los paneles de "etiqueta · valor" (rentabilidad, plazo) no necesitan todo
     el ancho de la tarjeta -- en pantallas grandes quedaban con un espacio
     enorme entre el texto y el número, que se leía desprolijo. */
  .osec-b .calc-panel{max-width:640px}
  /* Grilla de formulario: columnas parejas que se acomodan solas. Antes se
     usaba .frow (grid de 2 columnas) con anchos en px y flex:1 en los campos,
     que en un grid no tienen efecto -> los campos quedaban desparejos. */
  .fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;align-items:end}
  .fgrid .field{margin-bottom:0}
  /* Fila de acciones al pie del formulario */
  .facts{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);flex-wrap:wrap}
  .facts .btn{margin-left:auto}
  .osec-tag{font-size:9.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--pine);background:var(--pine-tint);border-radius:5px;padding:2px 6px;margin-left:2px}
  /* Destinos: desplegable de selección múltiple (antes era una pared de casillas) */
  .dest-dd{border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .dest-dd[open]{border-color:var(--pine)}
  .dest-dd>summary{list-style:none;cursor:pointer;padding:10px 13px;display:flex;align-items:center;gap:8px;font-size:13px}
  .dest-dd>summary::-webkit-details-marker{display:none}
  .dest-dd>summary::after{content:'▾';margin-left:auto;color:var(--muted);font-size:11px}
  .dest-dd[open]>summary::after{content:'▴'}
  .dest-dd>summary b{font-weight:700}
  .dest-dd-p{border-top:1px solid var(--line);padding:9px;max-height:270px;overflow:auto}
  .dest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:8px}
  .dest-c{display:flex;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer;background:transparent}
  .dest-c.on{border-color:var(--pine);background:var(--pine-tint)}
  .dest-c b{font-size:12.5px;line-height:1.2}
  .dest-c span{font-size:11px;color:var(--muted)}
  .calc-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}
  .calc-row:last-child{border-bottom:none}
  .calc-row .ck{font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
  .calc-row .ck svg{opacity:.5}
  .calc-row .cv{font-family:'JetBrains Mono';font-size:13px;font-weight:600;color:var(--ink)}
  .calc-row .cv.hi{color:var(--pine)}
  .calc-badge{display:inline-block;background:var(--pine);color:#fff;font-size:11px;font-weight:700;padding:5px 14px;border-radius:8px}
  /* detail */
  .det-sec{margin-top:13px;border:1px solid var(--line);border-radius:14px;padding:13px 15px;background:var(--card)}
  /* Grilla de datos read-only: cada campo es label arriba + valor abajo, en
     tarjetas que fluyen (1 col en móvil, varias en desktop). Reemplaza el layout
     apretado de label-izquierda/valor-derecha que se amontonaba en móvil. */
  /* Antes cada dato era una tarjeta gris con borde: seis datos seguidos se
     veían como una pared de rectángulos iguales, sin jerarquía. Ahora es una
     lista de datos con una guía fina al costado -- se lee de un vistazo y el
     valor (no la caja) es lo que pesa. */
  .det-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 22px;margin-top:6px}
  .det-field{background:none;border:0;border-left:2px solid var(--line2);border-radius:0;padding:1px 0 1px 12px;min-width:0}
  .det-field .k{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);font-weight:700;margin-bottom:3px}
  .det-field .v{font-size:14.5px;color:var(--ink);font-weight:650;line-height:1.34;overflow-wrap:anywhere}
  .det-sec .det-grid{margin-top:2px}
  .det-sec .det-field{background:none}
  /* Mismo rótulo que .ing-sec/.dsec, para que todas las secciones de la app se
     vean iguales estén dentro de una tarjeta o de un modal. */
  .det-sec .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--pine);font-weight:800;margin:-1px 0 11px;padding-bottom:8px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
  .det-sec .lbl>svg{color:var(--honey);flex:none}
  /* La actividad de un cambio se lee como una secuencia (no como JSON ni una
     fila técnica). La línea y los puntos dan continuidad sin depender sólo del
     color para explicar qué ocurrió. */
  .change-trace{background:linear-gradient(135deg,var(--pine-tint),var(--card) 72%)}
  .change-trace-list{display:grid;gap:10px}
  .change-trace-event{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr);gap:9px;align-items:start;font-size:12.5px;line-height:1.4}
  .change-trace-event:not(:last-child)::before{content:'';position:absolute;left:7px;top:16px;bottom:-13px;width:1px;background:var(--pine-tint2)}
  .change-trace-dot{width:15px;height:15px;margin-top:1px;border:3px solid var(--card);border-radius:50%;background:var(--pine);box-shadow:0 0 0 1px var(--pine-tint2);z-index:1}
  .change-trace-event b{display:block;color:var(--ink);font-size:12.5px}
  .change-trace-event small{display:block;margin-top:3px;color:var(--faint);font-size:10.5px}
  .change-trace-old{color:var(--muted);text-decoration:line-through}
.change-trace-new{color:var(--pine);font-weight:700}
.activity-history{background:var(--card)}
.activity-history .change-trace-event{padding:2px 0}
.activity-history .change-trace-dot{background:var(--muted);box-shadow:0 0 0 1px var(--line)}
.activity-history .change-trace-event:not(:last-child)::before{background:var(--line)}
/* En un pago no se mezclan dos cheques como si siguieran vigentes. El
     anterior queda visible, pero apagado y unido explícitamente a quien lo
     reemplazó; la tabla de abajo conserva sólo las líneas contables activas. */
  .liq-reemplazos{margin:0 0 11px}
  .liq-reemplazo{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--card2)}
  .liq-reemplazo-anterior,.liq-reemplazo-vigente{min-width:0;display:grid;gap:2px}
  .liq-reemplazo-anterior{opacity:.52;filter:grayscale(.7)}
  .liq-reemplazo-anterior b{text-decoration:line-through}
  .liq-reemplazo-vigente{padding-left:12px;border-left:2px solid var(--pine-tint2)}
  .liq-reemplazo b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}
  .liq-reemplazo .mono{font-size:12px;font-weight:700}
  .liq-reemplazo-paso{display:grid;justify-items:center;gap:2px;color:var(--pine);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
  .liq-reemplazo-paso svg{color:var(--honey)}
  /* El plazo se lee de arriba hacia abajo: fechas, resultado y, recién
     después, el detalle operativo. La fecha real no reemplaza al compromiso. */
  .obra-control{display:grid;gap:12px}
  .obra-control-estado{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 15px;border:1px solid var(--line);border-left:4px solid var(--estado-color);border-radius:11px;background:var(--card2)}
  .obra-control-estado>div:first-child{display:grid;gap:3px}.obra-control-estado span,.obra-control-cierre>span{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:var(--faint)}
  .obra-control-estado strong{font-size:17px;line-height:1.15}.obra-control-estado p{margin:0;font-size:12px;color:var(--muted)}
  .obra-control-diferencia{display:grid;gap:4px;text-align:right;white-space:nowrap}.obra-control-diferencia b{font-size:18px}
  .obra-control-fechas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:9px;align-items:stretch}
  .obra-control-guardar{align-self:center;white-space:nowrap}
  .obra-control-lectura{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,.7fr);gap:12px}
  .obra-medidores{display:grid;gap:10px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .obra-medidor{display:grid;gap:5px;font-size:12px}.obra-medidor>div{display:flex;justify-content:space-between;gap:8px}.obra-medidor>i{display:block;height:8px;overflow:hidden;border-radius:99px;background:var(--card2)}.obra-medidor em{display:block;height:100%;border-radius:inherit}
  .obra-control-cierre{display:grid;align-content:center;gap:4px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:10px;background:var(--card)}
  .obra-control-cierre strong{font-size:14px}.obra-control-cierre small{font-size:11.5px;color:var(--muted);line-height:1.35}.obra-control-cierre>b{margin-top:2px;font-size:11.5px}
  .obra-control-cierre.ok{border-left-color:var(--green);background:#d6ece2}.obra-control-cierre.atraso{border-left-color:var(--red);background:#f7e3df}
  .obra-curva{margin-top:14px;padding:12px 13px 7px;border-top:1px solid var(--line)}
  .obra-curva-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.obra-curva-h>div{display:grid;gap:2px}.obra-curva-h b{font-size:12.5px}.obra-curva-h span{font-size:11px;color:var(--muted)}
  .obra-plazo-resumen{display:grid;gap:12px;margin-bottom:14px}
  .obra-fechas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
  .obra-fecha{display:grid;gap:6px;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .obra-fecha>span,.obra-plazo-resultado span{font-size:9.5px;line-height:1.2;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:var(--faint)}
  .obra-fecha input{width:100%;min-width:0}
  .obra-fecha small{font-size:10.5px;line-height:1.35;color:var(--muted);min-height:28px}
  .obra-fecha.objetivo{border-top:3px solid var(--honey)}
  .obra-fecha.real{border-top:3px solid var(--pine)}
  .obra-plazo-resultado{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:10px;background:var(--card2)}
  .obra-plazo-resultado>div:first-child{display:grid;gap:3px;min-width:0}
  .obra-plazo-resultado strong{font-size:15px;color:var(--ink)}
  .obra-plazo-resultado small{font-size:12px;color:var(--muted)}
  .obra-plazo-resultado-fecha{display:grid;gap:4px;text-align:right;white-space:nowrap}
  .obra-plazo-resultado-fecha b{font-size:13px;color:var(--ink)}
  .obra-plazo-resultado.ok{border-left-color:var(--green);background:#d6ece2}
  .obra-plazo-resultado.atraso{border-left-color:var(--red);background:#f7e3df}
  .obra-fechas-accion{display:flex;justify-content:flex-end}
  .curva-wrap{padding:12px 2px 2px;border-top:1px solid var(--line)}
  .plazo-acciones{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
  .plazo-acciones>div{display:grid;gap:2px;font-size:12px}
  .plazo-acciones span{color:var(--muted);font-size:11.5px}
  .plazo-resumen{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:-2px 0 12px;font-size:12px;color:var(--muted)}
  .plazo-resumen b{color:var(--ink)}
  .pz-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:12px;align-items:stretch;margin-bottom:12px}
  .plazo-estado,.plazo-metrica{border:1px solid var(--line);border-radius:11px;background:var(--card);padding:12px 13px}
  .plazo-estado{border-left:4px solid var(--plazo-color)}
  .plazo-estado-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--line)}
  .plazo-bar{display:grid;gap:4px;margin-bottom:10px;font-size:12px}
  .plazo-bar>div{display:flex;align-items:center;justify-content:space-between;gap:8px}
  .plazo-bar>i{display:block;height:8px;overflow:hidden;border-radius:99px;background:var(--card2)}
  .plazo-bar>i>em{display:block;height:100%;border-radius:inherit}
  .plazo-desvio{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid var(--line);font-size:12px}
  .plazo-metrica{padding-top:10px}
  .plazo-metrica h4{margin:0 0 7px;font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--pine)}
  .plazo-metrica .calc-row:last-child{border-bottom:0}
  .prorroga-tipos{display:grid;gap:8px;margin:0 0 12px}
  .prorroga-tipos label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:start;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--card);cursor:pointer}
  .prorroga-tipos label:has(input:checked){border-color:var(--pine);background:var(--pine-tint);box-shadow:0 0 0 1px var(--pine) inset}
  .prorroga-tipos input{margin:3px 0 0;accent-color:var(--pine)}
  .prorroga-tipos span{display:grid;gap:3px;font-size:12px;line-height:1.3}
  .prorroga-tipos small{color:var(--muted);font-size:11px;line-height:1.35}
  @media(max-width:760px){.obra-fechas,.obra-control-fechas{grid-template-columns:1fr}.obra-fecha small{min-height:0}.obra-control-estado{align-items:flex-start;flex-direction:column;gap:10px}.obra-control-diferencia{text-align:left}.obra-control-lectura{grid-template-columns:1fr}.obra-control-guardar,.obra-fechas-accion .btn,.plazo-acciones .btn{width:100%;justify-content:center}.plazo-acciones{align-items:stretch;flex-direction:column}.obra-curva-h{align-items:flex-start;flex-direction:column}}
  .det-sec .chtable{margin-top:2px}  .modal .det-sec{max-width:100%;overflow-x:auto}
  .modal .det-sec .chtable{width:100%;min-width:620px;table-layout:auto}
  .modal .det-sec .chtable th,.modal .det-sec .chtable td{white-space:nowrap;padding:9px 8px}
  .modal .det-sec .chtable th:nth-child(2),.modal .det-sec .chtable td:nth-child(2){min-width:84px}
  .modal .det-sec .chtable th:last-child,.modal .det-sec .chtable td:last-child{padding-right:12px}
  /* Liquidaciones: importa comparar cada cheque de izquierda a derecha. Se
     fijan las columnas de control y la acción queda como un grupo horizontal,
     no como dos iconos uno debajo del otro. */
  /* SE ACOMODA AL ANCHO QUE HAY (23/09/2026). Antes las siete columnas tenían
     un ancho fijo en píxeles y la tabla un mínimo de 620px heredado de
     .chtable: en el modal no entraban y quedaba una barra de desplazamiento
     horizontal con todo apretado. Ahora los anchos son proporcionales, sólo
     los números y las fechas no se cortan, y en pantallas angostas se esconde
     lo prescindible (el concepto, que casi siempre dice "pago"). */
  .liq-table,.modal .det-sec .liq-table{table-layout:fixed;min-width:0;width:100%}
  .liq-table .liq-concepto{width:10%}.liq-table .liq-medio{width:21%}.liq-table .liq-numero{width:14%}
  .liq-table .liq-banco{width:17%}.liq-table .liq-fecha{width:13%}.liq-table .liq-monto{width:17%}
  .liq-table .liq-acciones{width:8%}
  /* Ya entra: la sección no necesita desplazarse (y con la barra siempre
     visible de Windows quedaba un riel vacío debajo de las filas). */
  .modal .det-sec:has(.liq-table){overflow-x:hidden}
  .liq-table th,.liq-table td{overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
  .modal .det-sec .liq-table th,.modal .det-sec .liq-table td{padding:8px 7px}
  /* El medio y el banco pueden partirse en dos renglones; los números y las
     fechas no, que cortados no se entienden. */
  .liq-table td:nth-child(2),.liq-table td:nth-child(4){white-space:normal;word-break:break-word}
  .liq-table td:nth-child(3),.liq-table td:nth-child(5),.liq-table td:nth-child(6){white-space:nowrap}
  .liq-table .liq-dif{display:block;font-size:10px;font-weight:600;color:var(--honey);white-space:nowrap}
  @media(max-width:760px){
    /* Gana por especificidad a `table.mobile-ready td{display:table-cell}`,
       que si no deja la columna visible igual. */
    .liq-table .liq-concepto,
    .modal .det-sec table.liq-table th:nth-child(1),
    .modal .det-sec table.liq-table td:nth-child(1),
    .liq-table th:nth-child(1),.liq-table td:nth-child(1){display:none}
    /* El banco también se va: cortar el monto o la fecha ("$27.6…", "03/…")
       es peor que no mostrar el banco, que igual se ve al tocar el cheque. */
    .modal .det-sec table.liq-table th:nth-child(4),
    .modal .det-sec table.liq-table td:nth-child(4),
    .liq-table .liq-banco{display:none}
    .liq-table .liq-medio{width:27%}.liq-table .liq-numero{width:18%}
    .liq-table .liq-fecha{width:21%}.liq-table .liq-monto{width:25%}.liq-table .liq-acciones{width:9%}
    .modal .det-sec .liq-table th,.modal .det-sec .liq-table td{padding:7px 4px;font-size:11px}
    .liq-table td:nth-child(2){white-space:normal;line-height:1.25}
  }
  /* En el teléfono no hay ancho para cinco columnas sin cortar el monto o la
     fecha, que es lo que se viene a mirar. Cada línea pasa a leerse como una
     ficha: arriba el medio y el monto, abajo el N°, el banco y la fecha. */
  /* El !important es para ganarle al bloque general de tablas móviles de más
     abajo, que fuerza display:table, width:auto y nowrap en cada celda. */
  @media(max-width:620px){
    .modal .det-sec table.liq-table{display:block!important;table-layout:auto!important;width:100%!important;min-width:0!important}
    .modal .det-sec table.liq-table thead{display:none!important}
    .modal .det-sec table.liq-table tbody{display:block!important;width:100%!important}
    .modal .det-sec table.liq-table tbody tr{display:flex!important;flex-wrap:wrap!important;align-items:baseline;gap:1px 8px;padding:9px 2px!important;border-bottom:1px solid var(--line)}
    .modal .det-sec table.liq-table tbody td{display:inline-block!important;width:auto!important;max-width:none!important;border:0!important;padding:0!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important}
    .modal .det-sec table.liq-table tbody td:nth-child(1){display:none!important}
    .modal .det-sec table.liq-table tbody td:nth-child(2){order:1;flex:1 1 55%;min-width:0;font-size:12px!important;font-weight:600;white-space:normal!important}
    .modal .det-sec table.liq-table tbody td:nth-child(6){order:2;flex:0 0 auto;margin-left:auto;font-size:13px!important;font-weight:700;text-align:right!important}
    /* Corta el renglón: sin esto el N° se colaba al lado del monto. */
    .modal .det-sec table.liq-table tbody tr::after{content:'';order:3;flex:0 0 100%;height:0}
    .modal .det-sec table.liq-table tbody td:nth-child(3),
    .modal .det-sec table.liq-table tbody td:nth-child(4),
    .modal .det-sec table.liq-table tbody td:nth-child(5){order:4;flex:0 0 auto;font-size:10.5px!important;color:var(--muted)}
    .modal .det-sec table.liq-table tbody td:nth-child(7){order:5;flex:0 0 auto;margin-left:auto}
  }
  .liq-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
  .liq-actions .presu-itx{flex:none}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  @media(max-width:650px){.liq-reemplazo{grid-template-columns:1fr;gap:8px}.liq-reemplazo-paso{grid-template-columns:auto 1fr;justify-content:start;align-items:center}.liq-reemplazo-vigente{padding-left:0;padding-top:8px;border-left:0;border-top:2px solid var(--pine-tint2)}}
  /* Condiciones y Resultados eran tarjetas grises apiladas de a dos: mucho aire
     por dato y una pared de rectángulos iguales. Ahora es una lista de datos
     separada por líneas finas, el mismo idioma que la franja del encabezado
     del detalle. Entran más datos, se leen más rápido y no compiten con las
     cifras. */
  /* El gap de 1px deja ver el fondo del contenedor: así las líneas de la grilla
     salen parejas sin que se dupliquen contra el borde exterior. */
  .resgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
           border:1px solid var(--line);border-radius:11px;overflow:hidden;background:var(--line)}
  .resitem{padding:10px 13px;background:var(--card);min-width:0}
  .resitem .k{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:var(--faint)}
  .resitem .vv{font-family:var(--font-num);font-weight:700;font-size:14.5px;margin-top:4px;
               overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .views>section{display:none}.views>section.live{display:block;animation:f .3s ease}
  @keyframes f{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
  .mtab{display:none}
  @media(max-width:980px){
    .shell{grid-template-columns:1fr}.side{display:none}
    html,body{overflow-x:hidden}
    /* ENCABEZADO MÓVIL: en pantalla chica el breadcrumb completo ocupaba todo
       el ancho y dejaba los botones apretados contra el borde. Se muestra sólo
       la sección actual, en grande, y los botones quedan como acciones limpias. */
    .topbar{padding:10px 14px;gap:10px}.search{display:none}.topbar .blab-hide{display:none}
    .crumb{font-size:17px;font-family:'Bricolage Grotesque';font-weight:700;color:var(--ink);
      white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
    .crumb .crumb-pre{display:none}          /* "Rolado Silvopastoril ·" */
    .crumb b{color:var(--ink);font-weight:700}
    .topbar .btn{padding:8px 10px;flex:0 0 auto}
    .topbar .av{flex:0 0 auto}
    .main{padding:16px 13px 96px;max-width:100%}
    .fab-new{right:16px;bottom:calc(82px + env(safe-area-inset-bottom));width:56px;height:56px}
    .fab-menu{right:12px;bottom:calc(146px + env(safe-area-inset-bottom))}
    .kpis{grid-template-columns:1fr 1fr}.kpi{min-width:0;overflow:hidden}.kpi .val{font-size:21px}.kpi .val.sm{font-size:17px}.kpi .ic-corner{display:none}
    .g-2,.g-2e,.g-3,.calcgrid{grid-template-columns:1fr}.kan{grid-template-columns:1fr}
    .opcards{grid-template-columns:1fr 1fr}
    .htitle h2{font-size:22px}
    .cal{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.cell{min-height:60px;padding:3px;overflow:hidden}.cell .dn{font-size:9px}.chip{font-size:8px}.cal .dh{font-size:8px}
    .opsearch{min-width:0}
    .main .card{overflow-x:auto;-webkit-overflow-scrolling:touch}
    .htitle{flex-wrap:wrap}
    .rec{min-width:96px}
    /* En movil el toast sube por encima de la barra inferior: si no, el
       cartel aparece justo encima de los botones y tapa lo que se acaba de
       tocar. */
    .toast{bottom:78px}
    .mtab{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:35;background:rgba(28,59,46,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:8px 4px 12px;justify-content:space-around;gap:2px}
    .mtab a{display:flex;flex-direction:column;align-items:center;gap:3px;color:#8fae9c;font-size:9px;cursor:pointer;font-weight:600;flex:1;min-width:0;text-align:center}
    .mtab a .ic{width:21px;height:21px}.mtab a.on{color:var(--honey-soft)}
  .mm-sec{display:flex;align-items:center;gap:8px;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:800;margin:18px 0 9px}
  .mm-sec:first-child{margin-top:2px}
  .mm-dot{width:7px;height:7px;border-radius:50%;flex:none}
  .mm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
  .mm-item{display:flex;flex-direction:column;align-items:center;gap:9px;padding:15px 7px;border:1px solid var(--line);border-radius:15px;cursor:pointer;color:var(--ink);font-size:11.5px;font-weight:600;text-align:center;background:var(--card);box-shadow:0 1px 2px rgba(20,40,45,.04);transition:transform .13s,box-shadow .13s,border-color .13s,background .13s}
  .mm-item:hover{transform:translateY(-2px);box-shadow:0 10px 22px -10px rgba(0,75,87,.28);border-color:var(--mmc)}
  .mm-ic{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--mmt);color:var(--mmc);transition:background .13s,color .13s}
  .mm-item .ic,.mm-item .mm-ic .ic{color:inherit}
  .mm-lbl{line-height:1.2}
  .mm-item.on{border-color:var(--mmc);background:var(--mmt)}
  .mm-item.on .mm-ic{background:var(--mmc);color:#fff}
    .rec .why{display:none}.hbar .nm{width:90px}
    .btn .blab-hide{display:none}
  }
  @media(max-width:560px){
    .opcards{grid-template-columns:1fr}
    .htitle h2{font-size:20px}
    .htitle>div:last-child{display:flex;gap:8px;width:100%}
    .htitle>div:last-child .btn{flex:1;justify-content:center}
    .subtabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
    .subtab{flex:none}
    .seg2{width:100%;overflow-x:auto}
    .ckdcardg{grid-template-columns:1fr 1fr}
    .ccgrid{grid-template-columns:1fr}
  }
  /* Mobile-first finishing layer */
  @media(max-width:980px){
    .topbar{padding-top:calc(10px + env(safe-area-inset-top))}
    .crumb{display:flex;align-items:center;gap:9px}
    .crumb::before{content:'';width:34px;height:34px;flex:0 0 34px;border-radius:9px;background:#fff url('./Logo%20RS.png') center/contain no-repeat;box-shadow:0 2px 9px rgba(0,75,87,.12)}
    .mtab{padding-bottom:calc(9px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.1);box-shadow:0 -8px 28px rgba(8,28,26,.18)}
    .mtab a{min-height:48px;justify-content:center;border-radius:12px;transition:.16s}
    .mtab a.on{background:rgba(255,255,255,.08)}
    .drawer{height:100dvh}
    .modal{max-height:90dvh}
    .tbl,.chtable{min-width:680px}
    .chatpanel .chtable,.modal .chtable{min-width:600px}
  }
  @media(max-width:640px){
    :root{--r:14px}
    body{background:#f5f3ee}
    .main{padding:14px 11px calc(92px + env(safe-area-inset-bottom))}
    .topbar{padding-left:11px;padding-right:11px;background:rgba(248,246,241,.94)}
    .topbar .av{width:38px;height:38px}
    .htitle{align-items:flex-start;margin-bottom:15px;gap:10px}
    .htitle>div:first-child{width:100%}
    .htitle h2{font-size:23px;line-height:1.12}
    .htitle .sub{font-size:12px;line-height:1.35;margin-top:5px}
    .htitle>.btn,.htitle>div:last-child{width:100%}
    .htitle>.btn{justify-content:center;min-height:44px}
    .card{padding:14px;border-radius:14px;box-shadow:0 2px 14px rgba(20,50,55,.055)}
    .kpis{gap:9px;margin-bottom:12px}
    .kpi{padding:13px 12px;border-radius:13px}
    .kpi .lab{font-size:9.5px;line-height:1.2}
    .kpi .val,.kpi .val.sm{font-size:19px;margin-top:7px}
    .kpi .sub{font-size:10.5px;line-height:1.25}
    .grid{gap:10px;margin-bottom:10px}
    .statbar{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}
    .statbar .st-cell{padding:10px}
    .statbar .st-val{font-size:16px;white-space:normal}
    .btn{min-height:42px;justify-content:center}
    .chip2,.subtab{min-height:40px}
    .opcards{gap:8px}
    .opcard{padding:12px}
    .main .card{max-width:100%;overflow-x:auto}
    .tbl,.chtable{min-width:620px}
    .drawer{top:auto;bottom:0;height:min(94dvh,920px);width:100%;border-radius:22px 22px 0 0;transform:translateY(105%);box-shadow:0 -18px 55px rgba(20,30,24,.24)}
    .drawer.on{transform:translateY(0)}
    .dhead{padding:15px 16px}.dbody{padding:15px 16px}.dfoot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
    .modal{top:auto;bottom:0;left:0;width:100%;max-height:92dvh;border-radius:22px 22px 0 0;transform:translateY(105%);opacity:1}
    .modal.on{transform:translateY(0)}
    .mhead{padding:15px 16px}.mbody{padding:15px 16px}.mfoot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex-wrap:wrap}
    .mfoot .btn,.dfoot .btn{flex:1;min-width:120px}
    .cfbox{bottom:calc(18px + env(safe-area-inset-bottom));top:auto;transform:translateX(-50%) translateY(20px);width:calc(100vw - 22px);border-radius:18px}
    .cfbox.on{transform:translateX(-50%) translateY(0)}
    .mm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
    .mm-item{min-height:82px;padding:11px 4px}
    .chatfeed{min-height:42dvh!important;max-height:52dvh;padding:12px!important}
    .chatrow{max-width:94%}
    .aicomposer{gap:6px}
    #chatinput{font-size:16px}
    .chattool{width:44px;height:44px}
    .toast{width:calc(100vw - 22px);justify-content:center;text-align:center;padding:11px 13px}
    .install-prompt{bottom:calc(150px + env(safe-area-inset-bottom))}
    .update-banner{bottom:calc(214px + env(safe-area-inset-bottom))}
    .cal{min-width:560px}
    .calwrap,.card:has(.cal){overflow-x:auto}
  }
  @media(max-width:380px){
    .kpis{grid-template-columns:1fr}
    .statbar{grid-template-columns:repeat(auto-fit,minmax(136px,1fr))}
    .mm-grid{grid-template-columns:1fr 1fr}
    .login-logo-frame{width:126px}
    .login-hero h1{font-size:25px;max-width:205px}
  }
  .cuotadias{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px;margin-top:4px}
  .cuota-dia{text-align:center;padding:7px 4px!important}

  /* Header móvil unificado: título arriba, logo Rolado a la derecha, buscador visible y sin duplicar h1 internos */
  .mobile-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
  .crumb-sub,.mobile-logo{display:none}
  @media(max-width:980px){
    .topbar{display:grid!important;grid-template-columns:minmax(0,1fr) 46px auto auto!important;align-items:center!important;gap:9px!important;padding:calc(10px + env(safe-area-inset-top)) 12px 11px!important;background:linear-gradient(180deg,rgba(247,236,214,.62),rgba(248,246,241,.97))!important;border-bottom:1px solid rgba(0,75,87,.11)!important;box-shadow:0 1px 0 rgba(207,138,44,.14),0 8px 22px -16px rgba(0,75,87,.22)!important}
    .mobile-title{display:block!important;min-width:0!important}
    .crumb{display:block!important;font-size:22px!important;line-height:1.08!important;letter-spacing:-.5px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-family:'Bricolage Grotesque',sans-serif!important;color:var(--ink)!important}
    .crumb::before{display:none!important;content:none!important}
    .crumb .crumb-pre{display:none!important}
    .crumb-sub{display:block!important;margin-top:3px;color:var(--muted);font-size:12.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .mobile-logo{display:block!important;width:54px;height:54px;border-radius:0;background:url('./logo-rs-transparent.png') center/contain no-repeat;filter:drop-shadow(0 4px 8px rgba(0,75,87,.16))}
    .topbar .newmenu{display:flex!important;justify-content:flex-end}
    .topbar .btn{min-height:40px!important;padding:8px 10px!important;border-radius:12px!important}
    .topbar .av{width:40px!important;height:40px!important}
    .topbar .search{grid-column:1 / -1;display:flex!important;min-width:0!important;width:100%!important;margin:3px 0 0!important;order:9;background:#fff!important;border-color:#d8d0c2!important;border-radius:14px!important;padding:10px 12px!important;box-shadow:0 2px 12px rgba(20,50,55,.05)}
    .topbar .search input{font-size:16px!important}
    .htitle{margin:0 0 12px!important;gap:8px!important}
    /* Ocultar htitles de un solo bloque SOLO si son título puro (sin botones);
       los que tienen un botón —ej. "← Volver" del contrato— se dejan. */
    .htitle:has(>div:first-child:last-child):not(:has(button)):not(:has(a)){display:none!important}
    .htitle>div:first-child>h2,.htitle>div:first-child>.sub,.htitle>div:first-child>.dsp{display:none!important}
    .htitle>div:last-child:not(:first-child),.htitle>.btn{width:100%!important;display:flex!important;gap:8px!important}
    .htitle>div:last-child .btn{flex:1!important;justify-content:center!important}
    .fin-title{display:none!important}
    body[data-view="equipo"] .htitle{display:none!important}
  }
  @media(max-width:640px){
    .main{padding-top:13px!important}
    .topbar{grid-template-columns:minmax(0,1fr) 42px auto auto!important;padding-left:10px!important;padding-right:10px!important}
    .crumb{font-size:21px!important}
    .crumb-sub{font-size:12px!important}
    .mobile-logo{width:40px;height:40px}
  }




  /* Header móvil final: logo a la izquierda, más grande, sin duplicaciones visuales */
  @media(max-width:980px){
    .topbar{grid-template-columns:66px minmax(0,1fr) 44px 44px!important;grid-template-areas:"logo title new user" "search search search search"!important;column-gap:10px!important;row-gap:8px!important;align-items:center!important}
    .mobile-logo{grid-area:logo!important;display:block!important;width:62px!important;height:62px!important;background:url('./logo-rs-transparent.png') center/contain no-repeat!important;filter:drop-shadow(0 6px 10px rgba(0,75,87,.14))!important;justify-self:start!important;order:0!important}
    .mobile-title{grid-area:title!important;display:block!important;min-width:0!important;order:1!important}
    .topbar .newmenu{grid-area:new!important;justify-self:end!important;order:2!important}
    .topbar .av{grid-area:user!important;justify-self:end!important;order:3!important}
    .topbar .search{grid-area:search!important;order:4!important;margin:0!important}
    .crumb{font-size:21px!important;line-height:1.05!important}
    .crumb-sub{font-size:12px!important;margin-top:4px!important}
    .topbar .btn,.topbar .av{width:44px!important;height:44px!important;min-height:44px!important;padding:0!important;display:grid!important;place-items:center!important}
    .topbar .btn .ic{width:19px!important;height:19px!important}
  }
  @media(max-width:430px){
    .topbar{grid-template-columns:52px minmax(0,1fr) 42px 42px!important;column-gap:8px!important}
    .mobile-logo{width:50px!important;height:50px!important}
    .crumb{font-size:20px!important}.crumb-sub{font-size:11.5px!important}
    .topbar .btn,.topbar .av{width:42px!important;height:42px!important;min-height:42px!important}
  }
  /* Chat móvil integrado: no sale de la app, conserva menú/header y muestra grupos */
  @media(max-width:760px){
    body[data-chat-open="1"] .topbar{display:grid!important}
    body[data-chat-open="1"] .mtab{display:flex!important}
    body[data-chat-open="1"] .fab-new{display:grid!important}
    body[data-chat-open="1"] .main{padding:13px 10px calc(92px + env(safe-area-inset-bottom))!important}
    body[data-chat-open="1"] .views,body[data-chat-open="1"] .live{height:auto!important;min-height:0!important}
    body[data-view="equipo"] .fab-new{display:none!important}
    .chat-layout,.chat-layout.open{display:block!important;width:100%!important;max-width:100%!important;position:static!important}
    .chat-layout.open .chat-sidebar,.chat-layout:not(.open) .chat-sidebar{display:block!important;width:100%!important;max-width:100%!important;margin:0 0 10px!important}
    .chat-layout.open .chat-main,.chat-layout:not(.open) .chat-main{display:block!important;position:static!important;inset:auto!important;z-index:auto!important;background:transparent!important;width:100%!important;max-width:100%!important;min-width:0!important}
    .chat-list-card{height:auto!important;border-radius:15px!important;padding:10px!important;overflow:hidden!important}
    .chat-list-head{padding:2px 2px 8px!important;margin-bottom:8px!important}
    .chat-list-head span{display:none!important}
    .chat-list{display:flex!important;gap:8px!important;overflow-x:auto!important;overflow-y:hidden!important;padding-bottom:2px!important;scroll-snap-type:x proximity!important}
    .chatitem{flex:0 0 min(260px,78vw)!important;padding:9px 10px!important;border:1px solid var(--line)!important;background:#fff!important;box-shadow:none!important;scroll-snap-align:start!important}
    .chatitem.on{border-color:var(--pine)!important;background:var(--pine-tint)!important;box-shadow:inset 3px 0 0 var(--pine)!important}
    .chatav{width:34px!important;height:34px!important;border-radius:11px!important}
    .chatmeta b{font-size:13px!important}.chatmeta span{font-size:11px!important}
    .chattime{display:none!important}
    .chatback{display:none!important}
    .chatpanel{height:auto!important;min-height:0!important;border-radius:16px!important;border:1px solid var(--line)!important;box-shadow:0 6px 22px rgba(20,50,55,.07)!important;background:#fff!important;overflow:hidden!important}
    .chat-layout.open .chatpanel{height:auto!important;border-radius:16px!important;border:1px solid var(--line)!important;background:#fff!important;box-shadow:0 6px 22px rgba(20,50,55,.07)!important}
    .chatpanel .chathead,.chat-layout.open .chatpanel .chathead{padding:12px 12px!important;gap:8px!important;flex-wrap:wrap!important;background:#fff!important;border-bottom:1px solid var(--line)!important}
    .chatpanel .chathead>div,.chat-layout.open .chatpanel .chathead>div{margin-left:0!important;width:100%!important;display:flex!important;justify-content:flex-end!important;gap:6px!important;flex-wrap:wrap!important}
    .chatpanel .chathead .btn{min-height:36px!important;flex:1 1 auto!important}
    .chatpanel .chathead .btn span{display:inline!important}
    .chatfeed,.chat-layout.open .chatfeed{min-height:48dvh!important;max-height:58dvh!important;height:auto!important;flex:none!important;border-radius:0!important;padding:12px!important;background:linear-gradient(180deg,#f7f5ef,#f2eee5)!important;overflow-y:auto!important;overflow-x:hidden!important}
    .chatrow{max-width:94%!important}.chatrow.mine{margin-left:auto!important}
    .chat-layout.open .aicomposer,.chatpanel .aicomposer{padding:10px!important;background:#fff!important;border-top:1px solid var(--line)!important;gap:7px!important}
    #chatinput{min-width:0!important;font-size:16px!important}
    .chattool{width:42px!important;height:42px!important;min-height:42px!important;flex:0 0 42px!important}
    .chatwarnings{display:block!important;margin-top:10px!important}
  }
  /* Loading de sesión: logo centrado, transparente, sin placa ni fondo blanco */
  #login .login-shell.login-loading{width:100%!important;min-height:100dvh!important;max-width:none!important;border:0!important;border-radius:0!important;background:#f4efe5!important;box-shadow:none!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important}
  #login .login-shell.login-loading .login-panel{width:100%!important;min-height:100dvh!important;padding:0 24px!important;display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;background:transparent!important;border:0!important}
  #login .login-shell.login-loading .login-logo-frame{position:static!important;inset:auto!important;width:190px!important;height:auto!important;aspect-ratio:1.45!important;margin:0 auto 28px!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;display:grid!important;place-items:center!important;transform:none!important}
  #login .login-shell.login-loading .login-logo-frame img{width:190px!important;height:auto!important;object-fit:contain!important;filter:drop-shadow(0 12px 24px rgba(0,75,87,.14))!important}
  #login .login-shell.login-loading .loginstatus{margin:0 auto!important;color:#102a2e!important;font-size:14px!important;font-weight:800!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;max-width:260px!important}
  #login .login-shell.login-loading .loginspin{width:38px!important;height:13px!important;border:0!important;color:#0c6a60!important;background:transparent!important}
  /* Responsive global real: sin scroll horizontal de página y tablas legibles como tarjetas */
  @media(max-width:760px){
    html,body,.shell,.wrap,.main,.views,.views>.live{width:100%!important;max-width:100%!important;min-width:0!important;overflow-x:hidden!important}
    .views>.live>*{max-width:100%!important;min-width:0!important}
    .card,.deck,.note,.grid,.g-2,.g-2e,.g-3,.g-4,.kpis,.statbar,.opcards,.kan,.calcgrid,.subtabs,.seg2,.opsearch,.field,input,select,textarea{max-width:100%!important;min-width:0!important}
    .card{overflow:hidden!important}
    .opcards{grid-template-columns:1fr!important}
    .opcard{width:100%!important}
    .subtabs{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important;gap:7px!important;margin-left:-2px;margin-right:-2px;padding:0 2px 8px!important;scroll-snap-type:x proximity}
    .subtab{flex:0 0 auto!important;scroll-snap-align:start;white-space:nowrap!important}
    .subtab span{display:inline!important}
    .seg2{overflow:visible!important;display:grid!important;grid-template-columns:repeat(auto-fit,minmax(96px,1fr))!important}
    .topbar+.main,.main{overflow-x:hidden!important}
    .hbar{gap:7px!important}.hbar .nm{width:104px!important;min-width:104px!important}.hbar .vv{width:72px!important;min-width:72px!important}
    .bankchips{display:grid!important;grid-template-columns:1fr 1fr!important}.bankchip{min-width:0!important}
    .resgrid,.ckdcardg,.ckdcosts,.ccgrid{grid-template-columns:1fr!important}
    .kcard .acts{flex-direction:column}.kcard .acts .btn{width:100%}
    .calwrap,.card:has(.cal){overflow-x:auto!important}.cal{min-width:560px!important}
  }
  @media(max-width:430px){
    .topbar{grid-template-columns:minmax(0,1fr) 38px 40px 40px!important;gap:7px!important}
    .topbar .btn{width:40px!important;padding:0!important}.topbar .btn .ic{width:18px!important;height:18px!important}
    .topbar .av,.mobile-logo{width:38px!important;height:38px!important}
    .crumb{font-size:19px!important}.crumb-sub{font-size:11.5px!important}
    .main{padding-left:9px!important;padding-right:9px!important}
    .card{padding:12px!important}
  }
  /* ---- página de impresión (2 copias) ---- */
  #printArea{display:none}
  @media print{
    .shell,.mtab,.drawer,.scrim,.scrim2,.modal,.toast,.topbar,.fab-new,.fab-menu,.install-prompt,.busy-overlay,.rs-splash,.cfscrim,.cfbox,.chat-layout{display:none!important}
    body{background:#fff!important}
    #printArea{display:block!important;position:static;padding:0;color:#111;font-family:'Hanken Grotesk',sans-serif}
    .psheet{page-break-after:always;padding:26px 30px}
    .psheet:last-child{page-break-after:auto}
    .phead{display:flex;align-items:center;gap:12px;border-bottom:2px solid #004b57;padding-bottom:12px;margin-bottom:14px}
    .phead .plogo{width:42px;height:42px;border-radius:9px;background:#004b57;display:grid;place-items:center;flex:none}
    .phead .pname{font-family:'Bricolage Grotesque';font-size:19px;font-weight:700;color:#004b57;line-height:1.05}
    .phead .psub{font-size:9.5px;letter-spacing:1.6px;text-transform:uppercase;color:#7a8a86;margin-top:2px}
    .phead .pright{margin-left:auto;text-align:right;font-size:10.5px;color:#555}
    .pcopy{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#004b57;font-weight:700;border:1px solid #004b57;display:inline-block;padding:2px 10px;border-radius:5px}
    .ptitle{font-family:'Bricolage Grotesque';font-size:22px;font-weight:700;margin:8px 0 2px;color:#15282d}
    .pmeta{font-size:11.5px;color:#444;margin-bottom:14px}
    .ptbl{width:100%;border-collapse:collapse;margin-top:8px;font-size:11px}
    .ptbl th,.ptbl td{border:1px solid #d3cdc0;padding:5px 7px;text-align:left}
    .ptbl th{background:#dcebed;color:#004b57;font-weight:700}
    .ptbl td.r,.ptbl th.r{text-align:right;font-variant-numeric:tabular-nums}
    .ptbl tfoot td{font-weight:700;background:#f7ecd6}
    .psec{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#666;font-weight:700;margin:16px 0 4px}
    .pres{display:flex;gap:24px;flex-wrap:wrap;margin-top:10px;font-size:12px}
    .pres b{display:block;font-size:16px;font-family:'JetBrains Mono'}
    .pfoot{margin-top:18px;font-size:10px;color:#888;border-top:1px solid #ddd;padding-top:8px}
    /* Presupuesto / contrato empresarial */
    .pz{font-size:12px;color:#1f2a2e;line-height:1.5}
    .pz-ref{margin:6px 0 2px;font-size:12px}
    .pz-ref b{color:#004b57}
    .pz-sd{margin-top:10px;color:#555;font-size:11px;letter-spacing:.5px}
    .pz-title{font-family:'Bricolage Grotesque';font-size:17px;font-weight:800;letter-spacing:.5px;text-align:center;color:#004b57;margin:14px 0 12px;padding:9px;background:#eef4f3;border-radius:6px;border:1px solid #cfe0dd}
    .pz-data{width:100%;border-collapse:collapse;margin:4px 0 6px;font-size:11.5px}
    .pz-data td{padding:5px 8px;border-bottom:1px solid #eee;vertical-align:top}
    .pz-data td.pk{width:215px;color:#004b57;font-weight:700}
    .pz-h{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#004b57;font-weight:800;margin:14px 0 4px;border-left:3px solid #cf8a2c;padding-left:8px}
    .pz-p{font-size:11.5px;text-align:justify;margin:0 0 6px;color:#333}
    .pz-price{width:100%;border-collapse:collapse;margin-top:4px;font-size:11.5px}
    .pz-price th{background:#004b57;color:#fff;padding:6px 8px;text-align:left;font-weight:700}
    .pz-price th.r{text-align:right}
    .pz-price td{border-bottom:1px solid #e4ded2;padding:5px 8px}
    .pz-price td.r{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
    .pz-note{font-size:10.5px;color:#777;font-style:italic;margin:4px 0 0}
    .pz-sign{display:flex;justify-content:space-around;gap:40px;margin-top:46px;text-align:center;font-size:11px;color:#333}
    .pz-sign .pz-line{border-top:1px solid #333;margin-bottom:6px;width:200px}
  }
  /* Header móvil definitivo: logo a la izquierda y tamaño consistente */
  @media(max-width:980px){
    .topbar{grid-template-columns:66px minmax(0,1fr) 44px 44px!important;grid-template-areas:"logo title new user" "search search search search"!important;column-gap:10px!important;row-gap:8px!important}
    .topbar .mobile-logo{grid-area:logo!important;display:block!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;justify-self:start!important;background:url('./logo-rs-transparent.png') center/contain no-repeat!important;border:0!important;border-radius:0!important;box-shadow:none!important;filter:drop-shadow(0 6px 10px rgba(0,75,87,.14))!important}
    .topbar .mobile-title{grid-area:title!important;min-width:0!important;display:block!important}
    .topbar .newmenu{grid-area:new!important}.topbar .av{grid-area:user!important}.topbar .search{grid-area:search!important}
  }
  @media(max-width:430px){
    .topbar{grid-template-columns:54px minmax(0,1fr) 42px 42px!important}
    .topbar .mobile-logo{width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important}
  }
  
  /* Normalización final de encabezados: escritorio sin breadcrumb duplicado; móvil con header único */
  @media(min-width:981px){
    .topbar .mobile-title,.topbar .mobile-logo{display:none!important}
    .topbar{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:12px!important}
    .topbar .search{margin-left:auto!important}
  }
  @media(max-width:980px){
    .topbar .mobile-title,.topbar .mobile-logo{display:block!important}
    /* El título ya está en la topbar en móvil, pero NO ocultamos todo el htitle
       (eso se llevaba los botones de acción: Exportar/Generar PDF, Nueva
       operación, etc.). Ocultamos solo el texto del título/subtítulo y dejamos
       los botones y los "← Volver" accesibles, a lo ancho. */
    .views>.live>.htitle h2,
    .views>.live>.htitle .sub{display:none!important}
    .views>.live>.htitle{margin-bottom:10px!important;gap:8px!important}
    .views>.live>.htitle>div:last-child:not(:first-child),
    .views>.live>.htitle>.btn{width:100%!important;display:flex!important;gap:8px!important}
    .views>.live>.htitle>div:last-child:not(:first-child) .btn{flex:1!important;justify-content:center!important}
  }
  
  /* Login móvil refinado: menos ruido, más aire y jerarquía clara */
  @media(max-width:860px){
    #login{padding:0!important;align-items:stretch!important;background:linear-gradient(180deg,#0b3a36 0 34%,#f4efe5 34% 100%)!important;overflow:auto!important}
    #login .login-shell:not(.login-loading){width:100%!important;min-height:100dvh!important;display:grid!important;grid-template-columns:1fr!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#f4efe5!important;overflow:visible!important}
    #login .login-showcase{min-height:232px!important;padding:24px 24px 22px!important;display:flex!important;justify-content:center!important;align-items:center!important;gap:0!important;background:linear-gradient(145deg,#083637,#0d493f 62%,#14331f)!important;border-radius:0 0 28px 28px!important;box-shadow:0 18px 38px rgba(9,39,34,.18)!important;overflow:hidden!important}
    #login .login-showcase::before{inset:16px!important;border-radius:22px!important;border-color:rgba(244,239,227,.14)!important}
    #login .login-showcase::after{width:330px!important;height:330px!important;right:-165px!important;bottom:-185px!important;opacity:.55!important}
    #login .login-brand-lockup{display:grid!important;grid-template-columns:86px minmax(0,1fr)!important;gap:16px!important;align-items:center!important;width:min(320px,100%)!important;max-width:320px!important;margin:0 auto!important;position:relative!important;z-index:1!important}
    #login .login-emblem{width:86px!important;height:86px!important;border-radius:22px!important;background:rgba(244,239,227,.92)!important;box-shadow:0 14px 30px rgba(0,0,0,.22)!important;border:1px solid rgba(255,255,255,.52)!important}
    #login .login-emblem img{width:68px!important;height:68px!important;object-fit:contain!important}
    #login .login-brand-copy{gap:5px!important;min-width:0!important}
    #login .login-brand-copy .over{font-size:8px!important;letter-spacing:2px!important;color:#d9c693!important;margin:0!important;line-height:1!important}
    #login .login-brand-copy strong{font-size:32px!important;line-height:.9!important;letter-spacing:-1.1px!important;color:#fff8e8!important;text-shadow:0 3px 0 rgba(5,32,31,.20)!important;max-width:190px!important}
    #login .login-brand-copy small{font-size:7.8px!important;letter-spacing:1.05px!important;line-height:1.25!important;color:#f4efe3!important;max-width:190px!important}
    #login .login-hero{display:none!important}
    #login .login-panel{background:#f4efe5!important;border:0!important;padding:34px 34px calc(32px + env(safe-area-inset-bottom))!important;justify-content:flex-start!important;align-items:stretch!important}
    #login .login-panel .loginbrand{font-size:9px!important;letter-spacing:3px!important;color:#927b50!important;margin:6px 0 18px!important;text-align:left!important}
    #login .login-panel h2{font-size:38px!important;line-height:.98!important;letter-spacing:-1px!important;margin:0!important;color:#082b2d!important}
    #login .login-panel .loginsub{font-size:14px!important;line-height:1.55!important;color:#54635f!important;margin:14px 0 30px!important;max-width:none!important}
    #login .loginlab{margin:0 0 8px!important;font-size:12px!important;color:#314743!important}
    #login .loginlab+input{margin-bottom:16px!important}
    #login .logininp{height:52px!important;border-radius:15px!important;font-size:15px!important;background:#fffdf8!important;border-color:#d7c8aa!important;padding:0 15px!important}
    #login .login-panel .btn-pri{height:54px!important;min-height:54px!important;margin-top:4px!important;border-radius:15px!important;font-size:15px!important;background:#0b665e!important;box-shadow:0 14px 26px rgba(7,78,72,.24)!important}
    #login .login-secure{margin-top:20px!important;padding-top:18px!important;font-size:11.5px!important;line-height:1.35!important;color:#69766f!important;border-top-color:#ddd2ba!important}
  }
  @media(max-width:360px){
    #login .login-panel{padding-left:24px!important;padding-right:24px!important}
    #login .login-brand-lockup{grid-template-columns:78px minmax(0,1fr)!important;gap:13px!important}
    #login .login-emblem{width:78px!important;height:78px!important;border-radius:20px!important}
    #login .login-emblem img{width:62px!important;height:62px!important}
    #login .login-brand-copy strong{font-size:29px!important}
  }
  
  /* KPIs / tarjetas resumen móviles: dos por fila para usar mejor la pantalla */
  @media(max-width:760px){
    .opcards{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;margin-bottom:12px!important}
    .opcard{min-height:76px!important;padding:11px 10px!important;gap:9px!important;border-radius:13px!important;align-items:center!important;width:auto!important;min-width:0!important}
    .opcard .tico{width:30px!important;height:30px!important;border-radius:9px!important;flex:0 0 30px!important}
    .opcard .t{font-size:13px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:100%!important}
    .opcard .n{font-size:11px!important;line-height:1.25!important;white-space:normal!important;margin-top:3px!important}
    .opcard>div:last-child{min-width:0!important;flex:1!important}
  }
  @media(max-width:340px){
    .opcards{grid-template-columns:1fr!important}
  }
  /* Tablas móviles: formato tabla con scroll horizontal, encabezado fijo y
     columnas redimensionables (ver enhanceResizableTables en el JS). Único
     bloque que define esto - antes había 3 @media(760px) compitiendo entre
     sí (vista de tarjetas vs. tabla), la de tarjetas nunca se aplicaba. */
  @media(max-width:760px){
    .live table.mobile-ready,
    .modal table.mobile-ready,
    .drawer table.mobile-ready,
    .live .tbl,
    .live .chtable,
    .live .condt,
    .modal .tbl,
    .modal .chtable,
    .modal .condt,
    .drawer .tbl,
    .drawer .chtable,
    .drawer .condt{
      display:table!important;
      max-width:none!important;
      border-collapse:collapse!important;
      border-spacing:0!important;
      margin-top:8px!important;
      table-layout:fixed!important;
    }
    .live table.mobile-ready thead,
    .modal table.mobile-ready thead,
    .drawer table.mobile-ready thead{display:table-header-group!important}
    .live table.mobile-ready tbody,
    .modal table.mobile-ready tbody,
    .drawer table.mobile-ready tbody{display:table-row-group!important;width:auto!important}
    .live table.mobile-ready tr,
    .modal table.mobile-ready tr,
    .drawer table.mobile-ready tr{
      display:table-row!important;
      width:auto!important;
      margin:0!important;
      padding:0!important;
      border:0!important;
      border-radius:0!important;
      box-shadow:none!important;
      background:transparent!important;
      overflow:visible!important;
    }
    .live table.mobile-ready tr.grpmes,
    .modal table.mobile-ready tr.grpmes,
    .drawer table.mobile-ready tr.grpmes{display:table-row!important}
    .live table.mobile-ready td,
    .modal table.mobile-ready td,
    .drawer table.mobile-ready td,
    .live table.mobile-ready th,
    .modal table.mobile-ready th,
    .drawer table.mobile-ready th{
      display:table-cell!important;
      width:auto!important;
      max-width:none!important;
      border-bottom:1px solid var(--line)!important;
      padding:10px 9px!important;
      text-align:inherit!important;
      white-space:nowrap!important;
      overflow:hidden!important;
      text-overflow:ellipsis!important;
      font-size:12.5px!important;
      vertical-align:middle!important;
    }
    .live table.mobile-ready td::before,
    .modal table.mobile-ready td::before,
    .drawer table.mobile-ready td::before{display:none!important;content:none!important}
    .live table.mobile-ready td[colspan],
    .modal table.mobile-ready td[colspan],
    .drawer table.mobile-ready td[colspan]{display:table-cell!important}
    .live table.mobile-ready .mono,
    .modal table.mobile-ready .mono,
    .drawer table.mobile-ready .mono{font-size:12px!important;word-break:normal!important}
    .live table.mobile-ready .st,
    .modal table.mobile-ready .st,
    .drawer table.mobile-ready .st{white-space:nowrap!important}
    .main .card:has(table),
    .modal .card:has(table),
    .drawer .card:has(table){
      overflow-x:auto!important;
      overflow-y:visible!important;
      -webkit-overflow-scrolling:touch!important;
    }
    .main .card:has(table)::after,
    .modal .card:has(table)::after,
    .drawer .card:has(table)::after{
      content:'Deslizá para ver más →';
      display:block;
      position:sticky;
      left:0;
      width:max-content;
      margin:8px 0 0;
      color:var(--muted);
      font-size:11px;
      font-weight:700;
      letter-spacing:.02em;
    }
    div[style*="overflow-x:auto"],
    div[style*="overflow-x: auto"]{
      max-width:100%!important;
      overflow-x:auto!important;
      overflow-y:visible!important;
      -webkit-overflow-scrolling:touch!important;
    }
  }
  /* Chat móvil final: lista compacta y conversación pantalla completa */
  @media(max-width:760px){
    body[data-view="equipo"] .chat-list-card{padding:0!important;border-radius:14px!important;overflow:hidden!important;background:#fff!important}
    body[data-view="equipo"] .chat-list-head{padding:12px 13px!important;margin:0!important;border-bottom:1px solid var(--line)!important;min-height:auto!important}
    body[data-view="equipo"] .chat-list-head b{font-size:15px!important}
    body[data-view="equipo"] .chat-list-head span{display:none!important}
    body[data-view="equipo"] .chat-list{display:flex!important;flex-direction:column!important;gap:0!important;overflow:visible!important;padding:0!important;scroll-snap-type:none!important}
    body[data-view="equipo"] .chatitem{flex:none!important;width:100%!important;min-height:68px!important;padding:11px 13px!important;border:0!important;border-bottom:1px solid var(--line)!important;border-radius:0!important;background:#fff!important;box-shadow:none!important;scroll-snap-align:none!important}
    body[data-view="equipo"] .chatitem.on{background:#fff!important;box-shadow:none!important;border-color:var(--line)!important}
    body[data-view="equipo"] .chatitem:last-child{border-bottom:0!important}
    body[data-view="equipo"] .chatav{width:40px!important;height:40px!important;border-radius:13px!important;flex:0 0 40px!important}
    body[data-view="equipo"] .chatmeta b{font-size:14px!important;line-height:1.15!important}
    body[data-view="equipo"] .chatmeta span{font-size:12px!important;line-height:1.25!important;max-width:100%!important}
    body[data-view="equipo"] .chattime{display:block!important;font-size:10px!important;margin-left:6px!important;color:var(--faint)!important}
    body[data-chat-open="1"] .topbar,
    body[data-chat-open="1"] .mtab,
    body[data-chat-open="1"] .fab-new,
    body[data-chat-open="1"] .install-prompt{display:none!important}
    body[data-chat-open="1"] .main{padding:0!important}
    body[data-chat-open="1"] .views,
    body[data-chat-open="1"] .views>.live{height:100dvh!important;min-height:100dvh!important;overflow:hidden!important}
    body[data-chat-open="1"] .chat-layout{display:block!important;position:fixed!important;inset:0!important;z-index:90!important;width:100vw!important;height:100dvh!important;background:var(--paper)!important;max-width:none!important}
    body[data-chat-open="1"] .chat-sidebar{display:none!important}
    body[data-chat-open="1"] .chat-main{display:flex!important;position:fixed!important;inset:0!important;z-index:91!important;width:100vw!important;height:100dvh!important;background:var(--paper)!important;max-width:none!important}
    body[data-chat-open="1"] .chatpanel{height:100dvh!important;width:100vw!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;display:flex!important;flex-direction:column!important}
    body[data-chat-open="1"] .chatpanel .chathead{min-height:58px!important;padding:calc(10px + env(safe-area-inset-top)) 10px 10px!important;border-bottom:1px solid var(--line)!important;background:#fff!important;display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:nowrap!important}
    body[data-chat-open="1"] .chatpanel .chathead>div{margin-left:auto!important;width:auto!important;display:flex!important;gap:5px!important;flex-wrap:nowrap!important;justify-content:flex-end!important}
    body[data-chat-open="1"] .chatpanel .chathead .btn{min-height:34px!important;width:38px!important;min-width:38px!important;padding:0!important;flex:0 0 38px!important}
    body[data-chat-open="1"] .chatpanel .chathead .btn span{display:none!important}
    body[data-chat-open="1"] .chatback{display:grid!important;width:40px!important;height:40px!important;border-radius:50%!important;background:var(--pine-tint)!important;color:var(--pine)!important;border:0!important;place-items:center!important;font-size:24px!important;font-weight:700!important;line-height:1!important;flex:0 0 40px!important}
    body[data-chat-open="1"] .chatfeed{flex:1 1 auto!important;min-height:0!important;max-height:none!important;height:auto!important;overflow-y:auto!important;overflow-x:hidden!important;border-radius:0!important;padding:12px!important;background:linear-gradient(180deg,#f7f5ef,#f2eee5)!important}
    body[data-chat-open="1"] .aicomposer{padding:9px 9px calc(9px + env(safe-area-inset-bottom))!important;border-top:1px solid var(--line)!important;background:#fff!important;gap:7px!important;flex:0 0 auto!important}
    body[data-chat-open="1"] .chatwarnings{display:none!important}
    body[data-chat-open="1"] .chatrow{max-width:92%!important}
    body[data-chat-open="1"] .chatrow.mine{margin-left:auto!important}
  }
  /* Combobox uniforme: desplegable pegado al campo, limpio y usable en toda la app */
  /* SIN isolation: si el combo crea su propio contexto de apilamiento, su lista
     desplegable queda ATRAPADA por debajo de los elementos que vienen después
     (tablas, campos). Sin aislar, la lista (z-index alto) sale por encima. */
  .field .combo{width:100%;position:relative}
  .field .combo>input{height:42px;width:100%;padding-right:42px!important;background:var(--card)!important}
  .combo-arrow{right:12px!important;top:50%!important;transform:translateY(-50%)!important;width:auto!important;height:auto!important;border-radius:0!important;display:block!important;color:var(--faint)!important;background:transparent!important;font-size:11px!important;padding:0!important}
  .combo-arrow:hover{background:transparent!important;color:var(--muted)!important}
  .combo-pop{left:0!important;right:0!important;top:calc(100% + 6px)!important;width:100%!important;min-width:0!important;z-index:180!important;background:#fffdf8!important;border:1px solid var(--pine)!important;border-radius:12px!important;box-shadow:0 14px 34px rgba(0,75,87,.18)!important;max-height:min(238px,38vh)!important;overflow-y:auto!important;padding:5px!important;color:var(--ink)!important}
  .combo-pop::before{content:'';position:absolute;left:18px;top:-6px;width:10px;height:10px;background:#fffdf8;border-left:1px solid var(--pine);border-top:1px solid var(--pine);transform:rotate(45deg)}
  .combo-opt{position:relative;z-index:1;padding:10px 10px!important;border:0!important;border-radius:9px!important;font-size:13px!important;line-height:1.2!important;color:var(--ink)!important;background:transparent!important}
  .combo-opt:hover,.combo-opt:focus{background:var(--pine-tint)!important;color:var(--pine)!important}
  .combo-opt[style*="display: none"]{display:none!important}
  @media(max-width:760px){
    .field .combo>input{height:44px!important;font-size:16px!important}
    .combo-pop{max-height:min(220px,34dvh)!important;border-radius:13px!important}
    .combo-opt{padding:11px 10px!important;font-size:14px!important}
  }
  /* Normalizacion final de tablas: columnas consistentes + scroll lateral en movil */
  .tbl{table-layout:auto}
  .ops-table{table-layout:fixed!important;min-width:1040px!important;width:100%!important}
  .ops-table th,.ops-table td{overflow:hidden;text-overflow:ellipsis}
  .ops-table th:nth-child(1),.ops-table td:nth-child(1){width:112px}
  .ops-table th:nth-child(2),.ops-table td:nth-child(2){width:74px;text-align:left}
  .ops-table th:nth-child(3),.ops-table td:nth-child(3){width:140px}
  .ops-table th:nth-child(4),.ops-table td:nth-child(4){width:118px}
  .ops-table th:nth-child(5),.ops-table td:nth-child(5){width:92px}
  .ops-table th:nth-child(6),.ops-table td:nth-child(6){width:190px}
  .ops-table th:nth-child(7),.ops-table td:nth-child(7),
  .ops-table th:nth-child(8),.ops-table td:nth-child(8),
  .ops-table th:nth-child(9),.ops-table td:nth-child(9),
  .ops-table th:nth-child(10),.ops-table td:nth-child(10){width:128px;text-align:right}
  .ops-table tr.grpmes td{width:auto!important;overflow:visible!important;text-overflow:clip!important}
  @media(max-width:760px){
    .card h3{flex-wrap:wrap!important;align-items:flex-start!important;line-height:1.15!important}
    .card h3 .tag{margin-left:0!important;max-width:100%!important;white-space:normal!important;text-align:left!important;line-height:1.25!important}
  }
  /* Tipografía global definitiva: app sans original, sin caídas a serif en títulos ni tarjetas */
  :root{--font-app:'Hanken Grotesk',Inter,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;--font-num:'JetBrains Mono','SFMono-Regular',Consolas,monospace}
  body,.shell,.side,.wrap,.topbar,.main,.views,.card,.btn,input,select,textarea,table,.tbl,.chtable,.condt,.modal,.drawer,.toast,.nav,.mtab,.search,.chip2,.opcard,.opcardai,.chatpanel,.chat-layout,.chat-sidebar,.chat-main,.chatfeed,.combo-pop,.combo-opt{font-family:var(--font-app)!important}
  h1,h2,h3,h4,h5,h6,.dsp,.htitle h2,.card h3,.mhead h3,.dhead h3,.crumb,.brand h1,.brand-word h1,.loginbrand,.login-hero h1,.login-panel h2,.login-brand-copy strong,.cck .val,.kpi .val,.statbar .st-val,.chk,.grp,tr.grpmes .gm-t,.calc .v,.cfbox h4,.ptitle,.phead .pname,.pz-title{font-family:var(--font-app)!important;letter-spacing:-.02em}
  .mono,.nav .pill-n,.briefrow .bd,.selbar .selc-tot,.selctot b,.pagorow input.mono,.pagobal .pbrow b,.ckdmonto,.detinp,.ckdcalc b,.ckdcost b,.tlchead .tlmonto,.tlt .tldate,.blab,.hbar .vv,.fuelbar .pct,.kh .c,.cell .dn,.chtable tfoot td,.calc-row .cv,.resitem .vv,.liveband .lr b,.tag,th{font-family:var(--font-num)!important}

  /* Login logo protagonista final: sin letras pisadas, el logo manda */
  #login .login-brand-logo-first{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:18px!important;max-width:520px!important;margin:0 auto!important;text-align:center!important}
  #login .login-brand-logo-first .login-emblem{width:min(420px,78vw)!important;height:190px!important;flex:none!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;display:grid!important;place-items:center!important;filter:drop-shadow(0 20px 34px rgba(0,0,0,.28))!important}
  #login .login-brand-logo-first .login-emblem img{width:100%!important;height:100%!important;object-fit:contain!important;filter:none!important}
  #login .login-brand-logo-first .login-brand-copy{display:flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;flex-wrap:wrap!important;max-width:430px!important}
  #login .login-brand-logo-first .login-brand-copy strong{display:none!important}
  #login .login-brand-logo-first .login-brand-copy .over{font-size:10px!important;letter-spacing:3.2px!important;line-height:1.2!important;color:#d7c59d!important;margin:0!important;white-space:normal!important}
  #login .login-brand-logo-first .login-brand-copy small{font-size:9px!important;letter-spacing:1.8px!important;line-height:1.35!important;color:#efe7d1!important;max-width:360px!important;margin:0!important;text-transform:uppercase!important}
  #login .login-showcase{gap:28px!important}
  #login .login-hero{margin-top:10px!important;padding-top:22px!important}
  @media(max-width:860px){
    #login .login-brand-logo-first{gap:12px!important;max-width:330px!important}
    #login .login-brand-logo-first .login-emblem{width:min(300px,82vw)!important;height:136px!important}
    #login .login-brand-logo-first .login-brand-copy .over{font-size:8px!important;letter-spacing:2.1px!important}
    #login .login-brand-logo-first .login-brand-copy small{font-size:7.4px!important;letter-spacing:1.05px!important;max-width:270px!important}
    #login .login-showcase{min-height:285px!important;padding-top:30px!important;padding-bottom:28px!important}
    #login .login-hero{display:none!important}
  }


  /* Ajuste para variacion_beige_1: asset cuadrado, visible completo */
  .side .logo{width:178px!important;height:178px!important;margin:0 auto 4px!important;filter:drop-shadow(0 14px 24px rgba(0,0,0,.22))!important}
  .side .logo::before{background:url('./logo-rs-beige-new.png') center/contain no-repeat!important;background-size:contain!important}
  #login .login-brand-logo-first .login-emblem{width:min(360px,72vw)!important;height:min(360px,72vw)!important;filter:drop-shadow(0 20px 34px rgba(0,0,0,.28))!important}
  #login .login-brand-logo-first .login-emblem img{object-fit:contain!important;border-radius:0!important}
  #login .login-shell.login-loading .login-logo-frame img{content:url('./logo-rs-transparent.png')!important;width:220px!important;height:auto!important;object-fit:contain!important}
  #login .login-shell.login-loading .login-logo-frame{width:220px!important;height:170px!important;aspect-ratio:auto!important}
  @media(max-width:860px){
    .side .logo{width:150px!important;height:150px!important}
    #login .login-brand-logo-first .login-emblem{width:min(270px,76vw)!important;height:min(270px,76vw)!important}
  }


  /* Login limpio final: el logo ya trae marca y eslogan, no duplicar texto */
  #login .login-showcase{align-items:center!important;justify-content:center!important;padding:clamp(38px,5vw,70px)!important;gap:0!important}
  #login .login-showcase::before{inset:28px!important;border-radius:26px!important}
  #login .login-brand-logo-first{width:100%!important;max-width:520px!important;gap:0!important;margin:0 auto!important}
  #login .login-brand-logo-first .login-emblem{width:min(430px,82%)!important;height:min(430px,82%)!important;max-width:430px!important;max-height:430px!important;background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;filter:drop-shadow(0 26px 42px rgba(0,0,0,.30))!important}
  #login .login-brand-logo-first .login-emblem img{width:100%!important;height:100%!important;object-fit:contain!important;border-radius:0!important}
  #login .login-brand-logo-first .login-brand-copy,#login .login-hero,#login .login-points{display:none!important}
  #login .login-panel{padding-left:clamp(46px,4.5vw,68px)!important;padding-right:clamp(46px,4.5vw,68px)!important}
  @media(max-width:860px){
    #login .login-showcase{min-height:38dvh!important;padding:28px 24px 24px!important}
    #login .login-showcase::before{inset:18px!important;border-radius:22px!important}
    #login .login-brand-logo-first .login-emblem{width:min(250px,72vw)!important;height:min(250px,72vw)!important}
    #login .login-panel{padding:30px 28px calc(30px + env(safe-area-inset-bottom))!important}
  }
  @media(max-width:420px){
    #login .login-brand-logo-first .login-emblem{width:min(218px,68vw)!important;height:min(218px,68vw)!important}
    #login .login-showcase{min-height:34dvh!important}
  }


  /* Login marca sin duplicados: el logo ya incluye nombre y eslogan */
  #login .login-brand-logo-first .login-brand-copy{display:none!important}
  #login .login-brand-logo-first{justify-content:center!important;align-items:center!important}
  #login .login-brand-logo-first .login-emblem{width:min(430px,82%)!important;height:min(430px,82%)!important}
  #login .login-shell.login-loading .login-logo-frame{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important;width:220px!important;height:170px!important;aspect-ratio:auto!important}
  #login .login-shell.login-loading .login-logo-frame img{content:url('./logo-rs-transparent.png')!important;width:220px!important;height:auto!important;object-fit:contain!important;filter:drop-shadow(0 12px 24px rgba(0,75,87,.14))!important}
  @media(max-width:860px){#login .login-brand-logo-first .login-emblem{width:min(250px,72vw)!important;height:min(250px,72vw)!important}}


  /* Header movil: usar logo anterior */
  .mobile-logo,.topbar .mobile-logo{background:url('./logo-rs-transparent.png') center/contain no-repeat!important;border:0!important;border-radius:0!important;box-shadow:none!important}


  /* Combobox touch fix final */
  .combo-pop{z-index:1000!important;display:none!important}
  .combo-pop.on{display:block!important}
  .combo-opt{display:block;width:100%;text-align:left;font:inherit;cursor:pointer}
  .combo-opt[hidden]{display:none!important}
  .combo-pop.on{display:block!important;pointer-events:auto!important}
  .combo-pop.empty::after{content:'Sin coincidencias';display:block;padding:10px;color:var(--muted);font-size:13px}
  .modal,.drawer{overflow:visible!important}
  .mbody,.dbody{overflow-y:auto!important;overflow-x:visible!important}

  
  /* Mobile polish only for Operaciones: tabla legible con scroll horizontal claro */
  @media(max-width:760px){
    body[data-view="ops"] .live .card:has(.ops-table){padding:12px!important;overflow:hidden!important;border-radius:16px!important}
    body[data-view="ops"] .live .card:has(.ops-table) h3{font-size:17px!important;line-height:1.25!important;margin-bottom:10px!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:5px!important}
    body[data-view="ops"] .live .card:has(.ops-table) h3 .tag{font-size:9px!important;letter-spacing:.12em!important;margin:0!important;max-width:100%!important;white-space:normal!important}
    body[data-view="ops"] .live .table-scroll{position:relative!important;margin:0!important;padding:0 0 8px!important;border:1px solid var(--line)!important;border-radius:15px!important;background:#fff!important;overflow-x:auto!important;overflow-y:hidden!important;-webkit-overflow-scrolling:touch!important;box-shadow:inset -22px 0 24px -26px rgba(0,0,0,.32)!important;scrollbar-width:thin!important;scrollbar-color:var(--pine) var(--card2)!important}
    body[data-view="ops"] .live .table-scroll::before{content:'Deslizá para ver fecha, cliente y montos →';position:absolute;top:0;left:0;right:0;height:30px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,#f8f5ef,#ffffff);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.02em;z-index:5}
    body[data-view="ops"] .live .ops-table{min-width:920px!important;width:920px!important;max-width:none!important;table-layout:fixed!important;border-collapse:separate!important;border-spacing:0!important}
    body[data-view="ops"] .live .ops-table th,
    body[data-view="ops"] .live .ops-table td{padding:11px 10px!important;font-size:12.5px!important;line-height:1.25!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;background:#fff!important;border-bottom:1px solid var(--line)!important}
    body[data-view="ops"] .live .ops-table th{font-size:9.5px!important;letter-spacing:.08em!important;color:var(--muted)!important;text-transform:uppercase!important;background:#fbfaf6!important}
    body[data-view="ops"] .live .ops-table th:nth-child(1),body[data-view="ops"] .live .ops-table td:nth-child(1){width:98px!important;position:sticky!important;left:0!important;z-index:3!important;background:#fff!important;box-shadow:10px 0 16px -18px rgba(0,0,0,.45)!important}
    body[data-view="ops"] .live .ops-table th:nth-child(1){background:#fbfaf6!important;z-index:4!important}
    body[data-view="ops"] .live .ops-table th:nth-child(2),body[data-view="ops"] .live .ops-table td:nth-child(2){width:60px!important;text-align:left!important;position:sticky!important;left:54px!important;z-index:3!important;background:#fff!important;border-right:1px solid var(--line)!important;box-shadow:12px 0 20px -20px rgba(0,0,0,.5)!important}
    body[data-view="ops"] .live .ops-table th:nth-child(2){background:#fbfaf6!important;z-index:4!important}
    body[data-view="ops"] .live .ops-table th:nth-child(3),body[data-view="ops"] .live .ops-table td:nth-child(3){width:132px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(4),body[data-view="ops"] .live .ops-table td:nth-child(4){width:112px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(5),body[data-view="ops"] .live .ops-table td:nth-child(5){width:78px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(6),body[data-view="ops"] .live .ops-table td:nth-child(6){width:158px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(7),body[data-view="ops"] .live .ops-table td:nth-child(7),
    body[data-view="ops"] .live .ops-table th:nth-child(8),body[data-view="ops"] .live .ops-table td:nth-child(8),
    body[data-view="ops"] .live .ops-table th:nth-child(9),body[data-view="ops"] .live .ops-table td:nth-child(9),
    body[data-view="ops"] .live .ops-table th:nth-child(10),body[data-view="ops"] .live .ops-table td:nth-child(10){width:120px!important;text-align:right!important}
    body[data-view="ops"] .live .ops-table td:nth-child(3) .tico{width:24px!important;height:24px!important;border-radius:7px!important;margin-right:5px!important;vertical-align:middle!important}
    body[data-view="ops"] .live .ops-table tr.grpmes td{position:sticky!important;left:0!important;width:auto!important;max-width:calc(100vw - 58px)!important;background:#f8f5ef!important;border:1px solid var(--line)!important;border-radius:11px!important;display:inline-flex!important;align-items:center!important;gap:10px!important;margin:7px 6px!important;z-index:6!important;box-shadow:none!important}
    body[data-view="ops"] .live .ops-table tr.grpmes{display:table-row!important;height:48px!important}
    body[data-view="ops"] .live .ops-table tr.grpmes + tr td{border-top:0!important}
    body[data-view="ops"] .live .note{font-size:12px!important;line-height:1.35!important;margin-top:9px!important}
  }
  /* Operaciones: estados con candado y encabezado fijo dentro de la tabla */
  .op-lock-state{gap:6px!important;align-items:center!important}
  .op-lock-state::before{display:none!important}
  .op-lock-state .ic{width:13px!important;height:13px!important;flex:0 0 13px!important;stroke-width:2.1!important}
  .st-sim{background:#ece8ff;color:#5d4ab2}
  @media(max-width:760px){
    body[data-view="ops"] .live .op-lock-state{width:30px!important;height:30px!important;min-width:30px!important;max-width:30px!important;padding:0!important;display:inline-grid!important;place-items:center!important;border-radius:10px!important;font-size:0!important;line-height:0!important;overflow:visible!important;text-indent:-999px!important;color:inherit!important}
    body[data-view="ops"] .live .op-lock-state .ic{width:15px!important;height:15px!important;grid-area:1/1!important;text-indent:0!important;color:inherit!important}
    body[data-view="ops"] .live .table-scroll{overflow-x:auto!important;overflow-y:visible!important;position:relative!important}
  }
  /* Operaciones movil: columnas compactas */
  @media(max-width:760px){
    body[data-view="ops"] .live .table-scroll::before{content:'Desliza para ver fecha, cliente y montos ->'!important}
    body[data-view="ops"] .live .ops-table{min-width:900px!important;width:900px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(1),body[data-view="ops"] .live .ops-table td:nth-child(1){width:54px!important;left:0!important;padding-left:12px!important;padding-right:8px!important;text-align:center!important}
    body[data-view="ops"] .live .ops-table th:nth-child(2),body[data-view="ops"] .live .ops-table td:nth-child(2){width:64px!important;left:54px!important;text-align:right!important;padding-left:8px!important;padding-right:12px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(3),body[data-view="ops"] .live .ops-table td:nth-child(3){width:126px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(4),body[data-view="ops"] .live .ops-table td:nth-child(4){width:92px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(5),body[data-view="ops"] .live .ops-table td:nth-child(5){width:74px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(6),body[data-view="ops"] .live .ops-table td:nth-child(6){width:142px!important}
    body[data-view="ops"] .live .ops-table th:nth-child(7),body[data-view="ops"] .live .ops-table td:nth-child(7),
    body[data-view="ops"] .live .ops-table th:nth-child(8),body[data-view="ops"] .live .ops-table td:nth-child(8),
    body[data-view="ops"] .live .ops-table th:nth-child(9),body[data-view="ops"] .live .ops-table td:nth-child(9),
    body[data-view="ops"] .live .ops-table th:nth-child(10),body[data-view="ops"] .live .ops-table td:nth-child(10){width:112px!important}
    body[data-view="ops"] .live .ops-table thead th:nth-child(2){left:54px!important}
    body[data-view="ops"] .live .ops-table tr.grpmes td{max-width:calc(100vw - 78px)!important}
  }  /* Mobile polish only for Cheques > Cheques en cartera */
  @media(max-width:760px){
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card{overflow:hidden!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e{grid-template-columns:1fr!important;gap:12px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card>div[style*="overflow-x:auto"]{overflow:visible!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl{min-width:0!important;width:100%!important;max-width:100%!important;table-layout:fixed!important;margin-top:10px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl th,
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl td{padding:10px 8px!important;font-size:12px!important;line-height:1.25!important;white-space:normal!important;overflow:hidden!important;text-overflow:ellipsis!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl th{font-size:9.5px!important;letter-spacing:.7px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl .mono{font-size:11.5px!important;white-space:nowrap!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .htitle h2,
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .htitle .sub{display:none!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card h3{font-size:16px!important;line-height:1.15!important;gap:6px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card h3 .tag{font-size:8.5px!important;letter-spacing:.12em!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .bankchips{grid-template-columns:1fr 1fr!important;gap:7px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .bankchip{min-width:0!important;padding:10px 11px!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .note,
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .hint{font-size:12px!important;line-height:1.38!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl th:nth-child(1),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl td:nth-child(1){width:58%!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl th:nth-child(2),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl td:nth-child(2),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl th:nth-child(3),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live > .card .tbl td:nth-child(3){width:21%!important;text-align:right!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl th:nth-child(1),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl td:nth-child(1){width:54%!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl th:nth-child(2),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl td:nth-child(2){width:32%!important;text-align:right!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl th:nth-child(3),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card .tbl td:nth-child(3){width:14%!important;text-align:right!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card:nth-child(2) .tbl th:nth-child(1),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card:nth-child(2) .tbl td:nth-child(1){width:66%!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card:nth-child(2) .tbl th:nth-child(2),
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .grid.g-2e .card:nth-child(2) .tbl td:nth-child(2){width:34%!important;text-align:right!important}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .kan{grid-template-columns:1fr!important}
  }

  /* Chat final pro: lista primero en móvil, conversación fullscreen al entrar */
  .chat-list-title{display:flex;align-items:center;gap:10px;min-width:0}.chat-brand-logo{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 5px 10px rgba(0,75,87,.10));flex:none}.chat-list-title b{font-size:16px!important}.chat-newgrp{border-radius:10px!important;font-weight:800!important}
  .chat-room-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.chat-room-logo{width:34px;height:34px;object-fit:contain;flex:none}.chat-room-ico{width:30px;height:30px;border-radius:11px;display:grid;place-items:center;background:var(--pine-tint);color:var(--pine);flex:none}.chat-room-title b{font-size:15px;color:var(--pine);display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.chat-actions{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap;align-items:center}.chat-ai-btn{min-width:48px!important;font-weight:900!important;letter-spacing:.02em!important}.chat-mention{height:42px!important;min-height:42px!important;border-radius:21px!important;padding:0 12px!important;font-weight:900!important;color:var(--pine)!important;flex:0 0 auto!important}
  .chatpanel{background:linear-gradient(180deg,#fff,#fbfaf6)!important}.chatfeed{background:linear-gradient(180deg,#f7f3ea,#efe9dd)!important}.chatitem{position:relative}.chatitem::after{content:'›';color:var(--faint);font-size:22px;line-height:1}.chatitem.on::after{color:var(--pine)}
  @media(max-width:760px){
    body[data-view="equipo"] .htitle{display:none!important}
    body[data-view="equipo"][data-chat-open="0"] .topbar{display:grid!important}
    body[data-view="equipo"][data-chat-open="0"] .mtab{display:flex!important}
    body[data-view="equipo"][data-chat-open="0"] .main{padding:13px 10px calc(92px + env(safe-area-inset-bottom))!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-layout{display:block!important;position:static!important;width:100%!important;height:auto!important;background:transparent!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-sidebar{display:block!important;width:100%!important;margin:0!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-main{display:none!important}
    body[data-view="equipo"][data-chat-open="0"] .chatwarnings{display:none!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-list-card{border-radius:18px!important;padding:0!important;box-shadow:0 10px 28px rgba(20,50,55,.08)!important;border:1px solid rgba(0,75,87,.13)!important;background:#fff!important;overflow:hidden!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-list-head{padding:14px 14px!important;min-height:64px!important;background:linear-gradient(180deg,#fff,#fbfaf6)!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-list-head span{display:block!important;font-size:11.5px!important;color:var(--muted)!important}
    body[data-view="equipo"][data-chat-open="0"] .chat-list{display:flex!important;flex-direction:column!important;gap:0!important;overflow:visible!important;padding:0!important}
    body[data-view="equipo"][data-chat-open="0"] .chatitem{min-height:76px!important;border-bottom:1px solid var(--line)!important;border-radius:0!important;padding:13px 14px!important;background:#fff!important;box-shadow:none!important}
    body[data-view="equipo"][data-chat-open="0"] .chatitem.on{background:#fff!important;box-shadow:none!important}.chatitem:last-child{border-bottom:0!important}
    body[data-view="equipo"][data-chat-open="0"] .chatav{width:46px!important;height:46px!important;border-radius:15px!important}.chatmeta b{font-size:14.5px!important}.chatmeta span{font-size:12px!important}.chattime{display:block!important;font-size:10.5px!important}
    body[data-chat-open="1"] .topbar,body[data-chat-open="1"] .mtab,body[data-chat-open="1"] .fab-new,body[data-chat-open="1"] .install-prompt{display:none!important}
    body[data-chat-open="1"] .main{padding:0!important}body[data-chat-open="1"] .views,body[data-chat-open="1"] .views>.live{height:100dvh!important;min-height:100dvh!important;overflow:hidden!important}
    body[data-chat-open="1"] .chat-layout{display:block!important;position:fixed!important;inset:0!important;z-index:90!important;width:100vw!important;height:100dvh!important;background:var(--paper)!important;max-width:none!important}
    body[data-chat-open="1"] .chat-sidebar{display:none!important}body[data-chat-open="1"] .chat-main{display:flex!important;position:fixed!important;inset:0!important;z-index:91!important;width:100vw!important;height:100dvh!important;background:var(--paper)!important;max-width:none!important}
    body[data-chat-open="1"] .chatpanel{height:100dvh!important;width:100vw!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;display:flex!important;flex-direction:column!important}
    body[data-chat-open="1"] .chatpanel .chathead{min-height:62px!important;padding:calc(10px + env(safe-area-inset-top)) 10px 10px!important;background:linear-gradient(180deg,#fff,#fbfaf6)!important;border-bottom:1px solid var(--line)!important;display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:nowrap!important}
    body[data-chat-open="1"] .chat-room-logo{display:none!important}body[data-chat-open="1"] .chat-room-ico{width:32px!important;height:32px!important;border-radius:11px!important}body[data-chat-open="1"] .chat-room-title b{font-size:14.5px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:34vw!important;display:block!important}
    body[data-chat-open="1"] .chat-actions{margin-left:auto!important;width:auto!important;display:flex!important;gap:5px!important;flex-wrap:nowrap!important;justify-content:flex-end!important}.chat-actions .btn{height:36px!important;min-height:36px!important;border-radius:12px!important}.chat-actions .btn:not(.chat-ai-btn){width:38px!important;min-width:38px!important;padding:0!important}.chat-actions .btn span{display:none!important}.chat-ai-btn{width:auto!important;min-width:48px!important;padding:0 9px!important}
    body[data-chat-open="1"] .chatback{display:grid!important;width:40px!important;height:40px!important;border-radius:50%!important;background:var(--pine-tint)!important;color:var(--pine)!important;border:0!important;place-items:center!important;font-size:23px!important;font-weight:800!important;line-height:1!important;flex:0 0 40px!important}
    body[data-chat-open="1"] .chatfeed{flex:1 1 auto!important;min-height:0!important;max-height:none!important;height:auto!important;overflow-y:auto!important;overflow-x:hidden!important;border-radius:0!important;padding:12px!important;background:linear-gradient(180deg,#f7f3ea,#efe9dd)!important}
    body[data-chat-open="1"] .aicomposer{padding:9px 9px calc(9px + env(safe-area-inset-bottom))!important;border-top:1px solid var(--line)!important;background:#fff!important;gap:7px!important;flex:0 0 auto!important}
    body[data-chat-open="1"] .chatwarnings{display:none!important}body[data-chat-open="1"] .chatrow{max-width:92%!important}body[data-chat-open="1"] .chatrow.mine{margin-left:auto!important}
    body[data-chat-open="1"] .chattool{width:42px!important;height:42px!important;min-height:42px!important;flex:0 0 42px!important}body[data-chat-open="1"] #chatinput{font-size:16px!important;min-width:0!important}
  }


  /* Modal sobre chat fullscreen movil */
  @media(max-width:760px){
    body[data-view="equipo"][data-chat-open="1"] .scrim2{z-index:240!important;display:block!important}
    body[data-view="equipo"][data-chat-open="1"] .modal{z-index:241!important;display:flex!important;max-height:96dvh!important;width:100%!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;border-radius:22px 22px 0 0!important;transform:translateY(105%)!important;opacity:1!important;pointer-events:none!important}
    body[data-view="equipo"][data-chat-open="1"] .modal.on{transform:translateY(0)!important;pointer-events:auto!important}
    body[data-view="equipo"][data-chat-open="1"] .modal .mbody{max-height:none!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch!important}
    body[data-view="equipo"][data-chat-open="1"] .modal .mfoot{padding-bottom:calc(12px + env(safe-area-inset-bottom))!important}
  }  /* Info de grupo estilo app de chat */
  .chatav-img,.chat-room-ico .chatav-img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}
  .group-info{padding:0!important;background:linear-gradient(180deg,#fbfaf6,#f4f0e7)}
  .group-hero{display:flex;gap:16px;align-items:center;padding:18px;border-bottom:1px solid var(--line);background:#fff}
  .group-photo{width:104px;height:104px;border-radius:28px;border:1px solid var(--line);background:var(--pine-tint);padding:0;overflow:hidden;position:relative;flex:0 0 104px;cursor:pointer;box-shadow:0 10px 24px rgba(0,75,87,.10)}
  .group-photo img{width:100%;height:100%;object-fit:cover;display:block}.group-photo span{position:absolute;inset:auto 8px 8px;display:flex;align-items:center;justify-content:center;gap:5px;background:rgba(0,75,87,.86);color:#fff;border-radius:999px;padding:5px 7px;font-size:10px;font-weight:800}
  .group-main{flex:1;min-width:0}.group-main label{display:block;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10px;font-weight:900;margin-bottom:6px}.group-main input{width:100%;border:0;border-bottom:1px solid var(--line2);background:transparent;border-radius:0;padding:8px 0;font:800 20px/1.1 var(--font-app);color:var(--ink);outline:none}.group-main small{display:block;margin-top:7px;color:var(--muted)}
  .group-section{background:#fff;border:1px solid var(--line);border-radius:16px;margin:12px;padding:13px}.group-section textarea{width:100%;resize:vertical;min-height:90px;border:1px solid var(--line2);border-radius:12px;padding:11px 12px;font:inherit;background:#fbfaf6;color:var(--ink);box-sizing:border-box}
  .group-attach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:10px}.group-attach{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fbfaf6;color:var(--ink);text-decoration:none;min-height:86px}.group-attach img{display:block;width:100%;height:92px;object-fit:cover}.group-attach span{display:block;padding:7px 8px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-attach.file{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:12px;gap:5px}.group-attach.file small{color:var(--muted);font-size:10.5px}
  @media(max-width:760px){.group-hero{padding:16px 14px}.group-photo{width:86px;height:86px;border-radius:23px;flex-basis:86px}.group-main input{font-size:18px}.group-section{margin:10px;border-radius:14px}.group-attach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}body[data-chat-open="1"] .chat-room-title{cursor:pointer}}  /* Modal layout fix final: evita que barras y botones floten sobre el contenido */
  .modal{overflow:hidden!important;display:flex!important;flex-direction:column!important;max-height:88dvh!important}
  .modal .mhead{flex:0 0 auto!important;position:relative!important;top:auto!important;z-index:3!important}
  .modal .mbody{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch!important}
  .modal .mfoot{flex:0 0 auto!important;position:relative!important;bottom:auto!important;z-index:3!important;background:var(--paper)!important;box-shadow:0 -10px 22px rgba(20,30,24,.045)!important}
  .modal .selbar{user-select:none!important;-webkit-user-select:none!important;position:relative!important;bottom:auto!important;z-index:1!important}
  .modal .tbl,.modal .chtable,.modal .condt{max-width:none!important}
  @media(max-width:760px){
    .modal{max-height:92dvh!important}
    .modal .mfoot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}
    .modal .mfoot .btn{min-height:40px!important}
  }

  /* Chat mobile hard-fix: lista sola primero, conversacion fullscreen al entrar */
  .chat-brand-logo,.chat-room-logo{content:url('./logo-rs-transparent.png')!important;object-fit:contain!important;background:transparent!important;border:0!important;box-shadow:none!important}
  @media(max-width:760px){
    body[data-view="equipo"] .chat-layout:not(.open) .chat-main{display:none!important}
    body[data-view="equipo"] .chat-layout:not(.open) .chat-sidebar{display:block!important;width:100%!important;max-width:100%!important;margin:0!important}
    body[data-view="equipo"] .chat-layout.open,
    body[data-view="equipo"][data-chat-open="1"] .chat-layout{display:block!important;position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;max-width:none!important;background:#fff!important;z-index:120!important;overflow:hidden!important}
    body[data-view="equipo"] .chat-layout.open .chat-sidebar,
    body[data-view="equipo"][data-chat-open="1"] .chat-sidebar{display:none!important;width:0!important;height:0!important;overflow:hidden!important;margin:0!important;padding:0!important;border:0!important}
    body[data-view="equipo"] .chat-layout.open .chat-main,
    body[data-view="equipo"][data-chat-open="1"] .chat-main{display:flex!important;position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;max-width:none!important;background:#fff!important;z-index:121!important;overflow:hidden!important}
    body[data-view="equipo"] .chat-layout.open .chatpanel,
    body[data-view="equipo"][data-chat-open="1"] .chatpanel{display:flex!important;flex-direction:column!important;width:100vw!important;height:100dvh!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;overflow:hidden!important}
    body[data-view="equipo"] .chat-layout.open .chathead,
    body[data-view="equipo"][data-chat-open="1"] .chathead{flex:0 0 auto!important;min-height:64px!important;padding:calc(10px + env(safe-area-inset-top)) 12px 10px!important;background:#fff!important;border-bottom:1px solid var(--line)!important;display:grid!important;grid-template-columns:42px 1fr auto!important;align-items:center!important;gap:9px!important;flex-wrap:nowrap!important}
    body[data-view="equipo"] .chat-layout.open .chatback,
    body[data-view="equipo"][data-chat-open="1"] .chatback{grid-column:1!important;display:grid!important;width:42px!important;height:42px!important;place-items:center!important;border-radius:50%!important;background:var(--pine-tint)!important;color:var(--pine)!important;border:0!important;font-size:21px!important;line-height:1!important;flex:none!important}
    body[data-view="equipo"] .chat-layout.open .chat-room-title,
    body[data-view="equipo"][data-chat-open="1"] .chat-room-title{grid-column:2!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;min-width:0!important;width:auto!important;margin:0!important;overflow:hidden!important}
    body[data-view="equipo"] .chat-layout.open .chat-room-logo,
    body[data-view="equipo"][data-chat-open="1"] .chat-room-logo{width:34px!important;height:34px!important;flex:0 0 34px!important;filter:drop-shadow(0 4px 8px rgba(0,75,87,.12))!important}
    body[data-view="equipo"] .chat-layout.open .chat-room-title b,
    body[data-view="equipo"][data-chat-open="1"] .chat-room-title b{font-size:15px!important;line-height:1.1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:100%!important;color:var(--ink)!important;display:block!important}
    body[data-view="equipo"] .chat-layout.open .chatbadge,
    body[data-view="equipo"][data-chat-open="1"] .chatbadge{font-size:10.5px!important;margin-top:3px!important;width:max-content!important;max-width:100%!important}
    body[data-view="equipo"] .chat-layout.open .chat-actions,
    body[data-view="equipo"][data-chat-open="1"] .chat-actions{grid-column:3!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:6px!important;margin:0!important;width:auto!important;flex-wrap:nowrap!important}
    body[data-view="equipo"] .chat-layout.open .chat-actions .btn,
    body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn{width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important;padding:0!important;border-radius:13px!important;flex:0 0 40px!important;background:#fff!important;color:var(--pine)!important;border-color:var(--line)!important}
    body[data-view="equipo"] .chat-layout.open .chat-actions .chat-ai-btn,
    body[data-view="equipo"][data-chat-open="1"] .chat-actions .chat-ai-btn{width:42px!important;min-width:42px!important;background:var(--pine)!important;color:#fff!important;border-color:var(--pine)!important;font-size:12px!important}
    body[data-view="equipo"] .chat-layout.open .chat-actions .btn span,
    body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn span{display:none!important}
    body[data-view="equipo"] .chat-layout.open .chatfeed,
    body[data-view="equipo"][data-chat-open="1"] .chatfeed{flex:1 1 auto!important;min-height:0!important;height:auto!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;border-radius:0!important;padding:12px!important;background:linear-gradient(180deg,#f7f3ea,#efe9dd)!important}
    body[data-view="equipo"] .chat-layout.open .aicomposer,
    body[data-view="equipo"][data-chat-open="1"] .aicomposer{display:flex!important;flex:0 0 auto!important;align-items:flex-end!important;gap:7px!important;padding:9px 10px calc(9px + env(safe-area-inset-bottom))!important;background:#fff!important;border-top:1px solid var(--line)!important;position:relative!important;bottom:auto!important;z-index:3!important}
    body[data-view="equipo"] .chat-layout.open #chatinput,
    body[data-view="equipo"][data-chat-open="1"] #chatinput{min-height:42px!important;max-height:110px!important;font-size:16px!important;min-width:0!important}
    body[data-view="equipo"] .chat-layout.open .chattool,
    body[data-view="equipo"][data-chat-open="1"] .chattool{width:42px!important;height:42px!important;min-height:42px!important;flex:0 0 42px!important;border-radius:50%!important}
    body[data-view="equipo"] .chat-layout.open .chat-mention,
    body[data-view="equipo"][data-chat-open="1"] .chat-mention{height:42px!important;min-height:42px!important;flex:0 0 46px!important;border-radius:21px!important;padding:0!important;font-size:12px!important}
    body[data-view="equipo"] .chat-layout.open~.chatwarnings,
    body[data-view="equipo"][data-chat-open="1"] .chatwarnings{display:none!important}
    body[data-view="equipo"][data-chat-open="1"] .topbar,
    body[data-view="equipo"][data-chat-open="1"] .mtab,
    body[data-view="equipo"][data-chat-open="1"] .fab-new{display:none!important}
  }

  /* Final mobile readability repairs */
  @media(max-width:760px){
    .main .card:has(table)::after,
    .modal .card:has(table)::after,
    .drawer .card:has(table)::after{content:'Desliza para ver mas ->'!important;}
    body[data-view="ops"] .live .table-scroll::before{content:'Desliza para ver fecha, cliente y montos ->'!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card>div[style*="overflow-x:auto"]{overflow-x:auto!important;overflow-y:visible!important;-webkit-overflow-scrolling:touch!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl{table-layout:auto!important;min-width:100%!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl th,
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl td{white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl td:first-child,
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl th:first-child{white-space:normal!important;min-width:150px!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .tbl .mono{font-size:11px!important;letter-spacing:-.02em!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card:first-of-type .tbl{min-width:430px!important;}
    body[data-view="cheques"][data-cheques-tab="cartera"] .live .card:first-of-type .tbl td:first-child{min-width:188px!important;}
    body[data-view="equipo"] .chatmeta span{font-size:12px!important;line-height:1.25!important;max-width:100%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
  }


  .chat-search-results{display:flex;flex-direction:column;gap:8px}.search-hit{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;text-align:left;color:var(--ink);cursor:pointer}.search-hit b{font-size:13px}.search-hit span{float:right;color:var(--muted);font-size:11px}.search-hit p{margin:5px 0 0;color:var(--muted);line-height:1.35}.hitflash{outline:3px solid rgba(207,165,83,.65)!important;box-shadow:0 0 0 7px rgba(207,165,83,.18)!important;transition:outline .2s,box-shadow .2s}

  /* Hardening final de vistas moviles: textos largos o corruptos no rompen tarjetas/listas */
  @media(max-width:760px){
    .chatitem{min-width:0!important;max-width:100%!important;overflow:hidden!important}
    .chatmeta{min-width:0!important;overflow:hidden!important}
    .chatmeta span{display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;white-space:normal!important;overflow:hidden!important;line-height:1.25!important;max-height:2.6em!important}
    .chatmeta b{max-width:100%!important}
    .decision-card,.concard,.briefcard,.card{overflow:hidden}
    .conrow .cinfo,.decision-card p,.card p{overflow-wrap:anywhere}
  }
/* RS mobile compact KPI grids */
@media(max-width:640px){
  .kpis,
  .statbar,
  .resgrid,
  .det-sec .resgrid,
  .modal .resgrid,
  .drawer .resgrid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
  }
  .kpi,
  .statbar .st-cell,
  .resitem{
    min-width:0!important;
    min-height:auto!important;
    padding:10px 11px!important;
    border-radius:12px!important;
  }
  .resitem .k,
  .statbar .st-lab,
  .kpi .lab{
    font-size:10px!important;
    line-height:1.2!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .resitem .vv,
  .statbar .st-val,
  .kpi .val,
  .kpi .val.sm{
    font-size:16px!important;
    line-height:1.15!important;
    overflow-wrap:anywhere!important;
  }
  .kpi .sub,
  .statbar .st-sub{
    font-size:10.5px!important;
    line-height:1.25!important;
    overflow-wrap:anywhere!important;
  }
}
@media(max-width:380px){
  .kpis,
  .statbar,
  .resgrid,
  .det-sec .resgrid,
  .modal .resgrid,
  .drawer .resgrid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}


/* RS mobile chat composer perf polish */
@media(max-width:640px){
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .chat-ai-btn{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chatpanel .aicomposer{display:flex!important;align-items:flex-end!important;gap:6px!important;padding:10px 8px calc(10px + env(safe-area-inset-bottom))!important;background:#fff!important}
  body[data-view="equipo"][data-chat-open="1"] .chatpanel .chattool{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;flex:0 0 40px!important;padding:0!important}
  body[data-view="equipo"][data-chat-open="1"] .chatpanel .chat-mention{width:42px!important;height:40px!important;min-width:42px!important;min-height:40px!important;flex:0 0 42px!important;padding:0!important;border-radius:20px!important;font-size:12px!important}
  body[data-view="equipo"][data-chat-open="1"] #chatinput{width:auto!important;flex:1 1 190px!important;min-width:0!important;min-height:56px!important;max-height:132px!important;padding:12px 13px!important;font-size:16px!important;line-height:1.28!important;border-radius:14px!important}
  body[data-view="equipo"][data-chat-open="1"] .aicomposer .chatrec{position:absolute;left:96px;bottom:calc(54px + env(safe-area-inset-bottom));font-size:11px}
}
@media(max-width:390px){
  body[data-view="equipo"][data-chat-open="1"] .chatpanel .chattool{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;flex-basis:38px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatpanel .chat-mention{width:40px!important;min-width:40px!important;flex-basis:40px!important;font-size:11px!important}
  body[data-view="equipo"][data-chat-open="1"] #chatinput{flex-basis:150px!important;min-height:54px!important}
}

/* RS mobile cheques summary no-cut */
@media(max-width:760px){
  body[data-view="cheques"] .live{max-width:100%!important;overflow-x:hidden!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e{grid-template-columns:1fr!important;gap:10px!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card{width:100%!important;max-width:100%!important;box-sizing:border-box!important;padding:14px!important;overflow:hidden!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card:has(table)::after{display:none!important;content:none!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card>div:first-child{display:grid!important;grid-template-columns:1fr auto!important;gap:8px!important;align-items:start!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card>div:first-child .btn{max-width:150px!important;white-space:normal!important;line-height:1.15!important;padding:9px 10px!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl{width:100%!important;min-width:0!important;table-layout:fixed!important;border-collapse:collapse!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl th,
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl td{padding:10px 8px!important;min-width:0!important;max-width:none!important;overflow:hidden!important;text-overflow:ellipsis!important;box-sizing:border-box!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl th:first-child,
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl td:first-child{width:50%!important;white-space:normal!important;overflow-wrap:anywhere!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl th:nth-child(2),
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl td:nth-child(2){width:34%!important;text-align:right!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl th:nth-child(3),
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl td:nth-child(3){width:16%!important;text-align:right!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl .mono{font-size:11px!important;letter-spacing:-.045em!important;white-space:nowrap!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card h3{min-width:0!important;line-height:1.15!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .note{font-size:12px!important;line-height:1.35!important;overflow-wrap:anywhere!important}
}
@media(max-width:390px){
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card{padding:12px!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl th,
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl td{padding:9px 6px!important}
  body[data-view="cheques"][data-cheques-tab="cartera"] .grid.g-2e>.card .tbl .mono{font-size:10.5px!important}
}

/* RS mobile chat clean final */
@media(max-width:760px){
  body[data-view="equipo"] .chatitem::after{content:none!important;display:none!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-card{border-radius:18px!important;overflow:hidden!important}
  body[data-view="equipo"][data-chat-open="0"] .chatitem{display:grid!important;grid-template-columns:46px minmax(0,1fr) auto!important;gap:10px!important;align-items:center!important;width:100%!important;max-width:100%!important;min-height:72px!important;padding:12px 14px!important;overflow:hidden!important}
  body[data-view="equipo"][data-chat-open="0"] .chatav{grid-column:1!important;width:46px!important;height:46px!important}
  body[data-view="equipo"][data-chat-open="0"] .chatmeta{grid-column:2!important;min-width:0!important;overflow:hidden!important}
  body[data-view="equipo"][data-chat-open="0"] .chatmeta b{font-size:14.5px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  body[data-view="equipo"][data-chat-open="0"] .chatmeta span{display:block!important;font-size:12px!important;line-height:1.25!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:100%!important;color:var(--muted)!important}
  body[data-view="equipo"][data-chat-open="0"] .chattime{grid-column:3!important;align-self:start!important;white-space:nowrap!important;font-size:10.5px!important;color:var(--muted)!important}
  body[data-view="equipo"][data-chat-open="1"] .chatpanel{height:100dvh!important;max-height:100dvh!important;width:100vw!important;overflow:hidden!important}
  body[data-view="equipo"][data-chat-open="1"] .chathead{min-height:66px!important;grid-template-columns:44px minmax(0,1fr) auto!important;padding:calc(9px + env(safe-area-inset-top)) 10px 9px!important;gap:8px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatback{width:42px!important;height:42px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-logo{width:28px!important;height:28px!important;flex-basis:28px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title{gap:7px!important;min-width:0!important;overflow:hidden!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title b{font-size:14.5px!important;max-width:36vw!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  body[data-view="equipo"][data-chat-open="1"] .chatbadge{font-size:10px!important;padding:3px 7px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions{gap:5px!important;flex:0 0 auto!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn{width:38px!important;min-width:38px!important;height:38px!important;min-height:38px!important;border-radius:12px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .chat-ai-btn{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chatfeed{padding:10px 14px!important;overflow-x:hidden!important}
  body[data-view="equipo"][data-chat-open="1"] .aimsg.bot{max-width:88%!important}
  body[data-view="equipo"][data-chat-open="1"] .aibub{max-width:100%!important;box-sizing:border-box!important;overflow-wrap:anywhere!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;align-items:stretch!important;padding:10px!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions span{grid-column:1/-1!important;font-size:12px!important;white-space:normal!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions .btn{width:100%!important;min-height:44px!important;padding:10px!important}
  body[data-view="equipo"][data-chat-open="1"] .aicomposer{display:grid!important;grid-template-columns:40px 40px 42px minmax(0,1fr) 44px!important;gap:6px!important;padding:9px 8px calc(9px + env(safe-area-inset-bottom))!important;align-items:end!important}
  body[data-view="equipo"][data-chat-open="1"] .chattool,
  body[data-view="equipo"][data-chat-open="1"] .chat-mention{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;flex:0 0 40px!important;padding:0!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-mention{font-size:11px!important;border-radius:20px!important}
  body[data-view="equipo"][data-chat-open="1"] #chatinput{width:100%!important;min-width:0!important;min-height:52px!important;max-height:126px!important;padding:12px!important;font-size:16px!important;line-height:1.3!important}
}
@media(max-width:390px){
  body[data-view="equipo"][data-chat-open="1"] .aicomposer{grid-template-columns:38px 38px 40px minmax(0,1fr) 42px!important}
  body[data-view="equipo"][data-chat-open="1"] .chattool,
  body[data-view="equipo"][data-chat-open="1"] .chat-mention{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important}
  body[data-view="equipo"][data-chat-open="1"] #chatinput{min-height:50px!important;padding:11px!important}
}

/* RS mobile sticky table headers global */
@media(max-width:760px){
  .live .table-scroll,
  .drawer .table-scroll,
  .modal .table-scroll,
  .live div[style*="overflow-x:auto"],
  .drawer div[style*="overflow-x:auto"],
  .modal div[style*="overflow-x:auto"],
  .live div[style*="overflow-x: auto"],
  .drawer div[style*="overflow-x: auto"],
  .modal div[style*="overflow-x: auto"]{
    position:relative!important;
    max-width:100%!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .live table.tbl thead,
  .live table.ptbl thead,
  .live table.chtable thead,
  .live table.mobile-ready thead,
  .live table.ops-table thead,
  .drawer table.tbl thead,
  .drawer table.ptbl thead,
  .drawer table.chtable thead,
  .drawer table.mobile-ready thead,
  .drawer table.ops-table thead,
  .modal table.tbl thead,
  .modal table.ptbl thead,
  .modal table.chtable thead,
  .modal table.mobile-ready thead,
  .modal table.ops-table thead{
    display:table-header-group!important;
  }
  .live table.tbl thead th,
  .live table.ptbl thead th,
  .live table.chtable thead th,
  .live table.mobile-ready thead th,
  .live table.ops-table thead th,
  .drawer table.tbl thead th,
  .drawer table.ptbl thead th,
  .drawer table.chtable thead th,
  .drawer table.mobile-ready thead th,
  .drawer table.ops-table thead th,
  .modal table.tbl thead th,
  .modal table.ptbl thead th,
  .modal table.chtable thead th,
  .modal table.mobile-ready thead th,
  .modal table.ops-table thead th{
    position:sticky!important;
    top:0!important;
    z-index:40!important;
    background:linear-gradient(180deg,#fbfaf6 0%,#f7f3ea 100%)!important;
    box-shadow:0 1px 0 var(--line),0 7px 14px rgba(20,50,55,.08)!important;
  }
  .modal .mbody table.tbl thead th,
  .modal .mbody table.ptbl thead th,
  .modal .mbody table.chtable thead th,
  .modal .mbody table.mobile-ready thead th,
  .modal .mbody table.ops-table thead th,
  .drawer .dbody table.tbl thead th,
  .drawer .dbody table.ptbl thead th,
  .drawer .dbody table.chtable thead th,
  .drawer .dbody table.mobile-ready thead th,
  .drawer .dbody table.ops-table thead th{
    top:0!important;
    z-index:9!important;
  }
  body[data-view="ops"] .live .ops-table thead th:nth-child(1),
  body[data-view="ops"] .live .ops-table thead th:nth-child(2){z-index:11!important}
}
/* Operaciones móvil: usa el mismo resize+scroll horizontal universal que el
   resto de las tablas (ver el enhancer al final del script). Antes ocultaba
   columnas a mano con table-layout propio, pero eso chocaba con el colgroup
   del resize y con el ancho de la fila agrupadora (colspan=10, "Julio
   2026..."), dando anchos absurdos. Más simple y consistente así: el usuario
   redimensiona lo que no le interesa en vez de que se lo ocultemos nosotros. */
/* RS premium PDF export */
@page{size:A4 landscape;margin:10mm 9mm 11mm}
@media print{
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .shell,.mtab,.drawer,.scrim,.scrim2,.modal,.toast,.topbar,.fab-new,.fab-menu,.install-prompt,.busy-overlay,.rs-splash,.cfscrim,.cfbox,.chat-layout{display:none!important}
  html,body{background:#fff!important;margin:0!important;padding:0!important;color:#10282d!important;font-family:Arial,Helvetica,sans-serif!important}
  #printArea{display:block!important;position:static!important;padding:0!important;background:#fff!important;color:#10282d!important;font-family:Arial,Helvetica,sans-serif!important}
  .psheet{box-sizing:border-box!important;width:100%!important;min-height:auto!important;padding:0!important;margin:0!important;page-break-after:always!important;background:#fff!important;color:#10282d!important}
  .psheet:last-child{page-break-after:auto!important}
  /* La hoja que se ENTREGA va sin membrete: el nombre y el logo de quien la
     emite no le dicen nada al cliente y se comian medio encabezado. Queda solo
     la linea de identificacion de la operacion, alineada a la derecha. */
  .phead.phead-simple{display:flex!important;justify-content:flex-end!important;grid-template-columns:none!important;background:none!important;border:0!important;box-shadow:none!important;padding:0 0 10px 0!important;border-bottom:1px solid #d8d0c1!important;border-radius:0!important}
  .phead.phead-simple .pright{color:#5a6b63!important;text-align:right!important}
  .phead{display:grid!important;grid-template-columns:86px minmax(0,1fr) auto!important;gap:14px!important;align-items:center!important;margin:0 0 14px!important;padding:13px 16px!important;border:0!important;border-radius:18px!important;background:linear-gradient(135deg,#063e3d 0%,#0b564f 58%,#1d6f5b 100%)!important;color:#f6eddc!important;box-shadow:inset 0 0 0 1px rgba(242,214,163,.22)!important}
  .phead .plogo{width:78px!important;height:56px!important;border-radius:0!important;background:transparent!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important;box-shadow:none!important}
  .phead .plogo img{width:78px!important;height:56px!important;object-fit:contain!important;display:block!important;filter:brightness(0) invert(1) sepia(.42) saturate(2.1) hue-rotate(350deg) brightness(1.08)!important}
  .phead .pname{font-size:19px!important;line-height:1!important;font-weight:900!important;letter-spacing:.02em!important;color:#fff7e8!important;margin:0!important;font-family:Arial,Helvetica,sans-serif!important;text-transform:uppercase!important}
  .phead .psub{font-size:8.5px!important;line-height:1.25!important;letter-spacing:.18em!important;text-transform:uppercase!important;color:#eac98d!important;margin-top:5px!important;max-width:520px!important;white-space:normal!important;font-weight:700!important}
  .phead .pright{margin:0!important;text-align:right!important;font-size:10px!important;line-height:1.4!important;color:#fff7e8!important;white-space:nowrap!important;font-weight:700!important}
  .pcopy{display:inline-flex!important;align-items:center!important;gap:6px!important;padding:4px 9px!important;border:1px solid #d8bd80!important;border-radius:999px!important;background:#f8f0df!important;color:#063e3d!important;font-size:9px!important;letter-spacing:.13em!important;text-transform:uppercase!important;font-weight:900!important;margin:0 0 8px!important}
  .ptitle{font-size:22px!important;line-height:1.12!important;font-weight:900!important;color:#082b31!important;margin:8px 0 4px!important;font-family:Arial,Helvetica,sans-serif!important;letter-spacing:-.02em!important}
  .pmeta{font-size:11px!important;line-height:1.35!important;color:#52636a!important;margin:0 0 12px!important;padding:8px 10px!important;border-left:4px solid #0b665f!important;background:#f5efe3!important;border-radius:10px!important;overflow-wrap:anywhere!important}
  .psec{display:inline-flex!important;align-items:center!important;margin:14px 0 7px!important;padding:5px 10px!important;border-radius:999px!important;background:#e7f1ee!important;color:#075961!important;font-size:9.5px!important;letter-spacing:.14em!important;text-transform:uppercase!important;font-weight:900!important}
  .pres{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:8px!important;margin:8px 0 12px!important;font-size:9px!important;color:#65757a!important;text-transform:uppercase!important;letter-spacing:.06em!important}
  .pres>div{border:1px solid #dfd5c4!important;background:#fbf7ee!important;border-radius:12px!important;padding:9px 10px!important;min-width:0!important}
  .pres b{display:block!important;margin-top:3px!important;color:#08343a!important;font-size:14px!important;line-height:1.1!important;font-family:'Courier New',monospace!important;letter-spacing:-.04em!important;text-transform:none!important}
  table,.ptbl,.chtable{width:100%!important;border-collapse:separate!important;border-spacing:0!important;margin-top:8px!important;font-size:9.2px!important;line-height:1.25!important;table-layout:auto!important;border:1px solid #d8d0c1!important;border-radius:12px!important;overflow:hidden!important;background:#fff!important}
  thead{display:table-header-group!important}
  tr{page-break-inside:avoid!important;break-inside:avoid!important}
  th,td,.ptbl th,.ptbl td,.chtable th,.chtable td{border:0!important;border-bottom:1px solid #e2dacf!important;padding:6px 7px!important;text-align:left!important;vertical-align:top!important;white-space:normal!important;overflow-wrap:anywhere!important;color:#142d33!important}
  th,.ptbl th,.chtable th{background:#0b565d!important;color:#fff8e8!important;font-size:8px!important;letter-spacing:.10em!important;text-transform:uppercase!important;font-weight:900!important;white-space:normal!important}
  tbody tr:nth-child(even) td{background:#fbf8f1!important}
  tbody tr:last-child td{border-bottom:0!important}
  td.r,th.r,.r{text-align:right!important;font-variant-numeric:tabular-nums!important;white-space:nowrap!important}
  .mono{font-family:'Courier New',monospace!important;letter-spacing:-.02em!important}
  tfoot td,.ptbl tfoot td{font-weight:900!important;background:#efe4cf!important;color:#082b31!important}
  .pfoot{margin-top:13px!important;padding:9px 12px!important;border:1px solid #e1d7c5!important;border-radius:12px!important;background:#fbf7ee!important;color:#536469!important;font-size:9.5px!important;display:flex!important;justify-content:space-between!important;gap:12px!important}
  .pfoot:after{content:'Documento generado desde Rolado Silvopastoril';margin-left:auto;color:#0b565d;font-weight:700}
  .pz{font-size:11px!important;color:#24363b!important;line-height:1.45!important}
  .pz-title{font-size:16px!important;font-weight:900!important;letter-spacing:.08em!important;text-align:center!important;color:#fff8e8!important;margin:12px 0!important;padding:10px!important;background:#0b565d!important;border-radius:12px!important;border:0!important;text-transform:uppercase!important}
  .pz-data,.pz-price{border-radius:12px!important;overflow:hidden!important}
  .pz-h{font-size:9.5px!important;text-transform:uppercase!important;letter-spacing:.12em!important;color:#075961!important;font-weight:900!important;margin:12px 0 5px!important;border-left:4px solid #d8bd80!important;padding-left:8px!important}
  .pz-sign{display:flex!important;justify-content:space-around!important;gap:40px!important;margin-top:36px!important;text-align:center!important;font-size:10px!important;color:#333!important}
}
@media print and (orientation:portrait){@page{size:A4 portrait;margin:10mm}.pres{grid-template-columns:repeat(2,minmax(0,1fr))!important}table,.ptbl,.chtable{font-size:8.6px!important}th,td,.ptbl th,.ptbl td,.chtable th,.chtable td{padding:5px 6px!important}.phead{grid-template-columns:72px minmax(0,1fr)!important}.phead .pright{grid-column:1/-1;text-align:left!important}.phead .plogo img{width:68px!important;height:48px!important}}


/* RS print polish 2026-07-21 */
@media print{
  .pfoot:after{content:none!important;display:none!important}
  .psheet .psec+ .pres{margin-top:0!important}
  .psheet .pres{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important}
  .psheet .pres>div{padding:8px 10px!important;border-radius:10px!important}
  .psheet .pres b{font-size:13px!important}
  .phead{margin-bottom:10px!important;padding:11px 14px!important;border-radius:16px!important}
  .ptitle{margin-top:6px!important;margin-bottom:4px!important;font-size:21px!important}
  .pmeta{margin-bottom:9px!important;padding:7px 10px!important}
}
/* RS compact mobile chat v2 */
@media(max-width:760px){
  body[data-view="equipo"][data-chat-open="0"] .main{padding-top:8px!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-card{border-radius:16px!important;margin-top:6px!important;box-shadow:0 10px 24px rgba(20,50,55,.06)!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-head{padding:12px 14px!important;min-height:58px!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-title{gap:10px!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-brand-logo{width:34px!important;height:34px!important;object-fit:contain!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-title b{font-size:16px!important;line-height:1.1!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-list-title span{font-size:12px!important;color:var(--muted)!important}
  body[data-view="equipo"][data-chat-open="0"] .chat-newgrp{height:38px!important;min-height:38px!important;padding:0 12px!important;border-radius:12px!important;font-size:12px!important}
  body[data-view="equipo"][data-chat-open="0"] .chatitem::after{content:none!important;display:none!important}
  body[data-view="equipo"][data-chat-open="0"] .chatitem{grid-template-columns:42px minmax(0,1fr) auto!important;min-height:64px!important;padding:9px 12px!important;gap:10px!important;border-bottom:1px solid var(--line)!important;background:#fff!important;border-radius:0!important;box-shadow:none!important}
  body[data-view="equipo"][data-chat-open="0"] .chatitem.on{background:#eef6f3!important;box-shadow:inset 4px 0 0 var(--pine)!important}
  body[data-view="equipo"][data-chat-open="0"] .chatav{width:42px!important;height:42px!important;border-radius:13px!important}
  body[data-view="equipo"][data-chat-open="0"] .chatmeta b{font-size:14px!important;line-height:1.15!important}
  body[data-view="equipo"][data-chat-open="0"] .chatmeta span{font-size:12px!important;line-height:1.25!important;color:var(--muted)!important;max-width:100%!important;display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  body[data-view="equipo"][data-chat-open="0"] .chattime{font-size:10px!important;color:#7f9091!important;align-self:start!important;margin-top:2px!important}

  body[data-view="equipo"][data-chat-open="1"] .chatpanel{height:100dvh!important;width:100vw!important;border-radius:0!important;border:0!important;background:#fff!important}
  body[data-view="equipo"][data-chat-open="1"] .chathead{min-height:54px!important;padding:calc(7px + env(safe-area-inset-top)) 10px 7px!important;grid-template-columns:38px minmax(0,1fr) auto!important;gap:7px!important;background:#fff!important;border-bottom:1px solid var(--line)!important}
  body[data-view="equipo"][data-chat-open="1"] .chatback{width:38px!important;height:38px!important;border-radius:19px!important;font-size:17px!important;background:#e8f3f1!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-logo{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-ico{width:30px!important;height:30px!important;border-radius:10px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title{gap:6px!important;align-items:center!important;min-width:0!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title div{min-width:0!important;display:flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title b{font-size:15px!important;line-height:1.08!important;max-width:44vw!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;color:#10282d!important}
  body[data-view="equipo"][data-chat-open="1"] .chatbadge{font-size:10px!important;padding:3px 7px!important;line-height:1!important;border-radius:999px!important;background:#cc554f!important;color:#fff!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions{gap:5px!important;margin:0!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn{width:36px!important;min-width:36px!important;height:36px!important;min-height:36px!important;border-radius:12px!important;padding:0!important;background:#fff!important;box-shadow:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .chat-ai-btn{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn .ic{width:15px!important;height:15px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatfeed{padding:10px 12px!important;gap:9px!important;background:#f3eee4!important;overflow-x:hidden!important}
  body[data-view="equipo"][data-chat-open="1"] .aimsgs{gap:9px!important}
  body[data-view="equipo"][data-chat-open="1"] .aimsg.bot{max-width:82%!important}
  body[data-view="equipo"][data-chat-open="1"] .aibub{font-size:13px!important;line-height:1.38!important;padding:10px 12px!important;border-radius:14px!important;max-width:100%!important;box-shadow:0 5px 14px rgba(20,50,55,.06)!important}
  body[data-view="equipo"][data-chat-open="1"] .aimsg.bot .aibub{background:#fff!important;border:1px solid #ded6c9!important;color:#10282d!important}
  body[data-view="equipo"][data-chat-open="1"] .chatwho{font-size:11px!important;line-height:1.15!important;margin-bottom:4px!important;color:var(--pine)!important;font-weight:900!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow{gap:8px!important;margin:6px 0!important;align-items:flex-start!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow .av{width:34px!important;height:34px!important;font-size:11px!important;margin-top:2px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatmsg{max-width:76%!important;padding:10px 12px!important;border-radius:14px!important;box-shadow:0 5px 14px rgba(20,50,55,.06)!important;font-size:13.5px!important;line-height:1.36!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow.mine .chatmsg{max-width:70%!important;background:var(--pine)!important;color:#fff!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow.mine .av{width:34px!important;height:34px!important}
  body[data-view="equipo"][data-chat-open="1"] .pinb{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chatt{font-size:10.5px!important;color:#87989a!important;margin-left:5px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow.mine .chatt,
  body[data-view="equipo"][data-chat-open="1"] .chatrow.mine .chatwho{color:#dbeceb!important}
  body[data-view="equipo"][data-chat-open="1"] .chatread{font-size:10.5px!important;margin-top:5px!important;color:#dbeceb!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions{display:flex!important;gap:7px!important;flex-wrap:wrap!important;padding:8px!important;margin-top:8px!important;border-radius:12px!important;background:#e8f4f2!important;align-items:center!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions span{flex:1 0 100%!important;font-size:11px!important;line-height:1.1!important;margin:0 0 1px!important;color:var(--pine)!important;font-weight:900!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions .btn{width:auto!important;min-width:74px!important;min-height:34px!important;height:34px!important;padding:0 10px!important;border-radius:10px!important;font-size:11.5px!important;box-shadow:none!important}
  body[data-view="equipo"][data-chat-open="1"] .aicomposer{display:grid!important;grid-template-columns:38px 38px minmax(0,1fr) 42px!important;gap:6px!important;padding:8px 10px calc(8px + env(safe-area-inset-bottom))!important;background:#fff!important;border-top:1px solid var(--line)!important;align-items:end!important}
  body[data-view="equipo"][data-chat-open="1"] .aicomposer .chat-mention{display:none!important}
  body[data-view="equipo"][data-chat-open="1"] .chattool{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;border-radius:19px!important;padding:0!important;box-shadow:none!important}
  body[data-view="equipo"][data-chat-open="1"] #chatinput{min-height:42px!important;max-height:112px!important;padding:10px 12px!important;font-size:15.5px!important;line-height:1.25!important;border-radius:14px!important;width:100%!important;min-width:0!important}
  body[data-view="equipo"][data-chat-open="1"] .aicomposer .btn-pri{width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;border-radius:21px!important;padding:0!important}
}
@media(max-width:390px){
  body[data-view="equipo"][data-chat-open="1"] .chat-room-title b{max-width:38vw!important;font-size:14px!important}
  body[data-view="equipo"][data-chat-open="1"] .chat-actions .btn{width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important}
  body[data-view="equipo"][data-chat-open="1"] .chatmsg{max-width:78%!important}
  body[data-view="equipo"][data-chat-open="1"] .chatrow.mine .chatmsg{max-width:72%!important}
  body[data-view="equipo"][data-chat-open="1"] .opactions .btn{min-width:68px!important;font-size:11px!important}
}
/* RS table workbench: encabezado fijo + columnas ajustables persistentes */
/* min-width:0 es lo que hace que el scroll horizontal viva ADENTRO de la caja.
   Sin eso, un item de grid/flex crece hasta el ancho de su contenido y el
   max-width:100% no lo frena --se resuelve contra una caja que ya creció--, asi
   que la tabla empuja la tarjeta, la tarjeta empuja la grilla y termina
   desbordando la pagina entera. Se ve como barras de scroll horizontales por
   todos lados en el tablero. */
.grid>*,.card,.live>*{min-width:0}
.rs-table-scroll{min-width:0;max-width:100%;overflow:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overscroll-behavior-y:auto;scrollbar-width:thin;scrollbar-color:var(--pine) var(--card2)}
.live .rs-table-scroll,.card .rs-table-scroll{max-height:calc(100dvh - 240px)}
.modal .rs-table-scroll,.drawer .rs-table-scroll,.mbody .rs-table-scroll,.dbody .rs-table-scroll{max-height:min(64dvh,620px)}
.rs-table-scroll>table,.rs-table-scroll table.rs-enhanced-table{border-collapse:separate!important;border-spacing:0!important;table-layout:fixed!important;width:max-content!important;min-width:100%!important;max-width:none!important}
.rs-table-scroll table.rs-enhanced-table thead{position:sticky!important;top:0!important;z-index:8!important}
.rs-table-scroll table.rs-enhanced-table thead th{position:sticky!important;top:0!important;z-index:9!important;background:#fbfaf6!important;box-shadow:0 1px 0 var(--line),0 10px 18px -18px rgba(20,50,55,.42)!important}
.rs-table-scroll table.rs-enhanced-table thead th:first-child{z-index:10!important}
/* El ancho de columna ya se puede ajustar arrastrando (ver el resizer de abajo),
   pero sin esto el TEXTO de la celda no respetaba ese ancho: un nombre largo
   desbordaba por encima de la columna de al lado en vez de cortarse con "…".
   Antes esto solo pasaba en mobile (media query de 760px); ahora es siempre así,
   en toda la app, para que achicar una columna realmente corte el contenido. */
.rs-table-scroll table.rs-enhanced-table th,.rs-table-scroll table.rs-enhanced-table td{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
/* Los montos NUNCA se cortan con "…": ocultar dígitos de una cifra ($23.502.9…)
   es peor que dejarla desbordar -- puede leerse como un número distinto.

   Pero TAMPOCO se parten en dos líneas. Antes envolvían, y un $13.461.168,08
   partido en «$13.461.1 / 68,08» tampoco se lee: es el mismo problema con otra
   cara. Ahora la columna arranca con el ancho del CONTENIDO (ver naturalWidth
   en frontend-table-enhancer.js), así que el número entra entero. Si alguien
   achica la columna a mano, desborda -- que sigue siendo mejor que cortar. */
.rs-table-scroll table.rs-enhanced-table td.mono{white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;word-break:normal!important}
.rs-resizable-th{min-width:24px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.rs-col-resizer{position:absolute;top:0;right:-8px;width:16px;height:100%;cursor:col-resize;touch-action:none;user-select:none;z-index:90;display:flex;align-items:center;justify-content:center}
.rs-col-resizer::after{content:'';position:absolute;top:24%;bottom:24%;left:50%;transform:translateX(-50%);width:2px;border-radius:2px;background:var(--line2);opacity:.6;transition:.12s}
.rs-resizable-th:hover .rs-col-resizer::after,.rs-table-resizing .rs-col-resizer::after{opacity:1;background:var(--pine);width:3px}
/* En pantallas táctiles (sin hover) el handle queda siempre visible y marcado,
   así se ve dónde arrastrar para ajustar y guardar el ancho de cada columna. */
@media(hover:none){.rs-col-resizer{width:22px;right:-11px}.rs-col-resizer::after{opacity:.85!important;background:var(--pine)!important;width:3px!important;top:18%!important;bottom:18%!important}}
body.rs-table-resizing{cursor:col-resize!important;user-select:none!important}
body[data-view="ops"] .live .table-scroll.rs-table-scroll{overflow:auto!important;overflow-y:auto!important;max-height:calc(100dvh - 245px)!important}
body[data-view="ops"] .live .table-scroll.rs-table-scroll::before{content:'Ajustá columnas arrastrando los bordes · deslizá para ver más →'!important}
@media (max-width:760px){.live .rs-table-scroll,.card .rs-table-scroll{max-height:calc(100dvh - 310px)}.modal .rs-table-scroll,.drawer .rs-table-scroll,.mbody .rs-table-scroll,.dbody .rs-table-scroll{max-height:58dvh}}

/* Modal selector de impresion */
.print-choice-head{padding:22px 24px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#fffdf7 0%,#f3eadb 100%)}
.print-choice-title{display:flex;align-items:center;gap:14px;min-width:0}
.print-choice-title h3{margin:0;font-size:22px;letter-spacing:-.02em;color:var(--ink)}
.print-choice-title p{margin:4px 0 0;color:var(--muted);font-size:13px}
.print-choice-ico{width:44px;height:44px;border-radius:16px;display:grid;place-items:center;background:var(--teal);color:#fff;box-shadow:0 12px 28px rgba(0,88,92,.18)}
.print-choice-body{padding:22px 24px 24px}
.print-choice-note{display:flex;gap:6px;flex-direction:column;padding:16px 18px;border:1px dashed var(--line2);border-radius:18px;background:rgba(255,255,255,.66);color:var(--muted);line-height:1.45}
.print-choice-note b{color:var(--ink);font-size:15px}
.print-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.print-choice-card{appearance:none;border:1px solid var(--line);background:#fff;border-radius:20px;padding:16px;text-align:left;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;cursor:pointer;color:var(--ink);box-shadow:0 10px 28px rgba(20,28,30,.07);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease,background .15s ease}
.print-choice-card:hover{transform:translateY(-1px);box-shadow:0 16px 34px rgba(20,28,30,.11);border-color:rgba(0,88,92,.35)}
.print-choice-card.primary{background:linear-gradient(135deg,var(--teal),#0c6f6f);color:#fff;border-color:transparent}
.print-choice-card-icon{width:44px;height:44px;border-radius:15px;display:grid;place-items:center;background:#e3f1f2;color:var(--teal)}
.print-choice-card.primary .print-choice-card-icon{background:rgba(255,255,255,.16);color:#fff}
.print-choice-card-copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.print-choice-card-copy b{font-size:16px}
.print-choice-card-copy small{font-size:12px;line-height:1.35;color:var(--muted)}
.print-choice-card.primary .print-choice-card-copy small{color:rgba(255,255,255,.78)}
.print-choice-arrow{font-size:20px;font-weight:900;opacity:.75}
@media(max-width:680px){.print-choice-head{padding:18px}.print-choice-title h3{font-size:19px}.print-choice-grid{grid-template-columns:1fr}.print-choice-body{padding:18px}.print-choice-card{border-radius:18px}}

/* RS no-mojibake final visible overrides */
.dest-dd>summary::after{content:'v'!important;margin-left:auto;color:var(--muted);font-size:11px}
.dest-dd[open]>summary::after{content:'^'!important}
@media(max-width:760px){
  .table-scroll::before{content:'Desliza para ver mas ->'!important}
  body[data-view="ops"] .live .table-scroll::before{content:'Desliza para ver fecha, cliente y montos ->'!important}
}
body[data-view="ops"] .live .table-scroll.rs-table-scroll::before{content:'Ajusta columnas arrastrando los bordes - desliza para ver mas ->'!important}
/* Banner instructivo de la tabla de operaciones: se quita. Reservaba 34px arriba
   y el encabezado sticky pegaba debajo -> quedaba "en el hueco". Sin él, el
   encabezado pega arriba de todo. */
body[data-view="ops"] .live .table-scroll::before,
body[data-view="ops"] .live .table-scroll.rs-table-scroll::before{content:none!important;display:none!important}
/* Scrollbars horizontales que quedan feos: subtabs y segmentos ocultan la barra
   (siguen scrolleando por gesto/deslizar). */
.subtabs,.seg2{scrollbar-width:none!important;-ms-overflow-style:none!important}
.subtabs::-webkit-scrollbar,.seg2::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
.chatitem::after{content:''!important;display:none!important}


/* ============================================================
   FICHA DE UN ACTIVO: encabezado, identidad y color
   ------------------------------------------------------------
   La pantalla de un equipo arrancaba con dos botones sueltos ("Volver a
   Activos" chiquito a la izquierda del título, "Editar ficha" perdido a la
   derecha) y el título sin nada que lo anclara. Acá viven las piezas que le
   dan cuerpo, con el mismo vocabulario que el resto de la app.
   ============================================================ */

/* Botón de sólo icono. Para "volver": el texto no aporta nada al lado de una
   flecha, y ocupaba el ancho del título. */
.iconbtn{width:38px;height:38px;border-radius:12px;border:1px solid var(--line2);background:var(--card);
  display:grid;place-items:center;cursor:pointer;color:var(--muted);flex:none;transition:.14s;
  box-shadow:0 1px 2px rgba(20,50,55,.05)}
.iconbtn:hover{background:var(--card2);color:var(--pine);border-color:var(--pine2)}
.iconbtn:active{transform:translateY(1px)}

/* Encabezado de una ficha: volver · identidad · acciones. */
.dhead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.dhead .dident{display:flex;align-items:center;gap:13px;flex:1;min-width:220px}
/* La barra de color del equipo. Sin color elegido queda en el tono de la app,
   así que la pieza no "falta": simplemente no dice nada todavía. */
.dbar{width:6px;align-self:stretch;min-height:46px;border-radius:99px;background:var(--pine-tint2);flex:none}
.dhead h2{font-family:'Bricolage Grotesque';font-size:28px;font-weight:700;letter-spacing:-.7px;line-height:1.05}
.dmeta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:5px;font-size:12.5px;color:var(--muted)}
.dmeta .sep{color:var(--line2)}
.dacts{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}

/* Pastilla de color: el equipo reconocido de un vistazo en la grilla. */
.cdot{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
/* Filo superior de la tarjeta en la grilla de activos. */
.ccap{height:4px;border-radius:99px;margin:-2px 0 9px}

/* ---------- Selector de color ----------
   Claves de paleta y no un color libre: un rojo elegido por gusto se confunde
   con el rojo de "vencido", y los tonos que ya son los de la app no desentonan.
   Cada uno va con su NOMBRE al lado: una muestra sola obliga a adivinar cómo se
   llama, y el nombre es lo que se usa para hablar del equipo ("el de Ladrillo").
   El color elegido se pasa por la variable --c, así el borde y el fondo del
   chip son ese mismo color sin repetirlo en el HTML. */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:7px;margin-top:2px}
.cchip{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line2);background:var(--card);color:var(--ink);
  font:600 12.5px/1.15 'Hanken Grotesk',sans-serif;text-align:left;transition:.14s;min-width:0}
.cchip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cchip:hover{border-color:var(--c,var(--pine2));background:var(--card2)}
.cchip.on{border-color:var(--c,var(--ink));background:color-mix(in srgb,var(--c,var(--pine)) 9%,var(--card));
  box-shadow:0 0 0 2.5px color-mix(in srgb,var(--c,var(--pine)) 18%,transparent)}
/* La muestra. El tilde aparece en blanco encima cuando está elegido. */
.cdotb{width:18px;height:18px;border-radius:6px;flex:none;position:relative;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.10)}
.cdotb.sincolor{background:repeating-linear-gradient(45deg,var(--card2) 0 4px,var(--line) 4px 8px)}
.cchip.on .cdotb::after{content:'';position:absolute;inset:0;margin:auto;width:8px;height:4.5px;
  border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1.5px)}
.cchip.on .cdotb.sincolor::after{border-color:var(--ink)}

/* ---------- Vista previa de la identidad, arriba del formulario ----------
   Cambiar nombre, tipo, estado o color y no ver el resultado hasta guardar
   obliga a guardar para probar. Esto lo muestra mientras se escribe. */
.idprev{display:flex;align-items:center;gap:13px;padding:14px 16px;border-radius:15px;
  background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);
  box-shadow:0 1px 2px rgba(20,50,55,.04),0 10px 22px -16px rgba(20,50,55,.22);margin-bottom:18px}
.idprev .pbar{width:5px;align-self:stretch;min-height:40px;border-radius:99px;background:var(--pine-tint2);flex:none}
.idprev b{font-family:'Bricolage Grotesque';font-size:18px;letter-spacing:-.35px;display:block;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.idprev .psub{font-size:12px;color:var(--muted);margin-top:3px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.idprev .pico{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;flex:none;color:#fff;
  box-shadow:0 6px 14px -6px rgba(20,50,55,.45)}
/* El nombre del color, escrito. Se pinta con el color elegido desde el JS. */
.idprev .pcolor{font-size:11px;font-weight:700;letter-spacing:.02em;padding:5px 10px;border-radius:99px;
  border:1px solid var(--line2);color:var(--faint);flex:none;white-space:nowrap}
@media(max-width:560px){.idprev .pcolor{display:none}}

/* En el teléfono el encabezado se apila y las acciones ocupan el ancho. */
@media(max-width:640px){
  .dhead{gap:11px}
  .dhead h2{font-size:23px}
  .dacts{margin-left:0;width:100%}
  .dacts .btn{flex:1;justify-content:center}
}

/* ---------- Ficha técnica en formato lista ----------
   Etiqueta a la izquierda, dato a la derecha, una línea por fila. El formato
   anterior --etiqueta arriba, dato abajo, en una grilla de tres columnas--
   ocupaba casi el doble de alto para las mismas ocho filas, y con la mayoría
   sin cargar dejaba una pantalla de guiones sueltos con aire alrededor. */
.speclist{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:0 24px;margin-top:6px}
.speclist.one{grid-template-columns:1fr}
.speclist>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;
  padding:6px 0;border-bottom:1px dashed var(--line);min-width:0}
.speclist .k{font-size:11.5px;color:var(--muted);white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}
.speclist .v{font-weight:700;font-size:13px;text-align:right;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Lo que falta cargar se ve, pero sin pesar: es un hueco, no un dato. */
.speclist .v.vacio{font-weight:600;color:var(--faint)}
.speclist .v .hint{font-weight:500}

/* Bajada de un encabezado de tarjeta: el dato de contexto que si no termina
   repetido como una tarjeta de estadística más. */
.h3sub{font-family:'Hanken Grotesk',sans-serif;font-weight:500;font-size:11.5px;
  color:var(--faint);letter-spacing:0;text-transform:none;margin-left:auto;padding-left:12px}
@media(max-width:640px){.h3sub{display:none}}
/* El gráfico de consumo al lado de su lectura. svgBars se topa en su ancho
   natural (78px por barra) a propósito: estirarlo no engorda las barras, sólo
   agranda el hueco entre ellas. En una tarjeta ancha eso dejaba media tarjeta
   vacía a la derecha del gráfico. Ahí va ahora lo que el gráfico quiere decir. */
.chartrow{display:grid;grid-template-columns:1.5fr minmax(190px,1fr);gap:18px;align-items:center;margin-top:12px}
.chartnotes{display:flex;flex-direction:column;gap:9px;min-width:0}
.chartnotes .note,.chartnotes .empty2{margin:0}
@media(max-width:900px){.chartrow{grid-template-columns:1fr;gap:10px}}

/* ============================================================
   GRILLA DE ACTIVOS
   ------------------------------------------------------------
   Las tarjetas tenían un alto distinto cada una: las líneas de mantenimiento y
   de vencimiento sólo aparecían si había dato. En una grilla eso no es gratis:
   la fila entera se estira a la más alta y todas las demás quedan con un hueco
   abajo. Ahora las cinco líneas están siempre, y la última dice lo que urge, o
   lo que se gastó, o que no hay nada registrado.
   ============================================================ */
.actgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(224px,1fr));gap:11px}
.actcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:9px 11px 10px;
  cursor:pointer;display:flex;flex-direction:column;gap:5px;transition:.14s;position:relative;
  box-shadow:0 1px 2px rgba(20,50,55,.05),0 8px 18px -12px rgba(20,50,55,.14)}
.actcard:hover{border-color:var(--pine2);transform:translateY(-2px);
  box-shadow:0 2px 4px rgba(20,50,55,.06),0 14px 26px -14px rgba(20,50,55,.28)}
/* El filo de color está SIEMPRE, aunque el equipo no tenga color elegido: si
   apareciera sólo en algunos, esas tarjetas medirían 4px más que el resto. */
.actcard .ccap{display:block;height:3px;border-radius:99px;background:var(--line);margin:-2px 0 1px}
.actcard .ccap.on{height:4px}
.actop{display:flex;align-items:center;justify-content:space-between;gap:7px;min-width:0}
.actop b{font-size:13px;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actop .st{font-size:9.5px;padding:2px 7px;white-space:nowrap;flex:none}
.actsub{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:10.5px;color:var(--muted);min-width:0}
.actsub span:first-child{display:inline-flex;align-items:center;gap:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actsub .mono{font-size:10px;color:var(--faint);flex:none}
/* Barra propia y no .hbar: esa reserva 120px para la etiqueta y 64 para el
   valor, así que dentro de una tarjeta de 224px a la barra le quedaban 16px y
   se leía como un hilo. Acá la barra ocupa todo el ancho y el valor va debajo. */
.actbar{height:7px;border-radius:99px;background:var(--card2);overflow:hidden;margin-top:1px}
.actbar i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--pine2),var(--honey))}
.actpie{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}
.actpie b{font-size:13.5px;letter-spacing:-.3px}
.actpie span{font-size:10.5px;color:var(--faint);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* La última línea, siempre presente: es lo que iguala el alto de las tarjetas. */
.actflag{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--muted);
  border-top:1px dashed var(--line);padding:5px 88px 0 0;margin-top:auto;min-height:24px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actflag.rojo{color:var(--red)}
.actflag.ambar{color:#a9641c}
.actflag.apagado{color:var(--faint)}
.actcard .actactions{position:absolute;right:10px;bottom:8px;display:flex;margin:0;z-index:1}
.actcard .actactions .btn{min-height:26px;padding:4px 7px;font-size:10px}

/* Mantenimiento pendiente: filas al lado de la otra cuando entran. Una debajo
   de la otra, a 10px de padding, dos avisos ocupaban 150px de la pantalla. */
.alertgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:8px;margin-top:10px}
.alertrow{display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:10px;cursor:pointer;
  background:var(--honey-tint);border:1px solid #e8d39a;color:#a9641c;font-size:12.5px;transition:.14s}
.alertrow:hover{filter:brightness(.98)}
.alertrow.venc{background:#f9e7e3;border-color:#eccdc6;color:var(--red)}
.alertrow b{color:var(--ink);font-size:13px}
.alertrow .hint{font-size:11px}
.alertrow .cuando{font-size:11px;margin-top:1px}

/* Estado de la cisterna: era un texto suelto con estilos inline. Ahora es una
   pastilla, y debajo van los cuatro números en lista --capacidad, disponible y
   los dos históricos-- que antes vivían en una tarjeta "Resumen" aparte con dos
   KPI y medio metro de blanco abajo. */
.tank-estado{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;
  padding:5px 11px;border-radius:99px;background:#d6ece2;border:1px solid #bcdcc9;color:var(--green)}
.tank-estado.rojo{background:#f9e7e3;border-color:#eccdc6;color:var(--red)}
.tank-info .speclist>div:last-child{border-bottom:0}

/* Combustible de obra: el resumen deja claro que los números provienen de la
   cisterna de este campo, y la tarifa se lee como una cuenta verificable. */
.cisterna-scope{display:flex;align-items:center;gap:7px;margin:0 0 12px;padding:10px 12px;
  border:1px solid var(--line);border-left:3px solid var(--pine);border-radius:10px;
  background:var(--card2);font-size:12.5px;color:var(--muted);line-height:1.4}
.cisterna-scope>svg{flex:none;color:var(--pine)}
.cisterna-resumen{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.cisterna-metrica{min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
.cisterna-metrica>span,.cert-tarifa-head span{display:block;margin-bottom:4px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.cisterna-metrica>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;color:var(--ink)}
.cisterna-metrica.destacada{border-color:#bcdcc9;background:var(--pine-tint)}
.cisterna-metrica.destacada>b{color:var(--pine)}
.cisterna-metrica small{font-size:11px;font-weight:700;color:var(--muted)}
.cert-tarifa{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card2)}
.cert-tarifa-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.cert-tarifa-head b{display:block;font-size:14px;color:var(--ink)}
.cert-tarifa-total{text-align:right;flex:none}
.cert-tarifa-total b{font-size:17px;color:var(--pine)}
.cert-tarifa-formula{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border-radius:9px;background:var(--pine-tint);color:var(--pine);font-family:var(--font-num)}
.cert-tarifa-formula span{font-weight:700;white-space:nowrap}
.cert-tarifa-formula i{font-style:normal;color:var(--muted);font-weight:700}
.cert-tarifa-formula strong{font-size:15px;white-space:nowrap}
.cert-tarifa p{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.cert-tarifa-auto{display:flex;align-items:center;gap:6px;margin-top:10px;color:var(--green);font-size:12px;font-weight:600}
.cert-tarifa-auto svg{flex:none}
.cert-tarifa-manual{display:flex;align-items:flex-end;gap:10px;margin-top:12px}
.cert-tarifa-manual .field{margin:0;width:190px}
.actividad-avance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;margin:0 0 12px}
.actividad-avance-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
.actividad-avance-card b{display:block;font-size:12.5px;color:var(--ink)}
.actividad-avance-card span{display:block;margin-top:3px;font-size:11px;color:var(--muted)}
.actividad-avance-card strong{flex:none;font-family:var(--font-num);font-size:16px;color:var(--pine)}
.avance-modal{display:flex;flex-direction:column;gap:16px;padding-bottom:4px}
.avance-lead{display:flex;align-items:flex-start;gap:8px;padding:11px 13px;border:1px dashed #d9d0bd;border-radius:10px;background:var(--card2);color:var(--muted);font-size:12px;line-height:1.45}
.avance-lead svg{flex:none;color:var(--pine)}
.avance-step{padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.avance-step-employee{border-color:#acd5c2;background:#f9fdfb}
.avance-step-close{background:var(--card2)}
.avance-step-head{display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.avance-step-num{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:var(--pine);color:#fff;font-family:var(--font-num);font-size:12px;font-weight:700}
.avance-step-head b,.avance-step-head small{display:block}
.avance-step-head b{color:var(--ink);font-size:13px}
.avance-step-head small{margin-top:2px;color:var(--muted);font-size:11px;line-height:1.35}
.avance-basics,.avance-employee-fields,.avance-payment-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.avance-step .field{margin:0}
.avance-step .field+.field{margin-top:10px}
.avance-basics+.field{margin-top:10px}
.avance-employee-fields+.avance-sync-note{margin-top:10px}
.avance-sync-note{min-height:18px;padding:0 1px;color:var(--pine);font-size:11.5px;font-weight:600;line-height:1.4}
.avance-sync-note svg{vertical-align:-2px;margin-right:3px}
.avance-rate-card{margin-top:12px;padding:13px;border:1px solid #bcdcc9;border-radius:10px;background:var(--pine-tint)}
.avance-rate-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.avance-rate-head label{margin:0;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.avance-rate-display{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:58px;padding:10px 12px;border:1px solid #a8d1bf;border-radius:9px;background:var(--paper)}
.avance-rate-display>div{min-width:0}
.avance-rate-kicker{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.avance-rate-display b{display:block;margin-top:3px;color:var(--ink);font-size:12px;line-height:1.3}
.avance-rate-display strong{flex:none;color:var(--pine);font-size:19px;white-space:nowrap}
.avance-rate-display strong small{margin-left:3px;color:var(--muted);font-size:11px;font-family:var(--font-app)}
.avance-rate-display.is-pending{border-style:dashed;border-color:var(--line2);background:var(--card2)}
.avance-rate-display.is-pending b,.avance-rate-display.is-pending strong{color:var(--muted)}
.avance-rate-display.is-missing{border-color:#ecc98a;background:#fff9ed}
.avance-rate-display.is-missing b,.avance-rate-display.is-missing strong{color:#9b6413}
.avance-rate-card .hint{margin:7px 0 0}
.avance-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.avance-result-card{min-width:0;padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.avance-result-cert{border-color:#bcdcc9}
.avance-result-pay{border-color:#c9d9e7;background:#fbfcfe}
.avance-result-kicker{display:block;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.avance-result-card>strong{display:block;margin:7px 0 5px;color:var(--pine);font-size:21px;line-height:1.1}
.avance-result-pay>strong{color:#1e617e}
.avance-result-card>small{display:block;min-height:30px;color:var(--muted);font-size:11px;line-height:1.38}
.avance-result-edit{margin:11px 0 0!important;padding-top:10px;border-top:1px solid var(--line)}
.avance-result-edit label{font-size:9.5px!important}
.avance-result-edit input{margin:0!important;background:var(--card)!important}
.avance-result-source{margin-top:11px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.38}
.avance-paid{display:flex;align-items:center;gap:9px;min-height:auto;margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card2);cursor:pointer}
.avance-paid input{flex:none;margin:0}
.avance-paid b,.avance-paid small{display:block}
.avance-paid b{font-size:12px;color:var(--ink)}
.avance-paid small{margin-top:2px;color:var(--muted);font-size:10.5px;line-height:1.35}
.avance-optional{color:var(--muted);font-size:10px;font-weight:500;letter-spacing:0;text-transform:none}
.avance-impact{display:flex;align-items:center;gap:7px;padding:8px 11px;border-radius:8px;background:var(--card2);color:var(--muted);font-size:11.5px;line-height:1.4}
.avance-impact svg{flex:none;color:var(--honey)}
.tarifas-emp{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.tarifa-emp-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.tarifa-emp-row label{font-size:12.5px;font-weight:600;line-height:1.35}
.tarifa-emp-row label small{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:500}
.tarifa-emp-row input{margin:0}
.tarifas-empleado-tabla{border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.tarifas-empleado-tabla .chtable{margin:0;border:0;border-radius:0;min-width:580px}
.tarifas-empleado-tabla .chtable th:first-child{min-width:230px}
.tarifas-empleado-tabla .chtable th,.tarifas-empleado-tabla .chtable td{vertical-align:middle}
.tarifas-empleado-tabla .chtable tbody tr:last-child td{border-bottom:0}
.tarifa-unidad{display:inline-flex;align-items:center;padding:3px 6px;border-radius:5px;background:var(--card2);color:var(--muted);font:700 10px var(--font-num)}
.tarifa-importe{color:var(--pine);font-weight:800;white-space:nowrap}
.tarifa-origen{display:inline-flex;align-items:center;padding:3px 6px;border-radius:5px;font-size:9px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.tarifa-origen.base{background:var(--pine-tint);color:var(--pine)}
.tarifa-origen.particular{background:#fff1db;color:#8a5612}
.tarifa-accion{width:38px;text-align:right;white-space:nowrap}
.tarifa-edit{color:var(--pine)}
.tarifa-edit:hover{background:var(--pine-tint);border-color:var(--pine)}
.tarifa-tabla-titulo{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tarifa-tabla-ayuda{margin:9px 2px 0;font-size:11px}
.tarifa-editor{display:grid;gap:14px}
.tarifa-editor-actividad{display:grid;gap:3px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card2)}
.tarifa-editor-actividad span{font-size:10px;letter-spacing:.07em;text-transform:uppercase;font-weight:800;color:var(--muted)}
.tarifa-editor-actividad b{font-size:15px;line-height:1.3;color:var(--ink)}
.tarifa-editor-actividad small{font-size:11px;color:var(--muted)}
.tarifa-editor-input{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;overflow:hidden;border:1px solid var(--line2);border-radius:9px;background:var(--paper)}
.tarifa-editor-input:focus-within{border-color:var(--pine);box-shadow:0 0 0 2px var(--pine-tint)}
.tarifa-editor-input span{padding:0 12px;color:var(--muted);font-family:var(--font-num);font-weight:700}
.tarifa-editor-input input{margin:0;border:0!important;border-left:1px solid var(--line)!important;border-radius:0;box-shadow:none!important}
.tarifa-editor-base{padding:9px 11px;border-left:3px solid var(--pine);border-radius:0 8px 8px 0;background:var(--pine-tint);font-size:11.5px;color:var(--muted)}
.tarifa-editor-base b{color:var(--pine)}
.gas-obras{display:grid;gap:13px}
.gas-obras-intro{margin:0;border-left:3px solid var(--pine);background:var(--pine-tint)}
.gas-obras-kpis{margin:0!important}
.gas-obra-card{margin:0!important}
.gas-obra-card h3{display:flex;align-items:center;justify-content:space-between;gap:9px}
.gas-obra-card .chtable{margin-top:10px}
.gas-obra-nota{margin:9px 1px 0;font-size:11px}
.gas-obras-alerta{margin:0;border-left:3px solid var(--honey);background:#fff3dc;color:#805016}
.gas-desvio{display:inline-flex;align-items:center;gap:4px;font:700 11px var(--font-num);color:var(--muted);white-space:nowrap}
.gas-desvio.alerta{color:var(--red)}
.tarifa-ficha{display:block;margin:3px 0;font-size:12px;white-space:normal}
.tarifas-ficha-lista{display:flex;flex-wrap:wrap;gap:5px 7px;align-items:center}
.tarifas-ficha-lista .tarifa-ficha{margin:0;padding:3px 7px;border:1px solid var(--line);border-radius:7px;background:var(--paper)}
.tarifa-ficha em{margin-left:4px;color:var(--muted);font-size:10px;font-style:normal;text-transform:uppercase;letter-spacing:.04em}
.emp-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;border:1px solid var(--line);border-radius:11px;background:var(--card2)}
.emp-tabs button{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;padding:9px 8px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.emp-tabs button svg{flex:none}
.emp-tabs button span{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:10px;background:var(--line);font-family:var(--font-num);font-size:10px;color:var(--muted)}
.emp-tabs button:hover{background:var(--paper);color:var(--ink)}
.emp-tabs button.on{background:var(--pine);color:#fff;box-shadow:0 2px 5px rgba(8,52,58,.16)}
.emp-tabs button.on span{background:rgba(255,255,255,.2);color:#fff}
.emp-tab-panel{padding-top:14px}
.emp-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.emp-panel-head b,.emp-panel-head small{display:block}
.emp-panel-head b{font-size:13px;color:var(--ink)}
.emp-panel-head small{margin-top:2px;font-size:11px;line-height:1.35;color:var(--muted)}
.emp-datos-box{margin:0}
.emp-tarifas-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.emp-tarifa{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"actividad valor" "origen valor";gap:3px 10px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.emp-tarifa>span{grid-area:actividad;font-size:12px;font-weight:700;line-height:1.3;color:var(--ink)}
.emp-tarifa strong{grid-area:valor;align-self:center;text-align:right;font-family:var(--font-num);font-size:16px;color:var(--pine);white-space:nowrap}
.emp-tarifa strong small{font-family:'Hanken Grotesk',sans-serif;font-size:10px;font-weight:700;color:var(--muted)}
.emp-tarifa em{grid-area:origen;width:max-content;padding:2px 6px;border-radius:5px;background:var(--pine-tint);color:var(--pine);font-size:9px;font-style:normal;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.emp-mov-toolbar{display:grid;grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) auto auto;align-items:end;gap:8px;margin-bottom:10px}
.emp-mov-toolbar .field{margin:0}
.emp-mov-toolbar .btn{min-height:38px;white-space:nowrap}
.emp-mov-table{border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.emp-mov-table .chtable{margin:0;border:0;border-radius:0}
.tarifa-historial{margin:14px 0 4px;padding:0 12px 12px;border:1px solid var(--line);border-radius:11px;background:var(--paper)}
.tarifa-historial .ing-sec{margin:0 -12px 10px;padding:11px 12px 9px}
.tarifa-hist-resumen{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin-bottom:10px}
.tarifa-hist-card{display:flex;flex-direction:column;gap:3px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card2)}
.tarifa-hist-card b{font-size:11.5px;line-height:1.35}
.tarifa-hist-card strong{font-family:var(--font-num);font-size:15px;color:var(--pine)}
.tarifa-hist-card span{font-size:10.5px;color:var(--muted)}
.tarifa-hist-tabla{font-size:12px}
@media(max-width:650px){
  .cisterna-resumen{grid-template-columns:1fr}
  .cert-tarifa-head{display:block}
  .cert-tarifa-total{text-align:left;margin-top:10px}
  .cert-tarifa-manual{align-items:stretch;flex-direction:column}
  .cert-tarifa-manual .field{width:100%}
  .tarifa-emp-row{grid-template-columns:1fr}
  .tarifas-empleado-tabla .chtable{min-width:560px}
  .tarifa-hist-resumen{grid-template-columns:1fr}
  .emp-tarifas-grid{grid-template-columns:1fr}
  .emp-mov-toolbar{grid-template-columns:1fr 1fr}
  .emp-mov-toolbar .btn{width:100%}
  .avance-basics,.avance-employee-fields,.avance-payment-fields,.avance-result-grid{grid-template-columns:1fr}
  .avance-paid{min-height:54px}
}

/* Proyección de caja: un panel por período en vez de una tabla de tres
   columnas. Como tabla, "Concepto" se comía 750px de los 950 y los dos números
   quedaban apretados contra el borde derecho, lejos de su etiqueta. */
.flujopanel{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:11px 14px 6px}
.flujopanel .fp-tit{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;font-weight:800;
  color:var(--pine);margin-bottom:2px}
.flujopanel .speclist>div{padding:7px 0}
.flujopanel .k{display:inline-flex;align-items:center;gap:6px}
.flujopanel .k>svg{color:var(--faint)}
.flujopanel .v{font-size:14px}
.flujopanel .fp-neto{border-bottom:0;border-top:1.5px solid var(--line2);margin-top:2px}
.flujopanel .fp-neto .k{font-weight:700;color:var(--ink)}
.flujopanel .fp-neto .v{font-size:15.5px}
.det-obs{display:flex;gap:9px;align-items:flex-start;margin-top:12px;padding:10px 12px;background:var(--card2);border:1px solid var(--line);border-left:3px solid var(--pine);border-radius:10px;font-size:13px;color:var(--ink);line-height:1.45}
.det-obs>svg{color:var(--pine);flex:0 0 auto;margin-top:1px}
.det-obs .k{display:block;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
/* Directorio de bancos: placa con el logo oficial, y monograma de marca para
   los que no tienen logo. Las dos miden lo mismo para que las filas alineen.
   Apaisada (84x34) porque los logos de banco son logotipos horizontales: a
   30x30 no se lee ninguno. */
.entlogo,.entmono{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:84px;height:34px;border-radius:9px;overflow:hidden}
.entlogo{background:#fff;border:1px solid var(--line)}
.entlogo img{max-width:84%;max-height:74%;object-fit:contain;display:block}
.entmono{color:#fff;font-size:12px;font-weight:700;letter-spacing:.6px}
@media(max-width:700px){.entlogo,.entmono{width:64px;height:30px}}

  /* Avisos de la seccion de rechazos: pueden ser varios seguidos, asi que
     tienen su propia clase en vez de tres bloques de estilo inline iguales. */
  .rechaviso{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px;padding:9px 11px;border-radius:10px;background:var(--card2);border:1px dashed var(--line);font-size:12.5px;line-height:1.4}
  .rechaviso svg{flex:none;margin-top:1px}

  /* Subtitulo dentro de un paso: mas chico que .dsec, sin la linea al costado.
     Sirve para las bifurcaciones ("el cheque con el que cubre"), que no son un
     paso nuevo sino una rama del mismo. */
  .subsec{font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);margin:0 0 7px}

  /* Aviso de titular con rechazos previos. Era una franja de 11px que se perdia
     entre los campos; ahora ocupa lugar y pide la razon por escrito. */
  .riesgobox{margin-top:8px;border:1.5px solid var(--red);border-radius:11px;background:#fbeeea;padding:11px 13px}
  .riesgobox .rbhead{display:flex;align-items:flex-start;gap:8px;color:var(--red);font-size:13px;line-height:1.35}
  .riesgobox .rbhead svg{flex:none;margin-top:1px}
  .riesgobox .rblist{margin:8px 0 0;padding:0 0 0 17px;font-size:12px;line-height:1.55;color:#8a3b2a}
  .riesgobox .rbwhy{margin-top:9px;font-size:12px;font-weight:600;color:#8a3b2a}
  .riesgobox .rbinput{width:100%;margin-top:6px;padding:9px 11px;border:1px solid #dcb5ab;border-radius:9px;background:#fff;font-size:13px;font-family:inherit;color:var(--ink)}
  .riesgobox .rbinput:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(176,58,32,.13)}
  .riesgobox .rbinput.rbfalta{border-color:var(--red);background:#fff5f2}

  /* ---- Tablas de riesgo (cliente / titular) ----
     El % de cartera es el dato que decide si mirar a alguien o no, y como
     numero suelto no se lee: al lado de una columna de porcentajes nadie ve
     cual es grande. La barra si, de un vistazo. */
  .tblriesgo th.num,.tblriesgo td.num{text-align:right}
  .tblriesgo td{vertical-align:top;padding-top:9px;padding-bottom:9px}
  .tblriesgo td .hint{font-size:11px;margin-top:2px;line-height:1.3}
  .tblriesgo .vacio{color:var(--faint);font-weight:400;font-size:12px}
  .pctcell{display:inline-flex;align-items:center;gap:7px;justify-content:flex-end;min-width:110px}
  .pctbar{flex:1;height:6px;border-radius:3px;background:var(--card2);overflow:hidden;min-width:44px}
  .pctbar i{display:block;height:100%;border-radius:3px;background:var(--pine)}
  .scorechip{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700;
    white-space:nowrap;color:var(--sc);background:color-mix(in srgb,var(--sc) 13%,transparent);
    border:1px solid color-mix(in srgb,var(--sc) 30%,transparent);font-family:var(--font-num)}
  /* Cuando el directorio dice una cosa y el cheque otra. No corrige nada: lo
     muestra, porque puede estar mal el tipo de la entidad o el cheque. */
  .dirmarca{display:block;margin-top:3px;font-size:10.5px;font-weight:600;letter-spacing:.3px;
    text-transform:uppercase;color:var(--faint)}
  .dirmarca.ojo{color:#a9641c}

  /* Las dos puntas del rechazo, en el recorrido del cheque. Colores propios
     para que no se confundan con el rebote (rojo) ni entre si: RS poniendo
     plata es una salida, el cliente devolviendo es una entrada. */
  .tlev.tl-rs .tldot{background:#f7ecd6;color:#a9641c}
  .tlev.tl-cli .tldot{background:#d6ece2;color:var(--green)}

  /* Etiqueta chica arriba de un dato en las grillas de ficha. Estaba repetida
     como style inline en cada celda. */
  .minilbl{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}
  /* Una nota copiada de otra parte del sistema, citada tal cual. */
  .notacita{padding:8px 11px;border-radius:9px;background:var(--card2);border:1px solid var(--line);font-size:12.5px;margin-bottom:8px;font-style:italic}

  /* El efecto de un movimiento sobre el saldo del empleado, arriba del formulario:
     cargar un adelanto es cambiar cuanto se le debe a una persona. */
  .movsaldo{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:10px;padding:9px 12px;border-radius:10px;background:var(--card2);border:1px solid var(--line);font-size:12.5px;min-height:14px}
  .movsaldo .ms-k{color:var(--muted)}
  .movsaldo .ms-v{font-weight:700;font-family:var(--font-num)}
  .movsaldo .ms-ar{color:var(--faint)}
  .movmonto{font-size:19px!important;font-weight:700!important;padding-top:11px!important;padding-bottom:11px!important}

  /* Una casilla suelta con su explicacion, fuera de una lista de cheques. */
  .chkrow.chkplano{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card2);align-items:flex-start;gap:10px}
  .chkrow.chkplano .ci .t{font-weight:600;font-size:13px}
  .chkrow.chkplano .ci .s{font-size:11.5px;color:var(--muted);line-height:1.4;margin-top:2px}

  /* ENTRO / SALIO en el buscador. Escrito en medio de la frase las dos filas se
     leen casi iguales, y son lo contrario: por una el cheque llego y por la
     otra se fue. */
  .flujo{display:inline-flex;align-items:center;margin-left:6px;padding:1px 7px;border-radius:6px;font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase}
  .flujo.ent{background:#d6ece2;color:var(--green)}
  .flujo.sal{background:#f7dcd5;color:var(--red)}

  /* Que esta buscando el asistente. Tres puntitos mudos mientras hace tres
     consultas parece que se colgo. */
  .aibub.aithink .aipaso{font-style:normal;font-size:12px;color:var(--muted);margin-left:8px;white-space:nowrap}

  /* Tablas que arma el asistente. Los informes venian como renglones llenos de
     | y no se podian leer. */
  .aitablabox{overflow-x:auto;margin:8px 0;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .aitabla{width:100%;border-collapse:collapse;font-size:12.5px}
  .aitabla th{text-align:left;font-size:10.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
  .aitabla td{padding:7px 10px;border-bottom:1px solid var(--line2,rgba(0,0,0,.05))}
  .aitabla tr:last-child td{border-bottom:none}
  .aitabla .num{text-align:right}
  .aitabla td.mono{font-family:var(--font-num)}
  /* La ultima fila en negrita SOLO si es un total. En una lista de movimientos
     el ultimo no tiene nada de especial, y resaltado parece el importante. */
  .aitabla tbody tr.total td{font-weight:700}

  /* Lo que la IA nombra y se puede abrir: la operacion #861, el cheque N° X,
     la cuenta de un empleado. Antes habia que copiarse el numero e ir a
     buscarlo a mano. */
  /* La FILA entera se abre. Antes solo se podia tocar el numerito: nadie
     apunta a cuatro caracteres, y una tabla de movimientos de cuenta corriente
     no tiene ninguna celda que lleve a ningun lado. */
  .airefrow{cursor:pointer}
  .airefrow:hover{background:var(--pine-tint)}
  .airef{cursor:pointer;color:var(--pine);font-weight:600;border-bottom:1px dashed rgba(31,143,115,.45)}
  .airef:hover{background:var(--pine-tint);border-radius:4px;border-bottom-color:transparent}

  /* Elegir entre varios que coinciden. Tres nombres iguales no se pueden
     elegir a ciegas: cada boton muestra lo que los distingue. */
  .chatelegir{display:flex;flex-direction:column;gap:6px;margin-top:10px}
  .elegirop{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;
    padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);
    cursor:pointer;font-family:inherit;font-size:13px;color:var(--ink);text-align:left}
  .elegirop:hover{border-color:var(--pine);background:var(--pine-tint)}
  .elegirop span{font-size:11.5px;color:var(--muted);font-family:var(--font-num);white-space:nowrap}

  /* Listados de cheques: el modal debe explicar el criterio y el total antes
     de presentar una tabla larga. Compartido por vencimientos, cartera y
     otros listados con el mismo patrón de navegación. */
  .chlist-head{gap:14px;padding:15px 20px;background:linear-gradient(180deg,#fffefa,var(--paper))}
  .chlist-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
  .chlist-title h3{margin:0;line-height:1.3}
  .chlist-icon{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:11px;background:var(--pine-tint);color:var(--pine)}
  .chlist-head .xbtn{flex:0 0 34px}
  .chlist-body{padding:16px 20px 18px}
  .chlist-rule{display:flex;align-items:flex-start;gap:8px;padding:11px 13px;margin:0 0 12px;border:1px solid var(--line);border-left:3px solid var(--pine);border-radius:10px;background:var(--card2);color:var(--muted);font-size:12px;line-height:1.5}
  .chlist-rule>svg{flex:none;color:var(--pine);margin-top:1px}
  .chlist-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px}
  .chlist-summary>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:150px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .chlist-summary>div span{font-size:10px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.07em}
  .chlist-summary>div strong{font-size:13px;color:var(--ink);white-space:nowrap}
  .chlist-summary>div:last-of-type strong{color:var(--pine);font-size:14px}
  .chlist-summary>small{margin-left:auto;color:var(--muted);font-size:11px}
  .chlist-actions{border-radius:12px;padding:5px 12px;background:#f7f5ef}
  .chlist-actions .calc-row{gap:12px;padding:9px 0}
  .chlist-actions .ck{line-height:1.4}
  .chlist-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
  .chlist-table{width:100%;min-width:620px;margin:0;border:0;border-radius:0;table-layout:auto}
  .chlist-table thead th{position:sticky;top:0;z-index:1;padding:10px 11px;background:#f5f2ea;color:var(--muted);font-size:9.5px;letter-spacing:.08em;border-bottom:1px solid var(--line2);white-space:nowrap}
  .chlist-table tbody td{padding:10px 11px;border-bottom:1px solid var(--line);vertical-align:middle;line-height:1.35}
  .chlist-table tbody tr:last-child td{border-bottom:0}
  .chlist-table tbody tr:not(.cheque-month-head):hover{background:#f5f8f6}
  .chlist-table .chlist-check{width:34px;text-align:center;padding-left:9px;padding-right:5px}
  .chlist-check input{width:16px;height:16px;accent-color:var(--pine);vertical-align:middle}
  .chlist-number{color:var(--pine);font-weight:700;white-space:nowrap}
  .chlist-holder{min-width:150px;max-width:330px}
  .chlist-date{white-space:nowrap;color:var(--muted)}
  .chlist-table .chlist-amount{min-width:120px;text-align:right;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
  .chlist-table tfoot td{padding:11px;border-top:2px solid var(--line2);background:var(--card2);font-weight:800}
  .chlist-unassigned{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f4efe3;color:#8b6729;font-size:10.5px;white-space:nowrap}
  .chlist-state{display:inline-flex;padding:4px 8px;border-radius:999px;background:var(--pine-tint);color:var(--pine);font-size:10.5px;font-weight:700;white-space:nowrap}
  .chlist-footnote{padding:10px 2px 0;color:var(--muted);font-size:11.5px;line-height:1.4}
  .chlist-table .cheque-month-head td{padding:9px 12px;background:#edf3f1;color:var(--pine);font-size:11px;font-weight:800;text-transform:capitalize}
  .chlist-table .cheque-month-head small{float:right;color:var(--muted);font-size:10.5px;font-weight:600;text-transform:none}
  @media(max-width:760px){
    .chlist-head{padding:12px 14px}.chlist-body{padding:12px 14px 16px}
    .chlist-summary{gap:7px}.chlist-summary>div{min-width:calc(50% - 4px);box-sizing:border-box;flex:1;padding:8px 10px}
    .chlist-summary>small{width:100%;margin:0}.chlist-table{min-width:600px}
    .chlist-actions .calc-row{align-items:flex-start;flex-direction:column}.chlist-actions .cv{width:100%;justify-content:flex-end}
  }

  /* Modal de cheques propios a cubrir: prioridad visual al total y fechas,
     conservando el patrón cromático y tipográfico del resto de la aplicación. */
  .emit-modal-head{gap:14px;padding:15px 20px;background:linear-gradient(180deg,#fffefa,var(--paper))}
  .emit-modal-heading{display:flex;align-items:center;gap:11px;min-width:0;flex:1}
  .emit-modal-heading h3{margin:0;line-height:1.25}
  .emit-modal-kicker{margin-top:3px;color:var(--muted);font-size:11px}
  .emit-modal-icon,.emit-summary-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:11px;background:var(--pine-tint);color:var(--pine)}
  .emit-modal-head .xbtn{flex:none}
  .emit-modal-body{padding:16px 20px 18px}
  .emit-summary{display:flex;align-items:center;gap:12px;padding:13px 15px;margin-bottom:12px;border:1px solid var(--line);border-radius:13px;background:var(--card)}
  .emit-summary-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
  .emit-summary-label,.emit-summary-total small{font-size:9px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--faint)}
  .emit-summary-count{font-size:12px;color:var(--muted)}
  .emit-summary-total{display:flex;flex-direction:column;align-items:flex-end;gap:3px;margin-left:auto;text-align:right}
  .emit-summary-total b{font-family:var(--font-num);font-size:20px;line-height:1.1;color:var(--pine);font-variant-numeric:tabular-nums;white-space:nowrap}
  .emit-today-alert{display:flex;align-items:flex-start;gap:10px;margin:0 0 13px;padding:11px 13px;border:1px solid #edcf9f;border-left:3px solid var(--honey);border-radius:11px;background:#fbf1df;color:var(--ink)}
  .emit-alert-icon{display:grid;place-items:center;flex:0 0 27px;width:27px;height:27px;border-radius:8px;background:#f4dfbd;color:#a86914}
  .emit-today-alert>div{display:flex;flex-direction:column;gap:3px;padding-top:1px}
  .emit-today-alert b{font-size:12px}
  .emit-today-alert span{font-size:11px;color:var(--muted)}
  .emit-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
  .emit-table{margin:0;min-width:620px;border-collapse:separate;border-spacing:0}
  .emit-table thead th{position:sticky;top:0;z-index:1;padding:10px 11px;background:#f6f4ee;color:var(--muted);font-size:9px;letter-spacing:.09em;border-bottom:1px solid var(--line2);white-space:nowrap}
  .emit-table tbody td{padding:9px 11px;border-bottom:1px solid var(--line);vertical-align:middle;line-height:1.3}
  .emit-table tbody tr:last-child td{border-bottom:0}
  .emit-table tbody tr.emit-check-row:hover{background:#f0f6f4}
  .emit-table .emit-number{color:var(--pine);font-weight:700;white-space:nowrap}
  .emit-table .emit-beneficiary{min-width:180px;font-weight:600}
  .emit-table .emit-bank{color:var(--muted);white-space:nowrap}
  .emit-table .emit-date{color:var(--emit-date-color,var(--muted));white-space:nowrap}
  .emit-table .emit-amount-head,.emit-table .emit-amount{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
  .emit-table .emit-amount{font-weight:700}
  .emit-table tr.emit-week td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px!important;background:#eaf2f0!important;border-top:1px solid #cbded9!important;border-bottom:1px solid #d7e5e1!important;color:var(--pine)!important;text-transform:none!important;letter-spacing:0!important}
  .emit-week-title{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .emit-week-total{font-size:10.5px;font-weight:700;color:var(--muted);white-space:nowrap}
  .emit-week-total i,.emit-day-total i{font-style:normal;color:var(--line2);padding:0 3px}
  .emit-table tr.emit-week-day td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px 8px 20px!important;background:#faf8f2!important;border-top:1px solid var(--line)!important;border-bottom:0!important;color:var(--muted)!important;font-size:11px!important;text-transform:none!important;letter-spacing:0!important}
  .emit-day-title{display:flex;align-items:center;gap:8px;min-width:0}
  .emit-day-title b{font-weight:700;color:var(--ink)!important}
  .emit-relative{color:var(--emit-relative-color,var(--muted));font-weight:700}
  .emit-day-total{font-size:10px;white-space:nowrap}
  .emit-day-total b{font-weight:700;color:var(--ink)!important}
  .emit-modal-footnote{display:flex;align-items:center;gap:7px;padding:11px 2px 0;color:var(--muted);font-size:11px;line-height:1.4}
  .emit-footnote-mark{display:grid;place-items:center;flex:none;width:17px;height:17px;border-radius:50%;background:var(--pine-tint);color:var(--pine);font-size:15px;font-weight:700}
  @media(max-width:600px){
    .emit-modal-head{padding:13px 15px}.emit-modal-body{padding:13px 14px 16px}
    .emit-summary{padding:11px;gap:9px}.emit-summary-icon{width:32px;height:32px;flex-basis:32px}
    .emit-summary-total b{font-size:17px}.emit-summary-total small{font-size:8px}
    .emit-table{min-width:590px}.emit-modal-kicker{font-size:10px}
  }
  .repo-cheque-lines{display:flex;flex-direction:column;gap:10px}
  .repo-cheque-line{padding:11px 12px 8px;border:1px solid var(--line);border-radius:11px;background:var(--card2)}
  .repo-cheque-line-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;color:var(--pine);font-size:11px;font-weight:800}
  .repo-cheque-line-head .btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;min-height:27px;font-size:10.5px;color:var(--red);border-color:#e7c8c0}
  .repo-add-cheque{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:7px 11px;font-size:11px;font-weight:700;color:var(--pine);border-color:#bed6d2}
  .repo-add-cheque:hover{background:var(--pine-tint)}
  .reemplazo-seleccion-wrap{overflow-x:auto;margin:0 0 10px;border:1px solid rgba(255,255,255,.18);border-radius:9px}
  .reemplazo-seleccion{width:100%;border-collapse:collapse;font-size:10.5px;text-align:left}
  .reemplazo-seleccion caption{padding:7px 9px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.78);font-size:10px;font-weight:700;text-align:left}
  .reemplazo-seleccion th,.reemplazo-seleccion td{padding:6px 9px;border-bottom:1px solid rgba(255,255,255,.12);vertical-align:top}
  .reemplazo-seleccion thead th{color:rgba(255,255,255,.6);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
  .reemplazo-seleccion tbody td{color:#fff}
  .reemplazo-seleccion tfoot th,.reemplazo-seleccion tfoot td{border:0;padding-top:8px;color:#fff;font-weight:800}
  .reemplazo-seleccion .r{text-align:right;white-space:nowrap}
  .replace-overdue{color:#ffd2bd}
  .replace-allocation-hint{padding-top:5px;color:rgba(255,255,255,.72);font-size:10px;line-height:1.4}
  @media(max-width:520px){.reemplazo-seleccion{min-width:420px}}
  .motivo-reemplazo-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;margin:8px 0 12px}
  .motivo-reemplazo-options button{white-space:normal;line-height:1.2;padding:9px 6px}
  @media(max-width:520px){.motivo-reemplazo-options button{font-size:10.5px;padding:8px 4px;min-height:42px}}
