: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('/app/assets/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)}
.modal .sheet .guide{margin:-18px -16px calc(-18px - var(--sa-b));padding:0}
.guide-h{position:sticky;top:0;background:#fff;display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);z-index:1}
.guide-h .ic{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none} .guide-h .ic .bi{font-size:22px;color:#fff}
.guide-h b{display:block;font-size:16px} .guide-h small{color:var(--muted);font-size:12px} .guide-h .x{margin-left:auto;width:40px;height:40px;border-radius:50%;background:var(--soft)}
.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 select{width:100%;min-height:44px}
.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}
/* Á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}
.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}
/* 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 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-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 i{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{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.on{color:#9b1b4e} .of-x i{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-fila.vencida{border-color:#fca5a5}
.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} .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}
.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}
.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 i{font-style:normal;background:#e2e8f0;border-radius:999px;padding:0 5px;font-size:10.5px;font-weight:800}
.of-tabs button.on i{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}
.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-p{display:flex;gap:9px;align-items:center;padding:7px 11px;border-bottom:1px solid #f1f5f9;cursor:pointer}
.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>svg:last-child{width:16px;height:16px;color:transparent;flex:none}
.of-p:has(:checked){background:#fdf2f6} .of-p:has(:checked)>svg:last-child{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}
/* Guía navegable: botón atrás en la cabecera; chapa «+N más» de usuarios. */
.guide-h .atras{flex:none;margin-right:2px}
.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}
.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}

/* ============================ 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}
