:root{
  --bg:#fff; --fg:#111; --muted:#6b7280; --line:#e5e7eb; --soft:#f3f4f6;
  /* Paleta institucional: azul del logotipo (#41ADF4) como identidad. --cx-* es la escala del mismo
     matiz (H 204°); sobre blanco se usa --cx-700 en adelante, que sí pasa contraste AA. */
  --cx-50:#ecf7fe; --cx-100:#cfeafc; --cx-200:#9fd5f9; --cx-300:#65bcf6; --cx-500:#41ADF4;
  --cx-600:#0c85d4; --cx-700:#0967a4; --cx-800:#074874; --cx-900:#0a2e45; --cx-950:#061d2d;
  --hdr:#061d2d; --hdr-fg:#fff; --nav:#0967a4; --nav-fg:#fff;
  --accent:#0967a4; --accent-fg:#fff; --brand:var(--cx-700); --gold:#41ADF4; --ai:#8b5cf6;
  --of:#9b1b4e;   /* vino: color propio del modulo de oficios, no es la marca */
  --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}
.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}
/* La X de todo modal (regla del HQ, 14-nov-2026): arriba a la derecha y a la vista aunque la hoja haga scroll. */
.modal .modal-x{position:sticky;top:0;float:right;z-index:3;width:38px;height:38px;margin:-10px -6px 0 10px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--soft);color:#374151;cursor:pointer}
.modal .modal-x .bi{font-size:17px} .modal .modal-x:active{background:#e5e7eb} .modal .modal-x:focus-visible{outline:3px solid var(--cx-200);outline-offset:1px}
.modal .sheet:has(.guide-h)>.modal-x{display:none}   /* la guía trae su propia X en el encabezado */
@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:var(--cx-700);color:#fff;border-color:var(--cx-700)}
.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:var(--cx-700)}
.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:var(--cx-700)} .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:var(--cx-700)} .map-ui .seg button.sw.on i{background:var(--cx-700)} .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,#0a76bb,#075a90);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:#fff;color:var(--cx-800);transform:translateY(-2px);box-shadow:0 3px 10px rgba(0,0,0,.35)}
.nav a.active .lb,
.nav .nav-g button.active .lb{color:#fff;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:var(--cx-700)} .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:var(--cx-700);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:var(--cx-700)} .map-ui .tgl.on i{background:var(--cx-700)} .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:var(--cx-700)}
.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:var(--cx-950)}
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%,#0967a4 0%,#0a2e45 45%,#061d2d 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:#41ADF4}
.lg-blobs i:nth-child(2){width:320px;height:320px;right:-120px;top:120px;background:#0967a4;animation-delay:-5s}
.lg-blobs i:nth-child(3){width:240px;height:240px;left:30%;bottom:-80px;background:#0c85d4;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}
/* Logotipo (assets/icons/logo.svg, 146×36) en una placa oscura: mide lo mismo de alto que la marca «AD» que sustituyó. */
.lg-mark{position:relative;width:min(240px,72vw);padding:22px 26px;margin:0 auto 18px;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 img{width:100%;height:auto;display:block}
.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:var(--cx-600);background:#fff;box-shadow:0 0 0 4px rgba(12,133,212,.18)}
.lg-field .ic{width:34px;height:34px;border-radius:10px;background:var(--cx-50);color:var(--cx-700);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,#0c85d4,#0967a4);color:#fff;font-size:17px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 10px 24px rgba(9,103,164,.42);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-foot a{color:inherit;text-decoration:none}.lg-foot a:hover,.lg-foot a:focus-visible{text-decoration:underline}
.lg-version{position:relative;margin-top:auto;padding-top:18px;font-size:11px;color:rgba(255,255,255,.45)}
/* MODO DEMO (bypass para presentaciones): botón bajo el login y selector de cuenta. */
/* Entrar con el QR de la computadora (14-nov-2026) */
.lg-qr{width:100%;margin-top:12px;min-height:50px;border:1.5px solid #cfeafc;border-radius:14px;background:#f3f9fe;color:#0967a4;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer}
.lg-qr .bi{font-size:20px} .lg-qr:active{background:#e1f1fc}
.eq{text-align:center} .eq h3{justify-content:center}
.eq-num{margin:14px auto 10px;width:150px;height:120px;border-radius:22px;background:#0b4f7c;color:#fff;font-size:68px;font-weight:800;line-height:120px;letter-spacing:4px;font-variant-numeric:tabular-nums}
.eq-estado{min-height:22px;margin:0 0 14px} .eq-estado .bi{color:var(--ok)}
.lg-demo{width:100%;margin-top:12px;min-height:46px;border:1px dashed #f59e0b;border-radius:12px;background:#fffbeb;color:#92400e;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.lg-demo-lista{max-height:56vh;overflow:auto;display:flex;flex-direction:column;gap:14px}
.lg-demo-grupo h4{margin:0 0 6px;font-size:14px;display:flex;align-items:center;gap:6px}
.lg-demo-grupo h4 small{color:var(--muted);font-weight:500}
.lg-demo-u{width:100%;text-align:left;border:1px solid var(--line,#e5e7eb);border-radius:10px;background:#fff;padding:10px 12px;margin-bottom:6px;cursor:pointer;display:flex;align-items:center;gap:10px}
.lg-demo-u:hover{border-color:#0967a4;background:#f0f9ff}
.lg-demo-txt{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.lg-demo-u b{font-size:15px}
.lg-demo-txt span{font-size:12px;color:var(--muted)}
.lg-demo-rol{flex:none;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:999px;background:#eef2f7;color:#475569;white-space:nowrap}
.lg-demo-rol[data-rol="root"]{background:#fee2e2;color:#991b1b}
.lg-demo-rol[data-rol="pintor"]{background:#dbeafe;color:#1e40af}
.lg-demo-rol[data-rol="contratista"]{background:#ede9fe;color:#5b21b6}
.lg-demo-rol[data-rol="cliente / supervisión"]{background:#dcfce7;color:#166534}
.lg-demo-rol[data-rol="sin acceso"]{background:#f3f4f6;color:#9ca3af}
/* Modo demo: renglón discreto al pie del menú ☰ (antes, franja fija que tapaba la barra). */
.drawer .drawer-demo{margin-top:auto;padding:8px 10px;border-radius:10px;background:#fffbeb;color:#92400e;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.drawer .drawer-demo .bi{font-size:16px;color:#d97706;width:auto}
#demo-banner{display:none!important;position:fixed;left:0;right:0;bottom:0;z-index:9999;background:repeating-linear-gradient(-45deg,#f59e0b 0 16px,#b45309 16px 32px);color:#fff;font-weight:800;font-size:12px;letter-spacing:.5px;text-align:center;padding:4px 10px;display:flex;align-items:center;justify-content:center;gap:8px;padding-bottom:calc(4px + env(safe-area-inset-bottom,0px));pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.35)}
@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:var(--cx-700)}.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:var(--cx-700)}.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}
.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:var(--cx-700)}.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:var(--cx-700)}.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:var(--cx-700);color:#fff;border-color:var(--cx-700)}
.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:var(--cx-800);box-shadow:0 4px 14px rgba(0,0,0,.2)}
.nav.wiz .btn.ok{background:#fff;color:var(--cx-800);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)}
.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: solo nombre, teléfono y las líneas que unen con el jefe */
.us-row{display:flex;align-items:center;gap:8px;padding:6px 4px;margin-left:calc(var(--ind) * 22px);border-bottom:1px dashed var(--line);position:relative}
.us-row .us-line{width:14px;height:0;border-top:2px solid var(--line);flex:none} .us-row[style*="--ind:0"] .us-line{display:none}
.us-row::before{content:"";position:absolute;left:-9px;top:-10px;height:calc(50% + 10px);border-left:2px solid var(--line)} .us-row[style*="--ind:0"]::before{display:none}
.us-row b{font-size:14px} .us-row small{color:var(--muted);font-variant-numeric:tabular-nums} .us-n{margin-left:auto;font-style:normal;background:var(--soft);border-radius:999px;padding:1px 8px;font-size:11px}
.us-form h3{margin:0 0 6px;display:flex;align-items:center;gap:8px} .us-form .meta{margin-bottom:10px} .us-tel{display:flex;gap:6px} .us-tel select{flex:0 0 110px}
.us-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 132px auto;gap:8px;align-items:center;
  padding:6px 8px;border-radius:8px;border:1px solid transparent}
.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 ===== */
.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}
.vinc-ok{display:flex;align-items:center;gap:12px;background:var(--cx-50);border-radius:12px;padding:12px;margin:8px 0 12px} .vinc-ok .bi{font-size:28px;color:var(--cx-700)} .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:var(--cx-700);color:#fff;border-color:var(--cx-700)}
/* 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:var(--cx-700);color:#fff;border-color:var(--cx-700)}
.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:var(--cx-700);border-color:var(--cx-700);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}
.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:var(--cx-700);border-color:var(--cx-700);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:var(--cx-800);border-color:var(--cx-800)} .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 */
.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:var(--of);background:#fdf2f6;color:#831843} .of-buzon.on i{background:var(--of);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:var(--of)} .of-x i{position:absolute;top:0;right:0;font-style:normal;background:var(--of);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 var(--of);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:var(--of);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:var(--of);background:#fdf2f6} .of-suelta.lleno{border-style:solid;border-color:#86efac;background:#f0fdf4}
.of-suelta svg{width:34px;height:34px;color:var(--of);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:var(--of);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:var(--of)}
.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:var(--of);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:var(--of);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:var(--of);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:var(--of);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:var(--of)}
/* --- 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:var(--of);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:var(--of);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:var(--of);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:var(--of)}
.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:var(--of)} .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:var(--of);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:var(--of)}
.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}

/* Conversación de la cédula (unidad 6) */
.pt-hilo-lista{display:grid;gap:8px;margin-top:8px;max-height:46vh;overflow:auto}
.pt-msg{background:var(--soft);border-radius:12px;padding:9px 11px;font-size:14.5px}
.pt-msg.prov{background:var(--cx-50)}
.pt-msg-h{display:flex;align-items:baseline;gap:8px;margin-bottom:2px}
.pt-msg-h b{font-size:13px} .pt-msg-h small{font-size:11.5px;color:var(--muted);margin-left:auto}
.pt-msg-img{width:100%;border-radius:10px;margin-top:6px;display:block}

/* Agenda de visitas (apps/pintura/views/agenda.js, unidad 4-5) */
.ag-sec{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;margin:18px 0 8px;color:var(--cx-700)}
.ag-sec svg,.ag-sec .bi{width:18px;height:18px;font-size:16px}
.ag-cita.on{border-left:4px solid var(--cx-600)}
.ag-ops{display:grid;gap:6px;margin-top:10px}
.ag-op{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer}
.ag-op:has(:checked){border-color:var(--cx-600);background:var(--cx-50)}
.ag-op input{width:18px;height:18px;flex:none;accent-color:var(--cx-600)}

/* 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)}
.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}

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

/* ===== PINTURA DE FACHADAS (pt-*) ===== */
.pt-estado{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;color:#fff;background:var(--c,#64748b)}
.pt-ced{border-left:4px solid var(--c,#64748b)} .pt-ced .pb-av{background:var(--c,#64748b);color:#fff}
.pt-cab{border-top:4px solid var(--c,#64748b)}
.pt-compara{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px} .pt-compara section{min-width:0}
.pt-compara .ag-fotogrid{grid-template-columns:1fr 1fr}
.pt-gris{background:#e2e8f0 center/cover no-repeat;min-height:60px}
.ag-fototile.pt-gris{background-color:#e2e8f0}
.pt-visor img{width:100%;max-height:78vh;object-fit:contain;border-radius:10px;background:#000}
.pt-ine{margin-top:8px} .pt-ine img{width:100%;max-width:340px;border-radius:10px;border:1px solid var(--line)}
.pt-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px} .pt-kpi{border-left:4px solid var(--c,#0e7490);padding:10px 12px} .pt-kpi small{display:block;color:#64748b;font-size:11px;text-transform:uppercase;letter-spacing:.3px} .pt-kpi b{display:block;font-size:24px;margin:2px 0}
.pt-barras{display:flex;align-items:flex-end;gap:6px;height:110px;padding:10px} .pt-barras>div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;font-size:10px} .pt-barras i{display:block;width:100%;background:#0e7490;border-radius:4px 4px 0 0} .pt-barras b{font-size:11px}
.pt-tabs button{flex:1}
.ap-cola.err{border-color:#fecaca;background:#fff5f5}
@media (max-width:420px){.pt-compara{grid-template-columns:1fr}}
.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}
/* MEDICIÓN DE FACHADAS (021): editor de superficies y totales. */
.med-lienzo{position:relative;line-height:0;margin:8px 0;overflow:auto;border-radius:10px;background:#0f172a}
.med-lienzo img{width:100%;height:auto;display:block}
.med-lienzo canvas{position:absolute;left:0;top:0;touch-action:none}
.med-barra{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.med-barra select{flex:1 1 120px;min-height:40px;border:1px solid var(--line,#e5e7eb);border-radius:8px;padding:6px}
.med-barra .btn.on{background:var(--brand,#0967a4);color:#fff}
.med-tot{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line,#e5e7eb)}
.med-tot:last-child{border-bottom:0}
.med-neto{border-top:2px solid var(--line,#e5e7eb);border-bottom:0;margin-top:2px;font-size:17px}
.med-neto b{color:#16a34a}
