/* ESTILOS COMPLETOS */
*{margin:0;padding:0;box-sizing:border-box;font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
:root{--bd:#1e3a8a;--bm:#2563eb;--bl:#3b82f6;--gr:#10b981;--re:#ef4444;--or:#f97316;--ye:#eab308;--bg:#f1f5f9;--bo:#e2e8f0;--td:#1e293b;--tm:#475569;--tl:#94a3b8}
html,body{height:100%;height:100dvh;overflow:hidden;background:var(--bg)}
#app{height:100vh;height:100dvh;position:relative}
.screen{display:none;height:100%;width:100%;position:absolute;inset:0}
#ls{background:linear-gradient(135deg,#0f172a 0%,#1e3a8a 50%,#2563eb 100%)}
#ls.active{display:flex;align-items:center;justify-content:center}
#ms.active{display:block;position:relative}
#mapa-overlay-ui{position:absolute;top:58px;left:0;right:0;bottom:0;pointer-events:none;z-index:850}
#mapa-overlay-ui .moui-card .moui-hd{cursor:grab}
#mapa-overlay-ui .moui-card .moui-hd:active{cursor:grabbing}
.moui-card{pointer-events:auto;position:absolute;background:#fff;border:1px solid var(--bo);border-radius:.65rem;box-shadow:0 4px 18px rgba(0,0,0,.12);max-width:min(360px,calc(100vw - 1rem));font-size:.78rem}
.moui-drag-handle{cursor:grab;opacity:.5;padding:0 .15rem;margin-right:.1rem;flex-shrink:0;touch-action:none;-webkit-user-select:none;user-select:none}
.moui-drag-handle:active{cursor:grabbing;opacity:.85}
#mapa-card-filtros{top:.45rem;left:.45rem}
#mapa-card-dashboard{top:.45rem;right:.45rem;max-width:min(300px,42vw)}
@media (max-width:700px){#mapa-card-dashboard{right:.45rem;left:.45rem;max-width:none;top:auto;bottom:5.5rem;max-height:38vh}}
.moui-hd{font-weight:700;color:var(--bd);padding:.45rem .6rem;border-bottom:1px solid var(--bo);display:flex;align-items:center;gap:.35rem;cursor:pointer;user-select:none;font-size:.8rem}
.moui-bd{padding:.5rem .55rem}
.moui-row{margin-bottom:.45rem}
.moui-estados{display:flex;flex-wrap:wrap;gap:.35rem .5rem}
.moui-chk{display:inline-flex;align-items:center;gap:.2rem;cursor:pointer;font-size:.72rem;color:var(--tm)}
.moui-lbl{display:block;font-size:.68rem;color:var(--tl);margin-bottom:.15rem}
.moui-sel{width:100%;font-size:.78rem;padding:.35rem .4rem}
.moui-btn-reset{width:100%;margin-top:.35rem;padding:.35rem;font-size:.72rem;border:1px solid var(--bo);border-radius:.4rem;background:var(--bg);cursor:pointer}
.moui-dash .moui-bd{max-height:min(52vh,420px);overflow-y:auto}
.moui-subh{font-size:.72rem;color:var(--bd);margin:.5rem 0 .25rem}
.dash-kpi-mini{display:grid;grid-template-columns:repeat(2,1fr);gap:.35rem}
.dash-kpi-mini .stat-card{background:var(--bg);border-radius:.4rem;padding:.35rem .4rem;border:1px solid var(--bo)}
.dash-kpi-mini .stat-card .val{font-size:1.05rem;font-weight:800;color:var(--bd)}
.dash-kpi-mini .stat-card .lbl{font-size:.62rem;color:var(--tm);line-height:1.2}
.dash-kpi-mini .stat-card.orange .val{color:var(--or)}
.dash-kpi-mini .stat-card.green .val{color:var(--gr)}
.dash-list-mini{font-size:.72rem;color:var(--tm);max-height:120px;overflow-y:auto}
.moui-full{width:100%;margin-top:.5rem}
#mapa-dash-body.collapsed{display:none}
#mapa-filtros-body.collapsed{display:none}
#mapa-colores-body.collapsed{display:none}
/* Paneles del mapa: ocultar deslizando hacia la derecha (fuera de pantalla) */
#mapa-card-filtros.moui-card-slideoff,
#mapa-card-colores.moui-card-slideoff,
#mapa-card-dashboard.moui-card-slideoff{transform:translateX(calc(100vw + 1.5rem))!important;opacity:0!important;pointer-events:none!important;transition:transform .25s ease,opacity .2s}
.map-slide-tab{position:fixed;top:120px;left:0;z-index:9600;display:none;padding:.28rem .45rem;background:var(--bd);color:#fff;font-size:.65rem;font-weight:700;border-radius:0 .4rem .4rem 0;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.15);pointer-events:auto}
.map-slide-tab.visible{display:block!important}
.dash-kpi-click{cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.dash-kpi-click:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(30,58,138,.12)}
.dash-kpi-click.active-ring{outline:2px solid var(--bm);outline-offset:2px}
.dash-kpi-click.dash-kpi-blue{background:linear-gradient(180deg,#eff6ff,#fff);border:1px solid rgba(37,99,235,.22)}
.dash-kpi-click.dash-kpi-blue .val{color:#1d4ed8}
.bp2.bp2-fullhide{transform:translateY(100%)!important}
.ib-mini{background:var(--bg);border:1px solid var(--bo);border-radius:.35rem;padding:.15rem .4rem;font-size:.7rem;cursor:pointer;color:var(--bd)}
.fab-show-pedidos{position:fixed;bottom:10px;left:50%;transform:translateX(-50%);z-index:1002;display:none;align-items:center;gap:.35rem;padding:.4rem 1rem;background:var(--bd);color:#fff;border:none;border-radius:2rem;font-size:.78rem;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.fab-show-pedidos.visible{display:flex}
.mat-det-table{width:100%;border-collapse:collapse;font-size:.82rem}
.mat-det-table th{padding:.35rem .25rem;border-bottom:2px solid var(--bo);font-weight:700;color:var(--bd)}
.mat-det-table td{padding:.35rem .25rem;border-bottom:1px solid var(--bo);vertical-align:middle}
.mat-det-table .mat-col-item{text-align:left}
.mat-det-table .mat-col-un,.mat-det-table .mat-col-cant{text-align:center;width:5.5rem}
.mat-det-table .mat-col-un select,.mat-det-table .mat-col-cant input{max-width:5rem;margin:0 auto;display:block;text-align:center}
.print-content.print-a4-tight{max-width:190mm;font-size:9pt}
.print-content.print-a4-tight h1{font-size:14pt;margin:0 0 .3rem}
.print-content.print-a4-tight h2{font-size:11pt;margin:.5rem 0 .2rem}
.print-content.print-a4-tight table{font-size:8.5pt;margin-top:.35rem}
.print-content.print-a4-tight td{padding:.25rem}
.print-content.print-a4-tight .firma-print{max-height:70px;object-fit:contain}
#mapa-android-strip{display:none;position:absolute;top:58px;left:0;right:0;z-index:852;pointer-events:none;transition:transform .28s ease;transform:translateX(0)}
#mapa-android-strip.mas-collapsed{transform:translateX(100vw)}
#mapa-android-strip.mas-collapsed .mas-inner{pointer-events:none}
#mapa-android-strip .mas-inner{pointer-events:auto;margin:.3rem .45rem;padding:.4rem .55rem;background:#fff;border:1px solid var(--bo);border-radius:.5rem;display:flex;flex-direction:column;gap:.35rem;align-items:stretch;font-size:.72rem;box-shadow:0 2px 10px rgba(0,0,0,.1)}
#mapa-android-strip .mas-line-top{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;justify-content:flex-start;width:100%}
#mapa-android-strip .mas-line-top .mas-actions{display:flex;gap:.25rem;align-items:center;flex-shrink:0}
#mapa-android-strip .mas-actions-lead{order:-1}
#mapa-android-strip .mas-filtros-label{display:flex;align-items:center;gap:.3rem;cursor:pointer;white-space:nowrap;margin:0;flex:1;min-width:0}
.map-slide-tab.map-tab-android-bar{top:72px;left:0!important;right:auto!important;z-index:9650}
#mapa-card-colores{bottom:5.25rem;left:.45rem;top:auto;z-index:851;max-width:min(12rem,calc(100vw - 1rem));max-height:min(26vh,220px);overflow-y:auto;font-size:.58rem}
#mapa-card-colores .moui-bd{padding:.25rem .35rem .3rem}
#mapa-card-colores .ll-hd{font-weight:700;color:var(--bd);font-size:.6rem;margin:0 0 .12rem;line-height:1.15}
#mapa-card-colores .ll-grid{display:grid;grid-template-columns:1fr 1fr;gap:.06rem .3rem;align-items:center}
#mapa-card-colores .ll-row{display:flex;align-items:center;gap:.22rem;margin:0;min-width:0;cursor:pointer;line-height:1.15}
#mapa-card-colores .ll-row input{flex-shrink:0;cursor:pointer;width:12px;height:12px;margin:0}
#mapa-card-colores .ll-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.85)}
#mapa-card-colores .ll-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#mapa-card-colores .ll-span2{grid-column:1/-1}
#mapa-card-colores .ll-foot{margin-top:.2rem;font-size:.52rem;opacity:.88;line-height:1.25}
.chart-legend-caption{margin-top:.4rem;padding:.5rem .65rem;background:var(--bg);border-radius:.45rem;font-size:.78rem;line-height:1.42;color:var(--tm);border:1px solid var(--bo);font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
.chart-legend-caption strong{color:var(--bd);font-size:.8rem;font-weight:700}
.lc{background:white;padding:2rem 2rem 1.5rem;border-radius:1.25rem;width:92%;max-width:420px;box-shadow:0 25px 60px rgba(0,0,0,.4);max-height:95vh;overflow-y:auto}
.ll{width:56px;height:56px;background:linear-gradient(135deg,var(--bd),var(--bl));border-radius:1rem;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;font-size:1.6rem;color:white}
.lc h1{font-size:1.4rem;color:var(--td);text-align:center;font-weight:700;margin-bottom:.2rem}
.lc .sub{text-align:center;color:var(--tm);font-size:.9rem;margin-bottom:1rem}
.dbs{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border-radius:2rem;font-size:.82rem;margin-bottom:1.25rem;transition:all .3s}
.dbs.c{background:#fef9c3;color:#854d0e}.dbs.ok{background:#dcfce7;color:#166534}.dbs.er{background:#fee2e2;color:#991b1b}
.ig{position:relative;margin-bottom:1rem}
.ig i{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--tl);pointer-events:none;font-size:.9rem}
.ig input{width:100%;padding:.75rem .9rem .75rem 2.4rem;border:1.5px solid var(--bo);border-radius:.6rem;font-size:.95rem}
.ig input:focus{outline:none;border-color:var(--bl);box-shadow:0 0 0 3px rgba(59,130,246,.15)}
.bp{width:100%;padding:.8rem;background:linear-gradient(135deg,var(--bd),var(--bm));color:white;border:none;border-radius:.6rem;font-size:1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:.25rem}
.bp:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 15px rgba(30,58,138,.3)}
.bp:disabled{opacity:.5;cursor:not-allowed}
.bs{background:linear-gradient(135deg,#059669,var(--gr))!important}
.sec{flex:1;padding:.75rem;background:white;border:1.5px solid var(--bo);border-radius:.6rem;cursor:pointer;font-size:.95rem;font-weight:500}
.le{color:var(--re);font-size:.88rem;text-align:center;margin-top:.5rem;min-height:1.2rem}
.ba{background:var(--bd);color:white;font-size:.7rem;padding:.1rem .4rem;border-radius:.3rem;font-weight:600}
.du{margin-top:1.25rem;padding:.9rem;background:var(--bg);border-radius:.6rem;font-size:.82rem;color:var(--tm);border:1px solid var(--bo)}
.du p{margin:.2rem 0}.du strong{color:var(--bd)}
.admin-banner-nuevo-cliente{
  display:none;align-items:center;gap:.5rem;flex-wrap:wrap;
  padding:.45rem .75rem;background:linear-gradient(90deg,#0f766e,#0d9488);
  color:#fff;font-size:.8rem;font-weight:600;position:relative;z-index:1002;
  box-shadow:0 2px 10px rgba(15,118,110,.35);
}
.admin-banner-nuevo-cliente-ic{opacity:.95;font-size:1rem}
.admin-banner-nuevo-cliente-txt{flex:1;min-width:140px;line-height:1.35}
.admin-banner-btn{
  background:#fff;color:#0f766e;border:none;border-radius:.4rem;padding:.35rem .65rem;
  font-size:.75rem;font-weight:700;cursor:pointer;white-space:nowrap;
}
.admin-banner-btn:hover{filter:brightness(.97)}
.admin-banner-x{
  background:transparent;border:none;color:#fff;opacity:.85;font-size:1.25rem;line-height:1;
  cursor:pointer;padding:.15rem .35rem;border-radius:.35rem;
}
.admin-banner-x:hover{opacity:1;background:rgba(255,255,255,.12)}
.hd{background:white;padding:0 1rem;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 8px rgba(0,0,0,.08);position:relative;z-index:1000;height:58px;border-bottom:2px solid var(--bd)}
.hd h2{font-size:1.05rem;color:var(--bd);font-weight:700;display:flex;align-items:center;gap:.4rem}
.hr{display:flex;align-items:center;gap:.4rem}
.di{font-size:.85rem;padding:.3rem .5rem;border-radius:.4rem;display:flex;align-items:center;gap:.3rem}
.di.ok{color:var(--gr)}.di.er{color:var(--re)}
.un{font-size:.82rem;color:var(--tm);font-weight:500;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ib{background:none;border:none;font-size:1.3rem;color:var(--tm);cursor:pointer;padding:.4rem;border-radius:.4rem}
.ib:hover{background:var(--bg);color:var(--bd)}
#mc{height:calc(100vh - 58px);height:calc(100dvh - 58px);width:100%;z-index:1;position:relative}
.bp2{position:absolute;bottom:0;left:0;right:0;background:white;border-radius:1.25rem 1.25rem 0 0;box-shadow:0 -4px 20px rgba(0,0,0,.12);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:1000;max-height:72vh;display:flex;flex-direction:column}
.bp2.col{transform:translateY(calc(100% - 4.5rem))}
.ph{padding:.6rem 1rem .4rem;display:flex;flex-direction:column;align-items:center;cursor:pointer;user-select:none;flex-shrink:0}
.hb{width:44px;height:4px;background:#cbd5e1;border-radius:10px;margin-bottom:.2rem}
.hl{font-size:.75rem;color:var(--tl);font-weight:500;letter-spacing:.05em}
/* Indicador de altura de zoom */
.zoom-indicator{font-size:.7rem;color:var(--bd);background:var(--bg);padding:.15rem .5rem;border-radius:1rem;margin-left:.5rem}
.pc{display:flex;flex-direction:column;overflow:hidden;flex:1}
.pt{display:flex;padding:0 .75rem;border-bottom:1px solid var(--bo);align-items:stretch;flex-shrink:0;gap:.25rem}
.tb{flex:1;padding:.5rem .1rem .72rem;background:none;border:none;border-bottom:2.5px solid transparent;font-weight:600;color:var(--tm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.72rem;min-width:0}
.tb.active{color:var(--bd);border-bottom-color:var(--bd)}
.tb-stack{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.38rem;min-width:0;width:100%;max-width:100%}
.tb-line{display:inline-flex;align-items:center;justify-content:center;gap:.2rem;font-size:.65rem;line-height:1.2;text-align:center;flex-wrap:wrap;max-width:100%}
.bge{background:var(--bd);color:white;font-size:.62rem;padding:.12rem .42rem;border-radius:1rem;font-weight:700;line-height:1.15;flex-shrink:0;min-width:1.15rem;text-align:center}
.eb{background:none;border:none;color:#16a34a;font-size:1.2rem;cursor:pointer;padding:.4rem .5rem;border-radius:.4rem;flex-shrink:0}
.eb:hover{background:#dcfce7}
.pl{overflow-y:auto;padding:.75rem;flex:1}
.ll2{text-align:center;color:var(--tl);padding:2rem 1rem;font-size:.9rem;display:flex;align-items:center;justify-content:center;gap:.5rem}
.pi{background:white;border-radius:.75rem;padding:.85rem 1rem;margin-bottom:.6rem;border:1px solid var(--bo);border-left:4px solid var(--bd);cursor:pointer;transition:transform .1s,box-shadow .15s}
.pi:hover{transform:translateX(3px);box-shadow:0 3px 12px rgba(0,0,0,.1)}
.ph2{display:flex;justify-content:space-between;align-items:center;margin-bottom:.35rem}
.pn{font-weight:700;color:var(--bd);font-size:.9rem}
.pe{font-size:.7rem;padding:.2rem .55rem;border-radius:1rem;font-weight:600}
.ep{background:#fef9c3;color:#854d0e}.ea{background:#fae8ff;color:#86198f}.ee{background:#dbeafe;color:#1d4ed8}.ec{background:#dcfce7;color:#166534}
#cierre-toast-host{position:fixed;bottom:5.5rem;right:.75rem;z-index:9400;display:flex;flex-direction:column;gap:.45rem;max-width:min(360px,92vw);pointer-events:none}
#cierre-toast-host .cierre-toast{pointer-events:auto;background:#0f172a;color:#f8fafc;padding:.65rem .85rem;border-radius:.65rem;box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:.82rem;cursor:pointer;border-left:4px solid #10b981;animation:cierreToastIn .35s ease}
@keyframes cierreToastIn{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
/* Por encima de .map-slide-tab (9600/9650) y del overlay del mapa, para que chat y avisos sean visibles y clicables */
#wa-human-chat-toast-host{position:fixed;bottom:5.5rem;left:.75rem;z-index:10050;display:flex;flex-direction:column;gap:.45rem;max-width:min(320px,90vw);pointer-events:none}
#wa-human-chat-toast-host .wa-human-chat-toast{pointer-events:auto;background:#1e3a5f;color:#f8fafc;padding:.65rem .85rem;border-radius:.65rem;box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:.82rem;cursor:pointer;border-left:4px solid #38bdf8;animation:cierreToastIn .35s ease}
#wa-human-chat-dock{position:fixed;left:.45rem;top:50%;transform:translateY(-50%);z-index:10055;display:flex;flex-direction:column;gap:.35rem;max-width:min(200px,42vw);pointer-events:none}
#wa-human-chat-dock .wa-hc-dock-chip{pointer-events:auto;background:#1e3a5f;color:#f8fafc;padding:.4rem .5rem;border-radius:.5rem;font-size:.74rem;cursor:pointer;border-left:3px solid #38bdf8;box-shadow:0 4px 14px rgba(0,0,0,.22);line-height:1.25;word-break:break-word}
.wa-hc-float{position:fixed;width:min(380px,calc(100vw - 1rem));max-height:min(72vh,580px);display:flex;flex-direction:column;background:#fff;border-radius:.75rem;box-shadow:0 14px 44px rgba(15,23,42,.3);border:1px solid var(--bo);z-index:10060;overflow:hidden}
.wa-hc-float-h{cursor:grab;user-select:none;display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:.5rem .65rem;background:var(--bd);color:#fff;flex-shrink:0;font-size:.88rem;font-weight:600}
.wa-hc-float-h:active{cursor:grabbing}
.wa-hc-float-h .wa-hc-float-actions{display:flex;align-items:center;gap:.15rem}
.wa-hc-float-h button{background:rgba(255,255,255,.18);border:none;color:#fff;width:30px;height:30px;border-radius:.35rem;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center}
.wa-hc-float-h button:hover{background:rgba(255,255,255,.3)}
.wa-hc-float-body{padding:.55rem .65rem .65rem;overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}
.wa-hc-float-meta{font-size:.74rem;color:var(--tl);margin-bottom:.4rem;line-height:1.3}
.wa-hc-float-ta{width:100%;resize:vertical;min-height:3.2rem;margin-bottom:.45rem;font-size:.88rem}
.wa-hc-thread{max-height:min(38vh,320px);overflow-y:auto;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem;padding:.45rem;background:var(--bg);border-radius:.5rem;border:1px solid var(--bo);flex:1;min-height:80px}
.wa-hc-bubble-in{align-self:flex-start;background:white;border:1px solid var(--bo);padding:.45rem .65rem;border-radius:.65rem;max-width:92%;font-size:.88rem;white-space:pre-wrap;word-break:break-word}
.wa-hc-bubble-out{align-self:flex-end;background:#dbeafe;border:1px solid #93c5fd;padding:.45rem .65rem;border-radius:.65rem;max-width:92%;font-size:.88rem;white-space:pre-wrap;word-break:break-word}
.modo-fijar-ubicacion .leaflet-container{cursor:crosshair!important}
.pi2{font-size:.78rem;color:var(--tm);margin-bottom:.2rem}
.pd{font-size:.87rem;color:var(--td);line-height:1.3}
.pt2{display:inline-block;font-size:.68rem;padding:.15rem .4rem;border-radius:.3rem;font-weight:700;margin-top:.3rem}
.pc2{background:#fee2e2;color:var(--re)}.pa{background:#ffedd5;color:var(--or)}.pm{background:#fef9c3;color:#854d0e}.pb{background:#dbeafe;color:var(--bd)}
.pav{margin-top:.45rem;height:3px;background:#e2e8f0;border-radius:2px;overflow:hidden}
.ab{height:100%;background:linear-gradient(90deg,var(--bd),var(--bl));border-radius:2px;transition:width .4s}

/* GPS: más abajo para no tapar panel Colores / filtros del mapa */
.btn-mapa-ir-gps{position:absolute;bottom:6.72rem;left:1rem;width:2.9rem;height:2.9rem;border-radius:50%;background:#fff;color:var(--bd);border:1px solid var(--bo);box-shadow:0 4px 14px rgba(15,23,42,.12);font-size:1.15rem;cursor:pointer;z-index:1005;display:flex;align-items:center;justify-content:center;transition:transform .2s;pointer-events:auto}
.btn-mapa-ir-gps:hover{transform:scale(1.06)}
/* FAB mapa: nuevo pedido desde ubicación */
.mo{display:none;position:fixed;inset:0;background:rgba(15,23,42,.6);z-index:2000;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(2px)}
.mo.active{display:flex}
#modal-asignar-tecnico{z-index:6001}
.mc{background:white;border-radius:1rem;width:100%;max-width:520px;max-height:92vh;overflow-y:auto;box-shadow:0 25px 60px rgba(0,0,0,.35);animation:mIn .2s ease}
.mc.lg{max-width:680px}
@keyframes mIn{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.mh{padding:1rem 1.25rem;border-bottom:1px solid var(--bo);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:white;z-index:10;border-radius:1rem 1rem 0 0}
.mh h3{color:var(--bd);font-size:1rem;display:flex;align-items:center;gap:.4rem}
.cm{background:none;border:none;font-size:1.1rem;cursor:pointer;color:var(--tl);padding:.3rem;border-radius:.4rem}
.mb{padding:1.25rem}
.fg{margin-bottom:1rem;padding:0 1.25rem}
.fg:first-child{padding-top:1.1rem}
.fr{display:flex;gap:.75rem;padding:0 1.25rem;margin-bottom:1rem}
.fr .hf{flex:1;padding:0;margin-bottom:0}
label{display:block;margin-bottom:.35rem;font-weight:600;font-size:.83rem;color:var(--tm);display:flex;align-items:center;gap:.3rem}
input,select,textarea{width:100%;padding:.65rem .8rem;border:1.5px solid var(--bo);border-radius:.5rem;font-size:.93rem;background:white;color:var(--td)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--bl);box-shadow:0 0 0 3px rgba(59,130,246,.12)}
textarea{resize:vertical;min-height:80px}
.cc{font-size:.75rem;color:var(--tl);display:block;text-align:right;margin-top:.2rem}
.ud{padding:.65rem .8rem;border:1.5px dashed var(--bo);border-radius:.5rem;font-size:.87rem;color:var(--tm);background:var(--bg);display:flex;align-items:center;gap:.4rem;cursor:pointer}
.ud.sel{border-color:var(--gr);color:#166534;background:#f0fdf4}
.fa2{padding:1rem 1.25rem;display:flex;gap:.75rem;border-top:1px solid var(--bo);margin-top:.25rem}
.dc{padding:1rem 1.25rem 1.25rem}
.ds{margin-bottom:1rem;background:var(--bg);border-radius:.75rem;padding:.9rem 1rem;border:1px solid var(--bo)}
.ds h4{color:var(--bd);margin-bottom:.65rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;gap:.4rem}
.dr{display:flex;margin-bottom:.4rem;font-size:.88rem;align-items:flex-start;gap:.5rem}
.dl{min-width:115px;color:var(--tm);flex-shrink:0;font-size:.82rem}
.dv{flex:1;color:var(--td);font-weight:500;word-break:break-word;display:flex;align-items:center;gap:.25rem;flex-wrap:wrap;min-width:0}
.coord-proy-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .55rem;margin:.25rem 0 .4rem;line-height:1.25}
.coord-faja{font-size:.82rem;font-weight:700;color:var(--bd);flex-shrink:0}
.coord-sys{font-size:.72rem;color:var(--tm);font-weight:500;word-break:break-word}
.dr.coord-proy-row{flex-direction:column;align-items:stretch;gap:.25rem}
.dr.coord-proy-row .dl{min-width:0;max-width:100%}
.dr.coord-proy-row .dv{width:100%;justify-content:flex-start;align-items:center}
@media print{
  .no-print,.print-preview-toolbar{display:none!important}
  .print-content.print-a4-tight{max-width:100%!important;padding:0!important;font-size:9pt!important}
  .print-content.print-a4-tight h1{font-size:14pt!important}
  .print-content.print-a4-tight h2{font-size:10pt!important;margin:.4rem 0 .2rem!important}
  .print-content.print-a4-tight table{font-size:8.5pt!important}
  .print-content.print-a4-tight .firma-print{max-height:65px!important}
}
.print-preview-wrap{min-height:100%;padding-bottom:5.5rem;box-sizing:border-box}
.print-preview-toolbar{position:fixed;bottom:0;left:0;right:0;z-index:10001;display:flex;gap:.65rem;justify-content:center;align-items:center;flex-wrap:wrap;padding:.75rem 1rem;background:linear-gradient(180deg,rgba(255,255,255,.97),#fff);border-top:1px solid #e2e8f0;box-shadow:0 -6px 24px rgba(15,23,42,.12)}
.ppt-btn{border:none;border-radius:.65rem;padding:.65rem 1.1rem;font-size:.9rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;font-family:inherit}
.ppt-cancel{background:#f1f5f9;color:#334155;border:1.5px solid #e2e8f0}
.ppt-cancel:active{background:#e2e8f0}
.ppt-ok{background:linear-gradient(135deg,#1e3a8a,#2563eb);color:#fff}
.ppt-ok:active{opacity:.92}
.dv-copy{cursor:pointer;padding:.2rem .5rem;background:var(--bg);border-radius:.5rem;font-size:.75rem;color:var(--bd);display:inline-flex;align-items:center;gap:.25rem}
.dv-copy:hover{background:var(--bo)}
.dv-copy.copied{background:var(--gr);color:white}
.trb{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.5rem;padding:.75rem;font-size:.88rem;color:#166534;line-height:1.5;margin-top:.25rem}
.da{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}
.ba2{padding:.45rem 1rem;background:white;border:1.5px solid var(--bo);border-radius:2rem;cursor:pointer;font-size:.87rem;display:inline-flex;align-items:center;gap:.35rem;font-weight:500}
.ba2:hover{background:var(--bg)}.ba2.p2{background:var(--bd);color:white;border-color:var(--bd)}.ba2.s2{background:var(--gr);color:white;border-color:var(--gr)}
.ba2.imprimir{background:var(--or);color:white;border-color:var(--or)}
.ci{background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:.6rem;padding:.8rem 1rem;font-size:.88rem;color:var(--bd);line-height:1.5}
/* Estilos para galería de fotos */
.fotos-container{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem;max-height:200px;overflow-y:auto;padding:.25rem}
.foto-miniatura{width:70px;height:70px;object-fit:cover;border-radius:.5rem;border:2px solid var(--bo);cursor:pointer;transition:transform .2s}
.foto-miniatura:hover{transform:scale(1.1)}
.btn-foto{background:var(--bd);color:white;border:none;border-radius:2rem;padding:.5rem 1rem;font-size:.85rem;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;margin-right:.5rem;margin-bottom:.5rem}
.btn-foto i{font-size:1rem}
.modal-foto{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:3000;display:none;flex-direction:column;align-items:center;justify-content:center}
.modal-foto.active{display:flex}
/* Barra superior con controles */
.modal-foto .foto-toolbar{position:absolute;top:0;left:0;right:0;height:3.5rem;display:flex;align-items:center;justify-content:space-between;padding:0 1rem;background:rgba(0,0,0,.4);z-index:3002}
.modal-foto .foto-toolbar button{background:rgba(255,255,255,.15);border:none;color:white;border-radius:.5rem;padding:.4rem .8rem;cursor:pointer;font-size:.9rem;display:flex;align-items:center;gap:.4rem}
.modal-foto .foto-toolbar button:hover{background:rgba(255,255,255,.3)}
.modal-foto .foto-zoom-info{color:rgba(255,255,255,.7);font-size:.8rem}
/* Contenedor con overflow para arrastre cuando ampliado */
.modal-foto .img-container{
    margin-top:3.5rem;
    width:100%;height:calc(100vh - 3.5rem);
    overflow:hidden;
    cursor:grab;
    display:flex;align-items:center;justify-content:center;
    position:relative;
}
.modal-foto .img-container:active{cursor:grabbing}
.modal-foto img{
    max-width:95vw;max-height:calc(95vh - 3.5rem);
    object-fit:contain;
    transform-origin:center center;
    transition:transform 0.15s ease;
    user-select:none;
    pointer-events:none;
}
.cerrar-modal-foto{color:white;font-size:1.5rem;cursor:pointer;background:none;border:none;display:flex;align-items:center;gap:.4rem}
/* Estilos para impresión */
#print-container{display:none}
#print-container.printing{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:white;z-index:10000;overflow:auto;padding:2rem}
.print-content{font-family:system-ui;max-width:800px;margin:0 auto;font-size:12pt}
.print-content h1{color:#1e3a8a;border-bottom:2px solid #1e3a8a;padding-bottom:0.5rem;font-size:18pt}
.print-content h2{color:#1e3a8a;margin-top:1.5rem;font-size:14pt}
.print-content table{width:100%;border-collapse:collapse;margin-top:1rem;font-size:11pt}
.print-content td{padding:0.5rem;border:1px solid #e2e8f0}
.print-content td:first-child{background:#f1f5f9;font-weight:bold;width:150px}
/* Modal para cargar avance */
.avance-modal{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:4000;display:none;align-items:center;justify-content:center}
.avance-modal.active{display:flex}
.avance-content{background:white;border-radius:1rem;padding:2rem;max-width:400px;width:90%}
.avance-content h3{color:var(--bd);margin-bottom:1rem}
.avance-slider{width:100%;margin:1rem 0}
.avance-input{width:100%;padding:.5rem;border:1.5px solid var(--bo);border-radius:.5rem;font-size:1rem;text-align:center}
.avance-buttons{display:flex;gap:1rem;margin-top:1rem}
.avance-buttons button{flex:1;padding:.5rem;border:none;border-radius:.5rem;cursor:pointer}
.avance-buttons .guardar{background:var(--bd);color:white}
.avance-buttons .cancelar{background:var(--bg);color:var(--td)}
#toast{position:fixed;bottom:6rem;left:50%;transform:translateX(-50%) translateY(20px);background:var(--td);color:white;padding:.65rem 1.25rem;border-radius:2rem;font-size:.88rem;z-index:9999;opacity:0;transition:all .3s;pointer-events:none;white-space:nowrap;box-shadow:0 4px 15px rgba(0,0,0,.3)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.success{background:#059669}#toast.error{background:#dc2626}#toast.info{background:var(--bd)}
@media(min-width:1024px){
  /* left/top/right/bottom sin !important: el arrastre usa estilos inline */
  #ms .bp2{
    position:fixed!important;
    left:auto;
    top:auto;
    right:1rem;
    bottom:5.5rem;
    width:min(400px,calc(100vw - 2rem))!important;
    max-height:min(72vh,calc(100dvh - 120px))!important;
    z-index:10020!important;
    border-radius:1rem!important;
    box-shadow:0 14px 44px rgba(15,23,42,.18)!important;
    transform:none!important;
  }
  #ms .bp2.col{transform:translateY(calc(100% - 3.25rem))!important}
  #ms .bp2.bp2-fullhide{transform:translateY(110%)!important;pointer-events:none}
  #ms .bp2.bp2-fullhide .ph{pointer-events:auto}
  #ms .bp2 .ph{cursor:grab;user-select:none}
  #ms .bp2 .ph:active{cursor:grabbing}
  .btn-mapa-ir-gps{bottom:2.55rem;left:1rem}
  .hl{display:none}
}
@keyframes pulse-gps{
  0%{box-shadow:0 0 0 0 rgba(16,185,129,.6)}
  70%{box-shadow:0 0 0 10px rgba(16,185,129,0)}
  100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}
}
/* ── MODO OFFLINE ── */
#offline-banner{display:none;position:fixed;top:0;left:0;right:0;z-index:9000;background:#dc2626;color:white;padding:.45rem 1rem;font-size:.82rem;font-weight:600;text-align:center;align-items:center;justify-content:center;gap:.5rem}
#offline-banner.visible{display:flex}
#offline-badge{display:none;position:absolute;top:-6px;right:-6px;background:#f97316;color:white;border-radius:50%;width:20px;height:20px;font-size:.65rem;font-weight:700;align-items:center;justify-content:center;border:2px solid white}
#offline-badge.visible{display:flex}
.offline-tag{display:inline-block;background:#f97316;color:white;font-size:.65rem;padding:.1rem .4rem;border-radius:.3rem;font-weight:700;margin-left:.3rem;vertical-align:middle}
.sync-btn{background:white;color:#dc2626;border:none;border-radius:1rem;padding:.2rem .7rem;font-size:.78rem;font-weight:700;cursor:pointer;margin-left:.5rem}
.sync-btn:hover{background:#fee2e2}


/* ── v2.0 ── */
@keyframes alertaIn{from{opacity:0;transform:translateX(-50%) translateY(-20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
@keyframes slideIn{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.admin-panel{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:5000;display:none;align-items:center;justify-content:center;padding:max(.35rem,env(safe-area-inset-top)) max(.35rem,env(safe-area-inset-right)) max(.35rem,env(safe-area-inset-bottom)) max(.35rem,env(safe-area-inset-left));overflow:hidden;box-sizing:border-box}
.admin-panel.active{display:flex}
.setup-wizard{z-index:12000;background:rgba(2,6,23,.66)}
.setup-wizard .mc{max-width:920px;max-height:95vh;width:100%}
.sw-step{display:none}
.sw-step.active{display:block}
/* Casi pantalla completa: ~96% ancho × ~92% alto, mínimo ~70% alto (ya no el recuadro angosto de 1120px). */
.admin-box{background:white;border-radius:.75rem;width:min(96vw,calc(100vw - .75rem));max-width:none;box-shadow:0 25px 60px rgba(0,0,0,.35);animation:slideIn .25s ease;margin:0 auto;flex:0 1 auto;height:min(92dvh,92vh);min-height:max(70vh,20rem);max-height:min(92dvh,92vh);min-width:0;overflow:hidden;display:flex;flex-direction:column}
.admin-box > div:first-child{flex-shrink:0}
.admin-box .admin-tabs{flex-shrink:0}
/* min-height:0: sin esto flex:1 no encoge y el contenido largo queda cortado por overflow:hidden del .admin-box (tablas distrib/socios). */
.admin-box .admin-section{overflow-y:auto;flex:1 1 0;min-height:0;-webkit-overflow-scrolling:touch}
.admin-tabs{display:flex;border-bottom:2px solid var(--bo);flex-wrap:wrap;gap:.25rem;padding:.75rem .75rem 0}
.admin-tab{padding:.5rem .9rem;border:none;background:none;font-weight:600;font-size:.83rem;color:var(--tm);cursor:pointer;border-bottom:2.5px solid transparent;border-radius:.4rem .4rem 0 0;white-space:nowrap}
.admin-tab.active{color:var(--bd);border-bottom-color:var(--bd);background:var(--bg)}
.admin-section{padding:1.25rem;display:none}
.admin-section.active{display:block}
.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}
.admin-table th{background:var(--bg);padding:.6rem .75rem;text-align:left;font-weight:600;color:var(--tm);border-bottom:2px solid var(--bo)}
.admin-table td{padding:.55rem .75rem;border-bottom:1px solid var(--bo);vertical-align:middle}
.admin-table tr:last-child td{border-bottom:none}
.admin-table tr:hover td{background:#f8fafc}
.btn-sm{padding:.3rem .7rem;font-size:.78rem;border:none;border-radius:.4rem;cursor:pointer;font-weight:600;display:inline-flex;align-items:center;gap:.3rem}
.btn-sm.danger{background:#fee2e2;color:#dc2626}
.btn-sm.primary{background:var(--bd);color:white}
.btn-sm.success{background:#dcfce7;color:#166534}
.btn-sm.warning{background:#fef9c3;color:#854d0e}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.form-grid .full{grid-column:1/-1}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.5rem;margin-bottom:.75rem}
.stat-card{background:var(--bg);border-radius:.75rem;padding:.65rem .5rem;border:1px solid var(--bo);text-align:center}
.stat-card .val{font-size:1.5rem;font-weight:700;color:var(--bd)}
.stat-card .lbl{font-size:.75rem;color:var(--tm);margin-top:.2rem}
.stat-card.red .val{color:var(--re)}.stat-card.green .val{color:var(--gr)}.stat-card.orange .val{color:var(--or)}
.chart-wrap{background:white;border:1px solid var(--bo);border-radius:.75rem;padding:1rem;margin-bottom:1rem}
.chart-wrap h4{font-size:.85rem;color:var(--tm);margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.05em}
/* Chart.js + maintainAspectRatio:false: contenedor con altura fija; sin esto el canvas puede crecer sin límite */
.chart-container{
  position:relative;width:100%;
  height:260px;min-height:260px;max-height:260px;
  overflow:hidden;
  flex-shrink:0;
}
.chart-container--tall{height:300px;min-height:300px;max-height:300px}
#admin-estadisticas .chart-container>canvas{
  display:block!important;
  max-width:100%!important;
  max-height:100%!important;
  width:100%!important;
  height:100%!important;
}
.user-marker-admin{display:flex;align-items:center;gap:.25rem;background:white;border:2px solid var(--bd);border-radius:1rem;padding:.2rem .5rem;font-size:.75rem;font-weight:600;color:var(--bd);white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.2)}
#offline-banner{position:fixed;top:0;left:0;right:0;z-index:9000;background:#dc2626;color:white;padding:.45rem 1rem;font-size:.82rem;font-weight:600;text-align:center;display:none;align-items:center;justify-content:center;gap:.5rem;transition:transform .3s}
#offline-banner.visible{display:flex}
#offline-banner.hidden{transform:translateY(-100%)}
#offline-banner .sync-btn{display:inline-flex;align-items:center;gap:.35rem}
#offline-toggle{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:8999;background:#dc2626;color:white;border:none;border-radius:0 0 .5rem .5rem;padding:.15rem .75rem;font-size:.7rem;cursor:pointer;display:none}
#offline-toggle.visible{display:block}
#cache-progress-bar{position:fixed;bottom:0;left:0;right:0;background:#1e3a8a;color:white;padding:.5rem 1rem;z-index:8000;display:none;align-items:center;gap:.75rem;font-size:.82rem}
#cache-progress-bar.visible{display:flex}
#cache-progress-bar .bar{flex:1;height:6px;background:rgba(255,255,255,.2);border-radius:3px;overflow:hidden}
#cache-progress-bar .fill{height:100%;background:#10b981;border-radius:3px;transition:width .3s}
.leaflet-div-icon{background:none!important;border:none!important}

/* Importación Excel (admin): cartel fijo hasta terminar todas las filas */
.gn-import-overlay{
  position:fixed;inset:0;z-index:12000;background:rgba(15,23,42,.45);
  display:none;align-items:center;justify-content:center;padding:1rem;
  pointer-events:all;
}
.gn-import-overlay-card{
  background:#fff;color:var(--td,#0f172a);max-width:min(420px,92vw);
  padding:1.15rem 1.35rem;border-radius:.85rem;box-shadow:0 20px 50px rgba(0,0,0,.35);
  border:1px solid var(--bo,#e2e8f0);display:flex;gap:.85rem;align-items:flex-start;
}
.gn-import-overlay-spin{color:var(--bd,#2563eb);font-size:1.35rem;padding-top:.1rem}
.gn-import-overlay-msg{font-size:.9rem;line-height:1.45;font-weight:600;flex:1;min-width:0}
