:root{
  --bg:#fff; --fg:#111; --muted:#6b7280; --line:#e5e7eb; --soft:#f3f4f6;
  --hdr:#000; --hdr-fg:#fff; --nav:#1f6b1f; --nav-fg:#fff;
  --accent:#2563eb; --accent-fg:#fff; --brand:#9b1b4e; --gold:#F2C14E; --ai:#8b5cf6;
  --ok:#16a34a; --warn:#d97706; --danger:#dc2626;
  --r:12px; --hdr-h:72px; --nav-h:84px; --sa-t:env(safe-area-inset-top); --sa-b:env(safe-area-inset-bottom);
  font-family:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box} html{background:var(--bg)} html,body{margin:0;height:100%;color:var(--fg);-webkit-tap-highlight-color:transparent}
body{font-size:16px;line-height:1.35}
button,input,select,textarea{font:inherit;color:inherit}
#app{min-height:100%;display:flex;flex-direction:column}
[hidden]{display:none!important}
a{color:var(--accent);text-decoration:none}

/* Header */
.hdr{position:sticky;top:0;z-index:20;background:var(--hdr);color:var(--hdr-fg);display:flex;align-items:center;gap:12px;padding:calc(8px + var(--sa-t)) 14px 8px;min-height:var(--hdr-h)}
.hdr-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.hdr-title>div{min-width:0}
.hdr-title b{display:block;font-size:20px;letter-spacing:.5px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hdr-title small{display:block;font-size:13px;opacity:.9}
.dot{width:12px;height:12px;border-radius:50%;background:var(--gold);flex:none}
.hdr-right{display:flex;align-items:center;gap:8px;flex:none}
@media (max-width:400px){.hdr-title b{font-size:17px;letter-spacing:.2px}.hdr .pill{padding:4px 9px}.hdr .pill span{font-size:12px}}
.icon-btn{background:none;border:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:inherit;padding:0}
.icon-btn.round{width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35)}
.icon-btn svg{width:22px;height:22px}
.pill{display:inline-flex;align-items:center;gap:6px;border:1.5px solid rgba(255,255,255,.35);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600}
.pill i{width:9px;height:9px;border-radius:50%;background:var(--ok)} .pill.off i{background:var(--danger)} .pill.sync i{background:var(--warn)}

/* View */
.view{flex:1;padding:16px 16px calc(var(--nav-h) + 24px + var(--sa-b))}
.view.no-nav{padding-bottom:24px}
.page-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px}
.page-h h1{font-size:22px;font-weight:800;color:var(--brand);margin:0;letter-spacing:.3px}
.page-h .chip{margin-left:auto}
.chip{background:var(--soft);border-radius:999px;padding:6px 12px;font-size:13px;color:#374151}
.chip.ok{background:#dcfce7;color:#166534} .chip.warn{background:#fef3c7;color:#92400e} .chip.info{background:#dbeafe;color:#1e40af}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:8px;padding:0 12px;flex:1 1 100%;min-height:48px}
.search input{border:0;outline:0;flex:1;min-width:0;background:none;font-size:16px}
.search svg{width:20px;height:20px;color:#4b5563}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:8px;padding:12px 16px;font-weight:600;cursor:pointer;background:var(--soft);color:var(--fg);min-height:44px}
.btn svg{width:18px;height:18px}
.btn.primary{background:var(--accent);color:var(--accent-fg)} .btn.brand{background:var(--brand);color:#fff} .btn.ok{background:var(--ok);color:#fff} .btn.danger{background:var(--danger);color:#fff}
.btn.ghost{background:transparent;border:1.5px solid var(--line)} .btn.block{width:100%} .btn.sm{padding:8px 12px;min-height:36px;font-size:14px}
.btn:disabled{opacity:.5;cursor:default}
hr.sep{border:0;border-top:1px solid var(--line);margin:12px -16px}

.card{border:1px solid var(--line);border-radius:var(--r);padding:14px;background:#fff;margin-bottom:10px}
.card.tap{cursor:pointer} .card.tap:active{background:var(--soft)}
.card h3{margin:0 0 4px;font-size:16px;font-weight:700} .card .meta{font-size:13px;color:var(--muted)}
.row{display:flex;align-items:center;gap:10px} .row.between{justify-content:space-between} .grow{flex:1;min-width:0}
.tag{font-size:11px;font-weight:700;letter-spacing:.4px;padding:3px 8px;border-radius:6px;background:var(--soft);color:#374151;text-transform:uppercase}
.tag.pre{background:#fce7f3;color:#9d174d} .tag.pri{background:#dbeafe;color:#1e40af} .tag.sec{background:#ede9fe;color:#5b21b6}
.tag.ok{background:#dcfce7;color:#166534} .tag.pend{background:#fef3c7;color:#92400e} .tag.cancel{background:#fee2e2;color:#991b1b}

.empty{border:2px dashed #cbd5e1;border-radius:var(--r);padding:40px 20px;text-align:center;color:#374151;margin-top:24px}
.empty svg{width:48px;height:48px;color:#374151;margin-bottom:8px} .empty b{display:block;font-size:20px;margin-bottom:4px} .empty p{margin:0;color:var(--muted)}

/* Launcher (home) */
.launcher{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:8px}
.launcher .app{border:0;border-radius:16px;padding:12px 6px;text-align:center;cursor:pointer;background:none;
  min-width:0;height:112px}   /* alto fijo: los renglones por página se calculan con él */
.launcher .app:active{background:var(--soft)}
.launcher .app .ic{width:56px;height:56px;border-radius:16px;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;color:#fff}
.launcher .app .ic svg{width:28px;height:28px}
.launcher .app b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font-weight:500;font-size:12px;line-height:1.3;color:#374151;overflow-wrap:break-word}
.launcher .app small{color:var(--muted);font-size:12px}
/* Sin descripción en la tarjeta, el nombre queda solo: se le da aire y las tarjetas se compactan. */
.launcher .app{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;text-decoration:none}
.launcher .app.presionando{transform:scale(.96);transition:transform 2.8s ease}
/* Paginador del launcher: páginas de 4×3 en fila horizontal con scroll-snap — el swipe es el del
   sistema, con su inercia y su freno, en vez de reinventarlo con transforms. El mouse no arrastra un
   scroll-snap, así que para escritorio hay flick en JS y los puntos siempre funcionan. */
.lpager{max-width:640px;margin:0 auto}
.lpaginas{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;
  scrollbar-width:none;-webkit-overflow-scrolling:touch}
.lpaginas::-webkit-scrollbar{display:none}
.lpagina{flex:0 0 100%;scroll-snap-align:start;scroll-snap-stop:always;min-width:0}
/* Los puntos son el footer del inicio: fijos, siempre a la vista, con su alto reservado (26px)
   para que el cálculo de renglones pueda medir dónde empiezan. */
.lpuntos{position:fixed;left:0;right:0;bottom:calc(8px + var(--sa-b));height:26px;z-index:5;
  display:flex;justify-content:center;align-items:center;gap:8px;pointer-events:none}
.lpuntos button{width:8px;height:8px;border-radius:50%;border:0;padding:0;background:#cbc9c7;
  cursor:pointer;transition:all .2s;pointer-events:auto}
.lpuntos button.on{background:#1f2937;transform:scale(1.3)}
/* El doodle de fondo, apenas visible: fijo detrás de todo y sin robar toques. Vive sólo mientras el
   inicio está montado (el div se va con el innerHTML al navegar). */
.home-doodles{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:url('../img/doodles.webp') repeat;background-size:420px auto;opacity:.16}

/* Ficha de la app (presión sostenida): el mismo icono grande, el nombre y la descripción completa. */
.app-ficha{text-align:center;padding:6px 2px}
.app-ficha .ic{width:64px;height:64px;border-radius:18px;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;color:#fff}
.app-ficha .ic svg{width:32px;height:32px} .app-ficha .ic .bi{font-size:32px}
.app-ficha b{display:block;font-size:1.1rem;margin-bottom:6px}
.app-ficha .soon{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;background:#fef3c7;color:#92400e;border-radius:5px;padding:2px 7px;margin-bottom:6px}
.app-ficha p{margin:4px 0 0;font-size:14px;line-height:1.55;color:#374151}

/* Forms */
.field{margin-bottom:14px} .field label{display:block;font-size:13px;font-weight:600;color:#374151;margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:12px;min-height:48px;background:#fff;outline:0}
/* Las CASILLAS y los RADIOS quedan fuera de lo de arriba: `width:100%` y `min-height:48px` están
 * pensados para un campo de escritura, y a un checkbox lo estiraban a 48 px de alto — el "checkmark
 * gigante" que se reportó dos veces (usuarios y agenda) y que se venía parchando app por app. */
.field input[type=checkbox],.field input[type=radio]{width:16px;height:16px;min-height:0;padding:0;flex:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field textarea{min-height:90px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px} .grid2>*{min-width:0}
.tallas{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.talla{border:1.5px solid var(--line);border-radius:10px;padding:8px;text-align:center}
.talla b{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}
.talla input{width:100%;text-align:center;border:0;font-size:20px;font-weight:700;outline:0;background:var(--soft);border-radius:6px;padding:6px 0;-moz-appearance:textfield}
.talla input::-webkit-inner-spin-button{display:none}
.talla.has{border-color:var(--ok);background:#f0fdf4}
.total-bar{position:sticky;bottom:calc(var(--nav-h) + var(--sa-b) + 8px);background:#111;color:#fff;border-radius:12px;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px} .kv dt{color:var(--muted)} .kv dd{margin:0;font-weight:500}
table.t{width:100%;border-collapse:collapse;font-size:14px} table.t th,table.t td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left} table.t th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px} table.t td.n,table.t th.n{text-align:right;font-variant-numeric:tabular-nums}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:14px}
.stat{border:1px solid var(--line);border-radius:var(--r);padding:12px} .stat b{display:block;font-size:26px;font-weight:800} .stat small{color:var(--muted)}

/* Bottom nav */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--nav);color:var(--nav-fg);display:flex;justify-content:space-around;align-items:flex-end;padding:10px 6px calc(10px + var(--sa-b));min-height:var(--nav-h)}
/* Las acciones de la barra son <button> (ver core/ui.js): hay que apagarles el aspecto nativo
   para que se vean idénticas a las pestañas. */
.nav .nav-g button{background:none;border:0;font-family:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
.nav a,
.nav .nav-g button{color:inherit;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;flex:1;padding:4px 0;opacity:.85}
.nav a.active,
.nav .nav-g button.active{opacity:1} .nav a svg{width:28px;height:28px}
.nav .fab-slot{flex:1;position:relative;min-height:44px}
.nav .fab{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:72px;height:72px;border-radius:50%;background:var(--ai);border:0;color:#fff;box-shadow:0 0 0 10px rgba(139,92,246,.25),0 8px 24px rgba(139,92,246,.5);display:flex;align-items:center;justify-content:center;cursor:pointer}
.nav .fab svg{width:34px;height:34px}

/* Drawer */
.drawer{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.45)}
.drawer .panel{position:absolute;left:0;top:0;bottom:0;width:min(320px,85vw);background:#fff;padding:calc(16px + var(--sa-t)) 16px calc(16px + var(--sa-b));display:flex;flex-direction:column;gap:8px;animation:slide .2s ease-out;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
@keyframes slide{from{transform:translateX(-100%)}to{transform:none}}
/* Encabezado del drawer: [← Inicio] · avatar de iniciales · nombre y rol. La flecha es cuadrada,
   blanca y con borde (una ACCIÓN); el avatar es redondo y sólido (una IDENTIDAD): la forma distinta
   evita que se lean como dos botones. */
.drawer .drawer-id{display:flex;align-items:center;gap:10px;padding:9px 11px;background:var(--soft);border-radius:13px;margin-bottom:4px}
.drawer .drawer-back{width:36px;height:36px;flex:none;padding:0;justify-content:center;background:#fff;border:1px solid var(--line);border-radius:11px;color:#334155;transition:background .12s}
.drawer .drawer-back:active{background:#e8edf4}
.drawer .drawer-back .bi{font-size:17px;width:auto;color:#334155}
.drawer .drawer-av{width:36px;height:36px;flex:none;border-radius:50%;background:var(--nav);color:var(--nav-fg);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;letter-spacing:.4px}
.drawer .drawer-idt{flex:1;min-width:0;line-height:1.25}
.drawer .drawer-idt b{display:block;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawer .drawer-idt small{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawer a,.drawer button.link{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;color:var(--fg);border:0;background:none;text-align:left;width:100%;cursor:pointer;font-weight:500}
.drawer a:active,.drawer button.link:active{background:var(--soft)} .drawer svg{width:22px;height:22px;color:#4b5563}
.drawer .spacer{flex:1}

/* Toasts */
.toasts{position:fixed;left:12px;right:12px;bottom:calc(var(--nav-h) + 16px + var(--sa-b));z-index:40;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:#111;color:#fff;padding:12px 16px;border-radius:10px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.25);animation:up .2s ease-out}
.toast.ok{background:var(--ok)} .toast.err{background:var(--danger)} .toast.warn{background:var(--warn)}
@keyframes up{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}

/* Login */
.login{max-width:380px;margin:10vh auto 0}
.login .logo{display:flex;align-items:center;gap:12px;margin-bottom:28px} .login .logo b{font-size:26px;letter-spacing:1px}
.loader{display:flex;justify-content:center;padding:40px}
.spin{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:rot .8s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
.modal{position:fixed;inset:0;z-index:35;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center}
.modal .sheet{background:#fff;width:100%;max-width:520px;border-radius:16px 16px 0 0;padding:18px 16px calc(18px + var(--sa-b));max-height:85vh;overflow:auto}
.modal h3{margin:0 0 12px;font-size:18px}
@media (min-width:700px){ .view{max-width:960px;width:100%;margin:0 auto} .modal{align-items:center} .modal .sheet{border-radius:16px} }

/* ===== v1.1: tarjetas elegantes, stepper, firma, fotos, galería, mapa ===== */
.drawer-sec{font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#9ca3af;padding:12px 12px 4px}
.badge{margin-left:auto;background:var(--danger);color:#fff;font-style:normal;font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px}
.esc{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff;margin-bottom:12px;display:block;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.esc:active{background:var(--soft)}
.esc .top{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.esc .num{width:36px;height:36px;border-radius:10px;background:#111;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px;flex:none}
.esc .top .tags{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.esc .body{padding:12px 14px}
.esc h3{margin:0 0 2px;font-size:17px;font-weight:800;letter-spacing:.2px;line-height:1.2}
.esc .cct{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted);letter-spacing:.5px}
.esc .lines{margin-top:8px;display:grid;gap:4px;font-size:13.5px;color:#374151}
.esc .lines span b{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-right:6px}
.esc .foot{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--soft);font-size:13px}
.esc .foot .bar{flex:1;height:6px;border-radius:3px;background:#e5e7eb;overflow:hidden}
.esc .foot .bar i{display:block;height:100%;background:var(--ok)}
.esc .foot.done{background:#dcfce7;color:#166534}
.esc .foot.local{background:#fef3c7;color:#92400e}
.seg{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.seg button{flex:none;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-weight:600;font-size:14px;cursor:pointer}
.seg button.on{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.steps{display:flex;gap:4px;margin:4px 0 14px}
.steps span{flex:1;height:5px;border-radius:3px;background:#e5e7eb} .steps span.on{background:var(--accent)} .steps span.done{background:var(--ok)}
.step-h{display:flex;align-items:baseline;gap:8px;margin-bottom:10px} .step-h b{font-size:19px} .step-h small{color:var(--muted)}
.trow{display:grid;grid-template-columns:64px 1fr 1fr;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.trow .tl{font-weight:800;font-size:16px} .trow .as{color:var(--muted);font-size:13px} .trow .as b{display:block;font-size:18px;color:var(--fg)}
.trow input{width:100%;text-align:center;font-size:20px;font-weight:700;border:1.5px solid var(--line);border-radius:10px;padding:8px;min-height:48px;background:#fff}
.trow input.diff{border-color:var(--warn);background:#fffbeb}
.trow input:focus{border-color:var(--accent);outline:0}
.acta{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}
.acta h4{margin:0 0 6px;font-size:15px} .acta table{width:100%;font-size:14px;border-collapse:collapse} .acta td{padding:4px 0;border-bottom:1px dashed var(--line)} .acta td.n{text-align:right;font-weight:700}
.sig{border:2px dashed #9ca3af;border-radius:12px;background:#fff;position:relative;touch-action:none;height:220px}
.sig canvas{width:100%;height:100%;display:block;border-radius:12px}
.sig .hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#9ca3af;pointer-events:none;font-size:15px}
.sig.has .hint{display:none}
.sig .line{position:absolute;left:20px;right:20px;bottom:44px;border-top:1px solid #cbd5e1;pointer-events:none}
.fcat{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px;background:#fff}
.fcat .hd{display:flex;align-items:center;gap:10px} .fcat .hd b{flex:1} .fcat .hd .cnt{font-size:12px;color:var(--muted)}
.fcat .hd .cam{width:44px;height:44px;border-radius:12px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer} .fcat .hd .cam svg{width:22px;height:22px}
.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.thumbs .th{width:72px;height:72px;border-radius:10px;object-fit:cover;background:var(--soft);position:relative;overflow:hidden;flex:none}
.thumbs .th img{width:100%;height:100%;object-fit:cover;display:block}
.thumbs .th button{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:12px;cursor:pointer}
.thumbs .th .st{position:absolute;left:0;right:0;bottom:0;font-size:10px;text-align:center;background:rgba(0,0,0,.55);color:#fff;padding:1px 0}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}
.gal .g{aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--soft);position:relative;cursor:pointer}
.gal .g img{width:100%;height:100%;object-fit:cover;display:block}
.gal .g .lbl{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.7));color:#fff;font-size:10px;padding:14px 6px 5px;line-height:1.2}
.gal .g .tp{position:absolute;top:4px;left:4px;font-size:9px;font-weight:800;text-transform:uppercase;background:rgba(255,255,255,.9);border-radius:4px;padding:2px 5px}
.gal .g .pend{position:absolute;top:4px;right:4px;width:10px;height:10px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 2px #fff}
.lightbox{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}
.lightbox img{max-width:100%;max-height:80vh;object-fit:contain} .lightbox .cap{padding:10px 16px;font-size:13px;text-align:center}
.lightbox .x{position:absolute;top:calc(12px + var(--sa-t));right:12px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;border:0;font-size:22px}
.pend-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.pend-item .ic{width:36px;height:36px;border-radius:10px;background:var(--soft);display:flex;align-items:center;justify-content:center;flex:none} .pend-item .ic svg{width:18px;height:18px}
.progress{height:8px;border-radius:4px;background:#e5e7eb;overflow:hidden;margin:10px 0} .progress i{display:block;height:100%;background:var(--accent);transition:width .2s}
/* Mapa */
.view.map{padding:0;position:relative}
#map{position:absolute;inset:0 0 calc(var(--nav-h) + var(--sa-b)) 0}
.map-ui{position:absolute;z-index:1000;left:10px;right:10px;top:10px;pointer-events:none}
.map-ui>*{pointer-events:auto}
.map-ui .search{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.15);border:0;border-radius:12px;min-height:52px}
.map-ui .seg{margin-top:8px}
.map-ui .seg button{box-shadow:0 1px 4px rgba(0,0,0,.12);border-color:transparent}
.map-ui .seg button.on.geo{background:#1e3a8a}
.map-ui .seg button.on.pin{background:var(--accent)}
.ac{position:absolute;left:0;right:0;top:54px;background:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.2);max-height:50vh;overflow:auto;z-index:1001}
.ac div{padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;font-size:14px} .ac div:active{background:var(--soft)}
.ac div small{display:block;color:var(--muted);font-size:12px} .ac .k{display:inline-block;font-size:10px;font-weight:800;text-transform:uppercase;background:var(--soft);border-radius:4px;padding:1px 6px;margin-right:6px;color:#374151}
.map-tools{position:absolute;right:10px;bottom:calc(var(--nav-h) + var(--sa-b) + 20px);z-index:1000;display:flex;flex-direction:column;gap:8px}
.map-tools button{width:48px;height:48px;border-radius:14px;border:0;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;cursor:pointer;color:#1e3a8a} .map-tools button svg{width:22px;height:22px}
.map-status{position:absolute;left:10px;bottom:calc(var(--nav-h) + var(--sa-b) + 20px);z-index:1000;background:rgba(17,24,39,.85);color:#fff;font-size:12px;border-radius:10px;padding:8px 12px;max-width:70%}
.leaflet-popup-content{font-size:13px;line-height:1.35} .leaflet-popup-content b{font-size:14px} .leaflet-popup-content a.btn{margin-top:6px}
.pin-esc{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.pin-esc span{transform:rotate(45deg);display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-size:11px;font-weight:800}

/* Launcher: catálogo */
.sec-h{font-size:13px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:#6b7280;margin:24px 0 8px}
.launcher .app{position:relative;display:block;color:inherit}
.launcher .app.off{opacity:.55;cursor:default;filter:grayscale(.4)}
.launcher .app .soon{position:absolute;top:8px;right:8px;font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;background:#fef3c7;color:#92400e;border-radius:4px;padding:2px 5px}

/* Drawer v0.5: separador y cabecera de la app cargada */
.drawer .drawer-sep{border:0;border-top:1px solid var(--line);margin:8px 0}
.drawer .drawer-app{display:flex;align-items:center;gap:10px;padding:6px 12px 10px}
.drawer .drawer-app .ic{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.drawer .drawer-app .ic svg{width:20px;height:20px;color:#fff}
.drawer .drawer-app b{display:block;font-size:15px} .drawer .drawer-app small{color:var(--muted);font-size:12px}
.drawer a.on{background:var(--soft);font-weight:700}

/* Íconos inline sueltos: tamaño acotado */
.esc .top > svg{width:18px;height:18px;color:var(--muted);flex:none}
.meta svg,.lines svg{width:14px;height:14px;vertical-align:-2px}

/* Mapa v0.6: etiquetas, clúster, switch */
.geo-label{pointer-events:none;white-space:nowrap;transform:translate(-50%,-50%);font-size:11px;font-weight:800;letter-spacing:.2px;text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 3px #fff,0 0 6px #fff}
.geo-label.seccion{font-size:10px;font-weight:700} .geo-label.colonia{font-size:10px;font-weight:600}
.cl{width:44px;height:44px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:800;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35);line-height:1}
.cl b{font-size:15px} .cl small{font-size:9px;opacity:.9}
.cl.pend{background:#dc2626} .cl.done{background:#16a34a} .cl.mix{background:linear-gradient(135deg,#16a34a 50%,#dc2626 50%)}
.map-ui .seg button.sw{display:inline-flex;align-items:center;gap:8px}
.map-ui .seg button.sw i{width:30px;height:18px;border-radius:9px;background:#cbd5e1;position:relative;transition:.2s}
.map-ui .seg button.sw i::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.2s}
.map-ui .seg button.sw.on{background:#fff;color:#1e3a8a} .map-ui .seg button.sw.on i{background:#1e3a8a} .map-ui .seg button.sw.on i::after{left:14px}
.map-ui .seg button.geo em{font-style:normal;font-size:10px;margin-left:6px;opacity:.8}

/* ===== v0.7: footer con Bootstrap Icons, FAB de guía, guías ===== */
.bi{display:inline-block;line-height:1;vertical-align:-.125em}
.icon-btn .bi{font-size:22px} .drawer .bi{font-size:22px;color:#4b5563;width:22px;text-align:center} .launcher .app .ic .bi{font-size:28px} .btn .bi{font-size:18px}
.drawer .drawer-app .ic .bi{font-size:20px;color:#fff}
.nav{background:linear-gradient(180deg,#23702a,#1a5a20);padding:8px 6px calc(8px + var(--sa-b));box-shadow:0 -4px 16px rgba(0,0,0,.18);align-items:stretch}
.nav a,
.nav .nav-g button{gap:3px;padding:6px 0 2px;opacity:.78;transition:opacity .15s}
.nav a .ic,
.nav .nav-g button .ic{width:50px;height:34px;border-radius:12px;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}
.nav a .ic .bi,
.nav .nav-g button .ic .bi{font-size:24px} .nav a .ic svg{width:24px;height:24px}
/* La barra puede llevar hasta cuatro botones más el hueco del FAB: en un teléfono angosto (320px)
   las etiquetas ya no caben a tamaño fijo y se cortaban a media palabra. Se encogen un poco y, si
   aun así sobra, se marca con puntos suspensivos en vez de tajarlas. */
.nav a .lb,
.nav .nav-g button .lb{font-size:10.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;text-align:center}
/* `align-items:center` en el botón encogía la etiqueta al ancho del ICONO (42-50px), así que el
   recorte se disparaba con nombres cortos como «Resultados». `align-self:stretch` la deja usar todo
   el ancho del botón, que es lo que de verdad hay. */
/* Los dos grupos miden IGUAL y el hueco va fijo al centro: el FAB se ancla al 50% de la barra
   (`left:50%`), así que en cuanto un grupo crece más que el otro el hueco se corre y el FAB cae
   encima de un botón. El reparto desigual —tres botones son 2 + 1— se resuelve DENTRO de cada
   grupo: sus botones se estiran a partes iguales del espacio que tenga su mitad. */
.nav a,
.nav .nav-g button{min-width:0}
.nav a .lb,
.nav .nav-g button .lb{align-self:stretch}

/* El estado ACTIVO es la pastilla dorada. Pedía `.active` sólo en el <button>, y el `.nav a` que
   quedó suelto delante se lo aplicaba a TODAS las pestañas: en Cartografía, «Mapa» salía con el
   icono dorado sobre negro aunque fuera un botón más. */
.nav a.active,
.nav .nav-g button.active{opacity:1}
.nav a.active .ic,
.nav .nav-g button.active .ic{background:var(--gold);color:#1a1a1a;transform:translateY(-2px);box-shadow:0 3px 10px rgba(0,0,0,.35)}
.nav a.active .lb,
.nav .nav-g button.active .lb{color:var(--gold);text-shadow:0 1px 2px rgba(0,0,0,.4)}
.nav a:active .ic,
.nav .nav-g button:active .ic{transform:scale(.92)}
.nav .fab{width:66px;height:66px;bottom:12px;background:linear-gradient(145deg,#a78bfa,#7c3aed);box-shadow:0 0 0 8px rgba(124,58,237,.22),0 8px 22px rgba(124,58,237,.5);transition:transform .15s}
.nav .fab .bi{font-size:30px;font-weight:700} .nav .fab:active{transform:translateX(-50%) scale(.94)}
.md{padding:14px 16px 24px;font-size:15px;line-height:1.5}
.md h2{font-size:20px;margin:6px 0 10px;color:var(--brand)} .md h3{font-size:16px;margin:18px 0 6px} .md h4{font-size:14px;margin:14px 0 4px;color:#374151}
.md p{margin:0 0 10px} .md ul,.md ol{margin:0 0 10px;padding-left:22px} .md li{margin-bottom:4px}
.md code{background:var(--soft);border-radius:4px;padding:1px 5px;font-size:13px} .md pre{background:#111;color:#fff;border-radius:8px;padding:10px;overflow:auto;font-size:12px}
.md blockquote{border-left:4px solid var(--gold);background:#fffbeb;margin:0 0 10px;padding:8px 12px;border-radius:0 8px 8px 0}
.md table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:10px} .md th,.md td{border-bottom:1px solid var(--line);padding:6px 4px;text-align:left} .md th{font-size:11px;text-transform:uppercase;color:var(--muted)}
.md .bi{color:#1e3a8a} .md hr{border:0;border-top:1px solid var(--line);margin:14px 0}

/* ===== v0.8: FAB en la línea superior del footer, chips del mapa, asistente, cámara ===== */
.nav{position:fixed;overflow:visible}
.nav .fab-slot{flex:0 0 76px;min-height:44px;position:static}
.nav .nav-g{flex:1;display:flex;justify-content:space-around;align-items:stretch;min-width:0}
.nav .nav-g a,
.nav .nav-g button{min-width:0}
.nav .nav-g .lb{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;letter-spacing:0}
/* En un teléfono angosto, con cuatro botones más el hueco del FAB cada etiqueta dispone de unos
   70px: a 10px una palabra de diez letras («Resultados») ya no entra. Se encoge la letra y se
   aprieta el icono, que es de donde sobra espacio. */
@media (max-width:400px){
  .nav .nav-g .lb{font-size:9px;letter-spacing:-.2px}
  .nav .nav-g a .ic{width:40px;height:30px}
  .nav .nav-g a .ic .bi{font-size:21px}
}
@media (max-width:340px){
  .nav .nav-g .lb{font-size:8px;letter-spacing:-.3px}
  .nav .nav-g a .ic{width:34px}
}
.nav .fab{position:absolute;top:0;left:50%;bottom:auto;transform:translate(-50%,-50%);width:64px;height:64px}
.nav .fab:active{transform:translate(-50%,-50%) scale(.94)}
.nav .fab.cam{background:linear-gradient(145deg,#f8fafc,#cbd5e1);color:#111;box-shadow:0 0 0 8px rgba(255,255,255,.35),0 8px 22px rgba(0,0,0,.35)}
.nav .fab.cam .bi{font-size:30px}
.toasts{bottom:calc(var(--nav-h) + 40px + var(--sa-b))}
/* Mapa: barra de control */
.map-ui .bar{background:rgba(255,255,255,.97);border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.15);padding:6px;display:flex;align-items:center;gap:6px;margin-top:8px}
.map-ui .segc{display:flex;flex:1;background:var(--soft);border-radius:10px;padding:3px;gap:2px}
.map-ui .segc button{flex:1;border:0;background:transparent;border-radius:8px;padding:8px 4px;font-size:12.5px;font-weight:700;color:#374151;display:inline-flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;white-space:nowrap}
.map-ui .segc button .bi{font-size:14px} .map-ui .segc button .n{font-size:10px;background:rgba(0,0,0,.08);border-radius:999px;padding:1px 6px}
.map-ui .segc button.on{background:#1e3a8a;color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2)} .map-ui .segc button.on .n{background:rgba(255,255,255,.25)}
.map-ui .tgl{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:#374151;padding:0 8px 0 6px;border:0;background:transparent;cursor:pointer;white-space:nowrap}
.map-ui .tgl i{width:34px;height:20px;border-radius:10px;background:#cbd5e1;position:relative;transition:.2s;flex:none}
.map-ui .tgl i::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:.2s}
.map-ui .tgl.on{color:#1e3a8a} .map-ui .tgl.on i{background:#1e3a8a} .map-ui .tgl.on i::after{left:16px}
.map-ui .layers{display:flex;gap:6px;overflow-x:auto;padding:8px 2px 4px;-webkit-overflow-scrolling:touch;scrollbar-width:none} .map-ui .layers::-webkit-scrollbar{display:none}
.map-ui .lchip{flex:none;display:inline-flex;align-items:center;gap:6px;border:1.5px solid rgba(0,0,0,.08);background:rgba(255,255,255,.97);border-radius:999px;padding:7px 11px;font-size:12.5px;font-weight:700;color:#1f2937;box-shadow:0 1px 4px rgba(0,0,0,.12);cursor:pointer;transition:.15s}
.map-ui .lchip .dot{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px rgba(0,0,0,.06)}
.map-ui .lchip em{font-style:normal;font-size:10.5px;font-weight:800;background:var(--soft);border-radius:999px;padding:1px 6px;color:#374151;min-width:14px;text-align:center} .map-ui .lchip em:empty{display:none}
.map-ui .lchip.on{background:var(--c);border-color:var(--c);color:#fff} .map-ui .lchip.on .dot{background:#fff} .map-ui .lchip.on em{background:rgba(255,255,255,.25);color:#fff}
.map-ui .lchip.loading em::after{content:'…'}
/* Asistente de entrega */
.wiz-nav{position:sticky;bottom:calc(var(--nav-h) + var(--sa-b) + 10px);display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;padding:8px 0;background:linear-gradient(transparent,#fff 30%);z-index:5}
.wiz-nav .btn{min-height:52px;font-size:16px} .wiz-nav .btn .bi{font-size:18px}
.step-h{margin-top:6px}
/* Cámara */
.cam-wrap{position:relative;background:#000;border-radius:16px;overflow:hidden;aspect-ratio:3/4;max-height:58vh;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.cam-wrap video{width:100%;height:100%;object-fit:cover;display:block}
.cam-wrap .cnt{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:6px;flex-wrap:wrap}
.cam-wrap .cnt span{background:rgba(0,0,0,.55);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:4px 9px;display:inline-flex;gap:5px;align-items:center;backdrop-filter:blur(4px)}
.cam-wrap .cnt span b{background:#fff;color:#111;border-radius:999px;padding:0 6px;font-size:10px}
.cam-wrap .flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .12s} .cam-wrap .flash.on{opacity:.85;transition:none}
.cam-wrap .off{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;text-align:center;padding:20px}
.cam-wrap .off .bi{font-size:42px;opacity:.8}
.shutter-row{display:flex;align-items:center;justify-content:center;gap:28px;padding:14px 0 4px}
.shutter{width:84px;height:84px;border-radius:50%;border:5px solid #fff;background:radial-gradient(circle at 35% 30%,#fff,#e5e7eb);box-shadow:0 0 0 3px #111,0 10px 24px rgba(0,0,0,.35);cursor:pointer;transition:transform .1s;flex:none}
.shutter:active{transform:scale(.9)} .shutter:disabled{opacity:.4}
.shutter-row .side{width:48px;height:48px;border-radius:50%;border:0;background:var(--soft);display:flex;align-items:center;justify-content:center;color:#374151;cursor:pointer} .shutter-row .side .bi{font-size:20px}
.shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:8px}
.shot{position:relative;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:var(--soft);box-shadow:0 1px 4px rgba(0,0,0,.15)}
.shot img{width:100%;height:100%;object-fit:cover;display:block}
.shot .ov{position:absolute;left:0;right:0;bottom:0;padding:16px 6px 6px;background:linear-gradient(transparent,rgba(0,0,0,.75));color:#fff;font-size:10px;line-height:1.25}
.shot .ov b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.4px} .shot .ov.pend b{color:#fbbf24}
.shot .del{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:12px;cursor:pointer}
.shot .tipo{position:absolute;top:4px;left:4px;font-size:9px;font-weight:800;text-transform:uppercase;background:rgba(255,255,255,.92);border-radius:4px;padding:2px 5px}
/* Offcanvas de tipo de foto */
.oc{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.5);display:flex;align-items:flex-end}
.oc .sheet{background:#fff;width:100%;border-radius:18px 18px 0 0;padding:10px 16px calc(16px + var(--sa-b));animation:up .2s ease-out}
.oc .grip{width:42px;height:5px;border-radius:3px;background:#d1d5db;margin:0 auto 10px}
.oc .prev{display:flex;gap:12px;align-items:center;margin-bottom:10px} .oc .prev img{width:64px;height:84px;object-fit:cover;border-radius:10px} .oc .prev b{display:block;font-size:16px} .oc .prev small{color:var(--muted)}
.oc .opts{display:grid;gap:8px}
.oc .opt{display:flex;align-items:center;gap:12px;border:1.5px solid var(--line);border-radius:12px;padding:12px;background:#fff;cursor:pointer;text-align:left;font-weight:600;font-size:15px}
.oc .opt .ic{width:40px;height:40px;border-radius:10px;background:var(--soft);display:flex;align-items:center;justify-content:center;flex:none} .oc .opt .ic .bi{font-size:20px;color:#1e3a8a}
.oc .opt:active,.oc .opt.sel{background:#eff6ff;border-color:var(--accent)}
.oc .discard{margin-top:8px;color:var(--danger)}
/* Galería: overlay fecha/hora/tipo */
.gal .g .lbl{font-size:10px;padding:18px 6px 5px;line-height:1.25} .gal .g .lbl b{display:block;font-size:10.5px}

/* v0.8.1: el asistente no debe quedar bajo el FAB ni tapar el disparador */
.wiz-nav{bottom:calc(var(--nav-h) + var(--sa-b) + 42px);background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border-radius:14px;padding:8px;margin:16px -4px 0}
.cam-wrap{max-height:40vh;aspect-ratio:4/3}
.shutter-row{padding:10px 0 2px}
.view.wiz{padding-bottom:calc(var(--nav-h) + 24px + var(--sa-b))}

/* v0.8.2: nada debe desbordar horizontalmente (en móvil ensancha el viewport de layout y desplaza el footer fijo) */
html,body{overflow-x:hidden;max-width:100%}
.map-ui{overflow:hidden}
.map-ui .bar{min-width:0}
.map-ui .segc{min-width:0;overflow:hidden}
.map-ui .segc button{flex:1 1 0;min-width:0;padding:8px 2px;font-size:12px}
.map-ui .segc button .n{padding:1px 5px}
.map-ui .tgl{padding:0 4px}
@media (max-width:440px){ .map-ui .tgl .lb{display:none} .map-ui .tgl{padding:0 2px 0 4px} }

/* v0.8.3: aislar el stacking de Leaflet para que no tape el FAB del footer */
#map{z-index:0;isolation:isolate}

/* v0.9: el footer (y su FAB) por encima de cualquier pane de Leaflet (máx. 1000); overlays por encima del footer */
.hdr{z-index:1100} .nav{z-index:1100}
.drawer{z-index:1200} .modal{z-index:1210} .lightbox{z-index:1300} .oc{z-index:1400} .toasts{z-index:1500}
.map-ui,.ac,.map-tools,.map-status{z-index:1050}
.ac{z-index:1060}

/* v0.9.1: selector de brigada municipal */
.mun-pick{display:flex;align-items:center;gap:10px;width:100%;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;margin:0 0 10px;text-align:left;cursor:pointer}
.mun-pick>.bi:first-child{font-size:20px;color:var(--brand)} .mun-pick>.bi:last-child{color:var(--muted)}
.mun-pick span{flex:1;display:flex;flex-direction:column} .mun-pick small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:700} .mun-pick b{font-size:15px}

/* ===== v0.10: Login ===== */
body.login-bg{background:#0b2e14}
body.login-bg .view{padding:0}
.lg{position:relative;min-height:100dvh;overflow:hidden;display:flex;flex-direction:column;align-items:center;padding:calc(28px + var(--sa-t)) 20px calc(24px + var(--sa-b));background:radial-gradient(120% 80% at 50% -10%,#2f7a3a 0%,#14502a 45%,#0b2e14 100%);color:#fff}
.lg-blobs i{position:absolute;border-radius:50%;filter:blur(40px);opacity:.55;animation:float 14s ease-in-out infinite;pointer-events:none}
.lg-blobs i:nth-child(1){width:260px;height:260px;left:-80px;top:-40px;background:#f2c14e}
.lg-blobs i:nth-child(2){width:320px;height:320px;right:-120px;top:120px;background:#8b5cf6;animation-delay:-5s}
.lg-blobs i:nth-child(3){width:240px;height:240px;left:30%;bottom:-80px;background:#22c55e;animation-delay:-9s}
@keyframes float{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(20px,-24px) scale(1.08)}}
.lg-hero{position:relative;text-align:center;margin:8vh 0 26px;animation:rise .6s ease-out both}
.lg-mark{position:relative;width:92px;height:92px;margin:0 auto 16px;border-radius:28px;background:linear-gradient(145deg,#111,#1f2937);display:flex;align-items:center;justify-content:center;box-shadow:0 18px 40px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.12)}
.lg-mark span{font-size:34px;font-weight:900;letter-spacing:1px;color:#fff}
.lg-mark b{position:absolute;right:-6px;top:-6px;width:26px;height:26px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 5px rgba(242,193,78,.25),0 6px 14px rgba(0,0,0,.3)}
.lg-hero h1{margin:0;font-size:30px;font-weight:900;letter-spacing:2px}
.lg-hero p{margin:6px auto 0;max-width:300px;color:rgba(255,255,255,.8);font-size:14.5px;line-height:1.4}
.lg-card{position:relative;width:100%;max-width:400px;background:rgba(255,255,255,.96);color:var(--fg);border-radius:24px;padding:26px 22px 18px;box-shadow:0 30px 60px rgba(0,0,0,.35);backdrop-filter:blur(12px);animation:rise .7s .1s ease-out both}
.lg-card h2{margin:0;font-size:22px;font-weight:800} .lg-sub{margin:2px 0 18px;color:var(--muted);font-size:14px}
.lg-field{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);background:#f9fafb;border-radius:14px;padding:0 12px;min-height:54px;margin-bottom:12px;transition:.15s}
.lg-field:focus-within{border-color:#2f7a3a;background:#fff;box-shadow:0 0 0 4px rgba(47,122,58,.14)}
.lg-field .ic{width:34px;height:34px;border-radius:10px;background:#e8f3ea;color:#2f7a3a;display:flex;align-items:center;justify-content:center;flex:none} .lg-field .ic .bi{font-size:17px}
.lg-field input{flex:1;min-width:0;border:0;background:none;outline:0;font-size:16px;padding:12px 0}
.lg-field .eye{border:0;background:none;color:var(--muted);width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer} .lg-field .eye .bi{font-size:18px}
.lg-btn{width:100%;margin-top:6px;min-height:54px;border:0;border-radius:14px;background:linear-gradient(135deg,#2f7a3a,#1f5f2a);color:#fff;font-size:17px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 10px 24px rgba(31,95,42,.4);cursor:pointer;transition:transform .1s,box-shadow .15s}
.lg-btn .bi{font-size:20px;transition:transform .2s} .lg-btn:hover .bi{transform:translateX(4px)} .lg-btn:active{transform:scale(.98)}
.lg-btn.busy{opacity:.8} .lg-btn.busy .bi{animation:spinb .8s linear infinite} @keyframes spinb{to{transform:rotate(360deg)}}
.lg-err{margin:12px 0 0;background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:10px;padding:10px 12px;font-size:14px}
.lg-foot{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px;font-size:12px;color:var(--muted);letter-spacing:.3px}
.lg-foot .dot{width:8px;height:8px}
.lg-version{position:relative;margin-top:auto;padding-top:18px;font-size:11px;color:rgba(255,255,255,.45)}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.shake{animation:shake .4s} @keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
@media (min-width:700px){ .lg{justify-content:center} .lg-hero{margin-top:0} }

/* v0.10.1: combo de brigada municipal */
.mun-pick span{min-width:0}
.mun-pick select{appearance:none;-webkit-appearance:none;border:0;background:transparent;font:inherit;font-size:16px;font-weight:800;color:var(--fg);padding:0;width:100%;outline:0;cursor:pointer}

/* v0.11.1: botones de exportación */
.xbtn{justify-content:flex-start;gap:12px;padding:10px 14px;min-height:56px;text-align:left}
.xbtn .bi{font-size:26px} .xbtn span{display:flex;flex-direction:column;line-height:1.15;font-size:12px;font-weight:600;opacity:.9} .xbtn span b{font-size:17px;font-weight:800;opacity:1}

/* v0.12.2: banda de estatus en tarjeta de escuela + íconos acotados en el pie */
.esc .band{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 10px 5px 12px;font-size:11px;font-weight:800;letter-spacing:.4px;color:#fff;background:#16a34a}
.esc .band.partial{background:#d97706} .esc .band.local{background:#b45309}
.esc .band .st{display:inline-flex;align-items:center;gap:6px} .esc .band .bi{font-size:13px}
.esc .band .acts{display:inline-flex;gap:6px}
.esc .band .acts button{border:0;background:rgba(255,255,255,.22);color:#fff;border-radius:8px;padding:4px 9px;font-size:11px;font-weight:800;display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.esc .band .acts button:active{background:rgba(255,255,255,.4)}
.esc .foot svg,.esc .foot .bi{width:16px;height:16px;font-size:16px;flex:none}

/* v0.13: hoja de enlace del acta */
.link-box{display:flex;gap:8px;align-items:center;border:1.5px solid var(--line);border-radius:12px;padding:6px 6px 6px 12px;background:var(--soft)}
.link-box input{flex:1;min-width:0;border:0;background:transparent;font-size:13px;outline:0;font-family:ui-monospace,Menlo,monospace}
.modal .grid2 .btn{min-height:48px}

/* v0.13.1: útiles escolares */
.trow.utiles{background:#f0f9ff;border-radius:10px;padding:8px 6px;margin-top:6px;border-bottom:0} .trow.utiles .tl{font-size:14px;color:#0369a1;display:flex;align-items:center;gap:6px} .trow.utiles .tl .bi{font-size:18px}
.total-bar span{display:flex;flex-direction:column;font-size:12px;opacity:.9} .total-bar span b{line-height:1.1}

/* v0.14.1: útiles por grado en el asistente */
.trow-sec{display:flex;align-items:center;gap:8px;margin:14px 0 4px;font-weight:800;color:#0369a1;font-size:14px} .trow-sec .bi{font-size:18px} .trow-sec small{font-weight:600;color:var(--muted)}
.trow.utiles{margin-top:0;border-radius:0;background:transparent;border-bottom:1px solid var(--line);padding:8px 0} .trow.utiles .tl{font-size:13px;font-weight:700;color:#0369a1}

/* ===== v0.15: visitas / agenda / avisos ===== */
.notices{position:fixed;left:12px;right:12px;top:calc(var(--hdr-h) + 8px + var(--sa-t));z-index:1450;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.notice{pointer-events:auto;display:flex;align-items:center;gap:12px;background:#111;color:#fff;border-radius:14px;padding:12px 12px 12px 14px;box-shadow:0 12px 30px rgba(0,0,0,.3);animation:down .25s ease-out}
.notice.ok{background:#14532d}.notice.warn{background:#7c2d12}.notice.info{background:#1e3a8a}.notice.out{opacity:0;transform:translateY(-8px);transition:.25s}
.notice .nic{width:38px;height:38px;border-radius:12px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;flex:none}.notice .nic .bi{font-size:20px;color:#fff}
.notice .nb{flex:1;min-width:0}.notice .nb b{display:block;font-size:14.5px}.notice .nb small{display:block;opacity:.85;font-size:12.5px;line-height:1.3}
.notice .nact{border:0;border-radius:10px;background:#fff;color:#111;font-weight:800;padding:8px 12px;cursor:pointer}.notice .nx{border:0;background:none;color:#fff;opacity:.7;width:32px;height:32px;cursor:pointer}
@keyframes down{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
#btn-bell{position:relative}#btn-bell .bdg{position:absolute;top:-2px;right:-2px;background:var(--danger);color:#fff;font-style:normal;font-size:10px;font-weight:800;border-radius:999px;min-width:18px;height:18px;padding:0 5px;display:flex;align-items:center;justify-content:center;border:2px solid #000}
.esc .band.free{background:#475569}.esc .band.asig{background:#1e3a8a}.esc .band.conf{background:#16a34a}.esc .band.rech{background:#b91c1c}.esc .band.wait{background:#6d28d9}
.esc .band .st small{font-weight:600;opacity:.9;text-transform:none;letter-spacing:0}
/* Selector de agenda en el alta de evento: un capturista puede escribir en su agenda o en la de su
 * titular, y tiene que verlo ANTES de capturar, no descubrirlo después. */
.ag-agenda{display:block;margin:0 0 12px;padding:10px 12px;border:1.5px solid var(--brand);border-radius:12px;background:rgba(155,27,78,.06)}
.ag-agenda span{display:block;font-size:12.5px;font-weight:700;color:var(--brand);margin-bottom:6px}
.ag-agenda{border-color:var(--agc,var(--brand));background:color-mix(in srgb,var(--agc,var(--brand)) 7%,#fff)} .ag-agenda span{color:var(--agc,var(--brand))}
.ag-agenda select{width:100%;min-height:44px}
.ag-sello{display:flex;gap:10px;align-items:flex-start;border:1.5px solid #0f766e;background:#f0fdfa;color:#134e4a} .ag-sello>svg{width:20px;height:20px;flex:none;margin-top:2px}
.ag-sello p{margin:2px 0 0;font-size:13.5px;line-height:1.4} .ag-sello-tag{background:#ccfbf1;color:#0f766e} .ag-sello-tag svg{width:11px;height:11px;vertical-align:-1px}
.ag-sello.revocada{border-color:#b91c1c;background:#fef2f2;color:#7f1d1d} .ag-motivo{font-style:italic}
.ag-cubre{border:1.5px solid #99f6e4;border-radius:12px;padding:10px 12px;background:#f0fdfa} .ag-cubre select{width:100%;min-height:44px} .ag-cubre small{display:block;margin-top:4px}
.ag-cp-info{display:block;margin:-6px 0 10px;min-height:1em} .ag-cp-info.mal{color:#b91c1c} .ag-agenda .ag-radar{display:block}
/* El selector de agenda: con el color de la agenda en la que capturas y un pulso de radar hasta que lo tocas. */
.ag-radar{position:relative;display:inline-block;border-radius:999px;max-width:100%}
.ag-agenda .ag-radar{border-radius:10px}
.ag-sel-c{color:#fff!important;font-weight:700;appearance:auto} .ag-sel-c option{background:#fff;color:#111}
.ag-agenda .ag-sel-c{border:0;border-radius:10px;padding:0 10px;font-size:15px;width:100%;max-width:none}
.ag-radar.on::before,.ag-radar.on::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;animation:ag-radar 1.8s ease-out infinite}
.ag-radar.on::after{animation-delay:.9s}
@keyframes ag-radar{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--agc) 70%,transparent)}100%{box-shadow:0 0 0 14px transparent}}
@media (prefers-reduced-motion:reduce){.ag-radar.on::before,.ag-radar.on::after{animation:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--agc) 50%,transparent)}}
.ag-day{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:16px 0 6px}
.ag{display:flex;gap:12px;align-items:stretch;border:1px solid var(--line);border-radius:14px;background:#fff;margin-bottom:10px;overflow:hidden}
.ag .tm{width:64px;background:var(--soft);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;flex:none}.ag .tm small{font-weight:600;color:var(--muted);font-size:11px}
.ag .bd{flex:1;padding:10px 10px 10px 0;min-width:0}.ag .bd b{display:block}.ag .bd .meta{font-size:12.5px}
.ag .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.stt{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;border-radius:6px;padding:3px 8px}
.stt.programada{background:#ede9fe;color:#5b21b6}.stt.confirmada{background:#dcfce7;color:#166534}.stt.rechazada{background:#fee2e2;color:#991b1b}.stt.cancelada{background:var(--soft);color:#374151}.stt.realizada{background:#dbeafe;color:#1e40af}
.vis-box{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:12px;background:#fff}.vis-box h3{margin:0 0 6px}
.vis-box .grupos{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}

/* ===== v0.16: entrega por grupo ===== */
.alerta-app{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:13.5px;line-height:1.35}
.alerta-app.warn{background:#fffbeb;border:1.5px solid #f59e0b;color:#78350f}.alerta-app.info{background:#eff6ff;border:1.5px solid #2563eb;color:#1e3a8a}.alerta-app .bi{font-size:18px;margin-top:1px}
.gprog{display:flex;gap:14px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;margin-bottom:12px}
.gprog .ring{width:64px;height:64px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),#e5e7eb 0);display:flex;align-items:center;justify-content:center;flex:none}
.gprog .ring b{background:#fff;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-size:13px}
.gcard{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px 12px;margin-bottom:8px}
.gcard.entregado{border-color:#86efac;background:#f6fef8}.gcard.no_entregado{border-color:#fecaca;background:#fef7f7}
.gcard .gc-id{width:52px;flex:none;text-align:center}.gcard .gc-id b{display:block;font-size:17px}.gcard .gc-id .bi{font-size:11px;color:var(--muted)}
.gcard .gthumb{width:44px;height:44px;border-radius:10px;object-fit:cover;flex:none}
.oc.gflow .sheet{max-height:92vh;overflow:auto;-webkit-overflow-scrolling:touch}
.gf-h{display:flex;gap:10px;align-items:center;margin-bottom:6px}.gf-h b{font-size:20px;flex:none}.gf-h input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:10px;padding:10px 12px}.gf-h .icon-btn{width:38px;height:38px;flex:none;background:var(--soft);border-radius:50%}
.gf-sec{display:flex;align-items:center;gap:8px;font-weight:800;font-size:14px;margin:14px 0 8px;color:#1e3a8a}.gf-sec .bi{font-size:16px}.gf-sec small{font-weight:600;color:var(--muted)}
.gf-tot{background:#111;color:#fff;border-radius:10px;padding:8px 12px;font-size:13px;margin-top:8px}.gf-tot b{font-size:16px}
.gf-cam{position:relative;background:#000;border-radius:14px;overflow:hidden;aspect-ratio:4/3;max-height:36vh}
.gf-cam video,.gf-cam img{width:100%;height:100%;object-fit:cover;display:block}
.gf-cam .off{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;padding:16px;text-align:center}
.gf-cam .gf-cambtns{position:absolute;left:0;right:0;bottom:8px;display:flex;align-items:center;justify-content:center;gap:16px}
.gf-cam .gf-cambtns .btn{background:rgba(255,255,255,.9)}
.shutter.mini{width:58px;height:58px;border-width:4px;box-shadow:0 0 0 2px #111,0 6px 16px rgba(0,0,0,.4)}
.gf-cam .side{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;color:#111;cursor:pointer}
.sig.mini{height:140px}
.gf-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;margin-top:14px}
.gf-actions .btn{min-height:50px}

/* v0.17: encabezado sticky de Escuelas + modal de filtros */
.esc-head{position:sticky;top:calc(var(--hdr-h) + var(--sa-t) - 12px);z-index:15;background:var(--bg);margin:-16px -16px 10px;padding:14px 16px 0}
.esc-head .qrow{display:flex;gap:8px}
.esc-head .qrow .search{flex:3;min-width:0}
.esc-head .qrow .btn{flex:1;min-width:96px;position:relative}
.esc-head .hsep{border:0;border-top:1px solid var(--line);margin:12px -16px 0}
.fbadge{position:absolute;top:-6px;right:-6px;background:var(--gold);color:#3a2a00;font-style:normal;font-size:11px;font-weight:800;border-radius:999px;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;padding:0 5px;border:2px solid var(--bg)}
.fgrp{margin-bottom:12px}.fgrp>label{display:block;font-size:12px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:#64748b;margin-bottom:6px}
.fpills{display:flex;flex-wrap:wrap;gap:6px}
.fpills button{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-weight:700;font-size:13.5px;cursor:pointer}
.fpills button.on{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.fsel{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:12px;min-height:48px;background:#fff}

/* v0.18: footer en modo wizard (entrega): sin pestañas ni FAB, solo Atrás / Siguiente */
.nav.wiz{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;align-items:center;padding:10px 12px calc(10px + var(--sa-b))}
.nav.wiz .btn{min-height:54px;font-size:16px;border-radius:14px}
.nav.wiz .btn .bi{font-size:18px}
.nav.wiz .btn.ghost{background:rgba(255,255,255,.12);color:#fff;border:1.5px solid rgba(255,255,255,.4)}
.nav.wiz .btn.primary{background:#fff;color:#14532d;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.nav.wiz .btn.ok{background:var(--gold);color:#3a2a00;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.nav.wiz .btn:disabled{opacity:.7}

/* v0.19: vista previa imprimible del acta */
.oc.preview{align-items:stretch;background:#3f3f46}
.oc.preview .pv{display:flex;flex-direction:column;width:100%;height:100%;background:#52525b}
.pv-h{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--sa-t)) 12px 10px;background:#fff;border-bottom:1px solid var(--line)}
.pv-h b{display:block;font-size:15px} .pv-h small{color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw}
.pv-pages{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:14px 12px}
.pv-load{color:#fff;text-align:center;padding:40px 0;font-weight:700;font-size:15px} .pv-load .bi{display:block;font-size:34px;margin-bottom:8px;animation:spin 1.4s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.pv-pg{margin:0 auto 14px;max-width:720px} .pv-pg img{display:block;width:100%;height:auto;background:#fff;box-shadow:0 6px 22px rgba(0,0,0,.35);border-radius:3px}
.pv-pg figcaption{color:#e4e4e7;font-size:12px;text-align:center;margin-top:6px}
.pv-firmas{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 12px;background:#fff;border-top:1px solid var(--line);font-size:13px}.pv-firmas-t{color:var(--muted);font-weight:600}.pv-firmas label{display:flex;align-items:center;gap:6px;cursor:pointer}.pv-firmas input{width:18px;height:18px;accent-color:var(--brand,#1F5F2A)}
.pv-bar{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:8px;padding:10px 12px calc(10px + var(--sa-b));background:#fff;border-top:1px solid var(--line)}
.pv-bar .btn{min-height:50px;font-size:14px;padding:8px 6px;min-width:0;white-space:nowrap} .pv-bar .btn .bi{font-size:18px;flex:none}
#print-area{display:none}
@media print{
  @page{size:letter;margin:0}
  html,body{height:auto !important;overflow:visible !important;max-width:none !important;background:#fff !important}
  body.printing > *:not(#print-area){display:none !important}
  body.printing #print-area{display:block}
  #print-area .pp{width:8.5in;height:11in;page-break-after:always;break-after:page;overflow:hidden;margin:0}
  #print-area .pp:last-child{page-break-after:auto;break-after:auto}
  #print-area img{display:block;width:8.5in;height:11in;object-fit:contain}
}
@media (max-width:400px){.pv-bar{gap:6px;padding-left:8px;padding-right:8px} .pv-bar .btn{font-size:13px;gap:5px;padding:8px 4px} .pv-bar .btn .bi{font-size:17px}}

/* v0.20: confirmar ubicación (offcanvas con mapa) */
.oc.ubic .sheet{max-height:92vh;overflow:auto}
.ubic-map{height:48vh;min-height:260px;border-radius:14px;overflow:hidden;isolation:isolate;z-index:0;background:#e5e7eb}
.ubic-info{margin-top:10px;font-size:14px;line-height:1.4;color:#374151}
.ub-pin span{display:block;width:22px;height:22px;border-radius:50%;background:#2563eb;border:3px solid #fff;box-shadow:0 0 0 4px rgba(37,99,235,.3),0 2px 8px rgba(0,0,0,.35);animation:ubpulse 1.6s ease-out infinite}
@keyframes ubpulse{0%{box-shadow:0 0 0 4px rgba(37,99,235,.35),0 2px 8px rgba(0,0,0,.35)}70%{box-shadow:0 0 0 16px rgba(37,99,235,0),0 2px 8px rgba(0,0,0,.35)}100%{box-shadow:0 0 0 4px rgba(37,99,235,0),0 2px 8px rgba(0,0,0,.35)}}

/* ===== Usuarios (core/views/usuarios.js): árbol de familia ===== */
.us-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.us-bar .seg{display:flex;background:var(--soft);border-radius:999px;padding:3px}
.us-bar .seg button{border:0;background:transparent;border-radius:999px;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;font-weight:600;color:#374151;cursor:pointer}
.us-bar .seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 2px rgba(0,0,0,.12)} .us-bar .seg svg{width:16px;height:16px}
@media (max-width:480px){.us-bar .seg button span{display:none}}
.us-niveles{display:flex;gap:2px} .us-niveles button{width:30px;height:30px;border:1.5px solid var(--line);background:#fff;border-radius:6px;font-weight:700;font-size:12px;cursor:pointer;color:#374151}
.us-niveles button:active{background:var(--soft)}
/* El nivel que corresponde a lo que se ve. Se pinta como los segmentos de vista (relleno de marca),
 * para que se lea como «éste es el estado», no como un botón más. */
.us-niveles button.on{background:var(--brand);border-color:var(--brand);color:#fff}
.us-search{flex:1;min-width:160px;display:flex;align-items:center;gap:6px;background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:0 10px}
.us-search svg{width:16px;height:16px;color:var(--muted)} .us-search input{border:0;outline:0;width:100%;min-height:40px;font-size:15px;background:transparent}
.us-count{display:flex;gap:12px;align-items:center;margin-bottom:8px} .us-inact{margin-left:auto;font-size:12px;display:flex;gap:4px;align-items:center}
.us-card{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:10px;margin:0 0 6px calc(var(--ind) * 18px);position:relative}
.us-card.off{opacity:.55} .us-card.hit,.us-row .hit{background:#fef9c3}
.us-card[style*="--ind:0"]{margin-left:0} .us-card::before{content:"";position:absolute;left:-12px;top:-7px;bottom:50%;width:12px;border-left:2px solid var(--line);border-bottom:2px solid var(--line);border-radius:0 0 0 8px}
.us-card[style*="--ind:0"]::before{display:none}
.us-av{width:38px;height:38px;border-radius:50%;background:var(--nav);color:#fff;display:grid;place-items:center;font-weight:800;flex:none}
.us-card b{font-size:15px} .us-card .meta{font-size:12px;margin-top:2px} .us-apps{display:flex;flex-wrap:wrap;gap:4px;margin-top:0;flex-basis:100%} .us-apps .chip{padding:2px 8px;font-size:11px}
.us-tg{width:26px;height:26px;border:0;background:transparent;color:var(--brand);cursor:pointer;flex:none;padding:0;display:grid;place-items:center} .us-tg svg{width:18px;height:18px}
.us-acts{display:flex;gap:4px;flex:none} .us-acts .btn{min-height:34px;padding:6px 8px} .us-danger{color:var(--danger)}
.tag{display:inline-block;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700;margin-left:6px;vertical-align:middle} .tag.ok{background:#dcfce7;color:#166534} .tag.cancel{background:#fee2e2;color:#991b1b} .tag.pend{background:#fef3c7;color:#92400e}
/* Badge de CLIENTE: el usuario dado de alta por root, con su estado (ámbito). Verde marca del sistema. */
.tag.cliente{background:#e6f0ea;color:#1f5a31;text-transform:none;letter-spacing:.2px;display:inline-flex;align-items:center;gap:3px}
.tag.cliente svg{width:11px;height:11px}
/* Árbol compacto: nombre, teléfono y el conector con el jefe.
 *
 * El conector es UNA sola pieza en forma de L —no una raya vertical por un lado y una horizontal
 * por otro—: antes iban separadas (la vertical en left:-9px, la horizontal arrancando en 0) y
 * quedaba un hueco de 9px entre las dos, así que el árbol se leía como rayas sueltas en vez de
 * como ramas. Ahora es un único ::before con borde izquierdo + inferior, que nacen del mismo punto.
 *
 * Sin separador punteado entre renglones: con el conector dibujado, la punteada sólo mete ruido. */
.us-row{display:flex;align-items:center;gap:8px;padding:6px 4px;margin-left:calc(var(--ind) * 22px);position:relative}
/* El conector, en dos piezas que se ven como una sola rama:
 *   ::before  la vertical, que baja de arriba y ATRAVIESA el renglón para enlazar con el hermano
 *             siguiente — por eso es continua entre hermanos y no una L suelta por fila.
 *   ::after   la horizontal que entra al nombre, más el codo del último hermano.
 * Ya no hay un <span> separador entre el botón y el nombre: el nombre va pegado a su rama. El
 * ancho (43px) lleva la horizontal desde la vertical del padre hasta 4px antes del texto: 9px de
 * sangría + 26px del hueco del botón + el gap de 8px. Menos que eso y la rama se queda corta. */
.us-row{--rama:#9ca3af}   /* más oscuro que --line: la rama tiene que leerse, no intuirse */
.us-row::before{content:"";position:absolute;left:-9px;top:0;bottom:0;border-left:2px solid var(--rama)}
.us-row.ultimo::before{bottom:50%}                       /* el último corta a media altura: ahí dobla */
.us-row::after{content:"";position:absolute;left:-9px;top:50%;width:43px;border-top:2px solid var(--rama)}
/* Tronco de un ancestro que sigue bajando: k niveles a la izquierda de la rama propia. */
.us-row .us-tronco{position:absolute;top:0;bottom:0;left:calc(-9px - var(--k) * 22px);border-left:2px solid var(--rama)}
/* Cuando la fila tiene botón de abrir/cerrar, la rama termina EN el cuadrito (borde izquierdo del
 * icono, a 9px), no lo atraviesa: medido, la horizontal de 35px cruzaba el icono de lado a lado y
 * se leía como tachado. El botón sube por encima con fondo opaco por si algún pixel se cuela. */
.us-row.padre::after{width:18px}
.us-row .us-tg{position:relative;z-index:1}
.us-row .us-tg i,.us-row .us-tg svg{background:var(--bg);border-radius:3px}
.us-row[style*="--ind:0"]::before,.us-row[style*="--ind:0"]::after{display:none}
.us-row b{font-size:14px} .us-row small{color:var(--muted);font-variant-numeric:tabular-nums} .us-n{font-style:normal;background:var(--soft);border-radius:999px;padding:1px 8px;font-size:11px}
/* Lado derecho del renglón: conteo de hijos, etiquetas y el lápiz. El árbol compacto no tenía
 * forma de editar —había que irse al organigrama y buscar la tarjeta—; el lápiz va al final de
 * cada renglón, chico pero con 36px de toque. */
.us-row .us-der{margin-left:auto;display:flex;align-items:center;gap:6px;flex:none}
/* El ÁREA que encabeza (en lugar del teléfono): toma el espacio que sobra y se corta con puntos suspensivos, así la fila no crece ni empuja el conteo y el lápiz. */
.us-row .us-area{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#0f766e;font-weight:600;font-size:12.5px}
.us-row .us-area .bi{font-size:11px;opacity:.75}   /* cliente / dependencia: el nivel de la plataforma, discreto dentro del recorte */
.us-row .us-area:empty{flex:1 1 auto}
.us-row .us-edit{width:36px;height:36px;margin:-6px -4px -6px 0;border:0;background:transparent;color:var(--muted);border-radius:8px;display:grid;place-items:center;padding:0;cursor:pointer;flex:none}
.us-row .us-edit svg,.us-row .us-edit i{font-size:15px;width:15px;height:15px} .us-row .us-edit:active{background:var(--soft);color:var(--brand)}
.us-form h3{margin:0 0 6px;display:flex;align-items:center;gap:8px} .us-form .meta{margin-bottom:10px} .us-tel{display:flex;gap:6px} .us-tel select{flex:0 0 110px} .us-tel input[readonly]{background:var(--soft)} .us-telver{display:flex;align-items:center;gap:8px;margin:6px 0 2px;flex-wrap:wrap}
/* Paso «¿qué apps va a usar?»: sólo aparece al intentar dar de alta sin marcar ninguna. Esconde el
 * resto del formulario y trae el bloque de acceso al frente, en la misma hoja (sin apilar modales). */
.us-form.paso-apps > :not(.us-paso){display:none}
.us-paso h3{margin:0 0 6px}
.us-paso .meta{margin:0 0 10px}
.us-paso .us-paso-apps{margin:0 0 4px}
.us-paso .us-paso-sin{width:100%;margin-top:8px;color:var(--muted);font-weight:500}
.us-perm{display:grid;gap:4px}
/* Sin ancho explícito, el checkbox heredaba el min-height:48px de los inputs del formulario y se
 * veía enorme. Aquí se fija a tamaño de casilla y se le da su propio tacto. */
.us-perm-row{display:grid;grid-template-columns:1fr 22px 26px 132px auto;gap:8px;align-items:center;
  padding:6px 8px;border-radius:8px;border:1px solid transparent}
/* Botón «?» junto al combo de rol: abre qué hace cada nivel en esa app. Discreto pero con 30px de
 * toque — va entre el nombre de la app y su selector, en una fila ya apretada. */
/* Un solo nivel posible: el select se ve como etiqueta, no como algo que elegir. */
.us-perm-row select[data-fijo]{pointer-events:none;background:var(--soft);border-color:transparent;color:var(--muted)}
.us-roles-tope{margin:0 0 8px;line-height:1.4}
.us-ayuda{width:22px;height:22px;flex:none;padding:0;border:1.5px solid var(--line);background:var(--bg);
  color:var(--muted);border-radius:50%;font:700 12px/1 inherit;cursor:pointer;display:grid;place-items:center}
.us-ayuda:hover,.us-ayuda:focus-visible{border-color:var(--accent);color:var(--accent)}
.us-ojo{width:26px;height:26px;padding:0;border:0;background:none;color:var(--accent,#0369a1);cursor:pointer;display:grid;place-items:center} .us-ojo svg{width:17px;height:17px} .us-ojo.off{color:#94a3b8}
.us-roles{display:grid;gap:10px;margin:4px 0 2px}
.us-rol{padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.us-rol b{font-size:14.5px}
.us-rol-n{color:var(--muted);font-size:11.5px;margin-left:6px}
.us-rol p{margin:4px 0 0;font-size:13px;color:var(--muted);line-height:1.4}
.us-rol-bk{display:flex;gap:6px;align-items:flex-start}
.us-rol-bk svg{width:14px;height:14px;flex:none;margin-top:2px}
.us-roles-pie{line-height:1.45}
.us-perm-row.on{background:#f0f9ff;border-color:#bae6fd}
.us-perm-row label{display:flex;gap:9px;align-items:center;font-size:14px;cursor:pointer;min-width:0}
.us-perm-row label input[type=checkbox]{flex:0 0 auto;width:18px;height:18px;min-height:0;margin:0;accent-color:var(--accent);cursor:pointer}
.us-perm-row select{min-height:38px;padding:6px 8px;font-size:13px}
.us-perm-row input[type=number]{width:64px;min-height:38px;padding:6px 8px;font-size:13px}
.us-perm-ayuda{display:block;margin:-2px 0 8px}
.us-perm-row select:disabled,.us-perm-row input:disabled{opacity:.35;background:var(--soft);cursor:not-allowed}
.us-perm-row:not(.on) label{color:var(--muted)}

/* entrega cooperativa: coordinación por archivo sin señal */
.coop-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 90px;padding:10px;border:1px dashed var(--line);border-radius:12px;background:#fafafa}
.coop-bar .meta{flex-basis:100%;font-size:12px}
/* coordinación por QR */
.coop-bar .seg{display:flex;background:var(--soft);border-radius:999px;padding:3px}.coop-bar .seg button{border:0;background:transparent;border-radius:999px;padding:6px 10px;display:inline-flex;align-items:center;gap:5px;font-weight:600;font-size:13px;color:#374151}.coop-bar .seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 2px rgba(0,0,0,.12)}.coop-bar .seg svg{width:15px;height:15px}
.qrflow .sheet{max-width:440px}.qr-box{text-align:center;padding:6px 0}.qr-img{width:min(80vw,340px);height:auto;image-rendering:pixelated;border:6px solid #fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.qr-meta{font-size:13px;color:#374151;margin:10px 0;text-align:center;line-height:1.4}
.qr-cam{position:relative;background:#000;border-radius:12px;overflow:hidden;aspect-ratio:1/1}.qr-cam video{width:100%;height:100%;object-fit:cover}
.qr-mira{position:absolute;inset:14%;border:3px solid var(--gold);border-radius:14px;box-shadow:0 0 0 999px rgba(0,0,0,.35);animation:qr-mira 1.6s ease-in-out infinite}@keyframes qr-mira{50%{inset:12%}}

/* ---- Uniformes · Transporte (v1.13) ---- */
.tr-tabs{display:flex;gap:6px;margin-bottom:12px}.tr-tabs button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:10px 8px;font-weight:700;font-size:14px;color:#374151;cursor:pointer}
.tr-tabs button.on{background:var(--brand);border-color:var(--brand);color:#fff}.tr-tabs button svg,.tr-tabs button .bi{width:16px;height:16px}
.tr-tabs em{font-style:normal;background:var(--danger);color:#fff;border-radius:999px;font-size:11px;padding:1px 6px}.tr-tabs em:empty{display:none}
.tr-sec{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:16px 0 6px}
.tr-card .meta{margin-top:3px}.tr-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tr-acts:empty{display:none}.btn.wa{background:#dcfce7;color:#166534}
.tr-origen{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151;background:var(--soft);border-radius:8px;padding:10px 12px;margin-bottom:10px}
.tr-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:700;font-size:13px}.tr-switch input{display:none}.tr-switch span{width:44px;height:26px;border-radius:13px;background:#cbd5e1;position:relative;transition:.2s}.tr-switch span:after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.2s}
.tr-switch input:checked+span{background:var(--ok)}.tr-switch input:checked+span:after{left:21px}.tr-switch em{font-style:normal;color:#374151}
.stt.tr-abierta{background:#fef3c7;color:#92400e}.stt.tr-aceptada{background:#dbeafe;color:#1e40af}.stt.tr-en_camino{background:#ede9fe;color:#5b21b6}.stt.tr-a_bordo{background:#cffafe;color:#155e75}.stt.tr-completada{background:#dcfce7;color:#166534}.stt.tr-cancelada{background:var(--soft);color:#374151}

/* ===== PASES DE SALIDA ===== */
/* Pills de categoría de vehículo al autorizar un pase. Una sola elección (se comportan como
 * radios): «Cualquiera», las categorías del catálogo con su conteo, y «Sin vehículo». */
.pv-veh{border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px}
.pv-veh > label{display:block;font-size:13px;font-weight:700;margin-bottom:8px}
.pv-pills{display:flex;flex-wrap:wrap;gap:6px}
.pv-pill{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border:1.5px solid var(--line);
  background:var(--bg);color:var(--fg);border-radius:999px;font:inherit;font-size:13px;cursor:pointer}
.pv-pill svg{width:14px;height:14px}
.pv-pill i{font-style:normal;font-size:11px;font-weight:700;background:var(--soft);border-radius:999px;padding:1px 6px}
.pv-pill.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pv-pill.on i{background:rgba(255,255,255,.25)}
.pv-pill.pv-no.on{background:var(--muted);border-color:var(--muted)}
.pv-veh .meta{margin-top:8px;display:block;line-height:1.4}
.pase-saludo{margin:0 0 12px;color:#374151}
.pase-nuevo{margin-bottom:14px;font-size:17px;min-height:54px;border-radius:14px}
.pase-stats{grid-template-columns:repeat(3,1fr)}
.pase-stat{display:block;color:inherit;text-align:center;padding:12px 6px} .pase-stat .ic{display:block;color:var(--brand);margin-bottom:2px} .pase-stat .ic .bi{font-size:20px} .pase-stat b{font-size:24px} .pase-stat small{font-size:11px;line-height:1.2;display:block}
.sec-h .cnt{font-style:normal;background:var(--soft);color:#374151;border-radius:999px;padding:1px 8px;font-size:11px;margin-left:6px}
.pase-vacio{margin:0 0 8px}
.pase{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.pase:active{background:var(--soft)} .pase>svg{width:20px;height:20px;color:#9ca3af;flex:none}
.pase-ic{width:42px;height:42px;border-radius:12px;background:#eef2ff;color:#1d4ed8;display:flex;align-items:center;justify-content:center;flex:none} .pase-ic .bi{font-size:20px}
.pase.en_curso .pase-ic,.pase.vencido .pase-ic{background:#ede9fe;color:#5b21b6} .pase.vencido .pase-ic{background:#fee2e2;color:#991b1b} .pase.cerrado .pase-ic{background:#dcfce7;color:#166534} .pase.solicitado .pase-ic{background:#fef3c7;color:#92400e}
.pase-motivo{font-size:14px;color:#374151}
.pase-det .kv{margin-top:12px} .pase-av{width:44px;height:44px;border-radius:50%;background:#1d4ed8;color:#fff;font-weight:800;font-size:18px;display:flex;align-items:center;justify-content:center;flex:none;text-transform:uppercase}
.pase-qr{display:flex;align-items:center;gap:16px;margin:14px 0 4px;padding:12px;background:var(--soft);border-radius:12px} .pase-qr canvas{width:120px;height:120px;image-rendering:pixelated;background:#fff;border-radius:8px;padding:4px}
.pase-qr small{display:block;color:var(--muted);font-size:12px} .pase-cod{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:26px;letter-spacing:3px;margin:4px 0}
.pase-acciones{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:12px 0}
.timeline{border-left:2px solid var(--line);margin-left:14px;padding-left:18px} .tl{position:relative;padding:4px 0 14px} .tl-ic{position:absolute;left:-30px;top:2px;width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;color:#374151}
.tl.autorizado .tl-ic,.tl.regreso .tl-ic{border-color:var(--ok);color:var(--ok)} .tl.rechazado .tl-ic,.tl.cancelado .tl-ic,.tl.vencido .tl-ic{border-color:var(--danger);color:var(--danger)} .tl.salida .tl-ic{border-color:#5b21b6;color:#5b21b6}
.tl b{display:block;font-size:14px} .tl small{color:var(--muted);font-size:12px} .tl p{margin:4px 0 0;font-size:14px;color:#374151;font-style:italic}
.pase-filtros input[type=date]{border:1.5px solid var(--line);border-radius:8px;padding:8px;min-height:44px;background:#fff;flex:1}
.pase-caseta.vencido{border-color:#fca5a5;background:#fff7f7} .pase-caseta code{font-family:ui-monospace,Menlo,monospace;font-weight:700;letter-spacing:1px}
.pase-video{width:100%;border-radius:12px;background:#000;aspect-ratio:1;object-fit:cover}
.chip input{vertical-align:middle;margin-right:4px;flex:none;width:16px;height:16px}
.vinc-ok{display:flex;align-items:center;gap:12px;background:#e8f3ea;border-radius:12px;padding:12px;margin:8px 0 12px} .vinc-ok .bi{font-size:28px;color:#2f7a3a} .vinc-ok code{display:block;font-family:ui-monospace,Menlo,monospace;color:#374151}

/* ===== VIÁTICOS ===== */
.vt-bolsa{padding:8px 0;border-top:1px solid var(--line)} .vt-bolsa:first-of-type{border-top:0} .vt-bolsa small{color:var(--muted);font-size:12px}
.vt-disp{font-size:13px;font-weight:700;color:#166534} .vt-disp.cero{color:#991b1b}
.vt-barra{height:8px;border-radius:4px;background:#e5e7eb;overflow:hidden;margin:6px 0 4px} .vt-barra.mini{height:5px;margin:6px 0 2px} .vt-barra i{display:block;height:100%;background:var(--ok)} .vt-barra i.ambar{background:var(--warn)} .vt-barra i.rojo{background:var(--danger)}
.vt-tarde{color:var(--danger);font-weight:700}
.pase-ic.vt-ic-abierta{background:#fef3c7;color:#b45309} .pase-ic.vt-ic-en_comprobacion,.pase-ic.vt-ic-en_revision{background:#ede9fe;color:#5b21b6} .pase-ic.vt-ic-cerrada{background:#dcfce7;color:#166534} .pase-ic.vt-ic-por_autorizar{background:#fef3c7;color:#92400e} .pase-ic.vt-ic-cancelada{background:#fee2e2;color:#991b1b}
.vt-thumb{width:56px;height:56px;border-radius:10px;background:#f3f4f6 center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:#9ca3af;flex:none} .vt-thumb .bi{font-size:22px}
.vt-monto{font-variant-numeric:tabular-nums} .vt-band{background:#fef3c7;color:#92400e;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700}
.vt-just{margin:6px 0;font-size:14px;color:#374151} .vt-adeudo{border-color:#fca5a5;background:#fff7f7}
.vt-tabs{margin:12px 0 8px} .vt-part{padding:12px} .vt-bolsa-acts{gap:6px;margin-top:6px;flex-wrap:wrap}
.vt-informe{margin-top:8px;font-size:14px} .vt-informe summary{cursor:pointer;font-weight:600;color:#374151} .vt-informe p{white-space:pre-wrap;color:#374151}
.vt-hash{font-family:ui-monospace,Menlo,monospace;font-size:12px}
.vt-persona{padding:12px} .vt-asig{gap:6px;margin:6px 0} .vt-asig select,.vt-asig input{border:1.5px solid var(--line);border-radius:8px;padding:8px;min-height:42px;background:#fff;min-width:0}
.vt-cam{display:flex;flex-direction:column;align-items:center;gap:6px;border:2px dashed #b45309;border-radius:16px;padding:28px 16px;margin:8px 0 12px;background:#fffbeb;color:#b45309;cursor:pointer;text-align:center} .vt-cam .bi{font-size:40px} .vt-cam b{color:#111;font-size:17px} .vt-cam small{color:var(--muted)}
.vt-galeria{position:relative;margin-bottom:10px} .vt-galeria img{width:100%;max-height:360px;object-fit:contain;border-radius:12px;background:#111;cursor:zoom-in} .vt-galeria label{position:absolute;right:8px;bottom:8px}
.vt-sinfoto{height:120px;border-radius:12px;background:var(--soft);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af} .vt-sinfoto .bi{font-size:32px}
.vt-banderas{display:grid;gap:6px;margin-bottom:10px} .vt-bandera{background:#fef3c7;color:#92400e;border-radius:10px;padding:8px 12px;font-size:14px;display:flex;gap:8px;align-items:flex-start} .vt-bandera.info{background:#dbeafe;color:#1e40af} .vt-bandera .bi{flex:none;margin-top:2px}
.vt-chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px} .vt-chip{flex:none;border:1.5px solid var(--line);border-radius:12px;padding:8px 12px;background:#fff;text-align:left;cursor:pointer;min-width:120px} .vt-chip b{display:block;font-size:14px} .vt-chip small{color:#166534;font-size:12px} .vt-chip.on{border-color:#b45309;background:#fffbeb} .vt-chip.off{opacity:.5} .vt-chip.off small{color:#991b1b}
.vt-mas summary{cursor:pointer;color:#374151;font-weight:600;margin:8px 0} .vt-conf-alta{border-color:var(--ok)!important;background:#f0fdf4} .vt-conf-media{border-color:var(--warn)!important;background:#fffbeb}
.vt-decl{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:#374151;margin-top:10px} .vt-decl input{margin-top:3px;width:20px;height:20px;flex:none}
.vt-rev{padding:12px} .vt-liq{padding:12px} .vt-liq-bolsa{border-top:1px solid var(--line);padding:8px 0}
.vt-cifras{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted);margin:4px 0} .vt-cifras b{display:block;color:var(--fg);font-size:14px} .vt-pos{color:#b45309!important} .vt-neg{color:#1e40af!important}
.vt-liq-dec{border:1px dashed var(--line);border-radius:10px;padding:8px;margin:8px 0} .vt-liq-dec>small{display:block;color:var(--muted);margin-bottom:4px}
.seg button.on,.btn.on{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
/* Viáticos · offcanvas de captura en vivo */
.vt-camov{position:fixed;inset:0;z-index:60;background:#000;display:flex;flex-direction:column;animation:up .2s ease-out}
.vt-camtop{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--sa-t)) 14px 10px;color:#fff}
.vt-camtop b{flex:none;display:flex;align-items:center;gap:8px} .vt-camtop small{flex:1;color:rgba(255,255,255,.65);font-size:11.5px;line-height:1.2} .vt-camtop .icon-btn{color:#fff;width:40px;height:40px}
.vt-camvista{flex:1;position:relative;min-height:0} .vt-camvista video,.vt-camvista img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.vt-camerr{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;padding:30px;text-align:center;font-size:15px}
.vt-cambar{display:flex;align-items:center;justify-content:center;gap:14px;padding:14px 16px calc(18px + var(--sa-b))}
.vt-camdisparo{width:72px;height:72px;border-radius:50%;border:5px solid #fff;background:rgba(255,255,255,.25);cursor:pointer;flex:none}
.vt-camdisparo:active{background:#fff}
.vt-camsec{width:52px;height:52px;border-radius:50%;border:1.5px solid rgba(255,255,255,.4);background:none;color:#fff;flex:none;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer}
body.vt-camopen .hdr,body.vt-camopen .nav,body.vt-camopen .toasts,body.vt-camopen .notices,body.vt-camopen .fab{visibility:hidden}

/* ===== VEHÍCULOS ===== */
.vh-thumb{border-radius:10px;width:64px;height:48px}
.vh-fuel{display:inline-block;width:44px;height:9px;border:1.5px solid #9ca3af;border-radius:3px;vertical-align:middle;overflow:hidden;background:#fff}
.vh-fuel i{display:block;height:100%;background:var(--ok)} .vh-fuel i.ambar{background:var(--warn)} .vh-fuel i.rojo{background:var(--danger)}
.vh-alerta{color:#92400e}
.pase-ic.vh-ic-solicitado{background:#fef3c7;color:#92400e} .pase-ic.vh-ic-autorizado{background:#dbeafe;color:#1e40af} .pase-ic.vh-ic-en_curso{background:#ede9fe;color:#5b21b6} .pase-ic.vh-ic-cerrado{background:#dcfce7;color:#166534} .pase-ic.vh-ic-rechazado,.pase-ic.vh-ic-cancelado{background:#fee2e2;color:#991b1b}
.vh-hero{position:relative;margin-bottom:8px} .vh-hero img{width:100%;max-height:280px;object-fit:cover;border-radius:14px;background:#111;cursor:zoom-in} .vh-hero .btn{position:absolute;right:8px;bottom:8px}
.vh-tira{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px} .vh-tira .vt-thumb{width:84px;height:63px;flex:none}
.vh-dano.reparado{opacity:.6}
.vh-gps{border-color:#c4b5fd;background:#f5f3ff} .vh-gps .bi-broadcast{font-size:22px;color:#5b21b6}
.vh-octavos{display:flex;gap:4px} .vh-octavos button{flex:1;min-height:42px;border:1.5px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font-weight:700} .vh-octavos button.on{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.vh-mapa{height:min(62vh,520px);border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#e5e7eb}

/* ===== AGENDA ===== */
.ag-sel{border:0;background:var(--soft);font:inherit;font-size:13px;padding:6px 10px;border-radius:999px;max-width:60vw}
.ag-nav-sem{gap:6px;margin-bottom:8px} .ag-nav-sem .icon-btn{width:40px;height:40px;color:#374151}
.ag-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.ag-dia{border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:7px 2px 5px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;font:inherit}
.ag-dia small{font-size:10px;text-transform:uppercase;color:var(--muted)} .ag-dia b{font-size:17px}
.ag-dia.on{background:#1e3a8a;border-color:#1e3a8a;color:#fff} .ag-dia.on small{color:#c7d2fe} .ag-dia.hoy:not(.on){border-color:#b45309}
.ag-pts{display:flex;gap:2px;min-height:5px} .ag-pts i{width:5px;height:5px;border-radius:50%;display:block}
.ag-ev{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:5px solid var(--c,#6b7280);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.ag-ev:active{background:var(--soft)} .ag-ev.off{opacity:.55} .ag-ev>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.ag-hora{text-align:center;min-width:52px;flex:none} .ag-hora b{display:block;font-size:15px} .ag-hora small{color:var(--muted);font-size:11px}
.ag-tipos{display:flex;gap:6px;flex-wrap:wrap} .ag-tipo{border:1.5px solid var(--line);border-radius:999px;background:#fff;padding:7px 12px;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer}
.ag-tipo.on{background:var(--c);border-color:var(--c);color:#fff}
.ag-mapa{height:240px;border-radius:12px;overflow:hidden;border:1px solid var(--line);margin:4px 0 10px} .ag-mapa.oculto{display:none}
.ag-alarmas{display:flex;gap:6px;flex-wrap:wrap} .ag-alarmas .chip{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
/* El checkbox dentro de un chip flexible se estiraba hasta volverse enorme: se le fija el tamaño
 * (flex:none, o el contenedor lo crece) y el texto no se parte en varias líneas. */
.ag-alarmas .chip input{flex:none;width:16px;height:16px;margin:0;accent-color:var(--brand,#1f5f2a)}
.ag-alarmas .chip{white-space:nowrap;padding:7px 12px}

/* Resumen de la agenda: numeralia + barras proporcionales.
 * Las barras se comparan DENTRO de su bloque (el mayor manda el 100%): la pregunta útil es «¿qué
 * tipo domina?», no cuántos tipos hay contra cuántos meses. */
.ag-busca{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;padding:10px 12px;margin-bottom:10px}
.ag-busca svg{width:16px;height:16px;color:var(--muted);flex:none} .ag-busca a{margin-left:auto;font-weight:700}
.ag-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;margin-bottom:12px}
.ag-kpi{border:1px solid var(--line);border-radius:14px;background:#fff;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.ag-kpi b{font-size:23px;line-height:1.1} .ag-kpi small{color:var(--muted);font-size:11.5px;line-height:1.2}
.ag-kpi-ic{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:3px;background:color-mix(in srgb,var(--c) 14%,#fff)}
.ag-kpi-ic svg{width:17px;height:17px;color:var(--c)}
.ag-rb{display:grid;grid-template-columns:minmax(70px,34%) 1fr auto;align-items:center;gap:9px;margin-top:8px;font-size:13.5px}
.ag-rb>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .ag-rb>b{min-width:30px;text-align:right;font-variant-numeric:tabular-nums}
.ag-rbar{height:9px;border-radius:999px;background:var(--soft);overflow:hidden}
.ag-rbar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#2563eb,#60a5fa);min-width:3px}
.ag-asis{padding:10px 12px;margin-bottom:6px}
/* Agenda: form con pestañas, cuadrícula de fotos y QR embebido */
.ag-tabs{display:flex;gap:6px;margin:0 0 10px;overflow-x:auto}
.ag-tabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 6px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;color:#374151}
.ag-tabs button.on{background:#1e3a8a;border-color:#1e3a8a;color:#fff}
.ag-tabs button svg{width:15px;height:15px;flex:none}
.ag-fotogrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ag-fototile{aspect-ratio:1;border-radius:12px;border:1px solid var(--line);background:#f3f4f6 center/cover no-repeat}
.ag-fototile.mas{display:flex;align-items:center;justify-content:center;font-size:34px;color:#6b7280;border:2px dashed #cbd5e1;cursor:pointer;background:#fff}
.ag-qrbox{text-align:center;margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.ag-qrbox img{width:min(260px,70vw);border:1px solid var(--line);border-radius:12px}
#m-sel{width:100%}
/* ===== PERMISOS Y VACACIONES ===== */
.pm-sol{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:5px solid var(--c,#6b7280);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.pm-sol:active{background:var(--soft)} .pm-sol>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.pm-ic{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--c,#6b7280) 14%,#fff);color:var(--c,#6b7280);display:flex;align-items:center;justify-content:center;flex:none}
.pm-ic svg{width:19px;height:19px}
.pm-motivo{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70vw}
.pm-tipos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.pm-tipo{border:1.5px solid var(--line);border-radius:14px;background:#fff;padding:12px 6px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.pm-tipo svg{width:22px;height:22px;color:var(--c)} .pm-tipo b{font-size:13.5px} .pm-tipo small{font-size:10.5px;color:var(--muted);line-height:1.25}
.pm-tipo.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 8%,#fff);box-shadow:inset 0 0 0 1px var(--c)}
.pm-saldo{margin-bottom:10px} .pm-saldo-ic{width:38px;height:38px;border-radius:10px;background:#ecfeff;color:#0891b2;display:flex;align-items:center;justify-content:center;flex:none}
.pm-saldo-ic svg{width:20px;height:20px}
.pm-barra{height:7px;border-radius:99px;background:#e5e7eb;margin-top:10px;overflow:hidden} .pm-barra i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#06b6d4,#0891b2)}
.pm-stat{display:flex;flex-direction:column;align-items:center;gap:2px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 4px;color:inherit}
.pm-stat svg{width:17px;height:17px;color:#6b7280} .pm-stat b{font-size:19px} .pm-stat small{font-size:10.5px;color:var(--muted);text-align:center}
.oculto{display:none!important}
/* ===== INVENTARIOS ===== */
.iv-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.iv-card:active{background:var(--soft)} .iv-card>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.iv-ic{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--c,#0f766e) 14%,#fff);color:var(--c,#0f766e);display:flex;align-items:center;justify-content:center;flex:none}
.iv-ic svg{width:19px;height:19px} .iv-ic.sm{width:30px;height:30px} .iv-ic.sm svg{width:15px;height:15px}
.iv-stock{font-weight:800;font-size:14px} .iv-stock.bajo{color:#dc2626}
.iv-scan{margin-bottom:12px} .iv-scan input{border:1.5px solid var(--line);border-radius:10px;padding:10px;font:inherit;min-width:0}
.iv-mov{padding:9px 12px;margin-bottom:6px}
.iv-foto{width:86px;height:86px;border-radius:12px;border:1px solid var(--line);background:#f8fafc center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:#cbd5e1;flex:none;cursor:pointer}
.iv-foto svg{width:34px;height:34px}
.iv-tot{font-size:15px;margin:2px 0} .iv-tot.bajo b{color:#dc2626}
.iv-specs{background:#fef9c3;border:1px solid #fde68a;border-radius:10px;padding:8px 10px;font-size:13.5px;margin:10px 0 0}
.iv-linea{display:flex;align-items:center;gap:6px;margin:6px 0} .iv-linea input{border:1.5px solid var(--line);border-radius:10px;padding:9px;font:inherit}
.iv-sug{justify-content:flex-start;margin-top:6px}
.iv-qrbox{text-align:center} .iv-qrbox canvas{width:min(300px,76vw);height:auto;image-rendering:pixelated;border:1px solid var(--line);border-radius:12px;padding:8px;background:#fff}
/* ===== DIRECTORIO ===== */
.dir-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.dir-card:active{background:var(--soft)} .dir-card>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.dir-av{width:40px;height:40px;border-radius:50%;background:#0369a1;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:none}
.dir-av.xl{width:76px;height:76px;font-size:26px;margin:0 auto 10px}
.dir-ic{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--c,#475569) 14%,#fff);color:var(--c,#475569);display:flex;align-items:center;justify-content:center;flex:none}
.dir-ic svg{width:19px;height:19px}
.dir-mini{color:#059669;margin-right:2px} .dir-mini svg{width:14px;height:14px}
.dir-hint{text-align:center;color:var(--muted)} .dir-hint svg{width:22px;height:22px;display:block;margin:0 auto 6px}
.dir-nodo{display:flex;align-items:center;gap:8px;padding:9px 10px 9px calc(10px + var(--n,0) * 18px);border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:6px;color:inherit}
.dir-nodo>svg:first-child{width:17px;height:17px;color:var(--c,#475569);flex:none} .dir-nodo>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.dir-nodo small svg{width:11px;height:11px}
.dir-migas{margin:-4px 0 10px} .dir-migas a{color:#0369a1;font-weight:600}
.dir-ficha{text-align:center} .dir-ficha h2{margin:2px 0 2px;font-size:20px}
.dir-acciones{display:flex;justify-content:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.dir-acc{display:flex;flex-direction:column;align-items:center;gap:4px;border:1.5px solid var(--line);border-radius:14px;background:#fff;padding:10px;min-width:76px;color:#0f172a;font:inherit;cursor:pointer}
.dir-acc svg{width:20px;height:20px;color:#0369a1} .dir-acc small{font-size:11px;color:var(--muted)}
.dir-nodo b{display:block;line-height:1.25} .dir-nodo small{display:block}
/* ===== PROGRAMAS / PADRÓN ÚNICO ===== */
.pb-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.pb-card:active{background:var(--soft)} .pb-card>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.pb-av{width:40px;height:40px;border-radius:50%;background:#be123c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:none}
.pb-av.xl{width:54px;height:54px;font-size:18px}
.pb-ic{width:38px;height:38px;border-radius:10px;background:#fdf2f4;color:#be123c;display:flex;align-items:center;justify-content:center;flex:none}
.pb-ic svg{width:19px;height:19px}
.pb-aviso{border:1.5px dashed #be123c;background:#fdf2f4;margin-bottom:10px} .pb-aviso>svg{width:16px;height:16px;color:#be123c;vertical-align:-3px}
.pb-doc{position:relative} .pb-doc small{display:block;font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.3}
.pb-doc .icon-btn{position:absolute;top:4px;right:4px;background:#fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.25);width:26px;height:26px}
.pb-toggle{display:flex;align-items:center;gap:10px;padding:12px;margin-bottom:8px;cursor:pointer}
.pb-toggle input{width:22px;height:22px;accent-color:#be123c;flex:none}
/* ===== CARTOGRAFÍA ===== */
body.ct-full .view{padding:0} body.ct-full .nav{z-index:1200}
.ct-mapa{position:fixed;inset:56px 0 64px;z-index:1}
/* BUSCADOR flotante arriba: es lo primero que se usa en un mapa («sección 354», una colonia). */
.ct-buscar{position:fixed;top:66px;left:12px;right:12px;z-index:1100;display:flex;align-items:center;gap:8px;
  background:#fff;border-radius:999px;padding:6px 8px 6px 16px;box-shadow:0 4px 18px rgba(0,0,0,.18)}
.ct-buscar>svg{width:19px;height:19px;color:#94a3b8;flex:none}
.ct-buscar input{flex:1;min-width:0;border:0;outline:0;font:inherit;font-size:16px;background:transparent}
.ct-ir{width:38px;height:38px;flex:none;border:0;border-radius:50%;background:var(--soft);color:#334155;
  display:grid;place-items:center;cursor:pointer}
.ct-ir svg{width:18px;height:18px}
.ct-status{position:fixed;top:118px;left:12px;z-index:1100;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.18)}
/* Controles apilados al costado, como los del mapa de oficialía. Sin FAB: en un mapa el pulgar va
   a los controles, y el botón de la guía tapaba el sur del encuadre. */
.ct-botones{position:fixed;right:12px;top:50%;transform:translateY(-50%);z-index:1100;
  display:flex;flex-direction:column;gap:10px}
.ct-ctl{width:52px;height:52px;border-radius:16px;border:0;background:#fff;color:#334155;
  box-shadow:0 3px 12px rgba(0,0,0,.22);display:grid;place-items:center;cursor:pointer;transition:transform .12s}
/* El botón del pin se queda ENCENDIDO mientras espera que toques el mapa: en un teléfono no hay
   forma de sostener nada mientras se apunta, así que el estado tiene que verse. */
.ct-ctl.armado{background:#1d4ed8;color:#fff;box-shadow:0 0 0 4px rgba(29,78,216,.28)}
.ct-ctl:active{transform:scale(.94)}
.ct-ctl svg{width:22px;height:22px}
.ct-ctl#yo svg{color:#2563eb} .ct-ctl#pin svg{color:#b45309}
/* CAJÓN con manija: cerrado no tapa nada y su manija invita a jalarlo. */
/* CAJÓN: panel y manija se mueven JUNTOS —la manija es el tirador del cajón, no un botón pegado al
   borde— así que la traslación va en el contenedor. Para que la manija no se salga de la pantalla
   con el cajón cerrado, el contenedor se corre sólo el ancho del panel y la manija queda asomando
   a su derecha. (Antes se escondía con margin-left en el panel y la manija se quedaba clavada en
   el borde: se perdía el efecto de cajón.) */
.ct-cajon{position:fixed;left:0;top:56px;bottom:64px;z-index:1150;display:flex;align-items:center;
  pointer-events:none;transform:translateX(calc(-1 * min(330px,84vw)));
  transition:transform .28s cubic-bezier(.22,1,.36,1)}
.ct-cajon.abierto{transform:translateX(0)}
.ct-cajon>*{pointer-events:auto}
/* el panel se atenúa al cerrarse: sin esto se ve deslizarse su contenido fuera de cuadro */
.ct-cajon-in{opacity:0;transition:opacity .2s ease .06s}
.ct-cajon.abierto .ct-cajon-in{opacity:1}
.ct-cajon-in{width:min(330px,84vw);height:100%;background:#fff;overflow-y:auto;
  border-radius:0 16px 16px 0;box-shadow:8px 0 30px rgba(0,0,0,.22)}
.ct-cajon.abierto .ct-manija{border-radius:0 14px 14px 0}
.ct-cajon-h{position:sticky;top:0;background:#fff;display:flex;align-items:center;gap:6px;
  padding:12px 14px;border-bottom:1px solid var(--line);z-index:1}
.ct-manija{flex:none;width:34px;height:92px;border:0;cursor:pointer;background:var(--accent);color:#fff;
  border-radius:0 14px 14px 0;box-shadow:4px 0 14px rgba(0,0,0,.22);align-self:center;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.ct-manija-barra{width:4px;height:26px;border-radius:2px;background:#ffffffcc}
.ct-manija svg{width:16px;height:16px;transition:transform .26s}
.ct-cajon.abierto .ct-manija svg{transform:rotate(180deg)}
.ct-capas{padding:10px 14px calc(14px + env(safe-area-inset-bottom))}
.ct-grupo{display:block;text-transform:uppercase;letter-spacing:1px;font-size:10.5px;color:var(--muted);margin:10px 0 4px}
/* Grupos colapsables: con 16 capas más las propias, todo abierto obliga a desplazarse. */
.ct-gr{border-bottom:1px solid var(--line)}
.ct-gr>summary{display:flex;align-items:center;gap:8px;padding:11px 2px;cursor:pointer;list-style:none;
  text-transform:uppercase;letter-spacing:1px;font-size:10.5px;font-weight:700;color:var(--muted)}
.ct-gr>summary::-webkit-details-marker{display:none}
.ct-gr>summary svg{width:14px;height:14px;transition:transform .2s;flex:none}
.ct-gr[open]>summary svg{transform:rotate(180deg)}
.ct-gr>summary small{text-transform:none;letter-spacing:0;font-weight:400}
/* con capas encendidas el título se marca: se ve sin abrir el grupo */
.ct-gr.con-activas>summary{color:var(--accent)}
.ct-gr .ct-capa:last-child{border-bottom:0}
.ct-capa{display:flex;align-items:center;gap:9px;padding:8px 2px;cursor:pointer;border-bottom:1px dashed #f1f5f9}
.ct-capa input{width:19px;height:19px;accent-color:#166534;flex:none}
.ct-capa i{width:14px;height:14px;border-radius:4px;flex:none;opacity:.85}
/* capa que aún no está en el espejo: se lista para que se vea qué falta, pero no se puede encender */
.ct-capa.no-disp{opacity:.45;cursor:not-allowed}
.ct-capa.no-disp input{cursor:not-allowed}
.ct-pop small.meta{font-size:10.5px} .ct-pop{display:flex;flex-direction:column;gap:5px}
.leaflet-popup-content{margin:10px 12px;font:inherit}
/* ===== ASISTENCIA (checador) ===== */
.as-circulo{width:min(240px,64vw);aspect-ratio:1;border-radius:50%;margin:6px auto 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#fff;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.18);transition:background .3s}
.as-circulo b{font-size:44px;font-variant-numeric:tabular-nums;letter-spacing:1px}
.as-circulo span{font-size:14.5px;font-weight:700} .as-circulo small{font-size:11px;opacity:.85;padding:0 18px}
.as-circulo.ok{background:radial-gradient(circle at 30% 25%,#22c55e,#15803d)}
.as-circulo.warn{background:radial-gradient(circle at 30% 25%,#f59e0b,#b45309)}
.as-circulo.bad{background:radial-gradient(circle at 30% 25%,#94a3b8,#dc2626)}
.as-señales{padding:6px 12px;margin-bottom:10px}
.as-señal{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px dashed #f1f5f9;font-size:13.5px;color:#6b7280}
.as-señal:last-child{border-bottom:0}
.as-señal>svg:first-child{width:17px;height:17px;flex:none} .as-señal>svg:last-child{width:16px;height:16px;flex:none}
.as-señal.si{color:#166534} .as-señal.si svg:last-child{color:#16a34a}
.as-señal.no{color:#991b1b} .as-señal.no svg:last-child{color:#dc2626}
.as-boton{width:100%;min-height:58px;border:0;border-radius:16px;font:inherit;font-size:17px;font-weight:800;color:#fff;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.as-boton svg{width:22px;height:22px}
.as-boton.ok{background:linear-gradient(135deg,#16a34a,#15803d)} .as-boton.warn{background:linear-gradient(135deg,#f59e0b,#b45309)}
.as-boton.bad,.as-boton:disabled{background:#cbd5e1;color:#64748b;box-shadow:none;cursor:not-allowed}
.as-che{padding:9px 12px;margin-bottom:6px}
.as-tipo{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:none}
.as-tipo svg{width:16px;height:16px}
.as-tipo.entrada{background:#dcfce7;color:#16a34a} .as-tipo.salida{background:#dbeafe;color:#2563eb}
.ct-sel{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:9px 10px;font:inherit;margin:4px 0;background:#fff}
/* ===== DECLARACIÓN PATRIMONIAL ===== */
.dp-hero{text-align:center} .dp-hero>svg{width:44px;height:44px;color:#7f1d1d;margin:6px auto} .dp-hero h2{margin:2px 0 6px}
.dp-tipos{display:grid;gap:8px} .dp-tipo{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer}
.dp-tipo input{width:20px;height:20px;accent-color:#7f1d1d;flex:none} .dp-tipo b{flex:1} .dp-tipo small{color:var(--muted)}
.dp-tablero{display:flex;gap:14px;align-items:center;margin-bottom:10px}
.dp-anillo{width:92px;height:92px;border-radius:50%;background:conic-gradient(#16a34a calc(var(--p)*1%),#e5e7eb 0);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;position:relative}
.dp-anillo::before{content:'';position:absolute;inset:9px;border-radius:50%;background:#fff}
.dp-anillo b,.dp-anillo small{position:relative;z-index:1} .dp-anillo b{font-size:22px} .dp-anillo small{color:var(--muted);font-size:11px}
.dp-sec{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:5px solid var(--c,#94a3b8);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:7px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.dp-sec-ic{width:36px;height:36px;border-radius:10px;background:color-mix(in srgb,var(--c) 13%,#fff);color:var(--c);display:flex;align-items:center;justify-content:center;flex:none}
.dp-sec-ic svg{width:18px;height:18px} .dp-sec .tag svg{width:12px;height:12px;vertical-align:-2px}
.dp-acuse{display:flex;gap:10px;align-items:flex-start;border:1.5px solid #16a34a;background:#f0fdf4;margin-bottom:10px}
.dp-acuse>svg{width:26px;height:26px;color:#16a34a;flex:none}
.dp-hash{display:block;font-size:10.5px;word-break:break-all;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin-top:4px}
.dp-ayuda{border:1px dashed var(--line);border-radius:10px;padding:8px 12px;margin-bottom:10px;color:var(--muted);font-size:13.5px}
.dp-ayuda summary{cursor:pointer;font-weight:600;color:#374151} .dp-ayuda svg{width:14px;height:14px;vertical-align:-2px}
.dp-aplica{margin-bottom:10px}
.dp-guardado{font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:99px;background:#f1f5f9;color:#64748b;white-space:nowrap}
.dp-guardado.guardado{background:#dcfce7;color:#166534} .dp-guardado.guardando,.dp-guardado.escribiendo{background:#fef9c3;color:#854d0e} .dp-guardado.error{background:#fee2e2;color:#991b1b}
.dp-form{display:grid;grid-template-columns:1fr 1fr;gap:0 12px} .dp-campo{grid-column:span 2}
@media (min-width:480px){.dp-campo:has(input[type=date]),.dp-campo:has(input[inputmode=numeric]),.dp-campo:has(select){grid-column:span 1}}
.dp-lock svg{width:12px;height:12px;color:#92400e;vertical-align:-2px} .dp-req{color:#dc2626;font-style:normal}
.dp-money{display:flex;align-items:center;gap:6px} .dp-money span{font-weight:800;color:#64748b} .dp-money input{flex:1}
.dp-falta{border-radius:10px;padding:9px 12px;font-size:13.5px;background:#fef9c3;color:#854d0e;margin-top:8px}
.dp-falta.ok{background:#dcfce7;color:#166534} .dp-falta svg{width:14px;height:14px;vertical-align:-2px}
.dp-arrastre{border:1.5px dashed #7c3aed;background:#f5f3ff;color:#5b21b6;margin-bottom:8px;font-size:13.5px}
.dp-arrastre svg{width:14px;height:14px;vertical-align:-2px}
.dp-reg{display:flex;align-items:center;gap:8px;border-left:5px solid var(--c,#94a3b8);margin-bottom:7px}
.dp-reg.baja{opacity:.6} .dp-saltos{gap:8px;margin:14px 0}
.dp-hist{max-height:50vh;overflow-y:auto} .dp-mom{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed #f1f5f9}
.dp-tipo{flex-wrap:wrap} .dp-tipo small{flex-basis:100%;padding-left:30px;margin-top:-2px}
/* ===== COMBUSTIBLE ===== */
.cb-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.cb-card.rev{border-left:5px solid #dc2626} .cb-card>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.cb-ic{width:38px;height:38px;border-radius:10px;background:#fef2f2;color:#b91c1c;display:flex;align-items:center;justify-content:center;flex:none}
.cb-ic svg{width:19px;height:19px}
.cb-rend{font-weight:800;color:#166534;font-size:13px;white-space:nowrap}
.cb-uni{padding:10px 12px;margin-bottom:6px}
.cb-alerta{display:flex;gap:10px;align-items:center;border:1.5px solid #dc2626;background:#fef2f2;color:#991b1b;margin-bottom:10px}
.cb-alerta svg{width:22px;height:22px;flex:none;color:#dc2626}
.cb-cruce{margin-bottom:10px} .cb-vs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 6px;text-align:center}
.cb-vs small{display:block;color:var(--muted);font-size:11px} .cb-vs b{font-size:18px} .cb-vs b.mal{color:#dc2626}
.cb-serie{display:flex;align-items:flex-end;gap:6px;height:90px;padding:12px}
.cb-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.cb-bar i{display:block;width:100%;max-width:26px;height:calc(var(--v)*1%);background:linear-gradient(180deg,#f87171,#b91c1c);border-radius:6px 6px 0 0}
.cb-bar small{font-size:10px;color:var(--muted)}
/* ===== TABLERO (escena core) ===== */
.tb-grid{display:grid;gap:12px}
.tb-grupo{border:1px solid var(--line);border-left:5px solid var(--c,#334155);border-radius:14px;background:#fff;padding:10px 12px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.tb-app{display:flex;align-items:center;gap:7px;font-weight:800;font-size:13px;color:var(--c,#334155);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.tb-app svg{width:16px;height:16px}
.tb-grupo .tb-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;padding:8px 4px;border-top:1px dashed #f1f5f9;color:inherit}
.tb-card b{grid-row:span 2;font-size:24px;min-width:54px;text-align:center;color:var(--c,#334155)}
.tb-card span{font-weight:700;font-size:14px} .tb-card small{color:var(--muted);font-size:12px}
/* Disparo de cámara: destello breve que confirma que el cuadro YA quedó congelado */
.vt-camov.flash .vt-camvista::after{content:'';position:absolute;inset:0;background:#fff;opacity:.85;animation:vtflash .18s ease-out forwards;pointer-events:none}
@keyframes vtflash{to{opacity:0}}
.vt-camvista{position:relative}
/* ===== ENTREGA DE APOYOS (campo) ===== */
.ap-top{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.ap-prog{background:#eef2ff;color:#3730a3;font-weight:700} .ap-pend{background:#fef3c7;color:#92400e;font-weight:700}
.ap-pasos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}
.ap-paso{border:1.5px solid var(--line);border-radius:10px;background:#fff;padding:6px 2px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px}
.ap-paso b{font-size:14px;color:#64748b} .ap-paso small{font-size:10.5px;color:var(--muted)}
.ap-paso.on{background:#14532d;border-color:#14532d} .ap-paso.on b,.ap-paso.on small{color:#fff}
.ap-paso.ok{background:#dcfce7;border-color:#86efac} .ap-paso.ok b{color:#166534}
.ap-ficha{padding:9px 12px;margin-bottom:10px;background:#f8fafc}
.ap-datos{margin-top:10px} .ap-t{color:#2563eb;display:block;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:10px}
.ap-datos h3{margin:0 0 10px;font-size:17px} .ap-vacio{color:#94a3b8}
.ap-dato{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:9px 12px;margin-bottom:8px;background:#fbfdff}
.ap-dato svg{width:17px;height:17px;color:#2563eb;flex:none} .ap-dato small{display:block;font-size:10.5px;color:var(--muted);letter-spacing:.5px}
.ap-alerta{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:10px;padding:8px 10px;margin-top:10px;font-size:13.5px}
.ap-alerta svg{width:14px;height:14px;vertical-align:-2px}
.ap-sug{justify-content:flex-start;margin-top:6px;gap:8px} .ap-sug.ya{opacity:.6}
.ap-res{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.ap-op{border:2px solid var(--line);border-radius:12px;background:#fff;padding:12px 4px;font:inherit;font-weight:800;font-size:13.5px;color:#64748b;cursor:pointer}
.ap-op.on{border-color:var(--c);color:#fff;background:var(--c)}
.ap-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 12px}
.ap-ev{position:relative} .ap-ev small{display:block;font-size:10.5px;color:#2563eb;font-weight:700;margin-top:3px}
.ap-ev .icon-btn{position:absolute;top:4px;right:4px;background:#fff;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.ap-tipo{justify-content:flex-start;margin-top:6px}
.ap-padron{margin-bottom:8px} .ap-padron.on{border:1.5px solid #16a34a}
.ap-cola{display:flex;gap:10px;align-items:center;border:1.5px solid #f59e0b;background:#fffbeb;margin-bottom:10px}
.ap-cola>svg{width:22px;height:22px;color:#b45309;flex:none}
.ap-item{display:flex;align-items:center;gap:8px;border-left:5px solid var(--c,#64748b);padding:9px 12px;margin-bottom:6px}
.ap-item>svg{width:18px;height:18px;color:#16a34a;flex:none}
.ap-avance{display:flex;gap:14px;align-items:center;margin-bottom:10px}
.meta.ok{color:#166534}
.field small.meta{display:block}
/* ===== OBRA PÚBLICA ===== */
.ob-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:5px solid var(--c,#94a3b8);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:8px;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.ob-card:active{background:var(--soft)} .ob-card>svg{width:18px;height:18px;color:#9ca3af;flex:none}
.ob-mini{display:flex;align-items:center;gap:8px;margin-top:6px}
.ob-mb{flex:1;height:7px;border-radius:99px;background:#e5e7eb;overflow:hidden;display:block} .ob-mb i{display:block;height:100%;background:#16a34a;border-radius:99px}
.ob-mini b{font-size:13px;min-width:38px;text-align:right}
.ob-alert{background:#fef2f2;color:#991b1b;border-radius:8px;padding:5px 8px;margin-top:6px;font-size:12.5px}
.ob-alert svg{width:13px;height:13px;vertical-align:-2px}
.ob-alertas{border-left:5px solid var(--c);background:#fffbeb;color:#7c2d12;display:grid;gap:6px;font-size:13.5px;margin-bottom:10px}
.ob-alertas svg{width:14px;height:14px;vertical-align:-2px;color:#b45309}
.ob-barras{display:grid;gap:7px}
.ob-fila{display:grid;grid-template-columns:76px 1fr 48px;align-items:center;gap:8px}
.ob-fila small{color:var(--muted);font-size:12px} .ob-fila b{text-align:right;font-size:13px}
.ob-barra{height:10px;border-radius:99px;background:#eef2f7;overflow:hidden} .ob-barra i{display:block;height:100%;border-radius:99px;transition:width .4s}
.ob-cifras{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.ob-cifras small{display:block;color:var(--muted);font-size:11px} .ob-cifras b{font-size:15px} .ob-cifras b.mal{color:#dc2626}
.ob-ficha{padding:10px 12px;margin-bottom:10px;background:#f8fafc}
.ob-est{padding:10px 12px;margin-bottom:8px}
.ob-est-nums{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;font-size:12.5px;color:var(--muted)}
.ob-est-nums b{display:block;color:#0f172a;font-size:13.5px} .ob-est-nums .neto b{color:#166534}
.ob-visita{padding:9px 12px;margin-bottom:6px;border-left:4px solid #cbd5e1} .ob-visita.inc{border-left-color:#dc2626}
.ob-slider{display:flex;align-items:center;gap:12px} .ob-slider input{flex:1;accent-color:#ca8a04}
.ob-slider b{font-size:20px;min-width:58px;text-align:right;color:#a16207}
.ob-calc{background:#f8fafc;margin:4px 0 10px;padding:10px 12px}
.ob-foto{position:relative} .ob-foto small{display:block;font-size:10.5px;color:var(--muted);margin-top:3px}
.ob-foto .icon-btn{position:absolute;top:4px;right:4px;background:#fff;border-radius:50%;width:26px;height:26px;box-shadow:0 1px 4px rgba(0,0,0,.25)}
/* Estructura orgánica: entidad, ramas propias y pendientes */
/* Estructura orgánica: las tres vistas reusan los estilos de Usuarios (.us-row, .us-niveles,
 * .us-vistas, conectores). Aquí sólo lo propio de dependencias. */
.dir-fila{flex:1;min-width:0;display:block;color:inherit;text-decoration:none;padding:2px 0}
.dir-fila b{display:block;font-size:14px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dir-fila small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dir-fila.hit b,.dir-nodo.hit b{background:#fef9c3;border-radius:4px;padding:0 3px}
.dir-fila.mia b{color:var(--brand)}
/* En organigrama el toggle va junto a la tarjeta, no dentro: la tarjeta entera es el enlace. */
.dir-card-row{display:flex;align-items:flex-start;gap:6px;margin-left:calc(var(--n,0) * 18px)}
.dir-card-row .us-tg{margin-top:12px}
.dir-card-row .dir-nodo{flex:1;min-width:0;margin-left:0}
.dir-list.alfa .dir-card-row{margin-left:0}
.dir-entidad{border-left:5px solid #7c2d12;margin-bottom:10px}
.dir-tuya{background:#eff6ff;border-radius:10px;padding:8px 10px;color:#1e40af}
.dir-tuya svg{width:14px;height:14px;vertical-align:-2px}
.dir-pend{display:flex;gap:8px;align-items:center;border:1.5px solid #f59e0b;background:#fffbeb;color:#92400e;margin-bottom:10px;font-size:13.5px}
.dir-pend>svg{width:18px;height:18px;flex:none;color:#b45309}
.dir-nodo.mia{background:#f0f9ff;border-color:#7dd3fc}
.dir-nodo.ro{opacity:.82}
.dir-edit{color:#0369a1;flex:none} .dir-edit svg{width:13px;height:13px}
.dir-falta{display:block;color:#b45309;font-size:11px;font-weight:700}
.dir-entidad{display:block;text-decoration:none;color:inherit}
.dir-entidad .row{align-items:center;gap:10px}
.dir-entidad>.row>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.dir-nodo::before{content:'';position:absolute;left:calc(4px + (var(--n,0) - 1) * 18px);top:0;bottom:0;width:2px;background:var(--line);border-radius:2px;display:var(--rail,block)}
.dir-nodo{position:relative}
.dir-nodo[style*="--n:0"]::before{display:none}
.us-ambito{margin:-6px 0 10px} .us-ambito svg{width:13px;height:13px;vertical-align:-2px}
.us-ambito a{color:#0369a1;font-weight:600}
.us-sinuni{color:#b45309;font-weight:700}
#us-jefe{display:block;margin-top:4px} #us-jefe svg{width:12px;height:12px;vertical-align:-2px}
.pb-duena{color:#64748b} .pb-duena svg{width:11px;height:11px;vertical-align:-1px}

/* ===== PROTECCIÓN CIVIL ===== */
.pc-sel{border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:#fff;font:inherit;max-width:52%}
.pc-ic{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--c) 12%,#fff);color:var(--c);display:flex;align-items:center;justify-content:center;flex:none}
.pc-ic svg{width:19px;height:19px}
.pc-inm{border-left:5px solid #c2410c}
.pc-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.pc-kpi{display:flex;flex-direction:column;align-items:center;gap:2px;border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:10px 4px;color:inherit;text-align:center}
.pc-kpi b{font-size:20px;line-height:1} .pc-kpi small{font-size:10.5px;color:var(--muted);line-height:1.15}
.pc-kpi.mal{border-color:#fca5a5;background:#fef2f2} .pc-kpi.mal b{color:#b91c1c}
.pc-kpi.aviso{border-color:#fcd34d;background:#fffbeb} .pc-kpi.aviso b{color:#b45309}
.pc-kpi.ok{border-color:#86efac;background:#f0fdf4} .pc-kpi.ok b{color:#15803d}
.pc-aviso{display:flex;gap:10px;align-items:center;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px;color:inherit;background:#fff}
.pc-aviso>svg:first-child{width:20px;height:20px;flex:none} .pc-aviso small{display:block;color:var(--muted);font-size:12px}
.pc-aviso.mal{border-color:#fca5a5;background:#fef2f2;color:#7f1d1d} .pc-aviso.mal>svg:first-child{color:#b91c1c}
.pc-aviso.aviso{border-color:#fcd34d;background:#fffbeb;color:#78350f} .pc-aviso.aviso>svg:first-child{color:#b45309}
.pc-aviso>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none;margin-left:auto}
.pc-prox{display:block;color:inherit;border-left:5px solid #0369a1}
.pc-prox .row>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.pc-prox.vivo{border-left-color:#b91c1c;animation:pcpulso 1.6s ease-in-out infinite}
@keyframes pcpulso{0%,100%{background:#fff}50%{background:#fef2f2}}
.pc-mibrigada{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:10px;background:#fff;padding:9px 11px;margin-bottom:6px}
.pc-mibrigada>svg{width:18px;height:18px;color:var(--c);flex:none}
.pc-venc{display:block;color:#b45309;font-size:11.5px;font-weight:700} .pc-venc svg{width:11px;height:11px;vertical-align:-1px}
.pc-eq{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fff;padding:9px 11px;margin-bottom:7px;color:inherit}
.pc-eq.rojo{border-color:#fca5a5} .pc-eq.ambar{border-color:#fcd34d}
.pc-eq-ic{width:36px;height:36px;border-radius:10px;background:var(--b);color:var(--c);display:flex;align-items:center;justify-content:center;flex:none}
.pc-eq-ic svg{width:18px;height:18px} .pc-eq>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.pc-eq b{display:block;line-height:1.25} .pc-eq small{display:block}
.pc-leyenda{font-weight:700;font-size:11.5px} .pc-leyenda svg{width:11px;height:11px;vertical-align:-1px}
.pc-leyenda-xl{font-weight:800;font-size:14px;margin:8px 0 6px} .pc-leyenda-xl svg{width:15px;height:15px;vertical-align:-2px}
.pc-bar{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.pc-bar select{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:9px;background:#fff;font:inherit}
.pc-search{flex:2;min-width:0;display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:#fff}
.pc-search svg{width:15px;height:15px;color:#9ca3af;flex:none}
.pc-search input{border:0;outline:0;padding:9px 0;font:inherit;width:100%;background:transparent}
.pc-solo{margin-bottom:10px} .pc-resumen{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.pc-pill{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:700;color:var(--c);background:var(--b);border:1px solid color-mix(in srgb,var(--c) 30%,#fff)}
.pc-pill svg{width:11px;height:11px}
.pc-ficha{border-left:5px solid var(--c)}
.pc-estado{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800;color:var(--c);background:var(--b);flex:none}
.pc-estado svg{width:11px;height:11px}
.pc-fechas{display:grid;gap:5px;margin-bottom:12px}
.pc-fecha{display:flex;align-items:baseline;gap:8px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:8px 11px}
.pc-fecha span{flex:1;color:var(--muted);font-size:12.5px} .pc-fecha b{font-size:13px}
.pc-fecha small{font-size:11px;color:var(--muted);min-width:56px;text-align:right}
.pc-fecha.mal{border-color:#fca5a5;background:#fef2f2} .pc-fecha.mal b,.pc-fecha.mal small{color:#b91c1c}
.pc-fecha.aviso{border-color:#fcd34d;background:#fffbeb} .pc-fecha.aviso b,.pc-fecha.aviso small{color:#b45309}
.pc-ancho{width:100%;justify-content:center;margin-bottom:10px}
.pc-foto{width:100%;border-radius:12px;margin-bottom:10px}
.pc-thumb{width:100%;max-width:200px;border-radius:8px;margin-top:6px;display:block}
.pc-mov{display:flex;gap:10px;border-left:3px solid var(--line);padding:8px 0 8px 12px;margin-left:6px}
.pc-mov.observaciones{border-left-color:#f59e0b} .pc-mov.fuera_servicio{border-left-color:#dc2626}
.pc-mov.ok{border-left-color:#22c55e} .pc-mov-l{display:none}
.pc-obs{display:block;color:#475569;font-size:12.5px;margin-top:2px}
.pc-brigada{border:1px solid var(--line);border-top:3px solid var(--c);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:10px}
.pc-brigada-h{display:flex;gap:9px;align-items:center;margin-bottom:8px}
.pc-brigada-h>svg{width:19px;height:19px;color:var(--c);flex:none}
.pc-integrante{display:flex;gap:9px;align-items:center;padding:7px 0;border-top:1px solid var(--line)}
.pc-integrante.jefe .pc-av{background:var(--c)} .pc-integrante b{display:block;font-size:13.5px;line-height:1.25}
.pc-av{width:30px;height:30px;border-radius:50%;background:#94a3b8;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none}
.pc-vacia{color:var(--muted);font-size:12.5px;margin:2px 0 0;font-style:italic}
.pc-danger{color:#b91c1c}
.pc-punto{display:flex;gap:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:7px}
.pc-punto.mal{border-color:#fca5a5;background:#fef2f2} .pc-punto.aviso{border-color:#fcd34d;background:#fffbeb}
.pc-punto-ic{width:34px;height:34px;border-radius:9px;background:#f1f5f9;color:#334155;display:flex;align-items:center;justify-content:center;flex:none}
.pc-punto-ic svg{width:17px;height:17px} .pc-punto b{display:block;line-height:1.25}
.pc-flags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pc-flag{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;background:#fff;font-family:inherit;cursor:pointer;color:#475569}
.pc-flag svg{width:11px;height:11px}
.pc-flag.ok{border-color:#86efac;background:#f0fdf4;color:#15803d}
.pc-flag.aviso{border-color:#fcd34d;background:#fffbeb;color:#b45309}
.pc-flag.mal{border-color:#fca5a5;background:#fef2f2;color:#b91c1c}
.pc-flag.off{cursor:default;color:#94a3b8}
.pc-911{display:flex;flex-direction:column;align-items:center;gap:2px;background:#b91c1c;color:#fff;border-radius:16px;padding:18px;margin-bottom:14px;text-decoration:none}
.pc-911 svg{width:26px;height:26px} .pc-911 b{font-size:38px;line-height:1;letter-spacing:2px} .pc-911 small{opacity:.9}
.pc-tels{display:grid;gap:7px;margin-bottom:8px}
.pc-tel{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 11px;color:inherit}
.pc-tel svg{width:16px;height:16px;color:#b91c1c;flex:none} .pc-tel b{display:block;font-size:13.5px} .pc-tel small{color:var(--muted);font-size:12px}
.pc-tel-row{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 11px;margin-bottom:6px}
.pc-tel-row>a.grow{color:inherit;min-width:0} .pc-tel-row b{display:block;line-height:1.25} .pc-tel-row small{display:block}
.pc-accesos{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}
.pc-acceso{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px;color:inherit}
.pc-acceso svg{width:20px;height:20px;color:#c2410c} .pc-acceso small{color:var(--muted);font-size:11.5px}
.pc-todobien{display:flex;gap:9px;align-items:center;border-color:#86efac;background:#f0fdf4}
.pc-todobien>svg{width:20px;height:20px;color:#15803d;flex:none}
.pc-meta{display:flex;gap:10px;align-items:center}
.pc-meta>svg{width:22px;height:22px;flex:none} .pc-meta.ok>svg{color:#15803d} .pc-meta.aviso>svg{color:#b45309}
.pc-barra{height:6px;border-radius:999px;background:#e5e7eb;margin-top:6px;overflow:hidden}
.pc-barra span{display:block;height:100%;background:#15803d;border-radius:999px}
.pc-meta.aviso .pc-barra span{background:#f59e0b}
.pc-sim{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:12px;background:#fff;padding:10px 12px;margin-bottom:7px;color:inherit}
.pc-sim-ic{width:34px;height:34px;border-radius:9px;background:color-mix(in srgb,var(--c) 12%,#fff);color:var(--c);display:flex;align-items:center;justify-content:center;flex:none}
.pc-sim-ic svg{width:17px;height:17px} .pc-sim b{display:block;line-height:1.25} .pc-sim small{display:block}
.pc-sim>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.pc-sim.cancelado{opacity:.6}
.pc-sim-cab.en_curso{border-left:5px solid #b91c1c}
.pc-hipotesis{background:#f8fafc;border-radius:10px;padding:9px 11px;margin:10px 0 0;font-size:13px;color:#334155}
.pc-hipotesis svg{width:13px;height:13px;vertical-align:-2px;color:#64748b}
.pc-crono{text-align:center;background:#7f1d1d;color:#fff;border:0}
.pc-crono small{opacity:.85;font-size:12px} .pc-crono b{display:block;font-size:44px;line-height:1.1;font-variant-numeric:tabular-nums}
.pc-cifras{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.pc-cifras>div{border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 4px;text-align:center}
.pc-cifras b{display:block;font-size:17px} .pc-cifras small{font-size:10.5px;color:var(--muted)}
.pc-grande{width:100%;justify-content:center;flex-direction:column;gap:2px;padding:16px;font-size:16px;margin-bottom:10px}
.pc-grande small{font-weight:400;font-size:11.5px;opacity:.85}
.pc-grande.rojo{background:#b91c1c;border-color:#b91c1c}
.pc-radios{display:flex;flex-wrap:wrap;gap:7px}
.pc-radio{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;background:#fff}
.pc-radio.ok:has(:checked),.pc-radio.excelente:has(:checked),.pc-radio.bueno:has(:checked){border-color:#22c55e;background:#f0fdf4;color:#15803d}
.pc-radio.observaciones:has(:checked),.pc-radio.regular:has(:checked){border-color:#f59e0b;background:#fffbeb;color:#b45309}
.pc-radio.fuera_servicio:has(:checked),.pc-radio.mal:has(:checked),.pc-radio.deficiente:has(:checked){border-color:#dc2626;background:#fef2f2;color:#b91c1c}
.pc-eval{border-left:5px solid #64748b}
.pc-eval.excelente,.pc-eval.bueno{border-left-color:#15803d} .pc-eval.regular{border-left-color:#f59e0b} .pc-eval.deficiente{border-left-color:#b91c1c}
.pc-eval>b svg{width:15px;height:15px;vertical-align:-2px;color:#f59e0b}
.pc-eval-b{margin-top:8px} .pc-eval-b small{display:block;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.pc-eval-b p{margin:2px 0 0;font-size:13.5px}
.pc-momento{margin-bottom:12px}
.pc-momento-t{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}
.pc-galeria{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.pc-galeria figure{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.pc-galeria img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.pc-galeria figcaption{padding:5px 7px;font-size:11.5px;line-height:1.3}
.pc-galeria figcaption small{display:block;color:var(--muted);font-size:10.5px}
.pc-migas{margin:-4px 0 10px} .pc-migas a{color:#c2410c;font-weight:600}
.pc-migas svg{width:12px;height:12px;vertical-align:-2px}
.pc-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pc-mibrigada b,.pc-mibrigada small{display:block}
.pc-mibrigada b{line-height:1.25}
.pc-brigada-h b,.pc-brigada-h small,.pc-integrante small{display:block}
.pc-brigada-h b{line-height:1.25}
.pc-ficha .grow{min-width:0} .pc-ficha .pc-estado{margin-top:5px}
.pc-ficha b{line-height:1.3}
.pc-sim-cab .grow{min-width:0} .pc-sim-cab .tag{margin-top:5px;display:inline-block}

/* ===== PENDIENTES Y TAREAS (bandeja estilo correo) ===== */
.tk-buzones{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:10px;-webkit-overflow-scrolling:touch}
.tk-buzon{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line);border-radius:999px;background:#fff;
  padding:7px 13px;font:inherit;font-size:12.5px;font-weight:600;color:#475569;cursor:pointer;flex:none;white-space:nowrap}
.tk-buzon svg{width:13px;height:13px} .tk-buzon i{font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800}
.tk-buzon.on{border-color:#4f46e5;background:#eef2ff;color:#3730a3} .tk-buzon.on i{background:#4f46e5;color:#fff}
.tk-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:0 11px;background:#fff;margin-bottom:8px}
.tk-search svg{width:15px;height:15px;color:#9ca3af;flex:none}
.tk-search input{border:0;outline:0;padding:10px 0;font:inherit;width:100%;background:transparent}
.tk-x{border:0;background:none;padding:4px;cursor:pointer;color:#9ca3af} .tk-x svg{width:13px;height:13px}
.tk-cabeza{margin:0 0 8px}
.tk-alerta{display:flex;gap:8px;align-items:center;border:1.5px solid #fca5a5;background:#fef2f2;color:#7f1d1d;
  border-radius:12px;padding:10px 12px;margin-bottom:10px;font-size:13.5px}
.tk-alerta svg{width:18px;height:18px;color:#b91c1c;flex:none}
.tk-lista-t{display:grid;gap:6px}
.tk-fila{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 10px;color:inherit}
.tk-fila.nueva{border-left:3px solid #4f46e5;background:#fbfbff}
.tk-fila.nueva .tk-l1 b{font-weight:800}
.tk-fila.cerrada{opacity:.72}
.tk-l1{display:flex;align-items:baseline;gap:8px} .tk-l1 b{font-size:14px;line-height:1.3;min-width:0}
.tk-l1 small{color:var(--muted);font-size:11px;flex:none}
.tk-l2{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px}
.tk-l2 small{color:var(--muted);font-size:11.5px} .tk-l2 small svg{width:11px;height:11px;vertical-align:-1px}
.tk-de{display:block;color:var(--muted);font-size:11.5px;margin-top:3px} .tk-de svg{width:11px;height:11px;vertical-align:-1px}
.tk-prio{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--c);
  background:color-mix(in srgb,var(--c) 10%,#fff);border-radius:999px;padding:2px 8px}
.tk-prio-xl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--c);
  background:color-mix(in srgb,var(--c) 12%,#fff);border-radius:999px;padding:4px 11px}
.tk-origen{font-size:10.5px;font-weight:700;color:#7c3aed;background:#f5f3ff;border-radius:999px;padding:2px 8px}
.tk-origen svg{width:10px;height:10px;vertical-align:-1px}
.tk-avance{display:inline-block;width:52px;height:5px;background:#e5e7eb;border-radius:999px;overflow:hidden;flex:none}
.tk-avance i{display:block;height:100%;background:#4f46e5;border-radius:999px} .tk-avance.ok i{background:#16a34a}
.tk-vence.mal{color:#b91c1c;font-weight:700} .tk-vence.aviso{color:#b45309;font-weight:700}
.tk-estrella,.tk-arch{border:0;background:none;padding:3px;cursor:pointer;color:#cbd5e1;flex:none}
.tk-estrella svg,.tk-arch svg{width:16px;height:16px} .tk-estrella.on{color:#f59e0b} .tk-estrella.off{color:#e2e8f0;cursor:default}
.tk-pag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
.tk-migas{margin:-4px 0 10px} .tk-migas a{color:#4f46e5;font-weight:600} .tk-migas svg{width:12px;height:12px;vertical-align:-2px}
.tk-cab{border-left:4px solid #4f46e5} .tk-cab.completada{border-left-color:#16a34a} .tk-cab.cancelada{border-left-color:#94a3b8}
.tk-titulo{margin:6px 0 4px;font-size:19px;line-height:1.3}
.tk-desc{margin:8px 0 0;white-space:pre-wrap;font-size:14px;line-height:1.5}
.tk-origen-x{background:#f5f3ff;border-radius:8px;padding:6px 9px;margin-top:6px;color:#5b21b6}
.tk-origen-x a{color:#4f46e5;font-weight:700;margin-left:5px}
.tk-cerrada{display:flex;gap:7px;align-items:center;margin-top:10px;padding:8px 10px;border-radius:9px;font-size:13px}
.tk-cerrada.completada{background:#f0fdf4;color:#166534} .tk-cerrada.cancelada{background:#f8fafc;color:#475569}
.tk-cerrada svg{width:15px;height:15px;flex:none}
.tk-avance-c .tk-barra{height:8px;border-radius:999px;background:#e5e7eb;margin:6px 0;overflow:hidden}
.tk-avance-c .tk-barra span{display:block;height:100%;background:#4f46e5;border-radius:999px;transition:width .3s}
.tk-grande{width:100%;justify-content:center;flex-direction:column;gap:2px;padding:16px;font-size:16px;margin-bottom:10px}
.tk-grande small{font-weight:400;font-size:11.5px;opacity:.85}
.tk-ancho{width:100%;justify-content:center;flex-direction:column;gap:2px;margin-bottom:10px}
.tk-ancho small{font-weight:400;font-size:11.5px;color:var(--muted)}
.tk-acciones{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:6px}
.tk-danger{color:#b91c1c}
.tk-dest{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 10px;margin-bottom:6px}
.tk-dest.hecho{border-color:#86efac;background:#f0fdf4} .tk-dest.copia{opacity:.75;border-style:dashed}
.tk-dest b{display:block;font-size:13.5px;line-height:1.25} .tk-dest small{display:block}
.tk-av{width:30px;height:30px;border-radius:50%;background:#4f46e5;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none}
.tk-dest.hecho .tk-av{background:#16a34a}
.tk-estado{display:flex;flex-direction:column;align-items:center;gap:1px;color:#cbd5e1;flex:none}
.tk-dest.hecho .tk-estado{color:#16a34a} .tk-estado svg{width:17px;height:17px} .tk-estado small{font-size:9.5px;color:var(--muted)}
.tk-nota{color:#475569;font-size:12px;font-style:italic}
.tk-arch-f{display:flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 10px;margin-bottom:6px}
.tk-arch-f>a{display:flex;gap:9px;align-items:center;color:inherit;min-width:0}
.tk-arch-f svg{width:19px;height:19px;color:#4f46e5;flex:none}
.tk-arch-f b{display:block;font-size:13px;line-height:1.25;word-break:break-word} .tk-arch-f small{display:block;color:var(--muted);font-size:11px}
.tk-hilo{display:grid;gap:8px;margin-bottom:10px}
.tk-msg{display:flex;gap:9px;align-items:flex-start}
.tk-msg .grow{background:#f1f5f9;border-radius:12px;border-top-left-radius:3px;padding:8px 11px;min-width:0}
.tk-msg-h{display:flex;align-items:baseline;gap:8px} .tk-msg-h b{font-size:13px} .tk-msg-h small{color:var(--muted);font-size:11px}
.tk-msg p{margin:2px 0 0;font-size:13.5px;line-height:1.45;white-space:pre-wrap;word-break:break-word}
.tk-sys{display:flex;gap:7px;align-items:center;color:var(--muted);font-size:12px;padding:2px 4px}
.tk-sys svg{width:13px;height:13px;flex:none;color:#94a3b8} .tk-sys span{flex:1} .tk-sys b{color:#334155}
.tk-responder{display:flex;gap:8px;align-items:flex-end;position:sticky;bottom:8px;background:var(--bg,#f8fafc);padding-top:6px}
.tk-responder textarea{flex:1;border:1px solid var(--line);border-radius:12px;padding:9px 12px;font:inherit;resize:vertical;background:#fff}
.tk-responder button{flex:none;border-radius:12px;padding:10px 14px}
.tk-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tk-personas{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.tk-buscar{display:flex;align-items:center;gap:7px;padding:0 11px;border-bottom:1px solid var(--line)}
.tk-buscar svg{width:14px;height:14px;color:#9ca3af;flex:none}
.tk-buscar input{border:0;outline:0;padding:9px 0;font:inherit;width:100%;background:transparent}
/* Lo elegido, arriba y en pills: se ve de un vistazo a quién le encargas. Sólo el alias. */
.tk-pills{display:flex;flex-wrap:wrap;gap:5px;padding:7px 8px;border-bottom:1px solid var(--line);background:#f8fafc}
.tk-pills[hidden]{display:none}
.tk-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 4px 3px 3px;background:#eef2ff;border:1px solid #c7d2fe;border-radius:999px;font-size:12px;font-weight:600;color:#3730a3;max-width:100%}
.tk-pill .tk-av{width:20px;height:20px;font-size:9px}
.tk-pill button{border:0;background:transparent;color:#6366f1;font-size:16px;line-height:1;cursor:pointer;padding:0 4px;flex:none}
.tk-pill button:hover{color:#dc2626}
/* Las sugerencias se despliegan sobre lo que sigue: el formulario no debe saltar al escribir. */
.tk-personas{position:relative;overflow:visible}
.tk-sugerencias{position:absolute;left:0;right:0;top:100%;z-index:20;max-height:236px;overflow-y:auto;background:#fff;border:1px solid var(--line);border-top:0;border-radius:0 0 12px 12px;box-shadow:0 10px 22px rgba(15,23,42,.13)}
.tk-sug{display:flex;gap:9px;align-items:center;width:100%;padding:7px 11px;border:0;border-bottom:1px solid #f1f5f9;background:transparent;text-align:left;font:inherit;cursor:pointer}
.tk-sug:last-child{border-bottom:0}
.tk-sug:hover,.tk-sug:focus-visible{background:#eef2ff;outline:0}
.tk-sug b{display:block;font-size:13px;line-height:1.25} .tk-sug small{display:block;color:var(--muted);font-size:11px}

/* Filtros de la bandeja: el botón del embudo lleva su cuenta, para que nadie se quede filtrando
 * sin darse cuenta y crea que perdió tareas. */
.tk-filtro-b{position:relative;border:0;background:transparent;padding:6px 8px;color:var(--muted);cursor:pointer;flex:none;display:flex;align-items:center}
.tk-filtro-b svg{width:15px;height:15px}
.tk-filtro-b.on{color:#4f46e5}
.tk-filtro-b i{position:absolute;top:0;right:1px;background:#4f46e5;color:#fff;font-style:normal;font-size:9px;font-weight:800;min-width:13px;height:13px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 2px}
.tk-filtros{border:1px solid var(--line);border-radius:12px;background:#f8fafc;padding:10px;margin:8px 0;display:grid;gap:8px}
.tk-filtros[hidden]{display:none}
.tk-filtros .field{margin:0}
.tk-filtros label{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.tk-filtros select,.tk-filtros input{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff}

/* Proyectos */
.tk-proy{border-left:4px solid #4f46e5}
.tk-proy.terminado{border-left-color:#16a34a;opacity:.85}
.tk-proy.cancelado{border-left-color:#dc2626;opacity:.7}
.tk-proy b{display:block;font-size:14px;line-height:1.3}
.tk-proy-c{margin:5px 0 0;font-size:12px}
.tk-proy-pie{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);align-items:center;justify-content:space-between;gap:8px}

/* ===== MINUTA Y ACUERDOS (dentro de agenda) ===== */
.mn-migas{margin:-4px 0 10px} .mn-migas a{color:#be185d;font-weight:600} .mn-migas svg{width:12px;height:12px;vertical-align:-2px}
.mn-cab{border-left:4px solid #be185d} .mn-cab b{display:block;font-size:15px;line-height:1.3;margin-bottom:3px}
.mn-tabs{margin:10px 0} .mn-tabs button{gap:5px} .mn-tabs button svg{width:13px;height:13px}
.mn-tabs i{font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.mn-tabs button.on i{background:#be185d;color:#fff}
.mn-sello{display:flex;gap:8px;align-items:center;background:#f0fdf4;border:1.5px solid #86efac;color:#166534;
  border-radius:10px;padding:9px 12px;margin-bottom:10px;font-size:13px}
.mn-sello svg{width:17px;height:17px;color:#16a34a;flex:none}
.mn-borrador{display:flex;gap:8px;align-items:center;background:#fffbeb;border:1.5px dashed #fcd34d;color:#92400e;
  border-radius:10px;padding:9px 12px;margin-bottom:10px;font-size:13px}
.mn-borrador svg{width:14px;height:14px;flex:none}
.mn-doc{line-height:1.55}
.mn-datos{display:flex;flex-wrap:wrap;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:10px;color:var(--muted);font-size:12.5px}
.mn-datos svg{width:12px;height:12px;vertical-align:-2px}
.mn-h{margin:14px 0 5px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#64748b}
.mn-h:first-child{margin-top:0}
.mn-txt{margin:0;white-space:pre-wrap;font-size:14px;line-height:1.6}
.mn-acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.mn-ancho{width:100%;justify-content:center;margin-bottom:10px}
.mn-danger{color:#b91c1c}
.mn-ac{border:1px solid var(--line);border-left:4px solid #94a3b8;border-radius:12px;background:#fff;padding:11px 12px;margin-bottom:8px}
.mn-ac.cumplido{border-left-color:#16a34a;background:#f8fffa} .mn-ac.en_proceso{border-left-color:#f59e0b}
.mn-ac.cancelado{border-left-color:#cbd5e1;opacity:.65}
.mn-ac-h{display:flex;gap:9px;align-items:flex-start}
.mn-num{width:24px;height:24px;border-radius:7px;background:#be185d;color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:12px;flex:none}
.mn-ac-h b{font-size:14px;line-height:1.4;font-weight:600}
.mn-ac-r{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0 33px}
.mn-resp{display:inline-flex;align-items:center;gap:4px;background:#f1f5f9;border-radius:999px;padding:3px 9px;font-size:11.5px;color:#334155}
.mn-resp svg{width:10px;height:10px}
.mn-ac-b{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 0 33px}
.mn-ac-b small{color:var(--muted);font-size:11.5px} .mn-ac-b small svg{width:11px;height:11px;vertical-align:-1px}
.mn-barra{display:inline-block;width:70px;height:6px;background:#e5e7eb;border-radius:999px;overflow:hidden}
.mn-barra i{display:block;height:100%;background:#16a34a;border-radius:999px}
.mn-tarea{color:#4f46e5;font-weight:700;font-size:11.5px} .mn-tarea svg{width:10px;height:10px;vertical-align:-1px}
.mn-ac-acc{display:flex;gap:7px;margin:9px 0 0 33px}
.mn-cand{max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.mn-p{display:flex;gap:9px;align-items:center;padding:7px 11px;border-bottom:1px solid #f1f5f9;cursor:pointer}
.mn-p input{position:absolute;opacity:0;pointer-events:none}
.mn-p b{display:block;font-size:13px;line-height:1.25} .mn-p small{display:block;color:var(--muted);font-size:11px}
.mn-p>svg:last-child{width:16px;height:16px;color:transparent;flex:none}
.mn-p:has(:checked){background:#fdf2f8} .mn-p:has(:checked)>svg:last-child{color:#be185d}
.mn-estuvo{font-style:normal;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;
  color:#15803d;background:#f0fdf4;border-radius:999px;padding:2px 7px;flex:none}
.mn-arch{display:flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 11px;margin-bottom:6px}
.mn-arch>a{display:flex;gap:9px;align-items:center;color:inherit;min-width:0}
.mn-arch svg{width:19px;height:19px;color:#be185d;flex:none}
.mn-arch b{display:block;font-size:13px;line-height:1.25;word-break:break-word} .mn-arch small{display:block;color:var(--muted);font-size:11px}
.mn-clases{display:grid;gap:7px;margin-top:10px} .mn-clases button{width:100%;justify-content:center}
.mn-gente{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 10px;margin-bottom:6px}
.mn-gente.externo{border-style:dashed} .mn-gente b{display:block;font-size:13.5px;line-height:1.25} .mn-gente small{display:block}
.mn-av{width:30px;height:30px;border-radius:50%;background:#be185d;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none}
.mn-gente.externo .mn-av{background:#94a3b8}
.mn-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* ===== AVISOS Y CONVOCATORIAS EN EL TABLERO ===== */
.tb-avisos{display:grid;gap:8px;margin-bottom:14px}
.tb-aviso{border:1.5px solid var(--line);border-left:4px solid var(--c);border-radius:12px;background:#fff;padding:11px 13px}
.tb-aviso.nuevo{background:color-mix(in srgb,var(--c) 5%,#fff);border-color:color-mix(in srgb,var(--c) 35%,#fff)}
.tb-aviso.declinado{opacity:.7}
.tb-aviso-h{display:flex;gap:9px;align-items:flex-start}
.tb-aviso-h>svg{width:19px;height:19px;color:var(--c);flex:none}
.tb-aviso-h b{display:block;font-size:14.5px;line-height:1.3} .tb-aviso-h small{display:block;margin-top:2px}
.tb-punto{width:9px;height:9px;border-radius:50%;background:var(--c);flex:none;margin-top:5px}
.tb-aviso-c{margin:7px 0 0;font-size:13px;line-height:1.45;color:#475569}
.tb-aviso-b{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.tb-aviso-r{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:9px;font-size:12.5px;font-weight:700}
.tb-aviso-r svg{width:14px;height:14px}
.tb-aviso-r.confirmado{color:#15803d} .tb-aviso-r.declinado{color:#b45309}
.pc-conv{border-left:4px solid #0369a1}
.pc-conv-lista{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.pc-conv-p{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:600;
  background:#f1f5f9;color:#475569}
.pc-conv-p svg{width:11px;height:11px}
.pc-conv-p.confirmado{background:#f0fdf4;color:#15803d} .pc-conv-p.declinado{background:#fef2f2;color:#b91c1c}
.pc-conv-p.mas{background:#e2e8f0;font-weight:800}
.pc-cand{max-height:250px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:#fff;margin-top:6px}
.pc-c{display:flex;gap:8px;align-items:center;padding:7px 11px;border-bottom:1px solid #f1f5f9;cursor:pointer}
.pc-c input{position:absolute;opacity:0;pointer-events:none}
.pc-c b{display:block;font-size:13px;line-height:1.25} .pc-c small{display:block;color:var(--muted);font-size:11px}
.pc-c>svg:last-child{width:16px;height:16px;color:transparent;flex:none}
.pc-c:has(:checked){background:#fff7ed} .pc-c:has(:checked)>svg:last-child{color:#c2410c}
.pc-brig,.pc-sinapp{font-style:normal;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;border-radius:999px;padding:2px 6px;flex:none}
.pc-brig{color:#c2410c;background:#fff7ed} .pc-sinapp{color:#64748b;background:#f1f5f9}
.pc-link{border:0;background:none;padding:0;color:#0369a1;font:inherit;font-size:inherit;font-weight:700;cursor:pointer;text-decoration:underline}

/* ===== EVENTOS Y CONSTANCIAS ===== */
.ev-bar{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.ev-bar select{border:1px solid var(--line);border-radius:10px;padding:9px;background:#fff;font:inherit}
.ev-search{flex:1;min-width:0;display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:#fff}
.ev-search svg{width:15px;height:15px;color:#9ca3af;flex:none}
.ev-search input{border:0;outline:0;padding:9px 0;font:inherit;width:100%;background:transparent}
.ev-card{display:flex;gap:11px;align-items:center;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:12px;
  background:#fff;padding:10px 12px;margin-bottom:7px;color:inherit}
.ev-fecha{width:44px;text-align:center;flex:none;background:#f1f5f9;border-radius:9px;padding:5px 0}
.ev-fecha b{display:block;font-size:19px;line-height:1} .ev-fecha small{display:block;font-size:10px;text-transform:uppercase;color:var(--muted)}
.ev-card b{display:block;line-height:1.3} .ev-card small{display:block}
.ev-card>svg:last-child{width:16px;height:16px;color:#9ca3af;flex:none}
.ev-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px}
.ev-chips small{color:var(--muted);font-size:11.5px} .ev-chips small svg{width:11px;height:11px;vertical-align:-1px}
.ev-est{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--c);
  background:color-mix(in srgb,var(--c) 12%,#fff);border-radius:999px;padding:2px 8px}
.ev-est-xl{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--c);
  background:color-mix(in srgb,var(--c) 12%,#fff);border-radius:999px;padding:4px 12px}
.ev-alerta{color:#b45309 !important;font-weight:700}
.ev-pag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
.ev-migas{margin:-4px 0 10px} .ev-migas a{color:#0f766e;font-weight:600} .ev-migas svg{width:12px;height:12px;vertical-align:-2px}
.ev-cab{border-left:4px solid var(--c)}
.ev-titulo{margin:7px 0 5px;font-size:19px;line-height:1.3}
.ev-acc{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.ev-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.ev-kpi{border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:10px 4px;text-align:center}
.ev-kpi b{display:block;font-size:20px;line-height:1} .ev-kpi small{font-size:10.5px;color:var(--muted);line-height:1.2}
.ev-kpi.ok{border-color:#5eead4;background:#f0fdfa} .ev-kpi.ok b{color:#0f766e}
.ev-tabs{margin:10px 0;overflow-x:auto} .ev-tabs button{gap:5px;white-space:nowrap}
.ev-tabs svg{width:13px;height:13px}
.ev-tabs i{font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.ev-tabs i.al{background:#f59e0b;color:#fff} .ev-tabs button.on i{background:#0f766e;color:#fff}
.ev-ic{width:36px;height:36px;border-radius:10px;background:color-mix(in srgb,var(--c) 12%,#fff);color:var(--c);
  display:flex;align-items:center;justify-content:center;flex:none}
.ev-ic svg{width:18px;height:18px}
.ev-aforo{border-left:4px solid #64748b}
.ev-aforo.vivo{border-left-color:#15803d;animation:evp 2s ease-in-out infinite}
@keyframes evp{0%,100%{background:#fff}50%{background:#f0fdf4}}
.ev-aforo-n{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;text-align:center}
.ev-aforo-n b{display:block;font-size:26px;line-height:1;color:#0f766e} .ev-aforo-n small{font-size:11px;color:var(--muted)}
.ev-entes{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.ev-ente{background:#f1f5f9;border-radius:999px;padding:3px 9px;font-size:11.5px}
.ev-ente i{font-style:normal;font-weight:800;color:#0f766e}
.ev-accesos{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}
.ev-acceso{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px;color:inherit}
.ev-acceso svg{width:20px;height:20px;color:#0f766e} .ev-acceso small{color:var(--muted);font-size:11.5px}
.ev-ses{border:1px solid var(--line);border-radius:12px;background:#fff;padding:11px 12px;margin-bottom:7px}
.ev-ses.vivo{border-color:#86efac;background:#f0fdf4} .ev-ses.off{opacity:.55}
.ev-ses-h{display:flex;gap:9px;align-items:flex-start}
.ev-ord{width:24px;height:24px;border-radius:7px;background:#0f766e;color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:12px;flex:none}
.ev-ses b{display:block;line-height:1.3} .ev-ses small{display:block}
.ev-pon{color:#7c3aed !important;font-weight:600;font-size:12px} .ev-pon svg{width:11px;height:11px;vertical-align:-1px}
.ev-ses-b{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0 0 33px}
.ev-vivo{color:#15803d;font-weight:800;font-size:11px;text-transform:uppercase;flex:none}
.ev-vivo svg{width:11px;height:11px}
.ev-mini{display:inline-flex;align-items:center;gap:4px;background:#f1f5f9;border-radius:999px;padding:3px 9px;font-size:11px;color:#475569}
.ev-mini svg{width:10px;height:10px} .ev-mini.ok{background:#f0fdfa;color:#0f766e;font-weight:700}
.ev-mini.aviso{background:#fffbeb;color:#b45309;font-weight:700}
.ev-part{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 11px;margin-bottom:6px}
.ev-part.acredita{border-color:#5eead4}
.ev-av{width:32px;height:32px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex:none}
.ev-part b{display:block;line-height:1.25} .ev-part small{display:block}
.ev-part-acc{display:flex;gap:5px;flex:none}
.ev-filtros{margin-bottom:10px;overflow-x:auto} .ev-filtros button{white-space:nowrap}
.ev-gafete,.ev-g{background:#fff;border:2px solid var(--c);border-radius:16px;padding:16px;text-align:center}
.ev-gafete .cat,.ev-g .cat{display:inline-block;background:var(--c);color:#fff;border-radius:999px;padding:3px 12px;
  font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.ev-gafete img,.ev-g img{display:block;margin:12px auto 8px}
.ev-gafete .nom,.ev-g b{display:block;font-size:16px;line-height:1.25}
.ev-gafete small,.ev-g small{display:block;color:var(--muted);font-size:12px}
.ev-gafete .ente{font-weight:600;color:#334155}
.ev-gafete .folio,.ev-g .folio{display:inline-block;font-family:ui-monospace,monospace;font-size:12px;background:#f1f5f9;
  border-radius:7px;padding:2px 9px;margin-top:7px}
.ev-gafete .ev{margin-top:7px;font-size:11px;border-top:1px solid var(--line);padding-top:7px}
.ev-gafetes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.ev-g{cursor:pointer;opacity:.45;padding:11px;transition:opacity .15s}
.ev-g.on{opacity:1} .ev-g input{position:absolute;opacity:0;pointer-events:none}
.ev-const-cab{display:flex;gap:10px;align-items:center;border-color:#5eead4;background:#f0fdfa}
.ev-const-cab>svg{width:22px;height:22px;color:#0f766e;flex:none}
.ev-const{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 11px;margin-bottom:6px}
.ev-const.anulada{opacity:.55} .ev-const b{display:block;line-height:1.25} .ev-const small{display:block}
.ev-com{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-left:3px solid #cbd5e1;
  border-radius:11px;background:#fff;padding:10px 12px;margin-bottom:6px}
.ev-com.aprobado{border-left-color:#0f766e} .ev-com.rechazado{border-left-color:#b91c1c;opacity:.65}
.ev-com p{margin:0 0 4px;font-size:14px;line-height:1.45}
.ev-mod{display:flex;gap:5px;flex:none}
.ev-encuesta .ev-califs{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px}
.ev-califs b{display:block;font-size:22px;color:#0f766e;line-height:1} .ev-califs small{font-size:11px;color:var(--muted)}
.ev-porses{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.ev-porses>div{display:flex;align-items:center;gap:9px;padding:4px 0;font-size:13px}
.ev-porses span{flex:1;min-width:0} .ev-porses b{color:#0f766e;font-size:15px} .ev-porses small{color:var(--muted);font-size:11px}
.ev-arch{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:8px 10px;margin-bottom:6px}
.ev-arch img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex:none}
.ev-arch-ic{width:44px;height:44px;border-radius:8px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;flex:none}
.ev-arch-ic svg{width:20px;height:20px;color:#0f766e}
.ev-ancho{width:100%;justify-content:center;margin-bottom:10px}
.ev-danger{color:#b91c1c}
.ev-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ev-check{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;padding:5px 0}
.ev-check input{margin-top:3px;width:17px;height:17px;flex:none;accent-color:#0f766e}
.ev-check small{color:var(--muted)}
.ev-switches{display:grid;gap:2px;margin:8px 0;padding:9px 11px;background:#f8fafc;border-radius:10px}
.ev-url{display:block;background:#f1f5f9;border-radius:9px;padding:9px 11px;font-family:ui-monospace,monospace;
  font-size:12px;word-break:break-all;margin:10px 0}
.ev-qr{text-align:center} .ev-qr img{margin:12px auto;display:block}
.ev-anio{border:1px solid var(--line);border-radius:9px;padding:5px 9px;background:#fff;font:inherit}
.ev-embudo .ev-emb{display:grid;gap:7px;margin-top:10px}
.ev-emb>div{position:relative;background:#f1f5f9;border-radius:9px;padding:9px 12px;overflow:hidden}
.ev-emb span{position:absolute;inset:0;background:color-mix(in srgb,#0f766e 16%,#fff);border-radius:9px}
.ev-emb b,.ev-emb small{position:relative} .ev-emb b{font-size:19px;color:#0f766e}
.ev-emb small{display:block;color:#475569;font-size:12px}
.ev-cob{display:grid;gap:6px}
.ev-cob-f{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 12px}
.ev-cob-n{text-align:center;flex:none;min-width:56px} .ev-cob-n b{display:block;font-size:17px;line-height:1}
.ev-cob-n small{font-size:10px;color:var(--muted)} .ev-cob-n.ok b{color:#0f766e}
/* --- control de acceso --- */
.ev-esc-cab{border-left:4px solid #0f766e}
.ev-esc-est{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:9px}
.ev-esc-est span{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:700}
.ev-esc-est svg{width:12px;height:12px}
.ev-esc-est .ok{background:#f0fdf4;color:#15803d} .ev-esc-est .off{background:#fef2f2;color:#b91c1c}
.ev-esc-est .pend{background:#fffbeb;color:#b45309}
.ev-modo{margin:10px 0;overflow-x:auto} .ev-modo button{white-space:nowrap;font-size:12px}
.ev-lector{position:relative;background:#0f172a;border-radius:14px;overflow:hidden;margin-bottom:10px;min-height:90px;
  display:flex;align-items:center;justify-content:center}
.ev-lector video{width:100%;display:none;max-height:46vh;object-fit:cover}
.ev-lector.on video{display:block}
.ev-lector.on .ev-camara{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);z-index:2}
.ev-mira{display:none;position:absolute;inset:18% 22%;border:3px solid rgba(255,255,255,.85);border-radius:14px;
  box-shadow:0 0 0 100vmax rgba(0,0,0,.32)}
.ev-lector.on .ev-mira{display:block}
.ev-manual{display:flex;gap:8px;margin-bottom:12px}
.ev-manual input{flex:1;border:1px solid var(--line);border-radius:11px;padding:11px;font:inherit;
  font-family:ui-monospace,monospace;letter-spacing:1px;background:#fff}
.ev-verdict{border-radius:16px;padding:20px;text-align:center;color:#fff;background:var(--c);margin-bottom:12px}
.ev-verdict svg{width:40px;height:40px} .ev-verdict b{display:block;font-size:20px;margin-top:6px}
.ev-verdict .nom{display:block;font-size:17px;font-weight:700;margin-top:4px}
.ev-verdict small{display:block;opacity:.92;font-size:13px;margin-top:3px}
.ev-verdict .hora{font-family:ui-monospace,monospace;opacity:.8;font-size:12px}
.ev-hist{display:grid;gap:5px}
.ev-h{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 10px}
.ev-h svg{width:15px;height:15px;flex:none} .ev-h.ok svg{color:#15803d} .ev-h.mal svg{color:#b91c1c}
.ev-h.mal{border-color:#fca5a5;background:#fef2f2}
.ev-h b{display:block;font-size:13px;line-height:1.2} .ev-h small{display:block;color:var(--muted);font-size:11px}
.ev-paq{display:flex;gap:10px;align-items:center;width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;
  padding:11px 12px;margin-bottom:6px;font:inherit;text-align:left;cursor:pointer;color:inherit}
.ev-paq>svg:first-child{width:19px;height:19px;color:#0f766e;flex:none}
.ev-paq>svg:last-child{width:15px;height:15px;color:#9ca3af;flex:none}
.ev-paq b{display:block;line-height:1.25} .ev-paq small{display:block}
@media (max-width:420px){ .ev-kpis{grid-template-columns:repeat(2,1fr)} .ev-accesos{grid-template-columns:1fr} }

/* ===== OFICIALÍA DE PARTES ===== */
.of-buzones{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:10px}
.of-buzon{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line);border-radius:999px;background:#fff;
  padding:7px 13px;font:inherit;font-size:12.5px;font-weight:600;color:#475569;cursor:pointer;flex:none;white-space:nowrap}
.of-buzon svg{width:13px;height:13px}
.of-buzon .bi{font-size:13px;line-height:1}
.of-buzon i:not(.bi){font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800}
.of-buzon.on{border-color:#9b1b4e;background:#fdf2f6;color:#831843} .of-buzon.on i:not(.bi){background:#9b1b4e;color:#fff}
.of-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:0 11px;background:#fff;margin-bottom:8px}
.of-search>svg,.of-search>span svg{width:15px;height:15px;color:#9ca3af;flex:none}
.of-search input{border:0;outline:0;padding:10px 0;font:inherit;width:100%;background:transparent}
.of-x{position:relative;border:0;background:none;padding:5px;cursor:pointer;color:#9ca3af} .of-x svg{width:14px;height:14px}
.of-x .bi{font-size:14px;line-height:1;display:block} .of-x:hover{color:#475569}
/* El contador del botón es un <i> sin clase; los iconos (bi) también son <i>: sin el :not() salían como globito. */
.of-x.on{color:#9b1b4e} .of-x i:not(.bi){position:absolute;top:0;right:0;font-style:normal;background:#9b1b4e;color:#fff;
  border-radius:999px;font-size:9px;font-weight:800;padding:0 4px}
.of-filtros summary{display:none} .of-filtros{margin-bottom:10px}
.of-fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:7px;padding:10px;background:#f8fafc;border-radius:10px}
.of-fgrid select,.of-fgrid input{border:1px solid var(--line);border-radius:9px;padding:8px;background:#fff;font:inherit;font-size:13px}
.of-cabeza{margin:0 0 8px}
.of-alerta{display:flex;gap:8px;align-items:center;border:1.5px solid #fca5a5;background:#fef2f2;color:#7f1d1d;
  border-radius:12px;padding:10px 12px;margin-bottom:10px;font-size:13.5px}
.of-alerta svg{width:18px;height:18px;color:#b91c1c;flex:none}
.of-lista{display:grid;gap:6px}
.of-fila{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 10px;color:inherit}
.of-fila.nueva{border-left:3px solid #9b1b4e;background:#fffbfd} .of-fila.nueva .of-l1 b{font-weight:800}
.of-nuevo{flex:none;align-self:center;font-style:normal;font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;background:#9b1b4e;color:#fff;border-radius:5px;padding:2px 6px;margin-right:6px}
.of-fila.vencida{border-color:#fca5a5}
.of-num{flex:none;display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 3px;border-radius:50%;background:#9b1b4e;color:#fff;font-weight:800;font-size:12px;letter-spacing:-.3px;font-variant-numeric:tabular-nums;align-self:center}
.of-num.largo{font-size:10px;min-width:38px;height:38px} .of-num.borr{background:#fff;color:#b45309;border:2px dashed #d97706}
.of-num.grande{min-width:44px;height:44px;font-size:15px} .of-num.grande.largo{min-width:50px;height:50px;font-size:13px}
.of-fila.borrador{border-color:#fbbf24;background:#fffbeb} .of-nuevo.borr{background:#d97706}
.of-fila.of-doc{flex-direction:column;align-items:stretch;gap:4px}
button.of-alerta{width:100%;text-align:left;font:inherit;cursor:pointer}
.of-tags{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin:-4px 0 10px}
.of-tag{flex:none;display:inline-flex;align-items:center;gap:4px;border:1px dashed #cbd5e1;border-radius:7px;background:#f8fafc;color:#475569;padding:4px 8px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.of-tag svg{width:12px;height:12px} .of-tag i:not(.bi){font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.of-tag.on{border-style:solid;border-color:#9b1b4e;background:#9b1b4e;color:#fff} .of-tag.on i:not(.bi){background:#fff;color:#9b1b4e}
.of-quitar{display:inline-flex;align-items:center;gap:3px;border:0;background:none;color:#9b1b4e;font:inherit;font-size:12px;font-weight:700;cursor:pointer;padding:0 2px;white-space:nowrap} .of-quitar svg{width:10px;height:10px}
.of-buzon-mas{padding-left:10px;padding-right:10px;color:#64748b}
.of-carp{font-style:normal;font-size:10.5px;color:#475569;background:#f1f5f9;border-radius:5px;padding:1px 6px;white-space:nowrap;max-width:40%;overflow:hidden;text-overflow:ellipsis} .of-carp svg{width:10px;height:10px;vertical-align:-1px}
.of-nota{margin:-4px 0 10px} .of-carpeta .btn{flex:none}
.of-mover{display:flex;flex-direction:column;gap:4px} .of-mover-de{margin:-4px 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.of-mover-op{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:11px 8px;border-radius:9px;font:inherit;font-size:15px;text-align:left;cursor:pointer;color:inherit}
.of-mover-op:hover{background:#f1f5f9} .of-mover-op svg{width:18px;height:18px;color:#64748b} .of-mover-op.peligro{color:#b91c1c} .of-mover-op.peligro svg{color:#b91c1c}
.of-mover-nota{margin:6px 0 8px;font-size:12px}
.of-top{display:flex;align-items:center;gap:6px;min-height:30px} .of-top .of-num{min-width:30px;height:30px;font-size:11.5px} .of-top .of-num.largo{min-width:34px;height:34px;font-size:10px}
.of-top .of-nuevo{margin-right:0} .of-cuando{color:var(--muted);font-size:11px;text-align:right;white-space:nowrap}
.of-tit{font-size:14.5px;line-height:1.3} .of-fila.nueva .of-tit{font-weight:800} .of-doc .of-l2{margin-top:0} .of-doc .of-de,.of-doc .of-instr{margin-top:0}
.of-l1{display:flex;align-items:baseline;gap:8px} .of-l1 b{font-size:14px;line-height:1.3;min-width:0}
.of-l1 small{color:var(--muted);font-size:11px;flex:none}
.of-l2{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px}
.of-l2 small{color:var(--muted);font-size:11.5px} .of-l2 small svg{width:11px;height:11px;vertical-align:-1px}
.of-de{display:block;color:var(--muted);font-size:11.5px;margin-top:3px} .of-de svg{width:11px;height:11px;vertical-align:-1px}
.of-sinv{color:#b45309;font-style:normal;font-weight:700}
.of-instr{display:block;color:#475569;font-size:12px;font-style:italic;margin-top:3px}
.of-instr svg{width:10px;height:10px;vertical-align:-1px}
.of-instr-xl{margin:4px 0;font-size:14px;line-height:1.45;background:#f8fafc;border-radius:8px;padding:8px 10px}
.of-est,.of-est-xl{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--c);
  background:color-mix(in srgb,var(--c) 12%,#fff);border-radius:999px;padding:2px 9px}
.of-est-xl{font-size:11px;padding:4px 12px}
.of-clas{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:var(--c);
  background:color-mix(in srgb,var(--c) 10%,#fff);border-radius:999px;padding:2px 9px}
.of-clas svg{width:10px;height:10px}
.of-prio{font-size:10.5px;font-weight:800;text-transform:uppercase;color:#fff;background:var(--c);border-radius:999px;padding:2px 9px}
.of-plazo.mal{color:#b91c1c;font-weight:700} .of-plazo.aviso{color:#b45309;font-weight:700}
.of-estrella,.of-arch{border:0;background:none;padding:3px;cursor:pointer;color:#cbd5e1;flex:none}
.of-estrella svg,.of-arch svg{width:16px;height:16px} .of-estrella.on{color:#f59e0b}
.of-estrella.off{color:#94a3b8;cursor:default}
.of-pag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
.of-migas{margin:-4px 0 10px} .row.of-migas{align-items:center;gap:6px} .of-migas a{color:#9b1b4e;font-weight:600} .of-migas svg{width:12px;height:12px;vertical-align:-2px}
/* --- recepción --- */
.of-suelta{display:block;border:2px dashed var(--line);border-radius:16px;background:#fff;padding:30px 18px;text-align:center;cursor:pointer;margin-bottom:14px}
.of-suelta.sobre{border-color:#9b1b4e;background:#fdf2f6} .of-suelta.lleno{border-style:solid;border-color:#86efac;background:#f0fdf4}
.of-suelta svg{width:34px;height:34px;color:#9b1b4e;display:block;margin:0 auto 8px}
.of-suelta b{display:block;font-size:15px} .of-suelta small{display:block;color:var(--muted);font-size:12.5px;margin-top:3px}
.of-opc{margin-bottom:12px} .of-opc summary{cursor:pointer;font-size:13.5px;font-weight:600;color:#9b1b4e;padding:6px 0}
.of-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.of-check{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;padding:5px 0}
.of-check input{margin-top:3px;width:17px;height:17px;flex:none;accent-color:#9b1b4e}
.of-ancho{width:100%;justify-content:center;margin-bottom:10px}
/* ---- Recibir: elegir → revisar en el visor → registrar, con el lector de IA encima de la hoja ---- */
.of-rpasos{list-style:none;display:flex;gap:6px;margin:2px 0 14px;padding:0;flex-wrap:wrap}
.of-rpasos li{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 4px}
.of-rpasos li b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;background:#f1f5f9;color:#64748b}
.of-rpasos li.on{color:#9b1b4e;border-color:#9b1b4e;font-weight:600} .of-rpasos li.on b{background:#9b1b4e;color:#fff}
.of-rpasos li.hecho{color:#166534} .of-rpasos li.hecho b{background:#dcfce7;color:#166534}
.of-recibir{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:560px){ .of-rpasos li:not(.on) span{display:none} .of-rpasos li:not(.on){padding-right:4px} .of-rprev-v .of-vlienzo{height:62vh} }
@media (min-width:980px){ .of-recibir{grid-template-columns:minmax(0,1.55fr) minmax(320px,1fr)} .of-rdatos{position:sticky;top:12px} }
.of-rdoc{position:relative;border-radius:16px;min-width:0}
.of-rdoc.sobre .of-rsuelta,.of-rdoc.sobre .of-rprev{outline:3px dashed #9b1b4e;outline-offset:3px}
.of-rsuelta{margin:0;min-height:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:48px 18px}
.of-rsuelta .btn{margin-top:14px;pointer-events:none}
.of-rsuelta>.bi{font-size:48px;line-height:1;color:#9b1b4e;margin-bottom:10px}
.of-rprev{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}
.of-rprev-h{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line)}
.of-rprev-h>.bi{font-size:22px;color:#9b1b4e;flex:none}
.of-rprev-h .grow{min-width:0}
.of-rprev-h b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.of-rprev-h small{display:block;color:var(--muted);font-size:12px}
.of-rprev-zona{position:relative}
.of-rprev-v .of-visor{border:0;border-radius:0}
.of-rprev-v .of-vlienzo{max-height:none;height:min(70vh,780px)}
.of-rcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px}
.of-rcard h3{margin:0 0 12px;font-size:15px} .of-rcard h3 small{font-weight:400;color:var(--muted);font-size:12.5px;margin-left:6px}
.of-rnota{margin:0;text-align:center} .of-check small{display:block}
/* El lector: retícula, esquinas de visor y un haz que recorre la hoja mientras la IA la lee */
.of-lector{position:absolute;inset:0;z-index:5;overflow:hidden;color:#e6f6ff;background:linear-gradient(180deg,rgba(6,12,32,.22),rgba(6,12,32,.6))}
.of-lector-red{position:absolute;inset:0;background-image:linear-gradient(rgba(56,232,255,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(56,232,255,.1) 1px,transparent 1px);background-size:26px 26px;animation:of-latido 3.2s ease-in-out infinite}
.of-lector-haz{position:absolute;left:3%;right:3%;top:8%;height:2px;opacity:0;background:linear-gradient(90deg,transparent,#38e8ff 18%,#a78bfa 50%,#38e8ff 82%,transparent);box-shadow:0 0 14px 4px rgba(56,232,255,.55),0 0 42px 12px rgba(167,139,250,.25)}
.of-lector-haz::before{content:'';position:absolute;left:0;right:0;bottom:2px;height:90px;background:linear-gradient(180deg,transparent,rgba(56,232,255,.16))}
.of-lector.lee .of-lector-haz{opacity:1;animation:of-barrido 2.6s cubic-bezier(.45,0,.55,1) infinite alternate}
.of-lector-esq{position:absolute;width:26px;height:26px;border:2px solid #38e8ff;filter:drop-shadow(0 0 6px rgba(56,232,255,.8))}
.of-lector-esq.a{top:12px;left:12px;border-right:0;border-bottom:0} .of-lector-esq.b{top:12px;right:12px;border-left:0;border-bottom:0}
.of-lector-esq.c{bottom:12px;left:12px;border-right:0;border-top:0} .of-lector-esq.d{bottom:12px;right:12px;border-left:0;border-top:0}
.of-lector-panel{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);width:min(520px,calc(100% - 28px));background:rgba(8,14,34,.88);border:1px solid rgba(56,232,255,.35);border-radius:16px;padding:14px 16px;box-shadow:0 10px 40px rgba(0,0,0,.45),inset 0 0 24px rgba(56,232,255,.08);backdrop-filter:blur(6px)}
.of-lector-cab{display:flex;align-items:center;gap:12px} .of-lector-cab .grow{min-width:0}
.of-lector-cab b{display:block;font-size:15px;letter-spacing:.2px}
.of-lector-cab small{display:block;font-size:12.5px;color:#9fd8ea;min-height:1.2em}
.of-lector-cab em{font-style:normal;font:600 13px ui-monospace,Menlo,monospace;color:#38e8ff;background:rgba(56,232,255,.1);border:1px solid rgba(56,232,255,.35);border-radius:8px;padding:3px 8px}
.of-lector-nucleo{position:relative;width:34px;height:34px;flex:none}
.of-lector-nucleo i{position:absolute;inset:0;border-radius:50%;border:2px solid transparent;border-top-color:#38e8ff;animation:of-orbita 1.1s linear infinite}
.of-lector-nucleo i:nth-child(2){inset:5px;border-top-color:#a78bfa;animation-duration:1.6s;animation-direction:reverse}
.of-lector-nucleo i:nth-child(3){inset:11px;border:0;background:radial-gradient(circle,#38e8ff 0 35%,transparent 70%);animation:of-latido 1.2s ease-in-out infinite}
.of-lector-barra{height:6px;border-radius:999px;background:rgba(255,255,255,.08);margin:12px 0 10px;overflow:hidden}
.of-lector-barra div{height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#38e8ff,#a78bfa,#38e8ff);background-size:200% 100%;animation:of-brillo 1.6s linear infinite;transition:width .3s ease}
.of-lector-pasos{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.of-lector-pasos li{display:flex;align-items:center;gap:9px;font-size:13px;color:#8aa4b8}
.of-lector-pasos li i{width:14px;height:14px;border-radius:50%;border:2px solid #3b5268;flex:none}
.of-lector-pasos li span{flex:1}
.of-lector-pasos li small{font:600 12px ui-monospace,Menlo,monospace;color:#9fd8ea}
.of-lector-pasos li.vivo{color:#e6f6ff} .of-lector-pasos li.vivo i{border-color:#38e8ff;border-top-color:transparent;animation:of-orbita .8s linear infinite}
.of-lector-pasos li.ok{color:#c8f7dc} .of-lector-pasos li.ok i{border-color:#34d399;background:#34d399;box-shadow:0 0 8px rgba(52,211,153,.7)}
.of-lector-pasos li.mal{color:#fecaca} .of-lector-pasos li.mal i{border-color:#f87171;background:#f87171}
.of-lector-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.of-lector-chips span{font-size:11.5px;padding:3px 9px;border-radius:999px;border:1px solid rgba(56,232,255,.18);color:#5f7d92;transition:all .3s}
.of-lector-chips span.busca{color:#e6f6ff;border-color:#38e8ff;background:linear-gradient(90deg,rgba(56,232,255,.05),rgba(56,232,255,.28),rgba(56,232,255,.05));background-size:200% 100%;animation:of-brillo 1.1s linear infinite;box-shadow:0 0 10px rgba(56,232,255,.35)}
.of-lector-chips span.visto{color:#c8f7dc;border-color:rgba(52,211,153,.55);background:rgba(52,211,153,.12)}
.of-lector-chips span.visto::before{content:'\2713  '}
.of-lector-acc{margin-top:12px;text-align:right}
.of-lector.fin .of-lector-esq{border-color:#34d399;filter:drop-shadow(0 0 6px rgba(52,211,153,.8))}
.of-lector.fin .of-lector-nucleo i,.of-lector.error .of-lector-nucleo i{animation:none}
.of-lector.fin .of-lector-nucleo i:nth-child(-n+2){border-top-color:#34d399} .of-lector.error .of-lector-nucleo i:nth-child(-n+2){border-top-color:#f87171}
.of-lector.error .of-lector-esq{border-color:#f87171;filter:none}
@keyframes of-barrido{from{top:6%}to{top:92%}}
@keyframes of-orbita{to{transform:rotate(360deg)}}
@keyframes of-latido{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes of-brillo{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){ .of-lector-haz,.of-lector-red,.of-lector-nucleo i,.of-lector-barra div,.of-lector-chips span.busca,.of-lector-pasos li.vivo i{animation:none!important} }
.spin.chico{width:14px;height:14px;border-width:2px;display:inline-block;vertical-align:-2px;margin-right:6px}
/* --- expediente --- */
.of-cab{border-left:4px solid var(--c)}
.of-cab-t{flex-wrap:wrap;gap:6px}
.of-asunto{margin:8px 0 5px;font-size:18px;line-height:1.3}
.of-cerrado{display:flex;gap:7px;align-items:center;margin-top:9px;padding:8px 10px;background:#f1f5f9;border-radius:9px;font-size:13px;color:#475569}
.of-cerrado svg{width:14px;height:14px;flex:none}
/* Un documento que llegó del Redactor de oficios: el original verificable (o su cancelación). */
.of-origen{display:flex;gap:7px;align-items:flex-start;margin-top:9px;padding:8px 10px;background:#ecfdf5;border:1px solid #a7e3c4;border-radius:9px;font-size:13px;color:#14532d}
.of-origen svg{width:14px;height:14px;flex:none;margin-top:2px} .of-origen a{color:inherit;font-weight:600}
.of-origen.mal{background:#fdeaea;border-color:#f3b4b4;color:#7f1d1d}
/* El acuse de recibo sellado: su clave de seguimiento y el PDF para entregarlo al remitente. */
.of-acuse{display:flex;gap:8px;align-items:center;margin-top:9px;padding:6px 6px 6px 10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:9px;font-size:13px;color:#1e3a8a}
.of-acuse svg{width:14px;height:14px;flex:none} .of-acuse b{font-family:ui-monospace,Menlo,monospace;letter-spacing:.12em}
.of-acuse.falta{background:#fff8e6;border-color:#f0d58a;color:#6b4e00}
.of-mio{display:flex;gap:10px;align-items:flex-start;border-color:#fcd34d;background:#fffbeb}
.of-mio>svg{width:20px;height:20px;color:#b45309;flex:none}
.of-cols{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:12px}
@media (min-width:900px){ .of-cols{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start}
  .of-col-pdf{position:sticky;top:12px} }
.of-acc{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.of-tabs{margin-bottom:10px;overflow-x:auto;gap:5px} .of-tabs button{gap:5px;white-space:nowrap;font-size:12.5px;padding:7px 10px}
.of-tabs svg{width:13px;height:13px}
.of-tabs .bi{font-size:13px;line-height:1}
.of-tabs i:not(.bi){font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.of-tabs button.on i:not(.bi){background:#9b1b4e;color:#fff}
.of-ia{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 11px;margin-bottom:10px}
.of-ia>svg{width:18px;height:18px;flex:none;color:#7c3aed}
.of-ia.ok{border-color:#ddd6fe;background:#faf5ff} .of-ia.mal{border-color:#fca5a5;background:#fef2f2} .of-ia.mal>svg{color:#b91c1c}
.of-ia b{display:block;font-size:13.5px} .of-ia small{display:block}
.of-vinculo{border-left:4px solid #94a3b8}
.of-vinculo.ok{border-left-color:#15803d} .of-vinculo.prop{border-left-color:#7c3aed} .of-vinculo.mal{border-left-color:#b45309}
.of-vic{width:36px;height:36px;border-radius:10px;background:#f1f5f9;color:#334155;display:flex;align-items:center;justify-content:center;flex:none}
.of-vic svg{width:18px;height:18px}
.of-vinculo b{display:block;font-size:15px;line-height:1.25} .of-vinculo small{display:block}
.of-resumen p{margin:4px 0 0;font-size:14px;line-height:1.55;white-space:pre-wrap}
.of-datos{background:#fff;border:1px solid var(--line);border-radius:12px;padding:4px 14px;margin:0 0 10px}
.of-datos dt{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-top:10px}
.of-datos dd{margin:2px 0 10px;font-size:14px;word-break:break-word}
/* --- borrador: la versión previa que se corrige y se registra --- */
.of-borrador{border:1px solid #ddd6fe;border-left:4px solid #7c3aed;background:#faf5ff}
.of-borrador-t{display:flex;gap:10px;align-items:flex-start}
.of-borrador-t>svg{width:22px;height:22px;flex:none;color:#7c3aed;margin-top:2px}
.of-borrador-t b{display:block;font-size:15px;color:#4c1d95} .of-borrador-t small{display:block;color:#5b21b6;font-size:13px;line-height:1.45;margin-top:2px}
.of-borrador-acc{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.of-borrador-acc .btn{flex:1 1 150px;justify-content:center}
.of-peligro{color:#b91c1c} .of-peligro svg{color:#b91c1c}
.of-datos dd.of-vacio{color:#b45309}
.of-mano{display:inline-flex;align-items:center;gap:3px;vertical-align:middle;margin-left:6px;padding:0 7px;border-radius:999px;
  background:#ecfdf5;color:#15803d;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}
.of-mano svg{width:10px;height:10px}
.of-aviso{display:flex;gap:7px;align-items:flex-start;padding:8px 10px;border-radius:9px;background:#fff8e6;border:1px solid #f0d58a;color:#6b4e00;font-size:13px}
.of-aviso svg{width:14px;height:14px;flex:none;margin-top:2px}
/* Los datos duros: con candado, se leen pero no se tocan. */
.of-duros{border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;padding:8px 10px 2px;margin:14px 0 10px}
.of-duros>small{display:flex;align-items:center;gap:5px;font-weight:700}
.of-duros>small svg{width:12px;height:12px}
.of-duros .of-datos{background:transparent;border:0;padding:0 4px;margin:0}
.of-duros p.meta{margin:4px 0 8px}
.of-huella{font-family:ui-monospace,Menlo,monospace;font-size:11.5px!important;letter-spacing:.02em;color:#475569}
/* Personas del documento: quien firma, instruye, solicita, gestiona. */
.of-personas{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.of-persona{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:11px;background:#fff;padding:8px 6px 8px 10px}
.of-persona b{display:block;font-size:14px;line-height:1.25} .of-persona small{display:block;color:var(--muted);font-size:12px}
.of-persona .of-pctx{font-style:italic;margin-top:3px} .of-persona .of-pctx svg{width:10px;height:10px}
.of-prol{flex:none;min-width:84px;text-align:center;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;
  border-radius:999px;padding:3px 8px;margin-top:1px;background:#f1f5f9;color:#334155}
.of-persona.rem .of-prol{background:#fce7f3;color:#9b1b4e}
.of-prol.instruye{background:#ede9fe;color:#5b21b6} .of-prol.solicitante{background:#dcfce7;color:#166534}
.of-prol.gestor{background:#e0f2fe;color:#075985}
.of-porigen{flex:none;color:#94a3b8;padding:5px 2px} .of-porigen svg{width:14px;height:14px}
.of-resumen-reg dd{margin-bottom:6px}
/* ===== Escáner con el celular (core/escaner.js · Oficialía → Escanear · backend → Recibir) ===== */
body.esc-abierto{overflow:hidden}
body.esc-abierto .hdr,body.esc-abierto .nav,body.esc-abierto .fab{visibility:hidden}
.esc-ov{position:fixed;inset:0;z-index:70;background:#000;color:#fff;display:flex;flex-direction:column;animation:up .2s ease-out;
  padding-top:var(--sa-t);padding-bottom:var(--sa-b);touch-action:manipulation;user-select:none;-webkit-user-select:none}
.esc-top{display:flex;align-items:center;gap:10px;padding:10px 12px;background:linear-gradient(#000c,#0000);position:relative;z-index:3}
.esc-tit{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.esc-tit b{font-size:16px} .esc-tit small{font-size:12px;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.esc-tit small .bi{font-size:11px}
.esc-ib{width:40px;height:40px;border-radius:50%;border:0;background:#ffffff1f;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none;font-size:18px}
.esc-ib.sm{width:32px;height:32px;font-size:14px;background:#ffffff14}
.esc-ib:disabled{opacity:.3} .esc-ib.peligro{color:#fca5a5}
.esc-con{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:6px 10px;border-radius:999px;background:#7f1d1d;color:#fecaca}
.esc-con.on{background:#064e3b;color:#a7f3d0}
.esc-vista{position:relative;flex:1;min-height:0;overflow:hidden;background:#111}
.esc-vista video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.esc-capa{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.esc-guia{position:absolute;left:50%;top:14px;transform:translateX(-50%);max-width:88%;text-align:center;font-size:14px;font-weight:600;
  padding:8px 14px;border-radius:999px;background:#000a;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .2s}
.esc-guia.ok{background:#047857e6} .esc-guia.aviso{background:#b45309e6}
.esc-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.esc-flash.va{animation:esc-flash .32s ease-out}
@keyframes esc-flash{0%{opacity:.85}100%{opacity:0}}
.esc-aviso{position:absolute;left:12px;right:12px;bottom:12px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#7f1d1df2;font-size:13px;line-height:1.35}
.esc-aviso .bi{font-size:18px;flex:none} .esc-aviso span{flex:1} .esc-aviso .btn{min-height:34px;padding:6px 10px;background:#fff;color:#7f1d1d;flex:none}
.esc-err{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:30px;text-align:center;background:#111}
.esc-err .bi{font-size:44px;opacity:.7} .esc-err b{font-size:17px} .esc-err span{opacity:.75;font-size:14px;max-width:340px}
.esc-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:14px 18px 18px;background:#000;gap:10px}
.esc-hojas{justify-self:start;position:relative;width:58px;height:58px;border:0;padding:0;background:none;cursor:pointer;color:#fff}
.esc-pila{position:absolute;inset:0;border-radius:10px;overflow:hidden;background:#ffffff1f;border:2px solid #fff;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:4px -4px 0 -1px #ffffff40}
.esc-pila img{width:100%;height:100%;object-fit:cover}
.esc-hojas.vacia .esc-pila{border-color:#ffffff55;box-shadow:none;opacity:.6}
.esc-hojas i{position:absolute;right:-8px;top:-8px;min-width:24px;height:24px;border-radius:12px;background:var(--brand);font-style:normal;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 6px;border:2px solid #000}
.esc-hojas.vacia i{display:none}
.esc-disparo{width:80px;height:80px;border-radius:50%;border:0;padding:0;cursor:pointer;background:radial-gradient(circle,#fff 0 30px,#0000 31px),#ffffff26;position:relative;transition:transform .1s}
.esc-disparo:active{transform:scale(.92)}
.esc-disparo svg{position:absolute;inset:0;transform:rotate(-90deg)}
.esc-anillo{fill:none;stroke:#38e8aa;stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .12s linear}
.esc-opc{justify-self:end;display:flex;flex-direction:column;gap:8px}
.esc-chip{display:inline-flex;align-items:center;gap:6px;border:1.5px solid #ffffff55;background:#ffffff14;color:#fff;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:700;cursor:pointer}
.esc-chip.on{background:#38e8aa;border-color:#38e8aa;color:#022c22}
.esc-giro{display:inline-block;width:18px;height:18px;border-radius:50%;border:2.5px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite;vertical-align:-3px}
/* revisión de las hojas */
.esc-rev,.esc-ed{position:absolute;inset:0;z-index:5;background:#0b0f14;display:flex;flex-direction:column;padding-top:var(--sa-t);padding-bottom:var(--sa-b);animation:up .18s ease-out}
.esc-modos{display:flex;gap:8px;overflow-x:auto;padding:4px 14px 10px;scrollbar-width:none}
.esc-modos .esc-chip{flex:none}
.esc-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;padding:6px 14px 20px;align-content:start}
.esc-hoja{margin:0;display:flex;flex-direction:column;gap:6px}
.esc-mini{position:relative;border:0;padding:0;border-radius:8px;overflow:hidden;background:#fff;aspect-ratio:8.5/11;cursor:pointer;box-shadow:0 6px 18px #0008}
.esc-mini img{width:100%;height:100%;object-fit:contain;display:block;background:#fff}
.esc-mini .esc-giro{display:none;position:absolute;left:50%;top:50%;margin:-14px;width:28px;height:28px;color:var(--brand)}
.esc-hoja.proc .esc-mini .esc-giro{display:block} .esc-hoja.proc .esc-mini img{opacity:.35}
.esc-falla{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px;text-align:center;
  background:#450a0aee;color:#fecaca} .esc-falla .bi{font-size:24px} .esc-falla b{font-size:14px;color:#fff} .esc-falla small{font-size:11px;line-height:1.3}
.esc-falla i{font-style:normal;font-size:11px;font-weight:700;margin-top:4px;padding:3px 8px;border-radius:999px;background:#fff2;color:#fff}
.esc-hoja figcaption{display:flex;align-items:center;gap:4px} .esc-hoja figcaption b{flex:1;font-size:14px;padding-left:4px}
.esc-vacio{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 20px;text-align:center;opacity:.75}
.esc-vacio .bi{font-size:40px}
.esc-revpie{display:flex;flex-wrap:wrap;gap:10px;padding:12px 14px 16px;background:#000;border-top:1px solid #ffffff14}
.esc-revpie .btn{flex:1 1 150px} .esc-revpie .esc-aviso{position:static;flex:1 1 100%}
.esc-revpie .btn:not(.brand){background:#ffffff1f;color:#fff}
/* recorte a mano */
.esc-edvista{position:relative;flex:1;min-height:0;margin:4px 14px;touch-action:none}
.esc-edfoto{position:absolute}
.esc-edpoly{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.esc-edpoly polygon{fill:#38e8aa22;stroke:#38e8aa;stroke-width:2.5;stroke-linejoin:round}
.esc-pt{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:#38e8aa33;border:3px solid #fff;box-shadow:0 0 0 2px #38e8aa,0 4px 10px #0009;touch-action:none;cursor:grab}
.esc-pt::after{content:'';position:absolute;inset:-14px}   /* el dedo atina aunque no caiga exacto */
.esc-pt.on{background:#38e8aa;transform:scale(1.15)}
.esc-lupa{position:absolute;width:132px;height:132px;border-radius:50%;border:3px solid #fff;box-shadow:0 8px 24px #000c;pointer-events:none;z-index:2}
/* enviando */
.esc-envio{position:absolute;inset:0;z-index:8;background:#000c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px;animation:up .18s ease-out}
.esc-envcaja{width:100%;max-width:340px;background:#11161d;border:1px solid #ffffff1a;border-radius:20px;padding:26px 20px 20px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.esc-envcaja>b{font-size:18px;margin-top:8px} .esc-envcaja>small{opacity:.7}
.esc-envanillo{position:relative;width:120px;height:120px}
.esc-envanillo svg{position:absolute;inset:0;transform:rotate(-90deg)}
.esc-envanillo circle{fill:none;stroke-width:8} .esc-envanillo .fondo{stroke:#ffffff1a} .esc-envanillo .va{stroke:#38e8aa;stroke-linecap:round;transition:stroke-dashoffset .2s}
.esc-envanillo b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800}
.esc-envio.ok .esc-envanillo b{color:#38e8aa;font-size:46px;animation:esc-pop .35s ease-out}
.esc-envio.mal .esc-envanillo .va{stroke:#f87171} .esc-envio.mal .esc-envanillo b{color:#f87171;font-size:46px}
@keyframes esc-pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}
.esc-envacc{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:12px}
.esc-envacc .btn:not(.brand){background:#ffffff1f;color:#fff}
/* la pantalla del NIP (celular) */
.of-escnip{text-align:center;padding:22px 18px}
.of-escnip h3{margin:6px 0 4px}
.of-escnip-ic{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--brand);font-size:30px}
.of-escnip-ic .bi-arrow-right{font-size:18px;color:var(--muted)}
.of-escnip-cajas{position:relative;display:flex;justify-content:center;gap:8px;margin:18px 0 14px;cursor:text}
.of-escnip-cajas span{width:44px;height:56px;border-radius:12px;border:2px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;
  font:800 26px/1 ui-monospace,Menlo,monospace;color:var(--fg);transition:border-color .15s,box-shadow .15s}
.of-escnip-cajas span:nth-child(3){margin-right:10px}
.of-escnip-cajas span.on{border-color:var(--brand);box-shadow:0 0 0 3px #9b1b4e2e}
.of-escnip-cajas input{position:absolute;inset:0;opacity:0;width:100%;font-size:16px}
.of-escnip-cajas.mal{animation:esc-sacude .4s} .of-escnip-cajas.mal span{border-color:var(--danger)}
@keyframes esc-sacude{20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}
.of-escnip-o{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin:6px 0 10px}
.of-escnip-o::before,.of-escnip-o::after{content:'';flex:1;height:1px;background:var(--line)}
.of-escc{display:flex;align-items:center;gap:14px}
.of-escc b{display:block;font-size:18px;line-height:1.25}
.of-escc-ic{position:relative;width:48px;height:48px;border-radius:14px;background:#ecfdf5;color:#047857;display:flex;align-items:center;justify-content:center;font-size:24px;flex:none}
.of-escc-pulso{position:absolute;right:-3px;top:-3px;width:14px;height:14px;border-radius:50%;background:#10b981;border:2px solid #fff;animation:of-latido 1.6s ease-in-out infinite}
.of-escbig{min-height:58px;font-size:17px}
.of-esctips ul{margin:6px 0 0;padding-left:20px;font-size:14px;color:var(--muted)} .of-esctips li{margin:4px 0}
/* la tarjeta del NIP en la ventanilla (backend) */
.of-escv{display:flex;gap:16px;align-items:center;margin-top:12px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#0f172a,#1e293b);color:#e2e8f0;border:1px solid #334155}
.of-escv-qr{flex:none;width:118px;height:118px;border-radius:10px;background:#fff;padding:0}
.of-escv-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.of-escv-t>b{font-size:15px;color:#fff} .of-escv-t>small{font-size:12.5px;color:#94a3b8} .of-escv-t>small b{color:#e2e8f0}
.of-escv-t .meta{color:#94a3b8;font-size:11.5px}
.of-escv-nip{display:flex;gap:12px;margin:6px 0 2px;font:800 34px/1 ui-monospace,Menlo,monospace;letter-spacing:.14em;color:#38e8aa;text-shadow:0 0 18px #38e8aa55}
.of-escv-est{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#cbd5e1}
.of-escv-est i{width:9px;height:9px;border-radius:50%;background:#64748b;flex:none}
.of-escv-est.ok i{background:#10b981;box-shadow:0 0 0 0 #10b98199;animation:of-latido 1.6s infinite}
.of-escv-est.vivo i{background:#38bdf8;animation:of-latido 1s infinite} .of-escv-est.mal i{background:#f87171}
.of-escrec{margin-top:10px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:2px 12px}
.of-escrec summary{cursor:pointer;padding:9px 0;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}
.of-escrec summary i{font-style:normal;background:var(--brand);color:#fff;border-radius:999px;font-size:11px;padding:1px 8px}
.of-escrec-i{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line)}
.of-escrec-i>.bi{font-size:20px;color:#dc2626} .of-escrec-i b{display:block;font-size:13.5px} .of-escrec-i small{display:block;color:var(--muted);font-size:12px}
.of-escrec .meta{font-size:12px;margin:6px 0 8px}
@media (max-width:520px){.of-escv{flex-direction:column;text-align:center}.of-escv-nip,.of-escv-est{justify-content:center}}
.of-ex{margin-bottom:10px} .of-ex-t{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:5px}
.of-exi{border:1px solid var(--line);border-left:3px solid #cbd5e1;border-radius:9px;background:#fff;padding:7px 10px;margin-bottom:5px}
.of-exi b{display:block;font-size:13.5px} .of-exi small{display:block;color:var(--muted);font-size:11.5px;font-style:italic;margin-top:2px}
.of-exv{display:inline-flex;align-items:center;gap:4px;background:#f0fdf4;color:#15803d;border-radius:999px;
  padding:1px 8px;font-size:11px;font-weight:700;margin-top:3px}
.of-exv svg{width:10px;height:10px}
.of-vopt{display:flex;gap:9px;align-items:center;width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;
  padding:8px 10px;margin-bottom:5px;font:inherit;text-align:left;cursor:pointer;color:inherit}
.of-vopt svg{width:16px;height:16px;color:#9b1b4e;flex:none}
.of-vopt b{display:block;font-size:13.5px} .of-vopt small{display:block;color:var(--muted);font-size:11.5px}
.of-vopt em{font-style:normal;font-size:10px;font-weight:800;text-transform:uppercase;color:#64748b;background:#f1f5f9;border-radius:999px;padding:2px 7px;flex:none}
.of-vres{max-height:240px;overflow-y:auto;margin-bottom:10px}
/* --- turnado --- */
.of-turno{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:11px;background:#fff;
  padding:9px 11px;margin-bottom:6px;position:relative}
.of-turno.n2{margin-left:16px} .of-turno.n3{margin-left:32px} .of-turno.n4{margin-left:48px} .of-turno.n5{margin-left:64px}
.of-turno.n2::before,.of-turno.n3::before,.of-turno.n4::before,.of-turno.n5::before{
  content:'';position:absolute;left:-11px;top:18px;width:9px;height:2px;background:var(--line)}
.of-turno.atendido{border-color:#86efac;background:#f8fffa} .of-turno.declinado{opacity:.7}
.of-turno b{display:block;font-size:13.5px;line-height:1.25} .of-turno small{display:block}
.of-tav{width:30px;height:30px;border-radius:50%;background:#9b1b4e;color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:12px;flex:none}
.of-tav.xl{width:46px;height:46px;font-size:17px}
.of-test{flex:none;color:#cbd5e1} .of-test svg{width:17px;height:17px}
.of-test.atendido{color:#15803d} .of-test.declinado{color:#b91c1c}
.of-resp{background:#f8fafc;border-radius:8px;padding:7px 9px;margin-top:6px;font-size:13px}
.of-resp p{margin:2px 0 0} .of-resp b{display:inline;font-size:11.5px;color:#15803d;text-transform:uppercase}
.of-radios{display:flex;flex-wrap:wrap;gap:7px}
.of-radio{display:inline-flex;align-items:center;gap:5px;border:1.5px solid var(--line);border-radius:999px;padding:6px 12px;
  font-size:12.5px;font-weight:600;cursor:pointer;background:#fff}
.of-radio:has(:checked){border-color:#9b1b4e;background:#fdf2f6;color:#831843}
.of-buscar{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:0 11px;background:#fff;margin-bottom:6px}
.of-buscar svg{width:14px;height:14px;color:#9ca3af;flex:none}
.of-buscar input{border:0;outline:0;padding:9px 0;font:inherit;width:100%;background:transparent}
.of-red{max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
/* `.of-red .of-p` y no `.of-p` a secas: la lista vive dentro de un `.field`, y `.field label{display:block}` pesa
 * más que una sola clase — cada persona salía en tres renglones (inicial, nombre, palomita) y la palomita siempre visible. */
.of-red .of-p{display:flex;gap:9px;align-items:center;padding:7px 11px;border-bottom:1px solid #f1f5f9;cursor:pointer;margin:0;font-weight:400}
.of-p input{position:absolute;opacity:0;pointer-events:none}
.of-p b{display:block;font-size:13px;line-height:1.25} .of-p small{display:block;color:var(--muted);font-size:11px}
.of-p>:last-child:is(svg,.bi){width:16px;height:16px;font-size:16px;color:transparent;flex:none}
.of-p:has(:checked){background:#fdf2f6} .of-p:has(:checked)>:last-child:is(svg,.bi){color:#9b1b4e}
/* --- hilo --- */
.of-hilo{display:grid;gap:8px;margin-bottom:10px}
.of-msg{display:flex;gap:9px;align-items:flex-start}
.of-msg .grow{background:#f1f5f9;border-radius:12px;border-top-left-radius:3px;padding:8px 11px;min-width:0}
.of-msg-h{display:flex;align-items:baseline;gap:8px} .of-msg-h b{font-size:13px} .of-msg-h small{color:var(--muted);font-size:11px}
.of-msg p{margin:2px 0 0;font-size:13.5px;line-height:1.45;white-space:pre-wrap;word-break:break-word}
.of-sys{display:flex;gap:7px;align-items:flex-start;color:var(--muted);font-size:12px;padding:3px 4px}
.of-sys svg{width:13px;height:13px;flex:none;color:#94a3b8;margin-top:2px} .of-sys span{flex:1} .of-sys b{color:#334155}
.of-responder{display:flex;gap:8px;align-items:flex-end}
.of-responder textarea{flex:1;border:1px solid var(--line);border-radius:12px;padding:9px 12px;font:inherit;resize:vertical;background:#fff}
.of-anexo{display:flex;gap:9px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 11px;margin-bottom:6px}
.of-anexo>svg{width:20px;height:20px;color:#9b1b4e;flex:none}
.of-anexo b{display:block;font-size:13.5px;word-break:break-word} .of-anexo small{display:block}
/* --- visor --- */
.of-visor{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;display:flex;flex-direction:column;min-width:0}
.of-visor:fullscreen{border-radius:0} .of-visor:fullscreen .of-vlienzo{max-height:none;height:calc(100vh - 46px)}
.of-vbar{display:flex;align-items:center;gap:3px;padding:6px 8px;background:#f8fafc;border-bottom:1px solid var(--line);flex-wrap:wrap}
.of-vb{border:0;background:none;padding:6px;border-radius:8px;cursor:pointer;color:#475569;display:inline-flex;text-decoration:none}
.of-vb:hover{background:#e2e8f0} .of-vb svg{width:15px;height:15px}
.of-vsep{width:1px;height:18px;background:var(--line);margin:0 4px}
.of-vpag{display:inline-flex;align-items:center;gap:4px;font-size:12.5px}
.of-vpag input{width:44px;border:1px solid var(--line);border-radius:7px;padding:3px 5px;font:inherit;font-size:12.5px;text-align:center;background:#fff}
.of-vpag i{font-style:normal;color:var(--muted)}
@media (max-width:520px){ .of-vbar .grow{display:none} .of-vbar{gap:0;padding:5px 4px} .of-vsep{display:none}
  .of-vb{padding:5px} .of-vpag{margin-right:2px} .of-vpag input{width:36px} }
.of-vbuscar{display:flex;align-items:center;gap:6px;padding:6px 8px;background:#fffbeb;border-bottom:1px solid #fcd34d}
.of-vbuscar input{flex:1;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px;background:#fff}
.of-vres{font-size:11.5px;color:#92400e;white-space:nowrap}
.of-vlienzo{background:#475569;overflow:auto;max-height:min(70vh,720px);display:flex;justify-content:center;padding:12px;min-width:0}
.of-vcanvas{background:#fff;box-shadow:0 3px 14px rgba(0,0,0,.3);max-width:100%;height:auto}
.of-vimg{background:#fff;max-width:100%;height:auto;transition:transform .2s}
.of-vcarga{display:flex;align-items:center;justify-content:center;min-height:220px;width:100%}
.of-verror{text-align:center;color:#e2e8f0;padding:40px 20px}
.of-verror svg{width:38px;height:38px;display:block;margin:0 auto 10px}
.of-verror b{display:block;font-size:16px} .of-verror p{font-size:13px;opacity:.85;margin:5px 0 12px}
/* --- remitentes y tablero --- */
.of-rem{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;background:#fff;padding:9px 11px;margin-bottom:6px;color:inherit}
.of-rem b{display:block;line-height:1.25} .of-rem small{display:block}
.of-rem>svg:last-child{width:15px;height:15px;color:#9ca3af;flex:none}
.of-remficha b{font-size:17px;line-height:1.25}
.of-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.of-kpi{border:1.5px solid var(--line);border-radius:12px;background:#fff;padding:10px 4px;text-align:center}
.of-kpi b{display:block;font-size:20px;line-height:1} .of-kpi small{font-size:10.5px;color:var(--muted);line-height:1.2}
.of-kpi.ok{border-color:#86efac;background:#f0fdf4} .of-kpi.ok b{color:#15803d}
.of-kpi.aviso{border-color:#fcd34d;background:#fffbeb} .of-kpi.aviso b{color:#b45309}
.of-kpi.mal{border-color:#fca5a5;background:#fef2f2} .of-kpi.mal b{color:#b91c1c}
.of-tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px;text-align:center}
.of-tgrid b{display:block;font-size:19px;color:#9b1b4e;line-height:1} .of-tgrid small{font-size:10.5px;color:var(--muted)}
.of-barras{display:flex;align-items:flex-end;gap:5px;height:130px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:12px}
.of-barra{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative}
.of-barra span{width:100%;background:#9b1b4e;border-radius:5px 5px 0 0;min-height:2px}
.of-barra small{font-size:10px;color:var(--muted);margin-top:4px} .of-barra i{font-style:normal;font-size:10px;font-weight:800;color:#9b1b4e}
.of-cl{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 11px;margin-bottom:5px;font-size:13.5px}
.of-cldot{width:9px;height:9px;border-radius:50%;flex:none}
.of-cl b{font-size:15px;color:#9b1b4e} .of-cl small{flex:none}
.of-vtag{font-size:10px;font-weight:700;text-transform:uppercase;color:#64748b;background:#f1f5f9;border-radius:999px;padding:2px 7px;flex:none}
.of-anio{border:1px solid var(--line);border-radius:9px;padding:5px 9px;background:#fff;font:inherit}
@media (max-width:420px){ .of-kpis,.of-tgrid{grid-template-columns:repeat(2,1fr)} .of-form .grid2{grid-template-columns:1fr} }
/* Chip de filtro activo por remitente: se ve de inmediato que la lista está acotada, y se quita de un clic. */
.of-chip{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;border-radius:10px;
  background:#fdf2f7;border:1px solid #f5cfe0;color:#9b1b4e;font-size:.86rem}
.of-chip>svg{width:15px;height:15px;flex:none}
.of-chip>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.of-chip .of-x{color:#9b1b4e}
.of-vacc{display:flex;gap:8px;margin-top:8px}
.of-vacc>.btn{flex:1;justify-content:center}

/* ============================ ARCHIVO · gestión documental ============================ */
.ar-alerta{display:flex;align-items:center;gap:9px;margin:0 0 10px;padding:10px 12px;border-radius:11px;
  background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.88rem;text-decoration:none}
.ar-alerta.mal{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.ar-alerta>svg,.ar-alerta>.bi{width:17px;height:17px;font-size:17px;flex:none}
.ar-alerta a{color:inherit;font-weight:700}
.ar-vistas{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:10px;-webkit-overflow-scrolling:touch}
.ar-vista{flex:none;display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:#fff;
  border-radius:999px;padding:7px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--fg)}
.ar-vista.on{background:#57534e;color:#fff;border-color:#57534e}
.ar-vista svg,.ar-vista .bi{width:14px;height:14px;font-size:14px;flex:none}
.ar-vista i{font-style:normal;background:#e7e5e4;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.ar-vista.on i{background:rgba(255,255,255,.25);color:#fff}
.ar-search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:11px;
  padding:0 10px;background:#fff;margin-bottom:10px}
.ar-search>svg,.ar-search>.bi{width:16px;height:16px;font-size:16px;color:var(--muted);flex:none}
.ar-search input{flex:1;min-width:0;border:0;outline:0;padding:11px 0;font-size:14.5px;background:none}
.ar-x{border:0;background:none;color:var(--muted);cursor:pointer;padding:6px;display:inline-flex;align-items:center;gap:3px}
.ar-x.on{color:#57534e} .ar-x i{font-style:normal;font-size:10px;font-weight:800}
.ar-filtros{margin-bottom:10px} .ar-filtros summary{display:none}
.ar-fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.ar-fgrid select,.ar-fgrid input{border:1.5px solid var(--line);border-radius:9px;padding:9px;font-size:13.5px;background:#fff;min-width:0}
.ar-cabeza{margin:2px 0 8px}
.ar-lista{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ar-fila{display:flex;align-items:center;gap:10px;padding:11px 12px;background:#fff;text-decoration:none;color:var(--fg)}
.ar-fila:active{background:var(--soft)}
.ar-fila.plano{cursor:default}
.ar-fila.venc{background:#fef2f2}
.ar-fila>svg:last-child,.ar-fila>.bi:last-child{width:16px;height:16px;font-size:16px;color:#9ca3af;flex:none}
.ar-fila .grow{min-width:0}
.ar-fila b{display:block;font-size:14.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-fila small{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-fila small.aviso{color:#b45309;font-weight:600} .ar-fila small.mal{color:#b91c1c;font-weight:700}
.ar-etapa{width:5px;align-self:stretch;border-radius:3px;flex:none;min-height:36px}
.ar-clave{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#78716c;font-weight:700}
.ar-clave a{color:inherit;text-decoration:none}
.ar-pin{font-style:normal;background:#fef3c7;color:#92400e;border-radius:5px;padding:0 5px;font-size:10px;font-weight:800}
.ar-lock{flex:none;display:inline-flex} .ar-lock svg,.ar-lock .bi{width:14px;height:14px;font-size:14px}
.ar-pag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
.ar-migas{margin:0 0 8px} .ar-migas a{color:#57534e;text-decoration:none;font-weight:600}
.ar-cab{border-left:4px solid #57534e}
.ar-cabtop{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.ar-clavebig{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#78716c;font-weight:700}
.ar-tit{font-size:1.15rem;line-height:1.3;margin:0 0 6px}
.ar-sem{margin-top:9px;padding:8px 10px;border-radius:9px;background:var(--soft);font-size:13px;display:flex;align-items:center;gap:7px}
.ar-sem svg,.ar-sem .bi{width:15px;height:15px;font-size:15px;flex:none}
.ar-sem.aviso{background:#fffbeb;color:#92400e} .ar-sem.mal{background:#fef2f2;color:#991b1b}
.ar-sem.ok{background:#dcfce7;color:#166534}
.ar-acc{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.ar-tabs{margin-bottom:10px;overflow-x:auto;gap:4px}
.ar-tabs button{gap:5px;white-space:nowrap;font-size:12.5px;padding:7px 9px}
.ar-tabs svg,.ar-tabs .bi{width:13px;height:13px;font-size:13px}
@media (max-width:460px){
  .ar-tabs{display:grid;grid-template-columns:repeat(4,1fr);overflow:visible}
  .ar-tabs button{padding:7px 4px;gap:0;font-size:11.5px;justify-content:center;min-width:0}
  .ar-tabs button>svg,.ar-tabs button>.bi{display:none}
  .ar-tabs button>i.badge{display:none}
}
.ar-datos{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:0;margin:0;
  border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.ar-datos dt{padding:9px 12px;background:var(--soft);font-size:12px;color:var(--muted);border-bottom:1px solid var(--line)}
.ar-datos dd{margin:0;padding:9px 12px;font-size:13.5px;border-bottom:1px solid var(--line);word-break:break-word}
.ar-datos dt:last-of-type,.ar-datos dd:last-of-type{border-bottom:0}
.ar-desc p{margin:4px 0 0;font-size:14px;line-height:1.5}
.ar-docs{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ar-doc{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff}
.ar-doc .grow{min-width:0} .ar-doc b{display:block;font-size:14px}
.ar-dic{width:34px;height:34px;border-radius:9px;background:var(--soft);color:#57534e;display:flex;align-items:center;justify-content:center;flex:none}
.ar-dic svg,.ar-dic .bi{width:17px;height:17px;font-size:17px}
.ar-visor{margin-top:12px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#475569;min-height:180px}
.ar-visor iframe{width:100%;height:min(70vh,640px);border:0;display:block}
.ar-visor img{width:100%;display:block}
.ar-cargando{display:flex;align-items:center;justify-content:center;min-height:180px;color:#fff;font-size:13px}
.ar-disp{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ar-dispi{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border-radius:11px;border:1px solid var(--line);background:#fff}
.ar-dispi>svg,.ar-dispi>.bi{width:18px;height:18px;font-size:18px;flex:none;margin-top:1px}
.ar-dispi.si{border-color:#bbf7d0;background:#f0fdf4} .ar-dispi.si>svg,.ar-dispi.si>.bi{color:#15803d}
.ar-dispi.no{opacity:.75} .ar-dispi.no>svg,.ar-dispi.no>.bi{color:#9ca3af}
.ar-dispi b{display:block;font-size:14px} .ar-dispi small{display:block;line-height:1.4}
.ar-hist{position:relative;padding-left:16px;margin-top:6px}
.ar-hist:before{content:'';position:absolute;left:4px;top:6px;bottom:6px;width:2px;background:var(--line)}
.ar-mov{position:relative;padding:0 0 12px 8px}
.ar-movp{position:absolute;left:-16px;top:5px;width:9px;height:9px;border-radius:50%;background:#a8a29e;border:2px solid #fff}
.ar-mov p{margin:2px 0 0;font-size:13.5px;line-height:1.45}
.ar-form{display:flex;flex-direction:column;gap:9px;max-height:78vh;overflow-y:auto}
.ar-form h3{margin:0 0 2px;font-size:1.05rem;display:flex;align-items:center;gap:8px}
.ar-form label{display:block;font-size:12.5px;color:var(--muted)}
.ar-form input,.ar-form select,.ar-form textarea{width:100%;border:1.5px solid var(--line);border-radius:9px;
  padding:9px;font-size:14px;margin-top:3px;background:#fff;color:var(--fg)}
.ar-form textarea{resize:vertical}
.ar-formlargo{min-width:min(560px,86vw)}
.ar-2{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.ar-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px}
.ar-check{display:flex!important;align-items:center;gap:8px;font-size:13.5px!important;color:var(--fg)!important;padding:2px 0}
.ar-check input{width:auto!important;margin:0!important}
.ar-nota{background:#f5f5f4;border-radius:9px;padding:9px 11px;font-size:12.5px;color:#57534e;line-height:1.5}
.ar-nota svg,.ar-nota .bi{width:13px;height:13px;font-size:13px;vertical-align:-2px}
.ar-fs{border:1px solid var(--line);border-radius:11px;padding:11px;margin:4px 0}
.ar-fs legend{font-size:12px;font-weight:800;color:#57534e;padding:0 6px}
.ar-vals{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px}
.ar-arbol{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.ar-nodo{border-bottom:1px solid var(--line)} .ar-nodo:last-child{border-bottom:0}
.ar-nodo.baja{opacity:.5}
.ar-nrow{display:flex;align-items:flex-start;gap:8px;padding:9px 10px}
.ar-nodo.n1 .ar-nrow{padding-left:26px;background:#fafaf9}
.ar-nodo.n2 .ar-nrow{padding-left:44px}
.ar-tog{width:20px;flex:none;border:0;background:none;color:#a8a29e;cursor:pointer;padding:2px 0}
.ar-tog svg,.ar-tog .bi{width:12px;height:12px;font-size:12px}
.ar-nclave{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#78716c;font-weight:700}
.ar-niv{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#a8a29e;font-weight:800;margin-left:5px}
.ar-inv{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.ar-inv table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:520px}
.ar-inv th{background:var(--soft);padding:8px 10px;text-align:left;font-size:11px;text-transform:uppercase;
  letter-spacing:.4px;color:var(--muted);white-space:nowrap}
.ar-inv td{padding:8px 10px;border-top:1px solid var(--line);vertical-align:top}
.ar-inv td.n{text-align:right;font-variant-numeric:tabular-nums}
.ar-inv code{font-size:11.5px;color:#78716c;font-weight:700}
.ar-quitar{border:0;background:none;color:#b91c1c;cursor:pointer;padding:2px}
.ar-quitar svg,.ar-quitar .bi{width:12px;height:12px;font-size:12px}
.ar-elig{max-height:44vh;overflow-y:auto;border:1px solid var(--line);border-radius:10px}
.ar-elite{display:flex!important;gap:9px;align-items:flex-start;padding:9px 11px;border-bottom:1px solid var(--line);cursor:pointer}
.ar-elite:last-child{border-bottom:0}
.ar-elite input{width:auto!important;margin:2px 0 0!important;flex:none}
.ar-elite code{font-size:11.5px;color:#78716c;font-weight:700}
.ar-elite b{font-size:13.5px;color:var(--fg)}
.ar-elite small{display:block}
.ar-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:9px;margin-bottom:16px}
.ar-kpi{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;text-align:center}
.ar-kpi b{display:block;font-size:1.5rem;line-height:1.1}
.ar-kpi small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.ar-kpi i{display:block;font-style:normal;font-size:10.5px;color:#a8a29e;margin-top:1px}
.ar-kpi.ok{border-color:#bbf7d0;background:#f0fdf4} .ar-kpi.ok b{color:#15803d}
.ar-kpi.aviso{border-color:#fde68a;background:#fffbeb} .ar-kpi.aviso b{color:#b45309}
.ar-kpi.mal{border-color:#fecaca;background:#fef2f2} .ar-kpi.mal b{color:#b91c1c}
.ar-pacc{display:flex;gap:6px;flex:none}
.ar-rech{border-left:4px solid #b91c1c}

/* ============================ CONTRATOS Y PROVEEDORES ============================ */
.cn-tenant{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:12px;
  background:#f0fdfa;border:1px solid #99f6e4;margin-bottom:12px}
.cn-tenant>svg,.cn-tenant>.bi{width:18px;height:18px;font-size:18px;flex:none;color:#0f766e;margin-top:1px}
.cn-tenant b{display:block;font-size:14px;color:#134e4a}
.cn-tenant small{display:block;font-size:12.5px;color:#0f766e;line-height:1.45;margin-top:2px}
.cn-alerta{display:flex;align-items:center;gap:9px;margin:0 0 10px;padding:10px 12px;border-radius:11px;
  background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.88rem;text-decoration:none}
.cn-alerta.mal{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.cn-alerta>svg,.cn-alerta>.bi{width:17px;height:17px;font-size:17px;flex:none}
.cn-vistas{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:10px}
.cn-vista{flex:none;display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:#fff;
  border-radius:999px;padding:7px 12px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--fg)}
.cn-vista.on{background:#0f766e;color:#fff;border-color:#0f766e}
.cn-vista svg,.cn-vista .bi{width:14px;height:14px;font-size:14px;flex:none}
.cn-vista i{font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.cn-vista.on i{background:rgba(255,255,255,.25);color:#fff}
.cn-search{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:11px;
  padding:0 10px;background:#fff;margin-bottom:10px}
.cn-search>svg,.cn-search>.bi{width:16px;height:16px;font-size:16px;color:var(--muted);flex:none}
.cn-search input{flex:1;min-width:0;border:0;outline:0;padding:11px 0;font-size:14.5px;background:none}
.cn-x{border:0;background:none;color:var(--muted);cursor:pointer;padding:6px;display:inline-flex;align-items:center;gap:3px}
.cn-x.on{color:#0f766e} .cn-x i{font-style:normal;font-size:10px;font-weight:800}
.cn-filtros{margin-bottom:10px} .cn-filtros summary{display:none}
.cn-fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.cn-fgrid select,.cn-fgrid input{border:1.5px solid var(--line);border-radius:9px;padding:9px;font-size:13.5px;background:#fff;min-width:0}
.cn-cabeza{margin:2px 0 8px}
.cn-lista{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cn-fila{display:flex;align-items:center;gap:10px;padding:11px 12px;background:#fff;text-decoration:none;color:var(--fg)}
.cn-fila:active{background:var(--soft)} .cn-fila.plano{cursor:default}
.cn-fila>svg:last-child,.cn-fila>.bi:last-child{width:16px;height:16px;font-size:16px;color:#9ca3af;flex:none}
.cn-fila .grow{min-width:0}
.cn-fila b{display:block;font-size:14.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cn-fila small{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cn-fila small.aviso{color:#b45309;font-weight:600} .cn-fila small.mal{color:#b91c1c;font-weight:700}
.cn-fila code{font-size:11px}
.cn-est{width:5px;align-self:stretch;border-radius:3px;flex:none;min-height:36px}
.cn-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#0f766e;font-weight:700}
.cn-cm{font-style:normal;background:#e0e7ff;color:#3730a3;border-radius:5px;padding:0 5px;font-size:10px;font-weight:800}
.cn-vf{color:#15803d} .cn-vf svg,.cn-vf .bi{width:12px;height:12px;font-size:12px;vertical-align:-1px}
.cn-monto{font-weight:800;font-size:13px;color:#0f766e;flex:none;font-variant-numeric:tabular-nums}
.cn-pag{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}
.cn-migas{margin:0 0 8px} .cn-migas a{color:#0f766e;text-decoration:none;font-weight:600}
.cn-cab{border-left:4px solid #0f766e}
.cn-cabtop{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.cn-rfc{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:#0f766e;font-weight:700}
.cn-tit{font-size:1.15rem;line-height:1.3;margin:0 0 6px}
.cn-imp{margin-top:9px;padding:9px 11px;border-radius:9px;background:#fef2f2;color:#991b1b;font-size:12.5px;
  display:flex;align-items:flex-start;gap:7px;line-height:1.45}
.cn-imp.aviso{background:#fffbeb;color:#92400e}
.cn-imp svg,.cn-imp .bi{width:15px;height:15px;font-size:15px;flex:none;margin-top:1px}
/* El texto va DEBAJO de la barra, no encima: con el relleno al 39% la etiqueta quedaba partida
   entre el verde y el gris y se leía mal justo en el borde. */
.cn-barra{position:relative;height:9px;border-radius:6px;background:#e2e8f0;overflow:hidden;margin:12px 0 5px}
.cn-bfill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#0f766e,#14b8a6);border-radius:6px;transition:width .3s}
.cn-barra+.cn-blabel{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:7px}
.cn-blabel b{font-variant-numeric:tabular-nums;color:#0f766e}
.cn-blabel span{color:var(--muted)}
.cn-acc{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.cn-tabs{margin-bottom:10px;overflow-x:auto;gap:4px}
.cn-tabs button{gap:5px;white-space:nowrap;font-size:12.5px;padding:7px 10px}
@media (max-width:460px){
  .cn-tabs{display:grid;grid-template-columns:repeat(4,1fr);overflow:visible}
  .cn-tabs button{padding:7px 4px;font-size:11.5px;justify-content:center;min-width:0}
  .cn-tabs button>i.badge{display:none}
}
.cn-datos{display:grid;grid-template-columns:minmax(120px,38%) 1fr;gap:0;margin:0;
  border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.cn-datos dt{padding:9px 12px;background:var(--soft);font-size:12px;color:var(--muted);border-bottom:1px solid var(--line)}
.cn-datos dd{margin:0;padding:9px 12px;font-size:13.5px;border-bottom:1px solid var(--line);word-break:break-word}
.cn-datos dt:last-of-type,.cn-datos dd:last-of-type{border-bottom:0}
.cn-docs{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cn-doc{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff}
.cn-doc.venc{background:#fef2f2} .cn-doc .grow{min-width:0} .cn-doc b{display:block;font-size:14px}
.cn-dic{width:34px;height:34px;border-radius:9px;background:var(--soft);color:#0f766e;display:flex;align-items:center;justify-content:center;flex:none}
.cn-dic svg,.cn-dic .bi{width:17px;height:17px;font-size:17px}
.cn-visor{margin-top:12px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#475569;min-height:160px}
.cn-visor iframe{width:100%;height:min(70vh,620px);border:0;display:block}
.cn-visor img{width:100%;display:block}
.cn-cargando{display:flex;align-items:center;justify-content:center;min-height:160px;color:#fff;font-size:13px}
.cn-hist{position:relative;padding-left:16px;margin-top:6px}
.cn-hist:before{content:'';position:absolute;left:4px;top:6px;bottom:6px;width:2px;background:var(--line)}
.cn-mov{position:relative;padding:0 0 12px 8px}
.cn-movp{position:absolute;left:-16px;top:5px;width:9px;height:9px;border-radius:50%;background:#5eead4;border:2px solid #fff}
.cn-mov p{margin:2px 0 0;font-size:13.5px;line-height:1.45}
.cn-form{display:flex;flex-direction:column;gap:9px;max-height:78vh;overflow-y:auto}
.cn-form h3{margin:0 0 2px;font-size:1.05rem;display:flex;align-items:center;gap:8px}
.cn-form label{display:block;font-size:12.5px;color:var(--muted)}
.cn-form input,.cn-form select,.cn-form textarea{width:100%;border:1.5px solid var(--line);border-radius:9px;
  padding:9px;font-size:14px;margin-top:3px;background:#fff;color:var(--fg)}
.cn-form textarea{resize:vertical}
.cn-formlargo{min-width:min(560px,86vw)}
.cn-2{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.cn-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px}
.cn-check{display:flex!important;align-items:center;gap:8px;font-size:13.5px!important;color:var(--fg)!important}
.cn-check input{width:auto!important;margin:0!important}
.cn-fs{border:1px solid var(--line);border-radius:11px;padding:11px;margin:2px 0}
.cn-fs legend{font-size:12px;font-weight:800;color:#0f766e;padding:0 6px}
.cn-res{display:flex;flex-direction:column;max-height:180px;overflow-y:auto}
.cn-res:not(:empty){border:1px solid var(--line);border-radius:10px;margin-top:-4px}
.cn-resi{border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left;padding:9px 11px;cursor:pointer;width:100%}
.cn-resi:last-child{border-bottom:0} .cn-resi:active{background:var(--soft)}
.cn-resi b{display:block;font-size:13.5px} .cn-resi small{display:block;font-size:11.5px;color:var(--muted)}
.cn-sel{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:10px;background:#f0fdfa;
  border:1px solid #99f6e4;font-size:13.5px}
.cn-sel svg,.cn-sel .bi{width:15px;height:15px;font-size:15px;color:#0f766e;flex:none}
.cn-sel b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cn-sel code{font-size:11px;color:#0f766e}
.cn-inv{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.cn-inv table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:480px}
.cn-inv th{background:var(--soft);padding:8px 10px;text-align:left;font-size:11px;text-transform:uppercase;
  letter-spacing:.4px;color:var(--muted);white-space:nowrap}
.cn-inv td{padding:8px 10px;border-top:1px solid var(--line);vertical-align:top}
.cn-inv td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.stt.sm{font-size:10.5px;padding:1px 6px}
.cn-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:9px;margin-bottom:14px}
.cn-kpi{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;text-align:center}
.cn-kpi b{display:block;font-size:1.4rem;line-height:1.1}
.cn-kpi small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.cn-kpi i{display:block;font-style:normal;font-size:10.5px;color:#94a3b8;margin-top:1px}
.cn-kpi.ok{border-color:#99f6e4;background:#f0fdfa} .cn-kpi.ok b{color:#0f766e}
.cn-kpi.aviso{border-color:#fde68a;background:#fffbeb} .cn-kpi.aviso b{color:#b45309}
.cn-kpi.mal{border-color:#fecaca;background:#fef2f2} .cn-kpi.mal b{color:#b91c1c}
.cn-rech{border-left:4px solid #b91c1c}
/* Chapa «+N más» de usuarios. */
.us-mas{border:1.5px dashed #94a3b8;background:none;color:#475569;cursor:pointer;font-weight:700}
/* Arrastre del launcher: la tarjeta se levanta a los 0.5 s, el fantasma sigue al dedo,
   el destino se marca y el hueco de origen se atenúa. */
.launcher .app.lift{transform:scale(1.1);transition:transform .15s;filter:drop-shadow(0 8px 14px rgba(0,0,0,.25));z-index:3;position:relative}
.launcher .app.hueco{opacity:.25;transform:none;filter:none}
.app.drag-ghost{position:fixed;left:0;top:0;z-index:90;pointer-events:none;margin:0;
  transform:translate(-200px,-200px);opacity:.92;filter:drop-shadow(0 14px 22px rgba(0,0,0,.3));
  background:#fff;border-radius:16px;padding:12px 6px;text-align:center}
.launcher .app.drop-target{background:rgba(15,118,110,.10);border-radius:16px;box-shadow:inset 0 0 0 2px #14b8a6}

/* ============================ DRIVE FTP ============================ */
.dv-uso{margin-bottom:10px}
.dv-usobar{height:7px;border-radius:5px;background:#e8eaed;overflow:hidden}
.dv-usobar>div{height:100%;border-radius:5px;background:#1a73e8;transition:width .3s}
.dv-usobar>div.aviso{background:#f9ab00}.dv-usobar>div.mal{background:#d93025}
.dv-uso small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.dv-migas{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px;font-size:13.5px}
.dv-migas>svg,.dv-migas>.bi{width:15px;height:15px;font-size:15px;color:#5f6368}
.dv-migas a{color:#1a73e8;text-decoration:none;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-migas i{font-style:normal;color:#9aa0a6}
.dv-bar{display:flex;gap:8px;margin-bottom:10px}
.dv-search{flex:1;display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:999px;padding:0 14px;background:#fff}
.dv-search>svg,.dv-search>.bi{width:15px;height:15px;font-size:15px;color:var(--muted);flex:none}
.dv-search input{flex:1;min-width:0;border:0;outline:0;padding:10px 0;font-size:14.5px;background:none}
.dv-modo{width:42px;border:1.5px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;color:#5f6368;display:flex;align-items:center;justify-content:center}
.dv-modo svg,.dv-modo .bi{width:17px;height:17px;font-size:17px}
.dv-zona{border-radius:14px;min-height:180px}
.dv-zona.drop{outline:2px dashed #1a73e8;outline-offset:4px;background:#e8f0fe66}
/* lista */
.dv-zona.lista{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.dv-zona.lista .dv-item{display:flex;align-items:center;gap:11px;padding:11px 12px;cursor:pointer}
.dv-zona.lista .dv-item + .dv-item{border-top:1px solid var(--line)}
.dv-zona.lista .dv-item:active{background:var(--soft)}
/* rejilla */
.dv-zona.rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;background:none;border:0}
.dv-zona.rejilla .empty{grid-column:1/-1}
.dv-zona.rejilla .dv-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:18px 10px 12px;background:#fff;border:1px solid var(--line);border-radius:14px;cursor:pointer;text-align:center}
.dv-zona.rejilla .dv-item:active{background:var(--soft)}
.dv-zona.rejilla .dv-menu{position:absolute;top:6px;right:6px}
.dv-zona.rejilla .dv-star{position:absolute;top:10px;left:10px}
.dv-ic{width:40px;height:40px;border-radius:10px;background:#e8f0fe;color:#1a73e8;display:flex;align-items:center;justify-content:center;flex:none}
.dv-ic.carp{background:#fef7e0;color:#f9ab00}
.dv-ic svg,.dv-ic .bi{width:21px;height:21px;font-size:21px}
.dv-info{min-width:0;flex:1}
.dv-info b{display:block;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-zona.rejilla .dv-info b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px}
.dv-info small{display:block;color:var(--muted);font-size:11.5px;margin-top:1px}
.dv-star{color:#f9ab00;flex:none}.dv-star svg,.dv-star .bi{width:13px;height:13px;font-size:13px}
.dv-menu{border:0;background:none;color:#5f6368;cursor:pointer;padding:8px;flex:none;border-radius:50%}
.dv-menu:active{background:var(--soft)}
.dv-menu svg,.dv-menu .bi{width:16px;height:16px;font-size:16px}
.dv-pie{text-align:center;margin-top:12px}
@media (pointer:coarse){ .dv-pie{display:none} }   /* el arrastre es cosa de escritorio */
.dv-sheet{display:flex;flex-direction:column;gap:2px;min-width:min(320px,80vw)}
.dv-titulo{display:flex;align-items:center;gap:8px;font-weight:700;margin:0 0 8px;font-size:14.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-titulo svg,.dv-titulo .bi{width:17px;height:17px;font-size:17px;flex:none;color:#5f6368}
.dv-op{display:flex;align-items:center;gap:11px;border:0;background:none;padding:11px 14px;border-radius:10px;
  font-size:14.5px;cursor:pointer;text-align:left;color:var(--fg);width:100%}
.dv-op:active{background:var(--soft)}
.dv-op svg,.dv-op .bi{width:17px;height:17px;font-size:17px;color:#5f6368;flex:none}
.dv-op.mal{color:#d93025}.dv-op.mal svg,.dv-op.mal .bi{color:#d93025}
.dv-form input{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px;font-size:15px}
.dv-form h3{margin:0 0 10px;font-size:1.05rem;display:flex;align-items:center;gap:8px}
.dv-prev{display:flex;flex-direction:column;max-height:82vh;min-width:min(560px,88vw)}
.dv-prevh{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dv-prevh b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px}
.dv-prevb{overflow:auto;border-radius:12px;background:#f1f3f4;display:flex;align-items:center;justify-content:center;min-height:200px}
.dv-prevb iframe{width:min(82vw,760px);height:70vh;border:0}
.dv-prevb img{max-width:100%;max-height:70vh;display:block}

/* ============================ TRÁMITES Y FORMULARIOS ============================ */
.tr-lista{display:flex;flex-direction:column;gap:8px}
.tr-fila{display:flex;align-items:center;gap:11px;padding:12px;background:#fff;border:1px solid var(--line);
  border-radius:14px;color:var(--fg);text-decoration:none}
.tr-fila:active{background:var(--soft)}
.tr-fila b{display:block;font-size:14.5px}
.tr-fila small{display:block;margin-top:1px}
.tr-fila.off{opacity:.6}
.tr-pub{width:34px;height:34px;border-radius:50%;background:var(--soft);color:#8a8f98;display:flex;align-items:center;justify-content:center;flex:none}
.tr-pub.si{background:#e6f4ef;color:#0f766e}
.tr-pub svg,.tr-pub .bi{width:16px;height:16px;font-size:16px}
.tr-est{width:10px;height:10px;border-radius:50%;flex:none}
.tr-cta{min-width:24px;height:24px;border-radius:12px;background:#0f766e;color:#fff;font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;padding:0 7px;flex:none}
.tr-card{margin-bottom:12px}
.tr-card h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:1rem}
.tr-meta{display:flex;gap:6px;flex-wrap:wrap}
.tr-meta .chip.ok{background:#e6f4ef;color:#0f766e;border-color:#0f766e55}
.tr-url{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.tr-url code{background:var(--soft);padding:7px 10px;border-radius:8px;font-size:12.5px;word-break:break-all}
.tr-datos{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:10px 0}
.tr-datos small,.tr-datos-det small{display:block;color:var(--muted);font-size:11.5px}
.tr-datos b{font-size:14px}
.tr-req{margin:6px 0 0;padding-left:20px}
.tr-req li{font-size:13.5px;margin-bottom:3px}
.tr-campos{display:flex;flex-direction:column;gap:6px}
.tr-campo{display:flex;align-items:center;gap:8px;padding:9px 11px;background:var(--soft);border-radius:10px}
.tr-campo b{font-size:13.5px}
.tr-req-star{color:#b91c1c;font-style:normal}
.tr-form label{display:block;margin-bottom:10px;font-size:13px;color:var(--muted)}
.tr-form input,.tr-form textarea,.tr-form select{width:100%;border:1.5px solid var(--line);border-radius:10px;
  padding:10px;font-size:14.5px;margin-top:4px;background:#fff;color:var(--fg)}
.tr-form h3{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:1.05rem}
.tr-ambitos{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.tr-amb{display:block}
.tr-amb input{display:none}
.tr-amb span{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:12px;padding:10px;cursor:pointer}
.tr-amb input:checked + span{border-color:#0f766e;background:#e6f4ef}
.tr-amb b{display:block;font-size:14px}
.tr-amb small{display:block;color:var(--muted);font-size:12px}
.tr-amb svg,.tr-amb .bi{width:20px;height:20px;font-size:20px;color:#0f766e;flex:none}
.tr-det{min-width:min(480px,86vw);max-height:80vh;overflow:auto}
.tr-datos-det{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px;margin:10px 0}
.tr-datos-det b{font-size:13.5px;word-break:break-word}
.tr-docs{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}

/* ============================ REQUISICIONES Y COMPRAS ============================ */
.cp-items{display:flex;flex-direction:column;gap:6px}
.cp-item{display:flex;align-items:center;gap:10px;padding:9px 11px;background:var(--soft);border-radius:10px}
.cp-item b{font-size:13.5px}
.cp-avance{height:5px;border-radius:4px;background:#e2e6ea;margin:5px 0 2px;overflow:hidden}
.cp-avance>div{height:100%;background:#b45309;border-radius:4px;transition:width .3s}
.cp-avance>div.ok{background:#15803d}
.cp-nueva{min-width:min(520px,88vw)}
.cp-renglon{display:grid;grid-template-columns:1fr 66px 64px 76px 34px;gap:6px;margin-bottom:6px;align-items:center}
.cp-renglon input{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:8px 7px;font-size:13.5px;margin:0}
.cp-oc-desc{font-size:13px;font-weight:600;line-height:1.2}
.cp-oc-items .cp-renglon{grid-template-columns:1fr 74px 92px}
.cp-nueva form .cp-renglon{margin-top:0}
.cp-sel{min-width:min(440px,86vw)}
.cp-sel h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:1.05rem}
.cp-sel-lista{display:flex;flex-direction:column;gap:4px;max-height:46vh;overflow:auto;margin-top:8px}
.cp-op{display:flex;align-items:center;gap:10px;border:0;background:var(--soft);border-radius:10px;padding:10px;
  cursor:pointer;text-align:left;font-family:inherit;color:var(--fg);width:100%}
.cp-op:active{background:var(--line)}
.cp-op.off{opacity:.55;cursor:not-allowed}
.cp-op b{font-size:13.5px;display:block}
.cp-rec-items .cp-renglon{grid-template-columns:1fr 92px}
.cp-item .grow>b{display:block}

/* Marca de la dependencia en el encabezado: el punto dorado se vuelve logo cuando lo hay. */
.dot.con-logo{background:#fff;width:26px;height:26px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:6px}
.dot.con-logo img{width:100%;height:100%;object-fit:contain;display:block}
.dir-marca{min-width:min(480px,88vw)}
.dir-logo-fila{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.dir-logo{width:64px;height:64px;border:1.5px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--muted);overflow:hidden;flex:none;background:#fff}
.dir-logo img{width:100%;height:100%;object-fit:contain}
.dir-marca input[type=color]{padding:4px;height:44px}

/* Buscador de apps del inicio */
.lbusca{display:flex;align-items:center;gap:8px;flex:1;border:1.5px solid var(--line);border-radius:999px;padding:0 14px;background:#fff}
.lbusca input{flex:1;min-width:0;border:0;outline:0;padding:10px 0;font-size:15px;background:none}
.lbusca svg,.lbusca .bi{width:16px;height:16px;font-size:16px;color:var(--muted);flex:none}
.lorden{display:flex;gap:2px;flex:none;margin-right:-8px} .lorden button{border:0;background:none;border-radius:999px;width:32px;height:32px;display:grid;place-items:center;color:var(--muted);cursor:pointer}
.lorden button.on{background:var(--brand,#9b1b4e);color:#fff} .lorden button.on svg{color:#fff}
.app .ic{position:relative} .app-oc{position:absolute;right:-4px;bottom:-4px;width:20px;height:20px;border-radius:50%;background:#475569;color:#fff;display:grid;place-items:center;border:2px solid #fff}
.app-oc svg{width:11px!important;height:11px!important;color:#fff!important} .app.oculta .ic{opacity:.75}
.app-ocultas h3{margin:0 0 4px} .app-oc-fila{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.app-oc-fila .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#fff;flex:none} .app-oc-fila .ic svg{width:18px;height:18px}
.lresultados{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:4px 0 90px;overflow-y:auto}

/* ============================ GAFETE DIGITAL ============================ */
/* Credencial en proporción PVC real (CR80 vertical: 53.98 × 85.6 mm) con volteo 3D. */
.gfc-wrap{perspective:1400px;max-width:360px;margin:0 auto}
.gfc{position:relative;width:min(340px,88vw);aspect-ratio:53.98/85.6;margin:0 auto;cursor:pointer;
  transform-style:preserve-3d;transition:transform .75s cubic-bezier(.35,.1,.2,1)}
.gfc.volteada{transform:rotateY(180deg)}
.gfc-cara{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 10px 34px #0003,0 2px 6px #0002;
  display:flex;flex-direction:column}
.gfc-reverso{transform:rotateY(180deg)}
/* frente */
.gfc-banda{display:flex;align-items:center;gap:10px;padding:12px 14px;color:#fff;
  background:linear-gradient(135deg,var(--gf),color-mix(in srgb,var(--gf) 70%,#000))}
.gfc-logo{width:38px;height:38px;background:#fff;border-radius:8px;padding:3px;object-fit:contain;flex:none}
.gfc-logoph{display:flex;align-items:center;justify-content:center;color:var(--gf)}
.gfc-logoph svg,.gfc-logoph .bi{width:22px;height:22px;font-size:22px}
.gfc-dep{display:block;font-size:9.5px;letter-spacing:.09em;font-weight:800;line-height:1.25}
.gfc-gob{display:block;font-size:8px;letter-spacing:.07em;opacity:.85}
.gfc-centro{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:10px 16px;gap:3px;
  background:
    radial-gradient(circle at 18% 82%, color-mix(in srgb,var(--gf) 7%,#fff) 0 34%, transparent 35%),
    radial-gradient(circle at 88% 14%, color-mix(in srgb,var(--gf) 5%,#fff) 0 28%, transparent 29%),#fff}
.gfc-foto{width:46%;aspect-ratio:3/3.7;border-radius:12px;background:#eef1f3;border:3px solid var(--gf);
  display:flex;align-items:center;justify-content:center;color:#9aa5a1;overflow:hidden;margin-bottom:8px}
.gfc-foto img{width:100%;height:100%;object-fit:cover}
.gfc-foto svg,.gfc-foto .bi{width:44px;height:44px;font-size:44px}
.gfc-nombre{font-size:17px;line-height:1.15;font-weight:800}
.gfc-cargo{font-size:11.5px;color:#41504c}
.gfc-adsc{font-size:10.5px;color:#6b7280}
.gfc-sello{display:inline-flex;align-items:center;gap:5px;border:1.5px solid;border-radius:999px;
  padding:4px 12px;font-weight:800;font-size:11px;margin-top:8px}
.gfc-sello svg,.gfc-sello .bi{width:12px;height:12px;font-size:12px}
.gfc-pie{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 14px;color:#fff;
  background:var(--gf);font-size:8.5px;letter-spacing:.08em;font-weight:700}
.gfc-pie span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* reverso */
.gfc-magnetica{height:34px;background:#2b2f33;flex:none;margin-top:14px}
.gfc-rcuerpo{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:10px 16px 6px;gap:5px}
.gfc-qr{width:47%;border-radius:8px;border:1px solid var(--line)}
.gfc-url{font-size:9px;color:#6b7280;font-family:monospace}
.gfc-leyenda{font-size:9.5px;color:#41504c;line-height:1.45;margin:2px 0}
.gfc-datos{display:flex;gap:18px;font-size:9px;color:#6b7280}
.gfc-datos b{font-size:10px;color:#1c2321}
.gfc-firma{width:70%;margin-top:auto}
.gfc-firma span{display:block;border-bottom:1.2px solid #444}
.gfc-firma small{font-size:8.5px;color:#6b7280}
.gfc-rep{font-size:8.5px;color:#6b7280;margin-bottom:2px}
.ro-ia{border:1.5px dashed #4338ca66;background:linear-gradient(135deg,#eef2ff,#f8faff)}
.ro-ia select,.ro-ia textarea{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:10px;font-size:14.5px;background:#fff}
.ro-prev{display:flex;flex-direction:column;min-width:min(720px,92vw);max-height:86vh}
.ro-prevb{flex:1;min-height:300px;overflow:hidden;border-radius:12px}
/* --- Editor de campos (documento con plantilla) --- */
.ro-campos{display:grid;gap:14px;margin-top:12px}
@media(min-width:620px){.ro-campos{grid-template-columns:1fr 1fr}.ro-campo.ancho{grid-column:1/-1}}
.ro-campo{display:flex;flex-direction:column;gap:5px}
.ro-campo .k{font-size:12.5px;font-weight:600;color:var(--muted)}
.ro-campo .req{color:#c62828;margin-left:3px}
.ro-campo input,.ro-campo select,.ro-campo textarea{width:100%;border:1.5px solid var(--line);
  border-radius:10px;padding:10px;font-size:14.5px;background:#fff;font-family:inherit}
.ro-campo input:focus,.ro-campo select:focus,.ro-campo textarea:focus{outline:0;border-color:#4338ca}
.ro-campo input:disabled,.ro-campo textarea:disabled,.ro-campo select:disabled{background:var(--soft);color:var(--muted)}
.ro-money{display:flex;align-items:center;gap:7px}
.ro-money span{font-weight:700;color:var(--muted);font-size:15px}
.ro-sino{display:flex;align-items:center;gap:9px;padding:10px 0}
.ro-sino input{width:auto!important}
.ro-tabla table{width:100%;border-collapse:collapse;font-size:13.5px}
.ro-tabla th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:0 6px 5px}
.ro-tabla td{padding:3px 3px 3px 0}
.ro-tabla td.x{width:36px;text-align:center}
.ro-tabla input{padding:8px 10px!important;font-size:13.5px!important}
.ro-tabla .btn{margin-top:7px}

/* --- Expediente (anexos) --- */
.ro-anx{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.ro-anx-i{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft,#eef1f5)}
.ro-anx-i:last-child{border-bottom:0}
.ro-anx-ic{font-size:19px;color:#4338ca;flex:none}
.ro-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.ro-chips .chip{cursor:pointer;border:1px solid var(--line);background:var(--soft);
  padding:5px 11px;border-radius:999px;font-size:12.5px;font-family:inherit;color:var(--fg)}
.ro-chips .chip:hover{border-color:#4338ca;color:#4338ca}
/* --- Verificación pública --- */
.ro-verif{border:1.5px solid #2e7d4640;background:linear-gradient(135deg,#f0f9f3,#f9fdfa)}
.ro-url{display:block;background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 11px;
  font-size:12.5px;word-break:break-all;font-family:ui-monospace,Menlo,monospace;color:#1f3a5f}
/* --- NIP y clave del expediente --- */
.ro-nip{width:100%;text-align:center;letter-spacing:.42em;font-size:25px;font-weight:700;
  font-family:ui-monospace,Menlo,monospace;padding:13px;border:1.5px solid var(--line);
  border-radius:12px;background:#fff}
.ro-nip:focus{outline:0;border-color:#4338ca}
.ro-qr{display:flex;justify-content:center;padding:14px;background:#fff;border-radius:12px;border:1px solid var(--line)}
.ro-qr img{width:min(230px,62vw);height:auto;image-rendering:pixelated}
.ro-clave{text-align:center;font-family:ui-monospace,Menlo,monospace;font-size:27px;font-weight:700;
  letter-spacing:.11em;color:#1f3a5f;background:var(--soft);border:1.5px dashed var(--line);
  border-radius:12px;padding:17px;margin-top:10px;user-select:all}

/* ============================ CASETA DE VIGILANCIA ============================ */
.cs-conteo{display:flex;gap:14px;flex-wrap:wrap;background:var(--soft);border-radius:12px;padding:10px 14px;margin-bottom:10px;font-size:13.5px}
.cs-conteo span{display:inline-flex;align-items:center;gap:7px;color:var(--muted)}
.cs-conteo b{color:var(--fg);font-size:16px}
.cs-conteo svg,.cs-conteo .bi{width:16px;height:16px;font-size:16px;color:#475569}
.cs-tipo{cursor:pointer}
.cs-sugs{display:flex;flex-direction:column;gap:3px;margin-top:4px}
.cs-sug{display:block;border:0;background:var(--soft);border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-family:inherit;color:var(--fg);width:100%}
.cs-sug:active{background:var(--line)}
.cs-sug b{display:block;font-size:13px}
.cs-sug small{color:var(--muted);font-size:11.5px}

/* ============================ SELECTOR DE FOTOS (core/fotos.js) ============================ */
.dz{min-width:min(440px,88vw)}
.dz h3{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:1.05rem}
.dz-cam{display:flex;align-items:center;gap:12px;width:100%;border:0;border-radius:14px;padding:13px 14px;
  cursor:pointer;text-align:left;font-family:inherit;color:#fff;margin-bottom:10px;
  background:linear-gradient(135deg,#111827,#374151)}
.dz-cam:active{opacity:.9}
.dz-cam svg,.dz-cam .bi{width:24px;height:24px;font-size:24px;flex:none}
.dz-cam b{display:block;font-size:14.5px}
.dz-cam small{display:block;opacity:.75;font-size:12px}
.dz-zona{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  border:2px dashed var(--line);border-radius:14px;padding:26px 14px;text-align:center;cursor:pointer;
  background:var(--soft);color:var(--muted);transition:border-color .15s, background .15s}
.dz-zona.sobre{border-color:var(--accent);background:#eff6ff;color:var(--accent)}
.dz-zona.llena{opacity:.5;cursor:not-allowed}
.dz-zona svg,.dz-zona .bi{width:30px;height:30px;font-size:30px}
.dz-zona b{font-size:14.5px;color:var(--fg)}
.dz-zona small{font-size:12px}
.dz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin-top:10px}
.dz-thumb{position:relative;aspect-ratio:1;border-radius:10px;background:#eee center/cover no-repeat;border:1px solid var(--line)}
.dz-thumb button{position:absolute;top:-6px;right:-6px;width:24px;height:24px;border-radius:50%;border:0;
  background:#111827;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0004}
.dz-thumb button svg,.dz-thumb button .bi{width:11px;height:11px;font-size:11px}

/* Agenda: invitaciones y control de sala */
.ag-rsvp{border-left:5px solid #7c3aed;background:#f5f3ff}
.ag-rsvp b{display:flex;align-items:center;gap:8px}
.ag-sala{min-width:min(420px,86vw);text-align:center}
.ag-sala h3{display:flex;align-items:center;gap:8px;justify-content:center;margin:0 0 8px}
.ag-sala-pag{font-size:26px;margin:12px 0 4px;color:var(--muted)}
.ag-sala-pag b{color:var(--fg);font-size:34px}
.ag-sala-ctl{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:8px}
.ag-sala-btn{width:64px;height:64px;border-radius:50%;border:1.5px solid var(--line);background:#fff;
  cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--fg)}
.ag-sala-btn:active{background:var(--soft)}
.ag-sala-btn svg,.ag-sala-btn .bi{width:26px;height:26px;font-size:26px}
.ag-sala-btn.grande{width:84px;height:84px;background:var(--brand);color:#fff;border:0}
.ag-sala-btn.grande svg,.ag-sala-btn.grande .bi{width:36px;height:36px;font-size:36px}
.ag-sala select{border:1.5px solid var(--line);border-radius:8px;padding:4px 8px}

/* ============================ NOTICIAS ============================ */
.chips.nw-tags{margin-bottom:10px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;padding-bottom:2px}
.nw-tags::-webkit-scrollbar{display:none}
.nw-tags .chip{white-space:nowrap;flex:none}
.nw-dia{position:sticky;top:0;z-index:2;background:var(--soft);border-left:4px solid #1d4ed8;
  padding:8px 12px;margin:14px -4px 10px;font-size:12.5px;font-weight:800;letter-spacing:.06em;color:#4b5563;border-radius:0 8px 8px 0}
.nw-card{display:block;background:#fff;border-radius:16px;padding:13px 14px;margin-bottom:10px;
  color:inherit;text-decoration:none;box-shadow:0 1px 3px #0002}
.nw-card:active{background:var(--soft)}
.nw-tag{color:#1d4ed8;font-size:12px;font-weight:800;letter-spacing:.04em;margin-bottom:8px}
.nw-cuerpo{display:flex;gap:12px;align-items:flex-start}
.nw-logo{position:relative;width:84px;height:84px;border-radius:14px;background:var(--soft);flex:none;
  display:flex;align-items:center;justify-content:center;color:var(--muted);overflow:visible}
.nw-logo img{width:56px;height:56px;object-fit:contain;border-radius:10px}
.nw-logo svg,.nw-logo .bi{width:30px;height:30px;font-size:30px}
.nw-sent{position:absolute;top:-7px;right:-7px;font-size:17px;background:#fff;border-radius:50%;
  width:26px;height:26px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0003}
.nw-cuerpo b{font-size:15px;line-height:1.35;display:block}
.nw-pie{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
.nw-pie .grow b{display:block;font-size:12.5px;color:var(--muted);font-weight:600}
.nw-pie small{color:var(--muted);font-size:11.5px}
.nw-star.on{color:#f59e0b}
.nw-pie .icon-btn{color:#9ca3af;padding:6px}
.nw-pie .icon-btn svg,.nw-pie .icon-btn .bi{width:18px;height:18px;font-size:18px}

/* ============ Preloader de capas geográficas (core/geo.js) ============ */
.geo-pre{position:absolute;inset:0;z-index:800;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.72);backdrop-filter:blur(2px);transition:opacity .3s}
.geo-pre-va{opacity:0}
.geo-pre-caja{background:#fff;border-radius:16px;padding:22px 26px;box-shadow:0 10px 34px #0003;
  text-align:center;min-width:min(260px,80vw)}
.geo-pre-spin{width:38px;height:38px;margin:0 auto 12px;border:3.5px solid var(--line);
  border-top-color:var(--brand);border-radius:50%;animation:geo-gira .8s linear infinite}
@keyframes geo-gira{to{transform:rotate(360deg)}}
.geo-pre-tit{display:block;font-size:14.5px;margin-bottom:10px}
.geo-pre-barra{height:6px;border-radius:4px;background:var(--line);overflow:hidden}
.geo-pre-barra>div{height:100%;width:0;border-radius:4px;background:var(--brand);transition:width .3s}
.geo-pre-indet .geo-pre-barra>div{animation:geo-vaiven 1.2s ease-in-out infinite}
@keyframes geo-vaiven{0%{margin-left:0}50%{margin-left:65%}100%{margin-left:0}}
.geo-pre-n{display:block;margin-top:8px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.geo-pre-mal .geo-pre-spin{border-top-color:#b91c1c;animation:none}
.geo-pre-mal .geo-pre-barra>div{background:#b91c1c}
@media (prefers-reduced-motion:reduce){.geo-pre-spin,.geo-pre-indet .geo-pre-barra>div{animation:none}}

/* --- encuestas: levantamiento en campo (dedos grandes, alto contraste, sol de mediodía) --- */
.en-top{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.en-barra{height:6px;border-radius:999px;background:var(--soft);overflow:hidden;margin-bottom:4px}
.en-barra>div{height:100%;background:var(--accent);border-radius:999px;transition:width .3s}
.en-barra.grande{height:10px;margin:10px 0 6px}
.en-preg{max-width:560px;margin:0 auto}
.en-preg h2{font-size:24px;line-height:1.25;font-weight:800;margin:0 0 6px}
.en-ops{display:grid;gap:10px;margin-top:18px}
.en-op{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font-size:17px;font-weight:600;
  padding:16px;min-height:60px;border:2px solid var(--line);border-radius:12px;background:#fff;color:var(--fg);cursor:pointer}
.en-op:active{transform:scale(.98)}
.en-op.sel{border-color:var(--accent);background:#eff6ff}
.en-num{flex:0 0 34px;height:34px;border-radius:50%;background:var(--soft);display:grid;place-items:center;
  font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.en-ops.escala .en-op:nth-child(1) .en-num{background:#fee2e2;color:#991b1b}
.en-ops.escala .en-op:nth-child(2) .en-num{background:#ffedd5;color:#9a3412}
.en-ops.escala .en-op:nth-child(3) .en-num{background:#fef9c3;color:#854d0e}
.en-ops.escala .en-op:nth-child(4) .en-num{background:#dcfce7;color:#166534}
.en-ops.escala .en-op:nth-child(5) .en-num{background:#bbf7d0;color:#14532d}
.en-ops textarea,.en-ops input{width:100%;border:2px solid var(--line);border-radius:12px;padding:14px;font-size:17px;outline:0}
.en-ops textarea:focus,.en-ops input:focus{border-color:var(--accent)}
/* cierre del levantamiento: confirmación grande, porque se ve de reojo entre entrevista y entrevista */
.en-fin{max-width:420px;margin:40px auto;text-align:center}
.en-fin h2{font-size:26px;margin:14px 0 4px}
.en-fin .btn{margin-top:10px}
.en-check{width:88px;height:88px;margin:0 auto;border-radius:50%;background:#dcfce7;color:#166534;display:grid;place-items:center}
.en-check svg{width:48px;height:48px}
/* lista */
.en-card{cursor:pointer}
.en-card.borrador,.en-card.cerrada{opacity:.85}
.en-meta{margin:10px 0}
.en-meta b{font-size:22px;font-variant-numeric:tabular-nums}
.en-pend{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:10px;border-radius:var(--r);
  background:#fef3c7;color:#92400e}
.en-pend small{display:block;font-size:12px;opacity:.85}
.en-pend svg{width:22px;height:22px;flex:0 0 22px}
/* resultados */
.en-hero{text-align:center}
.en-cifra{font-size:44px;font-weight:800;line-height:1.1;margin:6px 0;font-variant-numeric:tabular-nums}
.en-cifra small{display:block;font-size:13px;font-weight:500;color:var(--muted)}
/* El total, abierto en dos: lo mío y lo del resto del equipo, con un «+» que deja claro que suman
 * la cifra de arriba. Números tabulares para que no bailen al refrescarse cada 20 s. */
.en-reparto{display:flex;align-items:center;justify-content:center;gap:14px;margin:2px 0 10px}
.en-reparto>div{min-width:96px;padding:8px 10px;border-radius:12px;background:var(--soft)}
.en-reparto b{display:block;font-size:23px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums}
.en-reparto small{display:block;font-size:12px;color:var(--muted);line-height:1.25}
.en-mas{font-size:17px;font-weight:700;color:var(--muted)}
.en-mio{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.nd-ok{color:#15803d;font-weight:600}
.en-preg-r{display:grid;gap:8px}
.en-nota{display:flex;align-items:baseline;gap:6px}
.en-nota span{font-size:30px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.en-nota small{color:var(--muted)}
.en-fila{display:grid;grid-template-columns:minmax(90px,34%) 1fr auto;align-items:center;gap:10px;font-size:14px}
.en-et{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.en-b{height:16px;border-radius:6px;background:var(--soft);overflow:hidden}
.en-b>div{height:100%;background:var(--accent);border-radius:6px;transition:width .4s}
.en-n{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.en-n small{display:block;font-weight:400;color:var(--muted);font-size:11px}
.en-secs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}

/* Árbol de encuestas por persona: yo y mi estructura, con botones de nivel (como Usuarios). La
 * sangría por profundidad (--d) lleva una guía vertical; cada renglón trae el número de esa persona,
 * un miniindicador de aporte relativo y, si tiene gente, el total de su rama. Números tabulares para
 * que no bailen con el refresco de 20 s. */
.en-arbol{display:block}
.en-ar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:2px}
.en-ar-head>b{display:flex;align-items:center;gap:7px;font-size:15px}
.en-ar-head>b svg{color:var(--accent)}
.en-ar-niv{flex:none}
/* Leyenda compacta de qué significa cada dato. */
.en-ar-ley{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;margin:4px 0 10px;font-size:12px}
.en-ar-ley span{display:inline-flex;align-items:center;gap:5px}
.en-ar-sw{display:inline-block;border-radius:3px}
.en-ar-sw.big{width:12px;height:12px;background:var(--txt,#111);border-radius:4px}
.en-ar-sw.bar{width:16px;height:6px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 35%,#fff))}
/* Total general destacado, arriba de las ramas. */
.en-ar-total{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:12px;
  background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 16%,#fff),color-mix(in srgb,var(--accent) 6%,#fff));
  border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));margin-bottom:8px}
.en-ar-total span{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--muted)}
.en-ar-total span svg{color:var(--accent)}
.en-ar-total>b{font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--accent)}
/* Renglón. La guía vertical se dibuja con un ::before por cada nivel de sangría. */
.en-ar-row{display:flex;align-items:center;gap:9px;padding:8px 8px;border-radius:10px;margin-left:calc(var(--d) * 20px);position:relative}
.en-ar-row::before{content:"";position:absolute;left:-10px;top:0;bottom:0;width:2px;background:var(--line);border-radius:2px;opacity:calc(min(var(--d),1))}
.en-ar-row.raiz{background:color-mix(in srgb,var(--accent) 9%,#fff);border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line))}
.en-ar-row.raiz .en-ar-nom{font-size:15px}
.en-ar-row.padre:not(.raiz){background:var(--soft)}
.en-ar-row:hover{box-shadow:inset 0 0 0 1px var(--line)}
.en-ar-tg{border:0;background:none;width:24px;height:24px;flex:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);padding:0;border-radius:7px;transition:background .15s}
.en-ar-tg:hover{background:rgba(0,0,0,.06)} .en-ar-tg:active{background:rgba(0,0,0,.12)}
.en-ar-tg svg{width:13px;height:13px} .en-ar-tg.vacio{cursor:default;color:var(--line)} .en-ar-tg.vacio svg{width:10px;height:10px}
/* Barra vertical de aporte: qué fracción de su rama levantó esta persona. */
.en-ar-av{flex:none;width:4px;height:26px;border-radius:3px;background:var(--soft);overflow:hidden;display:flex;align-items:flex-end}
.en-ar-av i{display:block;width:100%;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#fff));border-radius:3px;min-height:2px}
.en-ar-nom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:14px}
.en-ar-nom small{display:block;font-weight:400;color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.en-ar-n{flex:none;min-width:30px;text-align:right;font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--txt,#111)}
.en-ar-n.cero{color:var(--line);font-weight:700}
.en-ar-rama{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,#fff);border-radius:999px;padding:3px 9px;font-variant-numeric:tabular-nums}
.en-ar-rama svg{width:12px;height:12px}
.en-ar-hijos{display:block}
@media (prefers-color-scheme:dark){.en-ar-sw.big{background:#e5e7eb} .en-ar-n{color:#e5e7eb}}

/* --- encuestas: folio operativo y sentido de las respuestas --- */
/* El folio se dicta en voz alta: tiene que leerse de un vistazo desde el otro lado de la banqueta,
 * sin robarle la pantalla a la pregunta. De ahí monoespaciado, ancho de letra y color plano. */
.en-folio{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:15px;font-weight:700;
  letter-spacing:.5px;background:#ecfeff;color:#155e75;border:1px solid #a5f3fc;border-radius:8px;
  padding:6px 10px;white-space:nowrap;flex:0 0 auto}
.en-folio.grande{display:inline-block;font-size:26px;padding:12px 18px;margin:14px 0 4px;letter-spacing:1px}
/* eco del sentido en las opciones: el encuestador no lo necesita, pero al revisar resultados sí */
.en-op.s-pos .en-num{background:#dcfce7;color:#166534}
.en-op.s-neg .en-num{background:#fee2e2;color:#991b1b}
.en-op.s-neu .en-num{background:#f1f5f9;color:#475569}
.en-b>div.s-pos{background:var(--ok)} .en-b>div.s-neg{background:var(--danger)} .en-b>div.s-neu{background:#94a3b8}
/* saldo de opinión: una sola barra apilada dice más que tres cifras sueltas */
.en-saldo{margin:4px 0 10px}
.en-saldo-b{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--soft)}
.en-saldo-b span{display:block;height:100%}
.en-saldo-b .pos{background:var(--ok)} .en-saldo-b .neu{background:#cbd5e1} .en-saldo-b .neg{background:var(--danger)}
.en-saldo-n{display:flex;gap:10px;align-items:baseline;margin-top:5px;font-size:12px;color:var(--muted)}
.en-saldo-n .pos{color:var(--ok)} .en-saldo-n .neg{color:var(--danger)}
.en-saldo-n b{margin-left:auto;font-size:13px}

/* --- evidencias: el fotógrafo de comunicación social --- */
/* El folio se teclea cientos de veces al día: campo enorme, monoespaciado y separado, para verlo
 * de un vistazo y comparar carácter por carácter contra la pantalla del encuestador. */
.ev-folio-card{text-align:center}
.ev-lbl{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.ev-folio-in{width:100%;border:2px solid var(--line);border-radius:12px;padding:14px 10px;
  font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:30px;font-weight:700;
  letter-spacing:2px;text-align:center;text-transform:uppercase;outline:0}
.ev-folio-in:focus{border-color:#7c3aed}
.ev-est{margin-top:10px;font-size:14px;min-height:22px}
.ev-est svg{width:16px;height:16px;vertical-align:-3px}
.ev-ok{color:var(--ok);font-weight:600} .ev-mal{color:var(--danger);font-weight:600}
.ev-disparo{min-height:64px;font-size:18px;background:#7c3aed}
.ev-disparo svg{width:24px;height:24px}
.ev-disparo:disabled{opacity:.45}
/* la cola pesa: se dice cuánto, para decidir si se sube con datos o se espera al WiFi */
.ev-cola{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:12px;
  border-radius:var(--r);background:#ede9fe;color:#5b21b6}
.ev-cola small{display:block;font-size:12px;opacity:.85}
.ev-cola svg{width:22px;height:22px;flex:0 0 22px}
.ev-prev{width:100%;border-radius:10px;margin-bottom:10px;max-height:38vh;object-fit:cover}
.ev-h3{margin:18px 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.ev-item{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.ev-item.pend{border-color:#c4b5fd;background:#faf5ff}
.ev-item img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--soft)}
.ev-item figcaption{padding:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ev-item figcaption b{font-family:ui-monospace,Menlo,monospace;font-size:13px}
.ev-item figcaption small{color:var(--muted);font-size:11px;width:100%}
.ev-item figcaption svg{width:14px;height:14px;color:var(--warn)}
.ev-item.sin-foto img{display:none}

/* --- lector de QR: el contenido de un código sin acción conocida --- */
/* Monoespaciado y con quiebre forzado: lo que se lee puede ser un identificador largo sin espacios,
 * y hay que poder compararlo carácter por carácter contra algo impreso. */
.qr-valor{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:15px;word-break:break-all;
  background:var(--soft);border-radius:10px;padding:12px;margin:0 0 12px;max-height:34vh;overflow:auto}
.qr-valor.liga{font-family:inherit;font-size:17px;font-weight:700;word-break:normal}
.qr-valor.liga small{display:block;font-weight:400;font-size:12px;color:var(--muted);
  margin-top:4px;word-break:break-all}
/* opción «otro»: el campo para especificar cuál, debajo de las opciones */
.en-otro{display:flex;gap:8px;margin-top:10px}
.en-otro input{flex:1;min-width:0;border:2px solid var(--accent);border-radius:12px;padding:14px;font-size:17px;outline:0}
.en-otro .btn{flex:0 0 auto;min-height:0;padding:0 18px}

/* ---- Pines de capa: el icono de la capa dentro de una gota de su color ----
   Con varias capas encendidas a la vez, distinguirlas sólo por color obliga a recordar cuál era
   cuál; el icono lo dice de un vistazo. */
.ct-pin{background:none;border:0}
.ct-pin-gota{display:flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;
  box-shadow:0 2px 6px rgba(0,0,0,.4)}
.ct-pin-gota .bi{transform:rotate(45deg);color:#fff;font-size:15px;line-height:1}

/* ---- Fotos de un pin: al capturarlas y al verlas ---- */
.ct-fotos{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.ct-fotos:empty{display:none}
.ct-foto{position:relative;margin:0;width:72px;height:72px;border-radius:10px;overflow:hidden;border:1px solid var(--line,#d1d5db)}
.ct-foto img{width:100%;height:100%;object-fit:cover;display:block}
.ct-foto-x{position:absolute;top:2px;right:2px;width:22px;height:22px;border:0;border-radius:50%;
  background:rgba(17,24,39,.78);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px}
.ct-pop-fotos{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;font-size:12px;color:#6b7280}
.ct-pop-fotos img{width:78px;height:78px;object-fit:cover;border-radius:8px;display:block}

/* ===== NOTICIAS v1.3: favoritos arriba, última búsqueda, filtros, ficha, lector, síntesis ===== */
.page-h .chip.nw-fav{margin-left:auto;display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:0;font-weight:700} .chip.nw-fav.sel{background:#fef3c7;color:#b45309}
.chip.sel{background:#1e3a8a;color:#fff}
.nw-ultima{font-size:11.5px;color:var(--muted);margin:-4px 0 8px;display:flex;gap:6px;align-items:center} .nw-ultima .bi{font-size:12px}
.nw-filtro{position:relative;border:1.5px solid var(--line);border-radius:999px;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--muted)} .nw-filtro.on{color:#1d4ed8;border-color:#1d4ed8} .nw-filtro i{position:absolute;top:7px;right:7px;width:8px;height:8px;border-radius:50%;background:#dc2626}
.chips.nw-activos{margin:-4px 0 10px;flex-wrap:wrap} .nw-activos .chip{background:#e0e7ff;color:#1e3a8a;font-size:12px} .nw-activos .nw-limpiar{background:#fee2e2;color:#991b1b;border:0;cursor:pointer}
.nw-check{display:flex;flex-wrap:wrap;gap:6px 12px} .nw-check label{display:inline-flex;align-items:center;gap:6px;font-size:14px}
.nw-card{cursor:pointer}
.nw-tag{display:flex;align-items:center;gap:8px} .nw-tema{background:#ecfeff;color:#0e7490;border:0;border-radius:999px;padding:2px 9px;font-size:10.5px;font-weight:800;letter-spacing:.02em;cursor:pointer;text-transform:uppercase} .nw-tema.on{background:#0e7490;color:#fff}
.nw-logo{overflow:hidden} .nw-logo.con-img img[data-img]{width:84px;height:84px;object-fit:cover;border-radius:14px} .nw-logo.con-img .nw-favicon{display:none}
.nw-resumen{margin:6px 0 0;font-size:12.5px;line-height:1.4;color:#475569;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.nw-ficha-h{display:flex;align-items:center;gap:8px;margin-bottom:8px} .nw-ficha-h .nw-tag{margin:0}
.nw-ficha-img{width:calc(100% + 32px);margin:0 -16px 10px;max-height:220px;object-fit:cover}
.nw-ficha h3{font-size:18px;line-height:1.3;margin:0 0 6px}
.nw-bullets{margin:12px 0 0;padding:0 0 0 18px} .nw-bullets li{margin:0 0 6px;font-size:14px;line-height:1.4}
.nw-ficha-res{font-size:14px;line-height:1.5;color:#334155;margin:10px 0 0}
.nw-leyendo{display:flex;align-items:center;gap:10px;padding:16px 0;color:var(--muted)} .nw-leyendo .spin{width:22px;height:22px}
.nw-lector{position:fixed;inset:0;z-index:60;background:#fff;display:flex;flex-direction:column}
.nw-lector-top{display:flex;align-items:center;gap:6px;padding:calc(6px + var(--sa-t,0px)) 8px 6px;border-bottom:1px solid var(--line);background:#fff} .nw-lector-top .grow b{display:block;font-size:14px} .nw-lector-top .grow small{color:var(--muted);font-size:11.5px} .nw-lector-top a.icon-btn{color:inherit}
.nw-lector-cuerpo{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}
.nw-art{padding:14px 18px calc(30px + var(--sa-b,0px));max-width:720px;margin:0 auto} .nw-art h1{font-size:22px;line-height:1.25;margin:10px 0 6px} .nw-art p{font-size:16px;line-height:1.6;margin:0 0 14px;color:#1f2937} .nw-art-img{width:100%;border-radius:12px;max-height:320px;object-fit:cover} .nw-art-pie{font-size:12px;border-top:1px solid var(--line);padding-top:10px}
.nw-art-marco{padding:0;max-width:none;height:100%;display:flex;flex-direction:column} .nw-art-marco iframe{flex:1;border:0;width:100%}
body.nw-lector-open{overflow:hidden}
.nw-pdf .of-visor{height:100%} .nw-pdf .of-vlienzo{height:calc(100vh - 110px)}
/* El lector y el visor de síntesis tapan TODO (header y barra incluidos): el botón de cerrar queda
 * justo donde vive el botón de inicio del shell, y si el header se pintara encima se lo llevaba. */
.nw-lector{z-index:1200}
body.nw-lector-open .hdr,body.nw-lector-open .nav,body.nw-lector-open .fab{display:none!important}
.us-radio{display:flex;flex-direction:column;gap:8px} .us-radio label{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:start;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer} .us-radio label b{font-size:14px} .us-radio label small{grid-column:2;color:var(--muted);font-size:12px;line-height:1.35} .us-radio input{margin-top:3px}
.en-ubi-aprox{color:#b45309;font-weight:700}
/* Guía de ubicación aproximada (encuestas): pasos y el reinicio, que es lo que de verdad lo arregla */
.en-ubi-aprox{color:#b45309;font-weight:700;cursor:pointer;text-decoration:underline dotted}
.en-ubi-guia h3{margin:0 0 8px;font-size:17px;display:flex;align-items:center;gap:8px;color:#b45309}
.en-ubi-guia p{margin:0 0 12px;font-size:14px;line-height:1.5;color:#334155}
.en-ubi-lead{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:10px 12px}
.en-ubi-t{display:flex;align-items:center;gap:7px;font-size:14px;margin:0 0 4px;color:#0f172a}
.en-ubi-t .bi{color:#0e7490;font-size:16px}
.en-ubi-clave{display:flex;gap:10px;align-items:flex-start;background:#fee2e2;border:1px solid #fecaca;border-radius:12px;padding:10px 12px;color:#7f1d1d!important}
.en-ubi-clave .bi{font-size:20px;flex:none;margin-top:1px}
.en-ubi-acts{display:flex;gap:10px;margin-top:14px}
.en-ubi-guia #ug-msg{display:block;margin-top:8px;text-align:center}
/* ---- Buscador del mapa (cartografía): autocompletado sobre las capas encendidas ---- */
/* La barra sigue siendo `fixed` (así se despega del mapa): la lista se ancla a su ancho, no a la
 * ventana, o se desbordaba 12 px por el `right` heredado. */
.ct-sug{position:fixed;top:calc(66px + 52px);left:12px;right:12px}
.ct-limpiar{flex:none;border:0;background:none;color:#94a3b8;padding:4px;cursor:pointer;display:flex}
.ct-limpiar svg,.ct-limpiar .bi{width:15px;height:15px;font-size:15px}
.ct-sug{width:auto;box-sizing:border-box;background:#fff;border-radius:14px;
  box-shadow:0 10px 30px rgba(15,23,42,.22);border:1px solid var(--line);overflow:hidden;max-height:min(56vh,380px);overflow-y:auto;z-index:1099}
.ct-sug[hidden]{display:none}
.ct-sug-i{display:flex;align-items:center;gap:10px;width:100%;box-sizing:border-box;min-width:0;border:0;background:none;text-align:left;
  padding:10px 12px;cursor:pointer;font:inherit;border-bottom:1px solid var(--line)}
.ct-sug-i>.grow{min-width:0;overflow:hidden}
.ct-sug-i b,.ct-sug-i small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-sug-i:last-child{border-bottom:0}
.ct-sug-i:hover,.ct-sug-i.on{background:#eff6ff}
.ct-sug-i>i{width:10px;height:10px;border-radius:3px;flex:none}
.ct-sug-i b{display:block;font-size:14.5px;font-weight:600;color:#0f172a;line-height:1.25}
.ct-sug-i b mark{background:#fde68a;color:inherit;border-radius:3px;padding:0 1px}
.ct-sug-i small{display:block;font-size:12px;color:var(--muted)}
.ct-sug-i>em{flex:none;font-style:normal;font-size:11px;color:var(--muted);background:var(--soft);border-radius:999px;padding:3px 8px;max-width:38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-sug-vacio,.ct-sug-mas{padding:12px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
.ct-sug-mas{justify-content:center;border-top:1px solid var(--line);font-size:12px}
/* Con la lista abierta, los controles del mapa se apartan: se encimaban sobre las sugerencias. */
body.ct-sug-abierta .leaflet-control-container,body.ct-sug-abierta .ct-ctl{opacity:.25;pointer-events:none}

/* ===== PANTALLA LIMPIA (el shell la activa con `pantallaLimpia` del módulo) =====
   La vista se queda con TODA la pantalla: sin encabezado, sin barra y sin los paddings del shell. */
body.limpia .view{padding:0;height:100dvh}
body.limpia #fab{display:none}

/* ---- Mi gafete a pantalla completa ---- */
.gf-pantalla{position:relative;height:100dvh;display:flex;align-items:center;justify-content:center;
  padding:calc(12px + var(--sa-t,0px)) 12px calc(12px + var(--sa-b,0px));box-sizing:border-box;
  background:radial-gradient(120% 90% at 50% 0%, #12303a 0%, #081a20 60%, #050f13 100%)}
.gf-salir{position:absolute;top:calc(10px + var(--sa-t,0px));right:12px;z-index:3;width:42px;height:42px;border-radius:50%;
  border:0;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;
  backdrop-filter:blur(6px)}
.gf-salir:active{background:rgba(255,255,255,.26)}
.gf-salir svg,.gf-salir .bi{width:19px;height:19px;font-size:19px}
.gf-centro{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;width:100%;height:100%}
/* La credencial crece hasta donde quepa conservando la proporción PVC: manda el alto disponible
   (menos la leyenda) o el ancho, lo que se acabe primero. */
/* La credencial se estira hasta donde quepa conservando la proporción PVC: el alto disponible manda
 * (`height:100%` dentro de un contenedor flexible) y `aspect-ratio` calcula el ancho; el `max-width`
 * la frena si la pantalla es más angosta que alta. */
body.limpia .gfc-wrap{max-width:none;width:100%;display:flex;justify-content:center;flex:1 1 auto;min-height:0;align-items:center}
/* El ancho se calcula desde el alto disponible (`--gf-alto`, que fija el contenedor con JS al
 * montarse y al girar el teléfono) por la proporción PVC 0.6306, o del ancho de pantalla si es más
 * angosta. `aspect-ratio` pone el alto: así nunca se deforma. */
body.limpia .gfc{width:min(92vw, var(--gf-alto, 70vh) * 0.6306);height:auto;max-height:none}
body.limpia .gfc-cara{border-radius:clamp(14px,3.4vw,22px)}
/* A tamaño grande la banda magnética y su margen se escalan con la credencial: fijos en píxeles
 * parecían un recorte del reverso contra la esquina redondeada. */
body.limpia .gfc-magnetica{height:6.5%;margin-top:4.2%}
/* A pantalla completa el texto acompaña al tamaño de la credencial (`cqw` = 1% del ancho de la
 * tarjeta) y el sobrante se reparte, en vez de acumularse en un hueco antes de la firma. */
body.limpia .gfc{container-type:inline-size}
body.limpia .gfc-rcuerpo{justify-content:space-evenly;gap:0;padding:3.5cqw 5cqw 2cqw}
body.limpia .gfc-leyenda{font-size:2.9cqw}
body.limpia .gfc-datos{font-size:2.7cqw;gap:6cqw}
body.limpia .gfc-datos b{font-size:3cqw}
body.limpia .gfc-url{font-size:2.7cqw}
body.limpia .gfc-firma{margin-top:0}
body.limpia .gfc-firma small{font-size:2.6cqw}
body.limpia .gfc-rep{font-size:2.5cqw}
body.limpia .gfc-nombre{font-size:6cqw}
body.limpia .gfc-cargo,body.limpia .gfc-adsc{font-size:3.2cqw}
body.limpia .gfc-dep{font-size:3.1cqw}
body.limpia .gfc-gob{font-size:2.6cqw}
body.limpia .gfc-pie{font-size:2.6cqw}
.gf-pista{margin:0;color:#cbe6ee;font-size:14px;text-align:center;display:flex;align-items:center;gap:7px;flex:none}
.gf-pista svg,.gf-pista .bi{width:16px;height:16px;font-size:16px;opacity:.85}
.gf-acc{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;flex:none}
.gf-acc[hidden]{display:none}
.gf-acc .btn{background:rgba(255,255,255,.14);color:#fff;border-color:transparent}
.gf-pantalla .empty{color:#cbe6ee}
.gf-pantalla .empty b{color:#fff}
/* En pantalla ancha la credencial no se estira sin fin: una credencial mide lo que mide. */
@media (min-width:700px){ body.limpia .gfc{max-width:430px} }

/* ---- Beneficiarios: preloader de lectura de la INE ---- */
/* Por encima de la barra y del botón flotante (1100): mientras lee, nada más se toca. */
.pb-ine-velo{position:fixed;inset:0;z-index:1150;background:rgba(8,20,26,.86);backdrop-filter:blur(5px);
  display:flex;align-items:center;justify-content:center;padding:24px;animation:pbFade .2s ease}
.pb-ine-velo.fuera{opacity:0;transition:opacity .22s}
@keyframes pbFade{from{opacity:0}to{opacity:1}}
.pb-ine-caja{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;max-width:340px;width:100%}
.pb-ine-caja>b{color:#fff;font-size:17px}
.pb-ine-caja>small{color:#cbe6ee;font-size:13px}
.pb-ine-foto{position:relative;width:100%;border-radius:14px;overflow:hidden;box-shadow:0 12px 34px #0006;margin-bottom:4px}
.pb-ine-foto img{display:block;width:100%;aspect-ratio:1.586;object-fit:cover}
.pb-ine-barrido{position:absolute;left:0;right:0;height:34%;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(34,211,238,.16) 40%,rgba(34,211,238,.5) 50%,rgba(34,211,238,.16) 60%,transparent);
  animation:pbScan 1.9s cubic-bezier(.4,0,.6,1) infinite}
@keyframes pbScan{0%{top:-34%}100%{top:100%}}
.pb-ine-barra{width:100%;height:5px;border-radius:999px;background:rgba(255,255,255,.16);overflow:hidden}
.pb-ine-barra i{display:block;height:100%;width:42%;border-radius:999px;background:linear-gradient(90deg,#22d3ee,#0e7490);animation:pbBar 1.5s ease-in-out infinite}
@keyframes pbBar{0%{transform:translateX(-100%)}100%{transform:translateX(240%)}}
.pb-ine-nota{opacity:.75;font-size:12px!important;line-height:1.4}
/* Padrones a los que pertenece una persona, en su tarjeta y en las sugerencias */
.pb-padrones{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.pb-padrones .chip{font-size:11px;padding:2px 8px;background:#ecfeff;color:#0e7490}
.pb-sug{justify-content:flex-start;text-align:left;gap:10px;margin-top:6px;align-items:flex-start;padding:9px 12px}
.pb-sug b{display:block;font-size:14px} .pb-sug small{display:block;font-size:11.5px}
.pb-sug.ya{opacity:.62} .pb-ya{color:#15803d;font-weight:600}
.pb-filtro{border:1.5px solid var(--line);border-radius:999px;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--muted);flex:none}
.chips.pb-chips{flex-wrap:wrap;margin:-2px 0 10px} .pb-chips .chip{border:0;cursor:pointer;background:#e0e7ff;color:#1e3a8a;font-size:12px}
.pb-chips .pb-limpiar{background:#fee2e2;color:#991b1b}

/* ===== CAMPOS FLOTANTES (form-float) — etiqueta dentro del campo que sube al escribir =====
   Sirve para formularios largos: sin la etiqueta arriba se ven más campos por pantalla, y al
   llenarse la etiqueta sigue visible (a diferencia de un placeholder, que desaparece). */
.ff{position:relative;margin-bottom:12px}
.ff>input,.ff>select,.ff>textarea{width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:12px;
  background:#fff;font:inherit;font-size:16px;color:var(--fg);padding:20px 12px 7px;outline:0;transition:border-color .15s}
.ff>textarea{min-height:78px;resize:vertical}
.ff>select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11 3 6h10z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center}
.ff>label{position:absolute;left:12px;top:14px;font-size:16px;color:#94a3b8;pointer-events:none;
  transition:transform .14s ease,font-size .14s ease,color .14s ease;transform-origin:left top;background:transparent}
.ff>input:focus,.ff>select:focus,.ff>textarea:focus{border-color:var(--brand,#0e7490)}
.ff>input:focus~label,.ff>textarea:focus~label,.ff>select:focus~label,
.ff>input:not(:placeholder-shown)~label,.ff>textarea:not(:placeholder-shown)~label,
/* `date` y `time` nunca están "vacíos" para el navegador: su etiqueta va siempre arriba, o se
 * encimaría con el mm/dd/yyyy que pintan solos. */
.ff>input[type=date]~label,.ff>input[type=time]~label,
.ff.lleno>label{transform:translateY(-9px) scale(.72);color:var(--brand,#0e7490)}
.ff>input[type=date]:not(:focus)~label,.ff>input[type=time]:not(:focus)~label{color:#64748b}
.ff>select~label{transform:translateY(-9px) scale(.72);color:#64748b}   /* el select siempre "lleno" */
.ff>select:focus~label{color:var(--brand,#0e7490)}
.ff small.ff-ayuda{display:block;margin:4px 2px 0;font-size:12px;color:var(--muted)}
.ff-req>input:invalid:not(:placeholder-shown){border-color:#fca5a5}
/* Secciones de la captura de beneficiario y lista de programas */
.seg.pb-secs{margin-bottom:10px} .pb-secs button{display:inline-flex;align-items:center;gap:6px}
.pb-secs .cnt{font-style:normal;background:rgba(255,255,255,.25);border-radius:999px;padding:0 6px;font-size:11px}
.pb-secs button:not(.on) .cnt{background:var(--soft);color:#0e7490}
.pb-secs .cnt:empty{display:none}
.pb-progs{display:flex;flex-direction:column;gap:8px}
.pb-prog{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;cursor:pointer}
.pb-prog:has(input:checked){border-color:#0e7490;background:#ecfeff}
.pb-prog input{width:18px;height:18px;accent-color:#0e7490;flex:none;margin:0}
.pb-prog b{font-size:14.5px} .pb-prog .bi{color:#0e7490}

/* ---- Launcher: mover una app ENTRE PÁGINAS soltándola sobre los puntos ---- */
.lpuntos button.sobre{background:var(--brand,#1f5f2a);transform:scale(1.9);box-shadow:0 0 0 4px #1f5f2a33}
/* El «›» sólo existe mientras se arrastra: es el ciclo de páginas (de la última vuelve a la primera). */
/* Se distingue de los puntos a propósito: es un BOTÓN (pasar de página), no una página más.
 * La regla general `.lpuntos button` mide 8 px, así que aquí se fija todo con la misma
 * especificidad o lo aplasta. Sólo la flecha: el texto no cabe en el alto del paginador. */
.lpuntos button.lp-sig{flex:none;width:30px;height:30px;border-radius:50%;margin-left:14px;padding:0;
  background:var(--brand,#1f5f2a);color:#fff;box-shadow:0 2px 8px #0004;
  display:none;align-items:center;justify-content:center}
.lpuntos button.lp-sig svg{width:15px;height:15px}
body.ldrag .lpuntos button.lp-sig{display:inline-flex}
body.ldrag .lpuntos{height:38px}
body.ldrag .lpuntos button{width:14px;height:14px}          /* blancos más grandes mientras se arrastra */
body.ldrag .lpuntos button.on{transform:scale(1.15)}
.lpuntos button.lp-sig.sobre{transform:scale(1.18);box-shadow:0 0 0 5px #1f5f2a55}

/* ---- Mapa de la agenda: eventos como capa ---- */
.ag-mapa-full{height:min(68vh,560px);min-height:300px;border-radius:14px;margin-top:8px}
.seg.ag-ambito{margin-bottom:8px} .seg.ag-ambito button{display:inline-flex;align-items:center;gap:6px}
.chips.ag-tipos{flex-wrap:wrap;margin:2px 0 8px} .ag-tipos .chip{border:0;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.ag-tipos .chip.sel{font-weight:700}
.ag-punto{width:9px;height:9px;border-radius:50%;flex:none}
.ag-tipos .chip.sel .ag-punto{background:#fff!important}
.ag-fechas .field{margin-bottom:6px} .ag-fechas label{font-size:12px}
/* La gota del pin, con el calendario dentro */
.ag-pin{background:none;border:0}
.ag-gota{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);background:var(--c,#334155);box-shadow:0 2px 6px #0005;border:2px solid #fff}
.ag-gota svg,.ag-gota .bi{transform:rotate(45deg);width:15px;height:15px;font-size:15px;color:#fff}
.ag-pop b{display:block;margin:6px 0 2px;font-size:14.5px}

/* Selector de ÁREAS en árbol (core/areas.js): radios sobre el árbol de quienes encabezan un área. */
.ar-arbol{display:flex;flex-direction:column;gap:2px;max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px;background:#fff}
.ar-nodo{display:flex;align-items:center;gap:4px;padding:4px 6px;margin-left:calc(var(--ind) * 18px);border-radius:8px}
.ar-nodo.on{background:#f0fdfa}
.ar-nodo label{display:flex;align-items:center;gap:8px;flex:1;min-width:0;cursor:pointer;margin:0}
.ar-nodo label b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ar-nodo label small{color:var(--muted);font-size:11.5px;flex:none;white-space:nowrap}
.ar-nodo input{flex:none;width:16px;height:16px;margin:0}
.ar-tg{width:22px;height:22px;border:0;background:transparent;color:var(--brand);padding:0;display:grid;place-items:center;flex:none;cursor:pointer}.ar-tg svg{width:15px;height:15px}

/* Cambio de cuenta para pruebas (core/pruebas.js): la lista de personas del selector. */
.pc-lista{max-height:min(52vh,460px);overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.pc-p{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:0;border-bottom:1px solid #f1f5f9;background:none;text-align:left;cursor:pointer;color:inherit}
.pc-p:hover{background:#f8fafc} .pc-p:disabled{opacity:.5}
.pc-p b{display:block;font-size:14px;line-height:1.25} .pc-p small{display:block;color:var(--muted);font-size:12px}
.pc-p>.bi{color:var(--muted)}

/* ===== Mapa base (core/mapa.js): pines en gota y puntos con rumbo ===== */
.mp-pin{background:none;border:0}
.mp-gota{display:flex;align-items:center;justify-content:center;width:var(--t);height:var(--t);border-radius:50% 50% 50% 0;transform:rotate(-45deg);
  background:var(--c);border:2px solid #fff;box-shadow:0 3px 8px rgba(0,0,0,.35)}
.mp-gota>.bi,.mp-gota>svg{transform:rotate(45deg);color:#fff;font-size:calc(var(--t) * .46);width:calc(var(--t) * .46);height:calc(var(--t) * .46)}
.mp-punto{position:relative;display:flex;align-items:center;justify-content:center;width:var(--t);height:var(--t);border-radius:50%;background:var(--c);
  border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.4);color:#fff;font-size:calc(var(--t) * .48)}
.mp-rumbo{position:absolute;inset:-10px;pointer-events:none}
.mp-rumbo::before{content:'';position:absolute;left:50%;top:0;margin-left:-6px;border:6px solid transparent;border-bottom:9px solid var(--c);border-top:0}

/* ===== Oficinas ===== */
.ofn-mapa{height:min(46vh,380px);border-radius:14px;overflow:hidden;border:1px solid var(--line);margin-bottom:12px;background:#e5e7eb}
.ofn-lista{display:flex;flex-direction:column;gap:8px}
.ofn-it{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;cursor:pointer;color:inherit;font:inherit}
.ofn-it .ic{width:38px;height:38px;border-radius:10px;background:#0f766e14;color:#0f766e;display:flex;align-items:center;justify-content:center;font-size:18px;flex:none}
.ofn-it b{display:block;font-size:15px} .ofn-it small{display:block;color:var(--muted);font-size:12px}
.ofn-it>.bi:last-child{color:var(--muted)}
.ofn-coords{align-items:center;gap:10px;margin:8px 0 4px}
.ofn-baja{margin-top:10px;color:var(--danger)}

/* ===== Transporte de personal ===== */
.tx-seg{margin-bottom:12px} .tx-seg button{display:inline-flex;align-items:center;gap:6px}
.tx-mapa{height:min(40vh,340px);border-radius:14px;overflow:hidden;border:1px solid var(--line);margin-bottom:12px;background:#e5e7eb}
.tx-mapa.grande{height:min(56vh,520px)}
.tx-chips{display:flex;flex-wrap:wrap;gap:8px}
.tx-chips button{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 12px;font:600 14px/1.2 inherit;cursor:pointer;color:inherit}
.tx-chips button.on{border-color:#1d4ed8;background:#eff6ff;color:#1d4ed8}
.tx-chips button:disabled{opacity:.45;cursor:default}
.tx-ptxt{display:flex;align-items:center;gap:8px;margin-top:6px} .tx-dom{display:inline-flex;gap:6px;margin-top:6px}
.tx-resumen{margin:2px 0 10px}
.tx-btn{min-height:52px;font-size:16px}
.tx-estado{padding:14px}
.tx-etapa{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.tx-etapa>.bi{font-size:26px;color:#1d4ed8;flex:none} .tx-etapa b{display:block;font-size:17px} .tx-etapa small{display:block;color:var(--muted);font-size:13px}
.tx-etapa.en_sitio>.bi,.tx-etapa.terminado>.bi{color:var(--ok)} .tx-etapa.cancelado>.bi,.tx-etapa.sin_conductor>.bi{color:var(--danger)}
.tx-radar{position:relative;width:26px;height:26px;flex:none;border-radius:50%;background:#1d4ed8}
.tx-radar::after{content:'';position:absolute;inset:0;border-radius:50%;border:3px solid #1d4ed8;animation:tx-onda 1.6s ease-out infinite}
.tx-radar.chico{display:inline-block;width:12px;height:12px;vertical-align:middle;margin-right:6px}
@keyframes tx-onda{from{transform:scale(1);opacity:.9}to{transform:scale(2.6);opacity:0}}
.tx-conductor{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.tx-conductor b{display:block;font-size:15px} .tx-conductor small{display:block;color:var(--muted);font-size:12.5px}
.tx-av{width:42px;height:42px;border-radius:50%;background:#111827;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;flex:none}
.tx-placas{font:800 14px/1 ui-monospace,Menlo,monospace;letter-spacing:1px;background:#fef3c7;color:#111827;border:2px solid #111827;border-radius:6px;padding:6px 8px;flex:none}
.tx-placas.chica{font-size:11px;padding:2px 5px;border-width:1.5px}
.tx-senal{color:var(--warn);margin:0 0 6px}
.tx-tramo{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.tx-tramo span{display:flex;align-items:center;gap:8px;font-size:14px}
.tx-tramo i{width:10px;height:10px;border-radius:50%;flex:none} .tx-tramo i.o{background:#16a34a} .tx-tramo i.d{background:#1d4ed8}
.tx-acc{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px} .tx-acc .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.tx-cancelar{color:var(--danger)}
.tx-califica{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.tx-califica input{border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit}
.tx-estrellas{display:flex;gap:6px} .tx-estrellas button{border:0;background:none;font-size:32px;color:#cbd5e1;cursor:pointer;padding:0 2px}
.tx-estrellas button.on{color:#f59e0b}
.tx-gracias{color:var(--ok);font-weight:600}
.tx-yo{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:12px}
.tx-yo b{display:block} .tx-yo small{display:block;color:var(--muted);font-size:12.5px}
.tx-susp{display:flex;gap:10px;align-items:center;color:var(--danger);margin-bottom:12px;padding:12px 14px}
.tx-susp b,.tx-susp small{display:block} .tx-susp small{color:var(--muted)}
.tx-switch{display:flex;align-items:center;gap:12px;padding:14px;border:1.5px solid var(--line);border-radius:14px;background:#fff;margin-bottom:12px;cursor:pointer}
.tx-switch input{position:absolute;opacity:0;pointer-events:none}
.tx-sw{width:52px;height:30px;border-radius:999px;background:#cbd5e1;position:relative;flex:none;transition:background .15s}
.tx-sw::after{content:'';position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:left .15s}
.tx-switch input:checked+.tx-sw{background:var(--ok)} .tx-switch input:checked+.tx-sw::after{left:25px}
.tx-switch b{display:block;font-size:16px} .tx-switch small{display:block;color:var(--muted);font-size:12.5px}
.tx-switch:has(input:checked){border-color:var(--ok);background:#f0fdf4}
.tx-espera{text-align:center;padding:14px 8px}
.tx-oferta{padding:12px 14px;margin-bottom:10px;border:2px solid #1d4ed8;animation:tx-llega .4s ease-out}
@keyframes tx-llega{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
.tx-pill{background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:3px 9px;font-size:12.5px;font-weight:700;white-space:nowrap}
.tx-lista{display:flex;flex-direction:column;gap:8px}
.tx-fila{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;color:inherit}
.tx-fila b{display:block;font-size:15px} .tx-fila small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.tx-fila>.bi:last-child{color:var(--muted)}
.tx-ic{width:38px;height:38px;border-radius:10px;background:#eff6ff;color:#1d4ed8;display:flex;align-items:center;justify-content:center;font-size:18px;flex:none}
.tx-ic.cancelado,.tx-ic.sin_conductor{background:#fef2f2;color:var(--danger)} .tx-ic.terminado{background:#f0fdf4;color:var(--ok)}
.tx-est{font-weight:700} .tx-est.terminado{color:var(--ok)} .tx-est.cancelado,.tx-est.sin_conductor{color:var(--danger)}
.tx-datos{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:10px 0;font-size:14px}
.tx-datos dt{color:var(--muted)} .tx-datos dd{margin:0}

/* Acceso con código al teléfono (v0.127) */
.lg-links{display:flex;justify-content:space-between;gap:10px;margin-top:10px}
.lg-link{background:none;border:0;color:#1f5f2a;font-weight:600;font-size:14px;padding:6px 2px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.lg-link.chico{display:block;margin:12px auto 0;font-size:12px;font-weight:500;color:var(--muted)}
.lg-nota{margin:14px 0 0;font-size:12.5px;color:var(--muted);text-align:center;line-height:1.4}
.lg-card #captcha{height:0}
/* Mi NIP */
.nip-wrap{max-width:420px;margin:10px auto;padding:8px 16px 24px;text-align:center}
.nip-wrap h2{margin:6px 0 6px;font-size:22px}
.nip-ic{width:64px;height:64px;margin:6px auto 4px;border-radius:20px;background:linear-gradient(145deg,#0f766e,#115e59);color:#fff;display:flex;align-items:center;justify-content:center;font-size:30px;box-shadow:0 10px 24px rgba(15,118,110,.3)}
.nip-caja{margin:18px 0 16px;border-radius:18px;background:#0b1f14;color:#fff;padding:22px 16px 16px;box-shadow:0 12px 30px rgba(11,31,20,.25)}
.nip-caja.vacio{background:var(--soft);color:var(--muted);box-shadow:none}
.nip-num{font:800 44px/1.1 ui-monospace,Menlo,monospace;letter-spacing:.12em}
.nip-caja.vacio .nip-num{font-size:28px;letter-spacing:.2em}
.nip-barra{height:6px;border-radius:999px;background:rgba(255,255,255,.15);margin:14px 6px 8px;overflow:hidden}
.nip-barra i{display:block;height:100%;width:0;background:#F2C14E;border-radius:999px;transition:width 1s linear}
.nip-caja.vacio .nip-barra{display:none}
.nip-resta{font-size:13px;opacity:.85}
.nip-wrap .btn.block{margin-top:10px}
.nip-pie{margin-top:16px;font-size:12.5px}
/* Mi acceso (core/views/acceso.js) */
.lchip{border:0;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:13px}
.acc-card{text-align:left;margin:14px 0 0;padding:14px}
.acc-tit{display:flex;align-items:center;gap:8px}
.acc-tit .chip{margin-left:auto;padding:3px 10px;font-size:12px}
.acc-tel{font:700 20px ui-monospace,Menlo,monospace;letter-spacing:.06em;margin:8px 0 2px}
.acc-in{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:11px 12px;margin:8px 0 0;font-size:16px;background:var(--card,#fff);color:inherit}
.acc-wrap .meta{margin:8px 0 0}
.nip-cod{width:100%;text-align:center;font:700 26px ui-monospace,Menlo,monospace;letter-spacing:.4em;border:1.5px solid var(--line);border-radius:12px;padding:10px;margin:8px 0}

/* ===== Agenda en el backend ===== */
/* El escritorio de la agenda (apps/agenda/views/escritorio.js) se monta en el shadow DOM del backend con esta hoja:
 * sigue el lenguaje del backend (tarjetas blancas, tabla de encabezado gris, insignias con punto) y no el del teléfono.
 * Todo va con prefijo agb- para no chocar con nada de la PWA. */
.agb{font-family:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#111827;font-size:15px}
.agb h1,.agb h2,.agb-sheet h3,.agb-diam h3{font-family:"Sora",system-ui,sans-serif}
.agb-cab{display:flex;align-items:flex-start;gap:14px 24px;flex-wrap:wrap;margin:0 0 16px}
.agb-tit{flex:1 1 380px;min-width:0}
.agb-tit h1{margin:0;font-size:26px;font-weight:700;display:flex;align-items:center;gap:10px;color:#111827}
.agb-tit h1 .bi,.agb-tit h1 svg{font-size:22px;width:22px;height:22px;color:#be185d}
.agb-tit p{margin:4px 0 0;color:#6b7280;font-size:14.5px;line-height:1.45}
.agb-acc{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.agb-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 18px;border:1.5px solid #e5e7eb;border-radius:12px;background:#fff;color:#111827;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap}
.agb-btn:hover{background:#f3f4f6} .agb-btn .bi,.agb-btn svg{font-size:16px;width:16px;height:16px}
.agb-btn.primario{background:#2563eb;border-color:#2563eb;color:#fff} .agb-btn.primario:hover{background:#1d4ed8}
.agb-btn.activo{border-color:#1f5f2a;color:#1f5f2a;background:#f0f7f1}
.agb-btn.chico{min-height:34px;padding:5px 12px;font-size:13.5px;border-radius:10px}
.agb-n{font-style:normal;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#F2C14E;color:#3a2a00;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.agb-barra{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;margin-bottom:10px}
.agb-tabs{display:inline-flex;gap:4px;padding:4px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.agb-tabs button{display:inline-flex;align-items:center;gap:8px;border:0;background:none;border-radius:10px;padding:9px 18px;font:inherit;font-weight:600;color:#374151;cursor:pointer}
.agb-tabs button:hover{background:#f3f4f6} .agb-tabs button.on{background:#1f5f2a;color:#fff}
.agb-tabs .bi,.agb-tabs svg{font-size:16px;width:16px;height:16px}
.agb-cuenta{margin-left:auto;color:#6b7280;font-size:14px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.agb-cuenta b{color:#111827;font-size:17px;font-variant-numeric:tabular-nums}
.agb-cuenta .bi,.agb-cuenta svg{font-size:12px;width:12px;height:12px}
.agb-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;min-height:32px}
.agb-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:4px 6px 4px 12px;border-radius:999px;background:#eef2ff;color:#1e3a8a;font-size:13.5px;font-weight:600}
.agb-chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agb-chip>.bi,.agb-chip>svg{font-size:13px;width:13px;height:13px;flex:none}
.agb-chip button{width:24px;height:24px;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:none}
.agb-chip button:hover{background:#c7d2fe} .agb-chip button .bi,.agb-chip button svg{font-size:11px;width:11px;height:11px}
.agb-limpiar{border:0;background:none;color:#b91c1c;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:4px 6px;border-radius:8px}
.agb-limpiar:hover{background:#fef2f2}
.agb-sinfiltro{color:#9ca3af;font-size:13.5px;display:inline-flex;align-items:center;gap:6px}
.agb-caja{background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 8px 24px rgba(17,24,39,.06);overflow:hidden}
.agb-panel{position:relative}
.agb-cargando{opacity:.55;pointer-events:none;transition:opacity .15s}
.agb-cargador{display:flex;justify-content:center;padding:70px 0}
.agb-vacio .empty{border:0;margin:0;padding:48px 20px 16px}
.agb-vacio-acc{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;padding:0 20px 34px}
.agb-ico{width:36px;height:36px;border-radius:10px;border:1px solid transparent;background:none;color:#4b5563;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;flex:none}
.agb-ico:hover{background:#f3f4f6;border-color:#e5e7eb;color:#111827} .agb-ico .bi,.agb-ico svg{font-size:16px;width:16px;height:16px}
.agb-ico.candado{color:#9ca3af;cursor:help} .agb-ico.candado:hover{background:none;border-color:transparent;color:#6b7280}
.agb-oculto{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* Tabla */
.agb-scroll{overflow-x:auto;position:relative}   /* posicionado: lo absoluto de adentro (texto para lectores) no desborda la página */
.agb-t{width:100%;border-collapse:collapse;font-size:14.5px}
.agb-t th{text-align:left;padding:0;background:#fafbfc;border-bottom:1px solid #e5e7eb;white-space:nowrap}
.agb-t th button{display:inline-flex;align-items:center;gap:5px;border:0;background:none;padding:14px;font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#4b5563;cursor:pointer}
.agb-t th button:hover{color:#111827} .agb-t th.on button{color:#1f5f2a} .agb-t th .bi,.agb-t th svg{font-size:10px;width:10px;height:10px}
.agb-t th.n button{margin-left:auto;display:flex}
.agb-t td{padding:12px 14px;border-bottom:1px solid #f0f1f3;vertical-align:middle}
.agb-t tbody tr{cursor:pointer} .agb-t tbody tr:hover td{background:#fafbfc}
.agb-t tbody tr:last-child td{border-bottom:0}
.agb-t tr.off .agb-t-ev b{text-decoration:line-through;color:#6b7280}
.agb-t td.n{text-align:right;font-variant-numeric:tabular-nums}
.agb-t-fecha{white-space:nowrap;font-weight:600}
.agb-t-hora{white-space:nowrap;color:#374151;font-variant-numeric:tabular-nums}
.agb-t-ev{min-width:220px;max-width:420px}
.agb-t-ev b{display:block;font-weight:600;line-height:1.35}
.agb-t-ev small,.agb-t-tit small{display:flex;align-items:center;gap:4px;margin-top:2px;color:#6b7280;font-size:12.5px}
.agb-t-ev small .bi,.agb-t-ev small svg{font-size:11px;width:11px;height:11px;flex:none}
.agb-t-tit{min-width:150px}
.agb-t-acc{text-align:right;white-space:nowrap;width:1%}
.agb-cero{color:#d1d5db}
/* La tabla se acomoda a SU ancho (no al de la ventana: el menú lateral del backend lo cambia): primero aprieta los
 * márgenes, luego la hora baja bajo la fecha y al final se esconde «Asistentes». Antes de eso, se desplaza en su caja. */
.agb{container-type:inline-size}
.agb-t-h2{display:none}
@container (max-width:1080px){.agb-t th button{padding:12px 10px}.agb-t td{padding:11px 10px}.agb-t-ev{min-width:190px}}
@container (max-width:960px){.agb-t .agb-c-hora{display:none}.agb-t-h2{display:block;margin-top:2px;color:#6b7280;font-size:12.5px;font-weight:400}}
@container (max-width:800px){.agb-t .agb-c-asistentes{display:none}}
.agb-tipo,.agb-estado{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 11px;font-size:12.5px;font-weight:600;white-space:nowrap}
.agb-tipo{background:color-mix(in srgb,var(--c) 13%,#fff);color:color-mix(in srgb,var(--c) 82%,#000)}
.agb-tipo::before,.agb-estado::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.agb-tipo::before{background:var(--c)}
.agb-estado{background:#f3f4f6;color:#4b5563}
.agb-estado.verde{background:#dcfce7;color:#166534} .agb-estado.amarillo{background:#fef3c7;color:#92400e} .agb-estado.naranja{background:#ffedd5;color:#9a3412}
.agb-estado.rojo{background:#fee2e2;color:#991b1b} .agb-estado.azul{background:#dbeafe;color:#1e40af}
.agb-pager{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;background:#fafbfc;border-top:1px solid #e5e7eb;font-size:14px;color:#374151}
.agb-pager-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.agb-pager label{display:inline-flex;align-items:center;gap:8px;color:#6b7280;margin-right:4px}
.agb-pager input{width:70px;min-height:38px;border:1.5px solid #e5e7eb;border-radius:10px;text-align:center;font:inherit;background:#fff}
.agb-pager button{width:38px;height:38px;border-radius:50%;border:1.5px solid #e5e7eb;background:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#374151}
.agb-pager button:hover:not(:disabled){background:#f3f4f6} .agb-pager button:disabled{opacity:.4;cursor:default}
.agb-pager button .bi,.agb-pager button svg{font-size:13px;width:13px;height:13px}
/* Calendario */
.agb-cal-barra{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid #e5e7eb}
.agb-cal-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.agb-cal-nav h2{margin:0 6px;font-size:19px;font-weight:700;white-space:nowrap}
.agb-cal-n{color:#6b7280;font-size:13.5px;white-space:nowrap}
.agb-seg{display:inline-flex;gap:3px;padding:3px;background:#f3f4f6;border-radius:11px}
.agb-seg button{border:0;background:none;border-radius:8px;padding:7px 16px;font:inherit;font-weight:600;font-size:14px;color:#4b5563;cursor:pointer}
.agb-seg button.on{background:#fff;color:#111827;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.agb-cal-aviso{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 14px 0;padding:9px 12px;border-radius:10px;background:#fffbeb;color:#92400e;font-size:13.5px}
.agb-cal-aviso button{border:0;background:none;color:#1d4ed8;font:inherit;font-weight:700;cursor:pointer;padding:0;text-decoration:underline}
.agb-mes-cab{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid #e5e7eb;background:#fafbfc}
.agb-mes-cab span{padding:9px 10px;font-size:12px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#6b7280}
.agb-mes-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(118px,auto)}
.agb-dia{border-right:1px solid #f0f1f3;border-bottom:1px solid #f0f1f3;padding:5px 5px 7px;min-width:0;display:flex;flex-direction:column;gap:3px}
.agb-dia:nth-child(7n){border-right:0}
.agb-dia.fuera{background:#fafbfc} .agb-dia.fuera .agb-dia-n{color:#c4c8cf}
.agb-dia-cab{display:flex;align-items:center;justify-content:space-between;min-height:28px}
.agb-dia-n{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:600;color:#374151}
.agb-dia.hoy .agb-dia-n{background:#1f5f2a;color:#fff}
.agb-dia-mas{width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:#6b7280;opacity:0;transition:opacity .12s;text-decoration:none}
.agb-dia:hover .agb-dia-mas,.agb-dia-mas:focus{opacity:1} .agb-dia-mas:hover{background:#eef2ff;color:#1d4ed8}
.agb-dia-mas .bi,.agb-dia-mas svg{font-size:16px;width:16px;height:16px}
.agb-cev{display:flex;align-items:center;gap:5px;width:100%;min-width:0;border:0;border-left:3px solid var(--c);border-radius:6px;background:color-mix(in srgb,var(--c) 11%,#fff);padding:3px 6px;font:inherit;font-size:12.5px;color:#1f2937;text-align:left;cursor:pointer}
.agb-cev:hover{background:color-mix(in srgb,var(--c) 20%,#fff)}
.agb-cev b{font-weight:700;font-variant-numeric:tabular-nums;flex:none;color:color-mix(in srgb,var(--c) 75%,#000)}
.agb-cev span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.agb-cev .bi,.agb-cev svg{font-size:10px;width:10px;height:10px;color:#9ca3af;flex:none}
.agb-cev.off span{text-decoration:line-through;color:#6b7280}
.agb-dia-mas-ev{border:0;background:none;padding:2px 6px;text-align:left;font:inherit;font-size:12.5px;font-weight:700;color:#1d4ed8;cursor:pointer;border-radius:6px}
.agb-dia-mas-ev:hover{background:#eef2ff}
.agb-sem{display:flex;flex-direction:column}
.agb-sem-cab,.agb-sem-todo{display:grid;grid-template-columns:58px repeat(7,minmax(0,1fr));border-bottom:1px solid #e5e7eb}
.agb-sem-cab{background:#fafbfc}
.agb-sem-cab span{padding:8px 4px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1px}
.agb-sem-cab small{font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#6b7280}
.agb-sem-cab b{font-size:18px;width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:"Sora",system-ui,sans-serif}
.agb-sem-cab span.hoy b{background:#1f5f2a;color:#fff} .agb-sem-cab span.hoy small{color:#1f5f2a}
.agb-sem-todo>span{font-size:11px;color:#6b7280;padding:6px 4px;text-align:right;line-height:1.2}
.agb-sem-todo>div{padding:4px 3px;border-left:1px solid #f0f1f3;display:flex;flex-direction:column;gap:3px;min-width:0}
.agb-sem-cuerpo{max-height:min(66vh,640px);overflow-y:auto;position:relative}
.agb-sem-rejilla{display:grid;grid-template-columns:58px repeat(7,minmax(0,1fr));position:relative;
  background:repeating-linear-gradient(to bottom,#eef0f3 0,#eef0f3 1px,transparent 1px,transparent var(--hora))}
.agb-sem-horas{position:relative;background:#fff}
.agb-sem-horas span{position:absolute;right:8px;transform:translateY(-6px);font-size:11px;color:#9ca3af;font-variant-numeric:tabular-nums}
.agb-sem-horas span:first-child{transform:none}
.agb-sem-dia{position:relative;border-left:1px solid #eef0f3;min-width:0}
.agb-sem-dia.hoy{background:rgba(31,95,42,.035)}
.agb-sev{position:absolute;display:flex;flex-direction:column;align-items:flex-start;gap:1px;overflow:hidden;border:0;border-left:3px solid var(--c);border-radius:7px;
  background:color-mix(in srgb,var(--c) 14%,#fff);padding:3px 6px;font:inherit;font-size:12px;line-height:1.25;color:#1f2937;text-align:left;cursor:pointer;box-shadow:0 0 0 1px #fff}
.agb-sev:hover{background:color-mix(in srgb,var(--c) 24%,#fff);z-index:2}
.agb-sev b{font-weight:700;font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--c) 75%,#000);display:flex;align-items:center;gap:4px}
.agb-sev b .bi,.agb-sev b svg{font-size:9px;width:9px;height:9px;color:#9ca3af}
.agb-sev span{font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;width:100%}
.agb-sev small{color:#6b7280;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}
.agb-sev.off span{text-decoration:line-through;color:#6b7280}
.agb-sev.corto span{-webkit-line-clamp:1}
.agb-sev.mini{flex-direction:row;align-items:center;gap:5px;padding-top:1px;padding-bottom:1px} .agb-sev.mini span{-webkit-line-clamp:1}
.agb-ahora{position:absolute;left:0;right:0;height:2px;background:#dc2626;z-index:3;pointer-events:none}
.agb-ahora::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:#dc2626}
.agb-diam h3{display:flex;align-items:center;gap:8px}
.agb-diam-lista{display:flex;flex-direction:column;gap:6px;max-height:56vh;overflow:auto}
.agb-diam-ev{display:flex;align-items:center;gap:10px;width:100%;border:1px solid #e5e7eb;border-left:4px solid var(--c);border-radius:10px;background:#fff;padding:9px 10px;font:inherit;text-align:left;cursor:pointer;color:inherit}
.agb-diam-ev:hover{background:#fafbfc}
.agb-diam-ev b{display:block;font-size:14px} .agb-diam-ev small{display:block;color:#6b7280;font-size:12.5px;margin-top:1px}
.agb-diam-ev.off b{text-decoration:line-through;color:#6b7280}
.agb-diam-ev .bi,.agb-diam-ev svg{font-size:13px;width:13px;height:13px;color:#9ca3af;flex:none}
.agb-diam-hora{min-width:78px;font-size:12.5px;font-weight:700;color:#374151;font-variant-numeric:tabular-nums;flex:none}
/* Mapa */
.agb-mapa-caja{position:relative}
.agb-mapa{height:calc(100vh - 290px);min-height:460px;background:#e8ecef}
.agb-mapa-avisos{position:absolute;top:12px;left:56px;right:268px;z-index:800;display:flex;flex-wrap:wrap;gap:8px;pointer-events:none}
.agb-aviso{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:8px 14px;border-radius:999px;border:0;background:rgba(17,24,39,.86);color:#fff;font:inherit;font-size:13.5px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.agb-aviso.accion{cursor:pointer} .agb-aviso.accion:hover{background:#111827} .agb-aviso u{color:#fde68a;text-underline-offset:2px}
.agb-aviso .bi,.agb-aviso svg{font-size:14px;width:14px;height:14px;flex:none}
.agb-leyenda{position:absolute;left:12px;bottom:12px;z-index:800;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:calc(100% - 140px);padding:8px 12px;border-radius:12px;background:rgba(255,255,255,.95);box-shadow:0 2px 10px rgba(0,0,0,.15);font-size:12.5px;color:#374151}
.agb-leyenda span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap} .agb-leyenda i{width:10px;height:10px;border-radius:50%;flex:none}
.agb-leyenda b{font-variant-numeric:tabular-nums}
.agb-capas{position:absolute;top:12px;right:12px;z-index:800;width:240px;max-height:calc(100% - 70px);display:flex;flex-direction:column;background:#fff;border-radius:14px;box-shadow:0 6px 24px rgba(0,0,0,.18);overflow:hidden}
.agb-capas-h{display:flex;align-items:center;gap:8px;width:100%;border:0;background:#fff;padding:11px 14px;font:inherit;font-size:14.5px;cursor:pointer;color:#111827}
.agb-capas-h b{flex:1;text-align:left} .agb-capas-h small{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#1f5f2a;color:#fff;font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.agb-capas-h small:empty{display:none}
.agb-capas-h>.bi:last-child,.agb-capas-h>svg:last-child{transition:transform .2s;color:#6b7280}
.agb-capas.abiertas .agb-capas-h>.bi:last-child,.agb-capas.abiertas .agb-capas-h>svg:last-child{transform:rotate(180deg)}
.agb-capas-cuerpo{display:none;overflow-y:auto;border-top:1px solid #f0f1f3;padding:6px 8px 10px}
.agb-capas.abiertas .agb-capas-cuerpo{display:block}
.agb-capas-g>small{display:block;padding:8px 6px 4px;font-size:11px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#9ca3af}
.agb-capa{display:flex;align-items:center;gap:8px;padding:6px;border-radius:8px;font-size:13.5px;cursor:pointer}
.agb-capa:hover{background:#f3f4f6}
.agb-capa input{width:16px;height:16px;margin:0;accent-color:#1f5f2a;flex:none}
.agb-capa i{width:12px;height:12px;border-radius:3px;flex:none}
.agb-capa span{flex:1;min-width:0}
.agb-capa small{color:#6b7280;font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.agb-capas-nota{display:flex;gap:6px;padding:8px 6px 2px;color:#6b7280;font-size:12px;line-height:1.4}
.agb-capas-nota .bi,.agb-capas-nota svg{font-size:12px;width:12px;height:12px;flex:none;margin-top:2px}
.agb-cluster{background:none;border:0}
.agb-cluster span{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#1f5f2a;color:#fff;font:700 13.5px "IBM Plex Sans",system-ui,sans-serif;border:3px solid #fff;box-shadow:0 0 0 4px rgba(31,95,42,.28),0 3px 10px rgba(0,0,0,.25)}
.ag-gota.agb-ro{opacity:.82}
.agb-pop{display:flex;flex-direction:column;gap:5px;font-family:"IBM Plex Sans",system-ui,sans-serif;min-width:210px}
.agb-pop-tags{display:flex;gap:6px;flex-wrap:wrap}
.agb-pop>b{font-size:15px;line-height:1.3;margin-top:2px}
.agb-pop-l{display:flex;align-items:flex-start;gap:6px;color:#4b5563;font-size:13px}
.agb-pop-l .bi,.agb-pop-l svg{font-size:12px;width:12px;height:12px;margin-top:3px;flex:none}
.agb-pop-acc{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.agb-pop-acc .agb-btn.primario{color:#fff}
.agb-pop-ro{display:inline-flex;align-items:center;gap:5px;color:#6b7280;font-size:12.5px;font-weight:600}
/* Filtros (modal) */
.modal .sheet.agb-sheet{max-width:780px;padding:0;font-family:"IBM Plex Sans",system-ui,sans-serif}
.agb-f{display:flex;flex-direction:column}
.agb-f-cab{display:flex;align-items:center;gap:10px;padding:18px 22px 0}
.agb-f-cab h3{margin:0;flex:1;font-size:20px;display:flex;align-items:center;gap:8px}
.agb-f-sub{margin:4px 22px 6px;color:#6b7280;font-size:13.5px}
.agb-f-sec{padding:14px 22px;border-top:1px solid #f0f1f3}
.agb-f-sec:first-of-type{border-top:0}
.agb-f-tit{display:block;margin:0 0 8px;font-size:12px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#6b7280}
.agb-f-tit+.agb-f-tit,.agb-f-lugar+.agb-f-tit{margin-top:14px}
.agb-f-buscar{display:flex;align-items:center;gap:10px;border:1.5px solid #e5e7eb;border-radius:12px;padding:0 14px;min-height:46px;background:#fff}
.agb-f-buscar:focus-within{border-color:#2563eb}
.agb-f-buscar input{flex:1;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:15px;padding:10px 0}
.agb-f-buscar .bi,.agb-f-buscar svg{font-size:16px;width:16px;height:16px;color:#9ca3af;flex:none}
.agb-pills button{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;padding:7px 13px}
.agb-punto{width:9px;height:9px;border-radius:50%;flex:none}
.agb-pills button.on .agb-punto{box-shadow:0 0 0 2px #fff}
.agb-f-persona{margin-top:10px}
.agb-f-plista{margin-top:8px;max-height:236px;overflow-y:auto;border:1px solid #e5e7eb;border-radius:12px;padding:4px}
.agb-f-p{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;border-radius:9px;padding:7px 10px 7px calc(10px + var(--n,0) * 16px);font:inherit;text-align:left;cursor:pointer;color:inherit}
.agb-f-p:hover{background:#f3f4f6} .agb-f-p.on{background:#1e3a8a;color:#fff}
.agb-f-p b{display:block;font-size:14px;font-weight:600} .agb-f-p small{display:block;font-size:12px;color:#6b7280} .agb-f-p.on small{color:#c7d2fe}
.agb-f-p em{font-style:normal;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#f3f4f6;color:#4b5563;flex:none}
.agb-f-p em.yo{background:#dcfce7;color:#166534} .agb-f-p em.capturo{background:#fce7f3;color:#9d174d} .agb-f-p em.dependencia{background:#e0f2fe;color:#075985}
.agb-f-p.on em{background:rgba(255,255,255,.18);color:#fff}
.agb-f-pn{min-width:28px;text-align:right;font-variant-numeric:tabular-nums}
.agb-f-dos{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.agb-f-fechas,.agb-f-lugar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.agb-f-lugar{grid-template-columns:2fr 1.4fr .8fr .8fr;margin-top:0}
.agb-f-fechas label,.agb-f-lugar label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#374151;min-width:0}
.agb-f-fechas input,.agb-f-lugar input{width:100%;min-height:44px;border:1.5px solid #e5e7eb;border-radius:10px;padding:8px 12px;font:inherit;font-weight:400;background:#fff;outline:0}
.agb-f-fechas input:focus,.agb-f-lugar input:focus{border-color:#2563eb}
.agb-f-pie{position:sticky;bottom:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 22px;background:#fff;border-top:1px solid #e5e7eb;box-shadow:0 -6px 16px rgba(0,0,0,.04)}
/* Pestaña Mapa del alta de evento: su combo de colonias y la búsqueda libre nunca tuvieron estilo (`.inp-block` no
 * existía); con el formulario abierto en la computadora se notaba. Mismo aspecto que los demás campos. */
section[data-sec="mapa"] .inp-block,section[data-sec="mapa"] #m-q{width:100%;min-height:46px;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;background:#fff;font:inherit;outline:0}
section[data-sec="mapa"] .inp-block:focus,section[data-sec="mapa"] #m-q:focus{border-color:var(--accent)}
section[data-sec="mapa"] #m-buscar{min-height:46px}
@media (min-width:1000px){section[data-sec="mapa"] .ag-mapa{height:400px}}
/* El candado del detalle del evento (sólo consulta): también se ve en la app */
.ag-candado{display:flex;align-items:flex-start;gap:10px;background:#f8fafc;border-color:#cbd5e1;color:#334155;font-size:14px;line-height:1.45}
.ag-candado .bi,.ag-candado svg{font-size:16px;width:16px;height:16px;color:#64748b;flex:none;margin-top:2px}
@media (max-width:760px){
  .agb-tit h1{font-size:22px} .agb-acc{margin-left:0;width:100%} .agb-acc .agb-btn{flex:1}
  .agb-tabs{width:100%} .agb-tabs button{flex:1;justify-content:center;padding:9px 8px}
  .agb-cuenta{margin-left:0}
  .agb-mes-grid{grid-auto-rows:minmax(84px,auto)} .agb-cev b{display:none} .agb-dia-mas{display:none}
  .agb-sem{overflow-x:auto} .agb-sem-cab,.agb-sem-todo,.agb-sem-rejilla{min-width:720px}
  .agb-mapa{height:62vh;min-height:360px} .agb-mapa-avisos{left:12px;right:12px;top:auto;bottom:60px} .agb-capas{width:210px}
  .agb-f-dos,.agb-f-lugar{grid-template-columns:1fr 1fr} .agb-f-lugar .ancho{grid-column:1/-1}
}
/* Exportar (menú del escritorio) y avisos de trabajo en los botones */
.agb-menu-caja{position:relative;display:inline-flex}
.agb-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:950;width:340px;max-width:calc(100vw - 32px);padding:6px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 14px 34px rgba(17,24,39,.18)}
.agb-menu[hidden]{display:none}
.agb-menu button{display:flex;align-items:flex-start;gap:12px;width:100%;border:0;background:none;border-radius:10px;padding:10px 12px;font:inherit;text-align:left;cursor:pointer;color:#111827}
.agb-menu button:hover,.agb-menu button:focus-visible{background:#f3f4f6;outline:0}
.agb-menu button>.bi,.agb-menu button>svg{font-size:20px;width:20px;height:20px;flex:none;margin-top:1px;color:#b91c1c}
.agb-menu button[data-exp="excel"]>.bi,.agb-menu button[data-exp="excel"]>svg{color:#1f7a3f}
.agb-menu b{display:block;font-size:14.5px;font-weight:600;line-height:1.3}
.agb-menu small{display:block;margin-top:2px;color:#6b7280;font-size:12.5px;line-height:1.35}
.agb-btn:disabled{opacity:.65;cursor:default} .agb-btn:disabled:hover{background:#fff}
.agb-mini-spin{width:16px;height:16px;border-radius:50%;border:2px solid #d1d5db;border-top-color:#1f5f2a;animation:agb-gira .8s linear infinite;flex:none}
@keyframes agb-gira{to{transform:rotate(360deg)}}
/* Tablero general (apps/agenda/views/tablero.js): cifras, gráficas de SVG propio (lib/graficas.js), tablas y mapa.
 * Una serie = un color (el azul); la magnitud del mapa de calor, del claro al oscuro de ese azul; rejilla tenue. */
.agb-tb{position:relative}
.agb-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin:0 0 14px}
.agb-kpi{display:flex;flex-direction:column;gap:2px;min-width:0;padding:13px 15px 14px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.agb-kpi-l{display:flex;align-items:flex-start;gap:6px;color:#4b5563;font-size:12.5px;font-weight:600;line-height:1.25;min-height:31px}
.agb-kpi-l .bi,.agb-kpi-l svg{font-size:13px;width:13px;height:13px;flex:none;color:#9ca3af;margin-top:1px}
.agb-kpi b{font-family:"Sora",system-ui,sans-serif;font-size:28px;font-weight:700;line-height:1.1;color:#111827;font-variant-numeric:tabular-nums;margin-top:2px}
.agb-kpi small{color:#6b7280;font-size:12px;line-height:1.3}
.agb-tb-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.agb-card{padding:14px 16px 16px;min-width:0}
.agb-card.ancho{grid-column:1/-1}
.agb-card>header{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 10px;margin:0 0 12px}
.agb-card>header h3{margin:0;font-family:"Sora",system-ui,sans-serif;font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:8px;color:#111827}
.agb-card>header h3 .bi,.agb-card>header h3 svg{font-size:15px;width:15px;height:15px;color:#1f5f2a}
.agb-card>header small{color:#6b7280;font-size:12.5px}
.agb-g-caja{width:100%;min-height:60px}
.agb-g{display:block;max-width:100%;height:auto;font-family:"IBM Plex Sans",system-ui,sans-serif}
.agb-g-rej{stroke:#eef0f3;stroke-width:1} .agb-g-base{stroke:#9ca3af;stroke-width:1}
.agb-g-eje{fill:#6b7280;font-size:11.5px;font-variant-numeric:tabular-nums}
.agb-g-hit{fill:transparent} .agb-g-hit:hover{fill:rgba(42,120,214,.08)}
.agb-g-col.hoy{fill:#184f95}
.agb-g-celda:hover{stroke:#111827;stroke-width:1.5}
.agb-g-vacio{margin:6px 0;color:#9ca3af;font-size:13.5px}
.agb-barras{display:flex;flex-direction:column;gap:2px}
.agb-barra{display:grid;grid-template-columns:minmax(0,44%) minmax(0,1fr) auto;align-items:center;gap:10px;padding:4px 6px;border-radius:8px}
.agb-barra:hover{background:#f6f7f9}
.agb-barra-l{display:flex;align-items:center;gap:7px;min-width:0;font-size:13.5px;color:#111827}
.agb-barra-l>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agb-barra-l i{width:9px;height:9px;border-radius:50%;flex:none}
.agb-barra-l small{color:#6b7280;font-size:12px;flex:none}
.agb-barra-t{display:block;min-width:0;overflow:visible}
.agb-barra-v{font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;color:#111827;min-width:26px;text-align:right}
.agb-mini{width:100%;border-collapse:collapse;font-size:13.5px}
.agb-mini th{text-align:left;padding:7px 8px;font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#6b7280;border-bottom:1px solid #e5e7eb;background:#fafbfc}
.agb-mini td{padding:7px 8px;border-bottom:1px solid #f0f1f3;color:#111827;overflow-wrap:anywhere}
.agb-mini tr:last-child td{border-bottom:0}
.agb-mini .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;overflow-wrap:normal}
.agb-tb-dos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}   /* sin estirar: una tabla corta no reparte su alto entre sus renglones */
.agb-enlace{border:0;background:none;padding:0;font:inherit;font-weight:600;color:#1d4ed8;cursor:pointer;text-align:left}
.agb-enlace:hover{text-decoration:underline}
.agb-tb-mapa{margin-top:14px}
.agb-tb-mapa .agb-mapa-caja{border-radius:12px;box-shadow:none}
.agb-tb-mapa .agb-mapa{height:min(64vh,580px);min-height:380px}
.agb-tip{position:absolute;z-index:900;max-width:300px;padding:7px 10px;border-radius:8px;background:#111827;color:#fff;font-size:12.5px;line-height:1.35;pointer-events:none;box-shadow:0 6px 18px rgba(0,0,0,.2)}
.agb-tip[hidden]{display:none}
/* Al ancho del tablero (no al de la ventana): cifras en dos renglones y luego tarjetas de una en una. «Eventos» toma
 * dos lugares para que no quede una cifra sola en un renglón. */
@container (max-width:1100px){.agb-kpis{grid-template-columns:repeat(4,minmax(0,1fr))} .agb-kpi:first-child{grid-column:span 2} .agb-tb-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (max-width:720px){.agb-kpis{grid-template-columns:repeat(2,minmax(0,1fr))} .agb-tb-grid,.agb-tb-dos{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){.agb-acc .agb-menu-caja{flex:1} .agb-menu-caja .agb-btn{flex:1} .agb-menu{left:0;right:auto} .agb-kpi b{font-size:24px}}

/* Root probando con la cuenta de otra persona (core/app.js → pastillaPrueba): fija, encima de la barra y del FAB. */
.como-pill{position:fixed;left:12px;right:12px;bottom:calc(var(--nav-h) + var(--sa-b) + 44px);z-index:45;display:flex;align-items:center;gap:8px;padding:6px 6px 6px 12px;border-radius:999px;background:#7c2d12;color:#fff;font-size:13px;box-shadow:0 6px 18px rgba(0,0,0,.28);max-width:520px;margin:0 auto}
.como-pill span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.como-pill button{border:0;border-radius:999px;padding:7px 11px;font-weight:700;font-size:12px;background:rgba(255,255,255,.18);color:#fff;cursor:pointer;white-space:nowrap}
.como-pill button[data-volver]{background:#fff;color:#7c2d12}

/* Tocar el nombre de la app busca versión nueva (core/app.js → buscarActualizacion). */
.hdr-title{cursor:pointer}

/* Importar beneficiarios (apps/programas/views/importar.js): cifras, tabla de problemas y barra de avance. */
.imp-cifras{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:10px 0}
.imp-c{text-align:center;padding:12px 8px}.imp-c b{display:block;font-size:24px}.imp-c span{font-size:12px;color:var(--muted)}
.imp-c.ok b{color:#166534}.imp-c.rev b{color:#92400e}.imp-c.rech b{color:#991b1b}
.imp-tabla{max-height:340px;overflow:auto;border:1px solid var(--line,#e5e7eb);border-radius:10px}
.imp-tabla table{width:100%;border-collapse:collapse;font-size:13px}.imp-tabla th,.imp-tabla td{padding:6px 8px;border-bottom:1px solid var(--line,#e5e7eb);text-align:left;vertical-align:top}
.imp-tabla th{position:sticky;top:0;background:var(--card,#fff);font-size:12px}
.imp-barra{height:10px;border-radius:6px;background:var(--soft,#eef2f1);overflow:hidden;margin-top:8px}.imp-barra i{display:block;height:100%;background:var(--brand,#1f5f2a);transition:width .3s}

/* ===== ENTREGA DE APOYOS · BRIGADAS (lista, tablero, armar y entrega en oficina) ===== */
.bg-card{display:block;color:inherit;text-decoration:none;cursor:pointer} .bg-card .meta .bi{font-size:13px}
.bg-filtro .chip{border:0;cursor:pointer;font:inherit;font-size:13px}
.bg-acciones{flex-wrap:wrap;gap:8px;margin:10px 0 4px}
.bg-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;margin:4px 0 6px}
.bg-gente{padding:10px 12px;margin-bottom:6px}
.bg-mano{display:flex;flex-direction:column;align-items:center;min-width:56px;flex:none} .bg-mano b{font-size:18px} .bg-mano small{font-size:10.5px;color:var(--muted)}
.bg-elegidos{margin-top:8px}
.bg-pers{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:6px 10px;margin-bottom:6px;background:#fff}
.bg-pers .chip{border:0;cursor:pointer;font:inherit;font-size:12px;display:inline-flex;align-items:center;gap:4px;flex:none} .bg-pers .icon-btn{width:30px;height:30px;flex:none}
.bg-tap{cursor:pointer} .bg-tap:hover{background:var(--soft)}
.bg-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.bg-fotos a{display:block;color:inherit;text-decoration:none} .bg-fotos img{width:100%;height:130px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.bg-fotos small{font-size:11px;color:var(--muted);text-transform:capitalize}

/* ===== Archivo · digitalización masiva (apps/archivo: mesa, etiquetas, unidades, base de conocimiento, lector) ===== */
.ard-mesa{display:grid;grid-template-columns:330px minmax(0,1fr);gap:14px;align-items:start}
@media (max-width:900px){.ard-mesa{grid-template-columns:1fr}}
.ard-izq{display:flex;flex-direction:column;gap:10px;position:sticky;top:8px}
.ard-izq>.card{margin:0}
.ard-lec-in{display:flex;align-items:center;gap:8px;border:2px solid #57534e;border-radius:12px;padding:2px 12px;background:#fafaf9}
.ard-lec-in:focus-within{border-color:#9b1b4e;box-shadow:0 0 0 4px #9b1b4e1f;background:#fff}
.ard-lec-in svg,.ard-lec-in .bi{width:22px;height:22px;font-size:22px;color:#57534e;flex:none}
.ard-lec-in input{flex:1;min-width:0;border:0;outline:0;background:none;padding:12px 0;font:700 15px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
.ard-seg{margin-top:10px;gap:6px;overflow:visible;flex-wrap:wrap}
.ard-seg button{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:7px 11px}
.ard-seg button.on{background:#57534e;border-color:#57534e;color:#fff}
.ard-seg svg,.ard-seg .bi{width:15px;height:15px;font-size:15px}
.ard-modo-txt{font-size:12.5px;margin:6px 0 0;line-height:1.4}
.ard-tipo{display:block;font-size:12.5px;color:var(--muted);margin:10px 0}
.ard-tipo select{margin-left:4px;border:1.5px solid var(--line);border-radius:8px;padding:5px 6px;font-size:13px;background:#fff}
.ard-escv{margin:0;padding:12px;gap:12px} .ard-escv .of-escv-qr{width:96px;height:96px} .ard-escv .of-escv-nip{font-size:27px;gap:8px}
.ard-log{padding:12px} .ard-log h4{margin:0 0 6px;font-size:13px;display:flex;align-items:center;gap:6px;color:#57534e}
.ard-log ol{list-style:none;margin:0;padding:0;max-height:360px;overflow-y:auto}
.ard-log li{display:flex;align-items:flex-start;gap:7px;padding:6px 0;border-top:1px solid var(--line);font-size:12.5px}
.ard-log li:first-child{border-top:0}
.ard-log li>svg,.ard-log li>.bi{width:15px;height:15px;font-size:15px;flex:none;margin-top:1px}
.ard-log li.ok>svg:first-child,.ard-log li.ok>.bi:first-child{color:#16a34a} .ard-log li.mal>svg:first-child,.ard-log li.mal>.bi:first-child{color:#dc2626}
.ard-log li b{display:block;font-weight:600;line-height:1.3} .ard-log li small{color:var(--muted)}
.ard-flash{display:flex;align-items:center;gap:9px;padding:11px 14px;border-radius:12px;margin-bottom:10px;font-weight:600;font-size:14.5px;animation:up .2s ease-out}
.ard-flash.ok{background:#dcfce7;color:#14532d} .ard-flash.mal{background:#fee2e2;color:#7f1d1d}
.ard-flash svg,.ard-flash .bi{width:20px;height:20px;font-size:20px;flex:none}
.ard-vacia{text-align:center;padding:28px 18px}
.ard-vacia-ic{width:64px;height:64px;margin:0 auto 10px;border-radius:18px;background:#f5f5f4;color:#57534e;display:flex;align-items:center;justify-content:center;font-size:30px}
.ard-vacia-ic svg{width:32px;height:32px}
.ard-vacia h2{margin:0 0 6px;font-size:19px} .ard-vacia p{max-width:520px;margin:0 auto 14px}
.ard-nueva{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.ard-nueva select{border:1.5px solid var(--line);border-radius:8px;padding:8px;background:#fff}
.ard-h4{margin:4px 0 8px;font-size:13.5px;display:flex;align-items:center;gap:6px;color:#57534e}
.ard-recientes{display:flex;flex-direction:column;gap:6px}
.ard-rec{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 11px;cursor:pointer}
.ard-rec:hover{border-color:#57534e}
.ard-rec>svg,.ard-rec>.bi{width:20px;height:20px;font-size:20px;color:#57534e;flex:none}
.ard-rec b{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px}
.ard-rec small{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ard-rec .grow{min-width:0}
/* panel de la unidad */
.ard-u{border-left:4px solid #57534e}
.ard-u-top{display:flex;align-items:flex-start;gap:12px}
.ard-u-ic{width:52px;height:52px;border-radius:14px;background:#f5f5f4;color:#57534e;display:flex;align-items:center;justify-content:center;font-size:26px;flex:none}
.ard-u-ic svg{width:28px;height:28px}
.ard-u-top .grow{min-width:0}
.ard-u h2{margin:0;font:800 22px/1.15 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.ard-u h2 small{font:600 13px Inter,system-ui,sans-serif;color:var(--muted);letter-spacing:0;margin-left:4px}
.ard-ruta{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:12.5px;margin-bottom:3px}
.ard-ruta a{color:#57534e;font-weight:700;display:inline-flex;align-items:center;gap:4px}
.ard-ruta svg,.ard-ruta .bi{width:12px;height:12px;font-size:12px}
.ard-u-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px}
.ard-etq{display:inline-flex;align-items:center;gap:5px;font:700 11.5px ui-monospace,SFMono-Regular,Menlo,monospace;background:#1c1917;color:#fff;border-radius:6px;padding:3px 8px}
.ard-etq.sin{background:#fef3c7;color:#92400e;font-family:Inter,system-ui,sans-serif}
.ard-etq svg,.ard-etq .bi,.ard-ubic svg,.ard-ubic .bi,.ard-fojas svg,.ard-fojas .bi{width:12px;height:12px;font-size:12px}
.ard-ubic,.ard-fojas{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.ard-fojas{color:#b45309;font-weight:600}
.ard-u-desc{margin:10px 0 0;font-size:14px;line-height:1.45}
.ard-u-datos{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:13px;color:#44403c}
.ard-u-datos span{display:inline-flex;align-items:center;gap:5px} .ard-u-datos span.mal{color:#b91c1c;font-weight:700}
.ard-u-datos svg,.ard-u-datos .bi{width:14px;height:14px;font-size:14px;color:#a8a29e}
.ard-ficha{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}
.ard-ficha summary{cursor:pointer;font-weight:700;font-size:13.5px;color:#57534e;display:flex;align-items:center;gap:6px;padding:4px 0}
.ard-ficha summary svg,.ard-ficha summary .bi{width:15px;height:15px;font-size:15px}
.ard-fichaf{max-height:none;margin-top:8px}
.ard-4{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
@media (max-width:560px){.ard-4{grid-template-columns:1fr 1fr}.ar-3{grid-template-columns:1fr}}
.ard-cont{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;font-size:12.5px}
.ard-cont small{color:var(--muted);display:inline-flex;align-items:center;gap:4px;margin-right:2px}
.ard-cont a{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:3px 9px;color:#44403c;font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace}
.ard-cont a i{width:7px;height:7px;border-radius:50%}
.ard-cont svg,.ard-cont .bi{width:13px;height:13px;font-size:13px}
.ard-sube{padding:12px}
.ard-suelta{margin-bottom:8px;padding:22px 16px}
.ard-suelta svg{color:#57534e}
.ard-suelta.sobre{border-color:#57534e;background:#f5f5f4}
.ard-kbauto{font-size:13px!important}
.ard-cola{display:flex;flex-direction:column;gap:6px}
.ard-cola:empty{display:none}
.ard-sub{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px}
.ard-sub>svg,.ard-sub>.bi{width:18px;height:18px;font-size:18px;color:#57534e;flex:none}
.ard-sub.listo>svg,.ard-sub.listo>.bi{color:#16a34a} .ard-sub.error{border-color:#fecaca;background:#fef2f2} .ard-sub.error>svg,.ard-sub.error>.bi{color:#dc2626}
.ard-sub .grow{min-width:0} .ard-sub b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ard-sub small{display:block;color:var(--muted);font-size:11.5px}
.ard-barra{display:block;height:5px;border-radius:999px;background:#e7e5e4;margin-top:5px;overflow:hidden}
.ard-barra i{display:block;height:100%;background:#57534e;border-radius:999px;transition:width .2s}
.ard-sub.listo .ard-barra i{background:#16a34a}
.ard-archs{padding:12px}
.ard-archs-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.ard-archs-h b{display:inline-flex;align-items:center;gap:6px;font-size:14px}
.ard-nada{text-align:center;padding:18px 8px}
.ard-lista{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ard-arch{display:flex;align-items:center;gap:9px;padding:9px 10px;border-top:1px solid var(--line);background:#fff}
.ard-arch:first-child{border-top:0}
.ard-arch.descartada{opacity:.55;background:#fafaf9}
.ard-arch.qc-rechazada{background:#fff7f7}
.ard-num{width:26px;height:26px;border-radius:8px;background:#f5f5f4;color:#57534e;font:800 12px ui-monospace,SFMono-Regular,Menlo,monospace;display:flex;align-items:center;justify-content:center;flex:none}
.ard-sel{width:18px;height:18px;margin:0 4px;accent-color:#57534e;flex:none}
.ard-ver{width:36px;height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#b91c1c;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.ard-ver svg,.ard-ver .bi{width:20px;height:20px;font-size:20px}
.ard-arch-t{min-width:0}
.ard-arch-t b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ard-arch-t small{display:block;font-size:11.5px}
.ard-ia{font-style:normal;font-size:9.5px;font-weight:800;background:#ede9fe;color:#6d28d9;border-radius:4px;padding:0 4px;vertical-align:2px}
.ard-rech{color:#b91c1c;font-weight:600;display:flex!important;align-items:center;gap:4px}
.ard-rech svg,.ard-rech .bi{width:12px;height:12px;font-size:12px}
.ard-kb{display:inline-flex;align-items:center;gap:4px;border:1px solid transparent;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:700;flex:none;background:#f5f5f4;color:#57534e;cursor:default}
button.ard-kb{cursor:pointer;border-color:var(--line);background:#fff}
.ard-kb svg,.ard-kb .bi{width:13px;height:13px;font-size:13px}
.ard-kb.lista{background:#ede9fe;color:#6d28d9} .ard-kb.lista i{color:#b91c1c;font-style:normal;display:inline-flex}
.ard-kb.leyendo{background:#ede9fe;color:#6d28d9;animation:ard-late 1.2s ease-in-out infinite}
.ard-kb.error{color:#b91c1c;border-color:#fecaca}
@keyframes ard-late{50%{opacity:.45}}
.ard-clas{flex:none}
.ard-exp{display:inline-flex;align-items:center;gap:5px;font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;color:#15803d;background:#f0fdf4;border-radius:7px;padding:4px 8px;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ard-exp svg,.ard-exp .bi{width:13px;height:13px;font-size:13px;flex:none}
.ard-desc{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
.ard-qc{display:inline-flex;flex:none} .ard-qc svg,.ard-qc .bi{width:18px;height:18px;font-size:18px} .ard-qc.ok{color:#16a34a} .ard-qc.mal{color:#dc2626}
.ard-qcb{display:inline-flex;gap:2px;flex:none;border:1px solid var(--line);border-radius:8px;padding:1px}
.ard-qcb .ar-x:first-child{color:#16a34a} .ard-qcb .ar-x:last-child{color:#dc2626}
.ard-mas{display:flex;align-items:center;flex:none}
@media (max-width:700px){
  .ard-arch{flex-wrap:wrap}
  .ard-arch-t{flex:1 1 calc(100% - 90px)}
  .ard-clas{margin-left:72px}
  .ard-mas{margin-left:auto}
}
.ard-u-acc{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 14px}
.ard-ok{display:inline-flex;align-items:center;gap:6px;color:#166534;font-weight:600;font-size:13.5px}
.ard-ok svg,.ard-ok .bi{width:17px;height:17px;font-size:17px}
.ard-menu{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.ard-menu button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px 14px;font-size:14.5px;cursor:pointer}
.ard-menu button.mal{color:#b91c1c} .ard-menu button.ghost{justify-content:center;background:var(--soft)}
.ard-menu svg,.ard-menu .bi{width:17px;height:17px;font-size:17px}
/* visor con su ficha de IA */
.sheet.ard-sheet-ancha{width:min(1180px,96vw);max-width:none;max-height:94vh;padding:12px;display:flex;flex-direction:column}
.ard-visor{display:flex;flex-direction:column;gap:10px;min-height:0;flex:1}
.ard-visor-h{display:flex;align-items:center;gap:10px}
.ard-visor-h>svg,.ard-visor-h>.bi{width:24px;height:24px;font-size:24px;color:#b91c1c;flex:none}
.ard-visor-h .grow{min-width:0} .ard-visor-h b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ard-visor-h small{display:block;color:var(--muted);font-size:12px}
.ard-visor-c{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;min-height:0;flex:1}
.ard-visor-doc{min-height:60vh;border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.ard-visor-doc .of-visor{flex:1;height:100%}
.ard-visor-kb{overflow-y:auto;max-height:78vh}
@media (max-width:860px){.ard-visor-c{grid-template-columns:1fr}.ard-visor-doc{min-height:55vh}.ard-visor-kb{max-height:none}}
.ard-kbf{border:1px solid #ddd6fe;background:#faf5ff;border-radius:12px;padding:12px;font-size:13.5px}
.ard-kbf.vacia{text-align:center;color:#57534e;background:#fafaf9;border-color:var(--line)}
.ard-kbf.vacia>svg,.ard-kbf.vacia>.bi{width:28px;height:28px;font-size:28px;color:#8b5cf6}
.ard-kbf.vacia.mal>svg,.ard-kbf.vacia.mal>.bi{color:#dc2626}
.ard-kbf-cab{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:#6d28d9}
.ard-kbf-cab svg,.ard-kbf-cab .bi{width:16px;height:16px;font-size:16px}
.ard-kbf-cab small{width:100%;color:var(--muted);font-size:11px}
.ard-kbf h4{margin:8px 0 6px;font-size:15px;line-height:1.3}
.ard-kbf-meta{display:flex;flex-wrap:wrap;gap:5px 12px;font-size:12.5px;color:#44403c}
.ard-kbf-meta span{display:inline-flex;align-items:center;gap:4px}
.ard-kbf-meta svg,.ard-kbf-meta .bi{width:13px;height:13px;font-size:13px;color:#a78bfa}
.ard-kbf-av{display:flex;gap:6px;align-items:flex-start;margin-top:8px;padding:7px 9px;border-radius:9px;background:#fff;font-size:12.5px;color:#44403c}
.ard-kbf-av.mal{background:#fef2f2;color:#991b1b}
.ard-kbf-av svg,.ard-kbf-av .bi{width:14px;height:14px;font-size:14px;flex:none;margin-top:1px}
.ard-kbf-res{margin:9px 0;line-height:1.5}
.ard-kbf-serie{background:#fff;border-radius:9px;padding:7px 9px;font-size:12.5px}
.ard-kbf-serie small{display:block;color:var(--muted);margin-top:2px}
.ard-kbf-l{margin-top:8px} .ard-kbf-l small{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:11.5px;margin-bottom:3px}
.ard-kbf-l small svg,.ard-kbf-l small .bi{width:12px;height:12px;font-size:12px}
.ard-kbf-l div{display:flex;flex-wrap:wrap;gap:4px}
.ard-kbf-l div span{background:#fff;border:1px solid #e9d5ff;border-radius:999px;padding:2px 8px;font-size:12px}
.ard-kbf-acc{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
/* clasificar */
.ard-sug{display:flex;gap:8px;align-items:flex-start;background:#faf5ff;border:1px solid #e9d5ff;border-radius:10px;padding:9px 11px;font-size:13px;color:#4c1d95}
.ard-sug svg,.ard-sug .bi{width:16px;height:16px;font-size:16px;flex:none;margin-top:1px} .ard-sug b.mal{color:#b91c1c}
.ard-bres{display:flex;flex-direction:column;gap:5px;max-height:260px;overflow-y:auto}
.ard-opc{display:flex!important;gap:9px;align-items:flex-start;border:1.5px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;color:var(--fg)!important;font-size:13px!important}
.ard-opc.on{border-color:#57534e;background:#fafaf9}
.ard-opc input{width:auto!important;margin:3px 0 0!important}
.ard-opc b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px} .ard-opc small{color:var(--muted)}
/* etiquetas */
.ard-etq-num{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 10px;font-size:13px;color:var(--muted)}
.ard-etq-num b{font-size:17px;color:var(--fg)}
.ard-lotef{max-height:none}
.ard-pfx{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:7px}
.ard-pfxo{display:flex!important;flex-direction:column;gap:1px;border:1.5px solid var(--line);border-radius:11px;padding:9px 10px;cursor:pointer;color:var(--fg)!important}
.ard-pfxo.on{border-color:#57534e;background:#fafaf9;box-shadow:inset 0 0 0 1px #57534e}
.ard-pfxo input{display:none}
.ard-pfxo b{font:800 15px ui-monospace,SFMono-Regular,Menlo,monospace} .ard-pfxo span{font-weight:700;font-size:13px} .ard-pfxo small{color:var(--muted);font-size:11.5px;line-height:1.3}
.ard-lote-3{display:grid;grid-template-columns:1fr 1.6fr 1fr;gap:9px}
@media (max-width:620px){.ard-lote-3{grid-template-columns:1fr}}
.ard-rap{display:flex;gap:4px;margin-top:5px}
.ard-rap button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:2px 9px;font-size:12px;cursor:pointer}
.ard-buscaetq{padding:10px} .ard-buscaetq .ar-search{margin:0}
.ard-etqinfo{display:flex;gap:12px;align-items:center;margin-top:10px}
.ard-etqinfo canvas{border:1px solid var(--line);border-radius:8px;flex:none}
.ard-etqinfo b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:block} .ard-etqinfo small{display:block;margin:2px 0 6px}
.ard-uso{display:flex;height:6px;border-radius:999px;background:#e7e5e4;overflow:hidden;width:120px;margin-bottom:3px}
.ard-uso i{background:#16a34a} .ard-uso b{background:#dc2626}
.ard-lote-acc{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.ard-etqs{max-height:58vh;overflow-y:auto;border:1px solid var(--line);border-radius:10px;margin:8px 0}
.ard-etqr{display:flex;align-items:center;gap:8px;padding:6px 9px;border-top:1px solid var(--line);font-size:12.5px}
.ard-etqr:first-child{border-top:0} .ard-etqr code{font-size:12px;font-weight:700}
.ard-etqr.anulada{opacity:.55} .ard-etqr.anulada code{text-decoration:line-through}
.ard-etqr a{font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
/* unidades */
.ard-uic{width:34px;height:34px;border-radius:10px;background:#f5f5f4;display:flex;align-items:center;justify-content:center;flex:none}
.ard-uic svg,.ard-uic .bi{width:18px;height:18px;font-size:18px}
.ard-ftipo{border:0;border-left:1px solid var(--line);background:none;padding:6px 4px 6px 10px;font-size:13px;color:var(--muted);max-width:140px}
.ard-raiz{margin:2px 0 8px}
/* base de conocimiento */
.ard-preg label{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:14px;margin-bottom:8px}
.ard-preg label svg,.ard-preg label .bi{width:16px;height:16px;font-size:16px;color:#8b5cf6;align-self:center}
.ard-preg-in{display:flex;gap:8px}
.ard-preg-in input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14.5px}
.ard-resp{margin-top:10px;border-left:4px solid #8b5cf6;background:#faf5ff;border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.5}
.ard-resp.flojo{border-left-color:#a8a29e;background:#fafaf9} .ard-resp.mal{border-left-color:#dc2626;background:#fef2f2}
.ard-resp.cargando{display:flex;align-items:center;gap:10px;color:var(--muted)}
.ard-resp p{margin:4px 0}
.ard-cita{border:0;background:#8b5cf6;color:#fff;border-radius:6px;font-size:11px;font-weight:800;padding:0 5px;cursor:pointer;vertical-align:1px}
.ard-fuentes{margin:6px 0 0;padding-left:22px;font-size:13px}
.ard-fuentes li{margin:3px 0} .ard-fuentes button{border:0;background:none;padding:0;color:var(--accent);font-weight:600;cursor:pointer;text-align:left}
.ard-fuentes small{display:block}
.ard-kbres{display:flex;flex-direction:column;gap:8px}
.ard-kbr{border:1px solid var(--line);border-radius:12px;background:#fff;padding:11px 13px}
.ard-kbr-t{border:0;background:none;padding:0;text-align:left;cursor:pointer;font-size:15px;color:var(--fg)}
.ard-kbr-t:hover b{text-decoration:underline}
.ard-kbr-m{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12.5px;color:var(--muted);margin:4px 0}
.ard-kbr-m span,.ard-kbr-m a{display:inline-flex;align-items:center;gap:4px}
.ard-kbr-m .mal{color:#b91c1c;font-weight:600}
.ard-kbr-m svg,.ard-kbr-m .bi{width:13px;height:13px;font-size:13px}
.ard-kbr p{margin:6px 0;font-size:13.5px;line-height:1.5}
.ard-kbr blockquote{margin:6px 0;padding:6px 10px;border-left:3px solid #e7e5e4;color:#57534e;font-size:12.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap}
.ard-kbr mark,.ard-resp mark{background:#fef08a;color:inherit;border-radius:2px}
.ard-kbr-tags{display:flex;flex-wrap:wrap;gap:4px}
.ard-kbr-tags span{background:#f5f5f4;border-radius:999px;padding:2px 8px;font-size:11.5px}
.ard-kbr-tags span.p{background:#eff6ff;color:#1e40af}
/* el celular unido a la mesa */
.ard-cel-u{border-left:4px solid #57534e}
.ard-cel-u b{display:block;font:800 26px/1.15 ui-monospace,SFMono-Regular,Menlo,monospace;margin:2px 0}
.ard-cel-u span{font-size:13.5px;color:#44403c}
.ard-cel-u.vacia{border-left-color:#d6d3d1} .ard-cel-u.vacia span{display:block;margin-top:3px}
/* lector continuo (pantalla completa) */
.arl-ov{position:fixed;inset:0;z-index:72;background:#000;color:#fff;display:flex;flex-direction:column;animation:up .2s ease-out}
.arl-top{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--sa-t)) 12px 10px;background:linear-gradient(#000d,#0000);position:relative;z-index:2}
.arl-x{width:44px;height:44px;border-radius:50%;border:1.5px solid #fff5;background:#0006;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.arl-x svg,.arl-x .bi{width:20px;height:20px;font-size:20px}
.arl-tit{flex:1;min-width:0} .arl-tit b{display:block;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arl-tit small{display:block;font-size:13px;color:#d6d3d1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.arl-n{min-width:40px;height:40px;border-radius:12px;background:#16a34a;display:flex;align-items:center;justify-content:center;font:800 17px ui-monospace,SFMono-Regular,Menlo,monospace;padding:0 8px}
.arl-vista{position:absolute;inset:0;overflow:hidden}
.arl-vista video{width:100%;height:100%;object-fit:cover}
.arl-mira{position:absolute;left:50%;top:46%;width:min(64vw,300px);aspect-ratio:1;transform:translate(-50%,-50%);box-shadow:0 0 0 100vmax #0007;border-radius:18px}
.arl-mira i{position:absolute;width:34px;height:34px;border:5px solid #fff}
.arl-mira i:nth-child(1){left:-3px;top:-3px;border-right:0;border-bottom:0;border-radius:16px 0 0 0}
.arl-mira i:nth-child(2){right:-3px;top:-3px;border-left:0;border-bottom:0;border-radius:0 16px 0 0}
.arl-mira i:nth-child(3){left:-3px;bottom:-3px;border-right:0;border-top:0;border-radius:0 0 0 16px}
.arl-mira i:nth-child(4){right:-3px;bottom:-3px;border-left:0;border-top:0;border-radius:0 0 16px 0}
.arl-haz{position:absolute;left:10%;right:10%;height:2px;background:#4ade80;box-shadow:0 0 12px #4ade80;animation:arl-haz 2s ease-in-out infinite}
@keyframes arl-haz{0%,100%{top:12%}50%{top:86%}}
.arl-err{position:absolute;left:16px;right:16px;top:40%;background:#1c1917ee;border-radius:14px;padding:16px;text-align:center;display:flex;flex-direction:column;gap:6px;z-index:3}
.arl-err svg,.arl-err .bi{width:30px;height:30px;font-size:30px;margin:0 auto}
.arl-pie{margin-top:auto;position:relative;z-index:2;padding:12px 12px calc(16px + var(--sa-b));background:linear-gradient(#0000,#000c)}
.arl-res{display:flex;align-items:center;gap:10px;border-radius:14px;padding:14px 16px;background:#1c1917e6;font-size:15.5px;font-weight:600;min-height:58px}
.arl-res svg,.arl-res .bi{width:24px;height:24px;font-size:24px;flex:none}
.arl-res.ok{background:#15803d} .arl-res.mal{background:#b91c1c} .arl-res.leyendo{background:#44403c}
/* Los formularios largos del archivo (clasificar, cuadro) piden más ancho que la hoja de 520: sin esto se salían por la derecha. */
.modal .sheet:has(> .ar-formlargo){max-width:640px}
/* Agenda: lista continua desde el día elegido, con separador por día y carga por bloques. */
/* La banda de cambio de día: más grande, con un punto al frente y una línea que se desvanece hasta el final del renglón. */
.ag-sep{display:flex;align-items:center;gap:10px;margin:26px 0 12px;font-size:15.5px;letter-spacing:.6px;color:var(--brand,#9b1b4e)}
.ag-sep::before{content:"";flex:none;width:10px;height:10px;border-radius:50%;background:var(--brand,#9b1b4e);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand,#9b1b4e) 18%,transparent)}
.ag-sep::after{content:"";flex:1;min-width:24px;height:2px;border-radius:2px;background:linear-gradient(90deg,color-mix(in srgb,var(--brand,#9b1b4e) 55%,transparent),transparent)}
.ag-sep .cnt{margin-left:0;background:var(--brand,#9b1b4e);color:#fff}
.ag-sep.primero{margin-top:8px}
.ag-libre{margin:0 0 6px} .ag-mas{min-height:24px;display:grid;place-items:center;padding:12px 0 90px} .ag-fin{text-align:center}
/* ---------------- Recursos humanos (apps/rh) ---------------- */
.rh-filtros{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.rh-filtros select,.rh-filtros input[type=search],.rh-periodo select,.rh-periodo input{border:1.5px solid var(--line);border-radius:10px;padding:7px 10px;font:inherit;font-size:13.5px;background:#fff}
.rh-periodo{display:flex;gap:6px;align-items:center;flex-wrap:wrap} .rh-libre{display:inline-flex;gap:4px;align-items:center}
.rh-chk{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:#334155}
.rh-hor{font-size:13px;color:#0e7490;background:#ecfeff;border-radius:999px;padding:5px 12px} .rh-hor.mal,.rh-mal{color:#b91c1c} .rh-hor.mal{background:#fef2f2}
.rh-totales{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.rh-totales>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 14px;min-width:92px}
.rh-totales b{display:block;font-size:22px;line-height:1.1} .rh-totales small{color:var(--muted);font-size:11.5px}
.rh-totales .f b{color:#dc2626} .rh-totales .r b{color:#d97706} .rh-totales .j b{color:#0891b2} .rh-totales .s b{color:#9b1b4e}
.rh-tabla-caja{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff;max-height:70vh}
.rh-tabla{border-collapse:separate;border-spacing:0;font-size:12px;min-width:100%}
.rh-tabla th,.rh-tabla td{border-bottom:1px solid #f1f5f9;padding:0;text-align:center}
.rh-tabla thead th{position:sticky;top:0;background:#f8fafc;z-index:2;padding:6px 2px;font-weight:700;min-width:28px}
.rh-tabla thead th small{display:block;color:var(--muted);font-weight:400;font-size:10px} .rh-tabla thead th.inh{background:#e2e8f0}
.rh-tabla .rh-p{position:sticky;left:0;background:#fff;z-index:1;text-align:left;padding:6px 10px;min-width:190px;max-width:240px;border-right:1px solid var(--line)}
.rh-tabla thead .rh-p{z-index:3;background:#f8fafc} .rh-tabla .rh-p b{display:block;font-size:12.5px} .rh-tabla .rh-p small{color:var(--muted);font-weight:400;font-size:11px}
.rh-tabla tbody tr{cursor:pointer} .rh-tabla tbody tr:hover .rh-p{background:#f0f9ff}
.rh-c{position:relative;width:28px;height:30px;font-weight:800;font-size:11px;background:var(--c);border:2px solid #fff!important;border-radius:7px}
.rh-c i{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:#9b1b4e;box-shadow:0 0 0 1.5px #fff}
.rh-n{min-width:34px;font-weight:700;color:#64748b} .rh-n.f{color:#dc2626} .rh-n.r{color:#d97706}
.rh-ley{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 0;font-size:12px;color:#475569}
.rh-ley b{display:inline-grid;place-items:center;min-width:22px;height:20px;border-radius:6px;background:var(--c);font-size:10.5px;margin-right:5px}
.rh-ley-inc{background:#fff!important;color:#9b1b4e;font-size:22px!important;border:1px solid var(--line)}
.rh-pag{display:flex;gap:8px;align-items:center;justify-content:center;margin:10px 0}
.rh-dias{display:flex;flex-direction:column;gap:6px}
.rh-dia{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px} .rh-dia.apagado{opacity:.6;padding:6px 12px}
.rh-dl{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--c);font-weight:800;font-size:12.5px}
.rh-df{font-size:13.5px} .rh-dh,.rh-dm,.rh-di{font-size:12.5px;margin-top:4px;color:#334155}
.rh-dm span{display:inline-block;background:#f1f5f9;border-radius:6px;padding:1px 6px;margin-right:4px} .rh-dm i{font-style:normal;font-size:9.5px;color:#0e7490;margin-left:3px}
.rh-di.mal{color:#b91c1c} .rh-di.ok{color:#0e7490} .rh-di .btn{margin-left:6px}
.rh-seg{margin:0 0 10px;flex-wrap:wrap} .rh-seg i{font-style:normal;opacity:.7;font-size:11px}
.rh-inc{display:flex;flex-direction:column;gap:6px}
.rh-inc-f{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;color:inherit} .rh-inc-f.ok{opacity:.65}
.rh-inc-t{flex:none;font-size:11px;font-weight:800;border-radius:7px;padding:4px 8px;color:#fff;background:#64748b;min-width:92px;text-align:center}
.rh-inc-t.t-falta{background:#dc2626} .rh-inc-t.t-retardo{background:#d97706} .rh-inc-t.t-salida_anticipada{background:#7c3aed} .rh-inc-t.t-omision_salida{background:#0891b2}
.rh-hors{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.rh-horc{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.rh-horc-h{display:flex;gap:6px;align-items:center} .rh-horc-hr{font-size:24px;font-weight:800;margin:6px 0;font-variant-numeric:tabular-nums} .rh-horc-hr span{color:var(--muted);font-weight:400}
.rh-horc-d{display:flex;gap:3px;align-items:center;margin-bottom:4px} .rh-horc-d i{font-style:normal;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:#f1f5f9;color:#94a3b8;font-size:11px;font-weight:700}
.rh-horc-d i.on{background:#0e7490;color:#fff} .rh-horc-d small{margin-left:8px}
.rh-form{display:flex;flex-direction:column;gap:10px} .rh-form h3{margin:0}
.rh-aviso{background:#fffbeb;border:1px solid #fde68a;color:#92400e;border-radius:10px;padding:8px 10px;font-size:13px;margin:0}
.rh-aviso.sm{font-size:12px;padding:5px 8px;margin-top:4px}
.rh-dsel{display:flex;gap:6px;flex-wrap:wrap} .rh-dsel label{display:inline-flex} .rh-dsel input{display:none}
.rh-dsel span{border:1.5px solid var(--line);border-radius:9px;padding:6px 10px;font-size:13px;cursor:pointer} .rh-dsel input:checked+span{background:#0e7490;border-color:#0e7490;color:#fff}
.rh-asig-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;position:sticky;top:0;z-index:2}
.rh-asig-bar select,.rh-asig-bar input{border:1.5px solid var(--line);border-radius:10px;padding:7px 10px;font:inherit;font-size:13px}
.rh-asig,.rh-quien{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;font-size:13px}
.rh-asig th,.rh-asig td,.rh-quien th,.rh-quien td{padding:7px 10px;border-bottom:1px solid #f1f5f9;text-align:left}
.rh-asig th,.rh-quien th{background:#f8fafc;font-size:12px;color:#475569}
.rh-inh-alta{display:flex;gap:8px;flex-wrap:wrap} .rh-inh-alta input{border:1.5px solid var(--line);border-radius:10px;padding:7px 10px;font:inherit} .rh-inh-alta input[name=nombre]{flex:1;min-width:200px}
.rh-inh{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.rh-inh-f{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:13.5px} .rh-inh-f b{min-width:250px}
.rh-pasos{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 12px;flex-wrap:wrap}
.rh-pasos li{background:#f1f5f9;color:#64748b;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600} .rh-pasos li.on{background:#0e7490;color:#fff} .rh-pasos li.ok{background:#ccfbf1;color:#0f766e}
.rh-drop{display:flex;flex-direction:column;align-items:center;gap:4px;border:2px dashed #94a3b8;border-radius:16px;padding:28px;cursor:pointer;text-align:center;color:#475569}
.rh-drop svg{width:34px;height:34px;color:#0e7490} .rh-drop.sobre{background:#ecfeff;border-color:#0e7490}
.rh-drop .bi{font-size:34px;line-height:1;color:#0e7490} .rh-reglas{max-width:720px}
.rh-map{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px} .rh-map label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600}
.rh-map select{border:1.5px solid var(--line);border-radius:9px;padding:6px 8px;font:inherit;font-weight:400}
.rh-muestra{overflow:auto;max-height:260px;border:1px solid var(--line);border-radius:10px} .rh-muestra table{border-collapse:collapse;font-size:12px;white-space:nowrap}
.rh-muestra th,.rh-muestra td{padding:4px 8px;border-bottom:1px solid #f1f5f9;text-align:left} .rh-muestra th{background:#f8fafc;position:sticky;top:0}
.rh-quien tr.ok td:first-child{border-left:4px solid #16a34a} .rh-quien tr.prop td:first-child{border-left:4px solid #d97706} .rh-quien tr.falta td:first-child{border-left:4px solid #dc2626} .rh-quien tr.ign{opacity:.55}
.rh-quien select{max-width:320px;border:1.5px solid var(--line);border-radius:8px;padding:5px} .rh-quien-acc{white-space:nowrap;text-align:right}
.rh-listo{align-items:center;text-align:center} .rh-listo>svg{width:44px;height:44px;color:#16a34a} .rh-listo>.bi{font-size:44px;line-height:1;color:#16a34a}
.rh-lotes{display:flex;flex-direction:column;gap:6px} .rh-lote{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 12px} .rh-lote small{display:block}
.rh-lote.revertido,.rh-lote.descartado{opacity:.55}
.pm-docs{display:flex;flex-direction:column;gap:6px;text-align:left} .pm-doc{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:6px 10px}
.pm-doc>svg{width:22px;height:22px;color:#0e7490;flex:none} .pm-doc-n{border:0;background:none;text-align:left;font:inherit;cursor:pointer;color:inherit;padding:0}
