/* Rondín de sanitarios (V33.23) */
.san-oculto{display:none!important}
.san-tabs{display:flex;gap:6px;margin:0 0 14px;flex-wrap:wrap}
.san-tabs button,.san-tabs2 button{border:1px solid #e5e7eb!important;background:#fff!important;border-radius:12px!important;padding:10px 16px!important;font:inherit;font-size:14px;font-weight:700;color:#475569!important;cursor:pointer;min-height:0!important;box-shadow:none!important}
.san-tabs button.on{background:#0f172a!important;color:#fff!important;border-color:#0f172a!important}
.san-tabs2{display:flex;gap:6px;margin:12px 0;flex-wrap:wrap}.san-tabs2 button{padding:8px 13px!important;font-size:13px}
.san-tabs2 button.on{background:#0e7490!important;color:#fff!important;border-color:#0e7490!important}
#san-root{color:#0f172a}#san-root *,.san-ov *{box-sizing:border-box}
.san-head{display:flex;gap:12px;align-items:stretch;flex-wrap:wrap;margin-bottom:12px}
.san-turno{flex:1 1 260px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:12px 14px;position:relative;overflow:hidden}
.san-turno small{display:block;font-size:11px;font-weight:800;text-transform:uppercase;color:#64748b;letter-spacing:.04em}.san-turno b{font-size:26px;margin-right:6px}.san-turno span{font-size:12.5px;color:#64748b}
.san-turno i{position:absolute;left:0;bottom:0;height:5px;width:var(--p);background:#16a34a}.san-turno i.warn{background:#eab308}.san-turno i.bad{background:#dc2626}
.san-btn{border:1px solid #e5e7eb;background:#fff;border-radius:10px;padding:8px 13px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;color:#0f172a;min-height:0;display:inline-flex;align-items:center;gap:6px}
.san-btn.pri{background:#0e7490;border-color:#0e7490;color:#fff}.san-btn.sm{padding:6px 10px;font-size:12px}
.san-btn.grande{font-size:16px;padding:14px 20px;border-radius:14px}.san-head .san-btn.grande{flex:0 1 auto}
.san-btn[disabled]{opacity:.6}
.san-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.san-kpi{text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px;cursor:pointer;font:inherit;min-height:0}
.san-kpi.on{border-color:#0e7490;box-shadow:0 0 0 2px rgba(14,116,144,.2)}
.san-kpi small{display:flex;gap:6px;align-items:center;font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase}.san-kpi small i,.san-ley i,.san-it>i{width:10px;height:10px;border-radius:50%;display:inline-block;flex:0 0 auto}
.san-kpi b{font-size:22px}
.san-filtros{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.san-filtros label{font-size:12px;font-weight:700;color:#475569;display:flex;gap:6px;align-items:center}
.san-filtros select{height:36px;border:1px solid #cbd5e1;border-radius:9px;padding:0 8px;font:inherit;font-size:13px}
.san-seg{display:inline-flex;background:#eef0f3;border-radius:11px;padding:3px;gap:3px}
.san-seg button{border:0!important;background:transparent!important;padding:7px 12px!important;border-radius:8px!important;font:inherit;font-size:13px;font-weight:700;color:#475569!important;cursor:pointer;min-height:0!important;box-shadow:none!important}
.san-seg button.on{background:#fff!important;color:#0f172a!important;box-shadow:0 1px 3px rgba(0,0,0,.12)!important}
.san-aviso{background:#ecfeff;color:#155e75;border-radius:10px;padding:9px 12px;font-size:13px;margin-bottom:10px}.san-aviso.warn{background:#fff7ed;color:#9a3412}
.san-lado{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px}
@media (max-width:900px){.san-lado{grid-template-columns:1fr}}
.san-mapa{height:min(64vh,540px);min-height:340px;border-radius:14px;overflow:hidden;border:1px solid #e5e7eb;background:#1e293b}
.san-mapa.plano{background:#f8fafc;height:auto;min-height:0;overflow:auto}
.san-plano{position:relative;display:inline-block;width:100%}.san-plano img{width:100%;display:block}
.san-pmk{position:absolute;transform:translate(-50%,-50%);border:3px solid #fff!important;background:var(--c)!important;border-radius:50%!important;width:30px;height:30px;padding:0!important;font-size:14px;cursor:pointer;box-shadow:0 1px 6px rgba(0,0,0,.45)!important;min-height:0!important}
.san-pmk span{position:absolute;top:30px;left:50%;transform:translateX(-50%);background:rgba(15,23,42,.82);color:#fff;font-size:10px;font-weight:700;padding:1px 5px;border-radius:5px;white-space:nowrap}
.san-mk{width:26px;height:26px;border-radius:50%;background:var(--c);border:3px solid #fff;box-shadow:0 1px 6px rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;font-size:12px;margin:1px}
.san-mk-l{position:absolute;left:50%;top:29px;transform:translateX(-50%);background:rgba(15,23,42,.82);color:#fff;font-size:10px;font-weight:700;padding:1px 5px;border-radius:5px;white-space:nowrap;pointer-events:none}
.san-mk.pulso,.san-pmk.pulso{animation:sanP 1.4s infinite}
@keyframes sanP{0%{box-shadow:0 0 0 0 rgba(220,38,38,.7)}70%{box-shadow:0 0 0 12px rgba(220,38,38,0)}100%{box-shadow:0 0 0 0 rgba(220,38,38,0)}}
.san-ley{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12px;color:#475569;margin-top:8px}.san-ley span{display:inline-flex;gap:5px;align-items:center}
.san-vivo{margin-left:auto;color:#16a34a;font-weight:700}.san-vivo.off{color:#94a3b8}
.san-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden;margin-bottom:12px}
.san-card-h{padding:11px 14px;font-weight:800;border-bottom:1px solid #eef0f3}
.san-lista{max-height:560px;overflow:auto}
.san-it{display:flex;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer}.san-it:hover{background:#f8fafc}
.san-it>div{flex:1;min-width:0}.san-it b{display:block;font-size:13.5px}.san-it small{display:block;font-size:12px;color:#64748b;margin-top:1px}.san-it>span{font-size:18px;color:#94a3b8}
.san-vacio{padding:22px;text-align:center;color:#64748b;font-size:13px}
.san-ov{position:fixed;inset:0;z-index:4400;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:12px}
.san-dlg{background:#fff;border-radius:16px;width:min(560px,100%);max-height:94vh;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.35);color:#0f172a}
.san-dh{display:flex;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid #eef0f3}.san-dh b{font-size:16px;display:block}.san-dh small{font-size:12.5px;color:#64748b}
.san-x{border:0;background:#f1f5f9;border-radius:10px;width:36px;height:36px;font-size:16px;cursor:pointer;min-height:0;flex:0 0 auto}
.san-db{overflow:auto;padding:14px 16px}.san-df{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid #eef0f3}
.san-df .san-btn.grande{flex:1;justify-content:center}
@media (max-width:600px){.san-ov{padding:0}.san-dlg{border-radius:0;max-height:100vh;height:100%}}
.san-sec{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin:12px 0 6px}
.san-chk{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.san-chk button{display:flex;align-items:center;gap:7px;text-align:left;border:1.5px solid #fecaca!important;background:#fef2f2!important;color:#991b1b!important;border-radius:10px!important;padding:10px!important;font:inherit;font-size:13px;font-weight:600;cursor:pointer;min-height:44px!important;box-shadow:none!important}
.san-chk button.on{border-color:#bbf7d0!important;background:#f0fdf4!important;color:#166534!important}
.san-chk .si,.san-chk .no{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:#fff;flex:0 0 auto}
.san-chk .si{background:#16a34a;display:none}.san-chk .no{background:#dc2626}
.san-chk button.on .si{display:inline-flex}.san-chk button.on .no{display:none}
@media (max-width:420px){.san-chk{grid-template-columns:1fr}}
.san-resumen{margin:12px 0 4px;padding:10px 12px;border-radius:10px;font-weight:800;font-size:14px}
.san-resumen.limpio{background:#dcfce7;color:#166534}.san-resumen.consumibles{background:#fef3c7;color:#92400e}.san-resumen.sucio{background:#fee2e2;color:#991b1b}
.san-f{display:block;margin-top:10px}.san-f span{display:block;font-size:12px;font-weight:700;color:#475569;margin-bottom:4px}
.san-f input,.san-f select,.san-f textarea{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:9px 10px;font:inherit;font-size:14px;background:#fff}
.san-g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.san-prev{max-width:100%;max-height:200px;border-radius:10px;margin-top:8px}
.san-gps{background:#f1f5f9;border-radius:10px;padding:8px 10px;font-size:13px}
.san-ayuda{font-size:12.5px;color:#64748b;margin:8px 0 0}
.san-meta{font-size:13px;color:#334155}
.san-hist>div{border-bottom:1px solid #f1f5f9;padding:8px 0;font-size:13px}.san-hist small{display:block;color:#64748b;font-size:12px;margin-top:2px}
.san-res{display:inline-block;border-radius:99px;padding:1px 8px;font-size:11.5px;font-weight:700;margin-right:6px;background:#f1f5f9}
.san-res.limpio{background:#dcfce7;color:#166534}.san-res.consumibles{background:#fef3c7;color:#92400e}.san-res.sucio{background:#fee2e2;color:#991b1b}
.san-scan{position:relative;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:3/4;max-height:56vh}.san-scan video{width:100%;height:100%;object-fit:cover}
.san-mira{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.85);border-radius:16px}
.san-tw{overflow:auto}.san-t{width:100%;border-collapse:collapse;font-size:13px}
.san-t th,.san-t td{padding:8px 10px;border-bottom:1px solid #f1f5f9;text-align:left;white-space:nowrap}.san-t th small{display:block;font-weight:500;color:#94a3b8}
.san-t td.san-c{text-align:center;font-weight:800}.san-c.ok{background:#dcfce7;color:#166534}.san-c.warn{background:#fef3c7;color:#92400e}.san-c.bad{background:#fee2e2;color:#991b1b}.san-c.cur{background:#e0f2fe;color:#075985}.san-c.fut{color:#cbd5e1}
.san-t tfoot td{font-weight:700;background:#f8fafc}.san-t tr.inactivo td{opacity:.5}
.san-cfg{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;padding:12px 14px;align-items:end}
.san-chkbox{display:flex;gap:8px;align-items:center;margin-top:12px;font-size:13px}
/* Recorridos (V33.24) */
.san-rec{display:flex;flex-direction:column;justify-content:center;gap:2px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:14px;padding:10px 14px;min-width:200px}
.san-rec b{color:#166534}.san-rec span{font-size:12.5px;color:#334155}.san-rec .san-btn{align-self:flex-start;margin-top:4px}
.san-tip{background:#1d4ed8!important;color:#fff!important;border:0!important;border-radius:8px!important;font-size:11.5px!important;padding:4px 7px!important;box-shadow:0 2px 8px rgba(0,0,0,.3)!important}
.san-tip::before{border-top-color:#1d4ed8!important}
.san-reccard .san-card-h{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.san-reccard .san-card-h small{color:#64748b;font-weight:600}
.san-recst{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;padding:10px 14px;border-bottom:1px solid #f1f5f9}
.san-recst small{display:block;font-size:10.5px;font-weight:800;text-transform:uppercase;color:#64748b;letter-spacing:.04em}.san-recst b{font-size:18px}
.san-tlw{padding:6px 14px 10px}
.san-tl{display:grid;grid-template-columns:78px 14px 1fr;gap:8px;align-items:center;padding:6px 0;border-bottom:1px dashed #eef0f3;font-size:13px}
.san-tl small{color:#64748b}
.san-tl-t{font-weight:800;color:#0e7490;text-align:right;font-size:12.5px}.san-tl-t.lento{color:#b91c1c}
.san-tl-d{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 3px #fff,0 0 0 4px #e5e7eb}
.san-mapa .leaflet-control-container .leaflet-top{z-index:1001}
.san-mapa .leaflet-tooltip.san-tip{pointer-events:none}
.san-aviso.amarillo{background:#fffbeb;color:#92400e;border:1px solid #fde68a;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.san-aviso .san-btn{vertical-align:middle}
.san-it small.san-sinub{color:#b45309;font-weight:600}
.san-it small.san-sinub a{color:#1d4ed8;text-decoration:underline}
.san-envivo{margin-top:8px;padding:8px 12px;border-radius:10px;background:#f1f5f9;color:#475569;font-size:12.5px;line-height:1.5}
.san-envivo.on{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}
.san-envivo small{color:#64748b}
.san-tip.rec{background:#dc2626!important}.san-tip.rec::before{border-top-color:#dc2626!important}
.san-tip.app{background:#475569!important}.san-tip.app::before{border-top-color:#475569!important}
/* V33.36 · NFC en el rondín */
.san-btn.san-nfc{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.san-nfc-ond{display:flex;justify-content:center;padding:18px 0 6px}
.san-nfc-ond span{width:96px;height:96px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:42px;background:#eff6ff;box-shadow:0 0 0 0 rgba(37,99,235,.45);animation:sanNfc 1.6s infinite}
@keyframes sanNfc{0%{box-shadow:0 0 0 0 rgba(37,99,235,.45)}70%{box-shadow:0 0 0 22px rgba(37,99,235,0)}100%{box-shadow:0 0 0 0 rgba(37,99,235,0)}}
.san-nfc-paso{text-align:center;display:grid;gap:4px;justify-items:center}
.san-nfc-cod{font-size:28px;font-weight:800;letter-spacing:.5px;color:#0f172a}
.san-nfc-ok{background:#dcfce7;color:#166534;border-radius:999px;padding:4px 12px;font-weight:700;font-size:13px;margin-bottom:6px}
.san-tkb{display:inline-block;font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:#f1f5f9;color:#475569;margin-left:4px;vertical-align:middle}.san-tkb.ab{background:#fee2e2;color:#b91c1c}
.san-mk-tk{position:absolute;top:-7px;right:-9px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#dc2626;color:#fff;font:700 10.5px/17px system-ui,sans-serif;text-align:center;box-shadow:0 0 0 2px #fff}

/* V33.61: checklist sin preseleccionar (Bien / Mal por punto) */
.san-chk3{display:flex;flex-direction:column;gap:6px}
.san-it{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center;border:1.5px solid #e2e8f0;background:#fff;border-radius:10px;padding:6px 6px 6px 10px;font-size:13px;font-weight:600;color:#334155}
.san-it.falta{border-color:#f59e0b;background:#fffbeb}
.san-it.ok{border-color:#bbf7d0;background:#f0fdf4}
.san-it.mal{border-color:#fecaca;background:#fef2f2}
.san-it button{border:1.5px solid #cbd5e1!important;background:#f8fafc!important;color:#475569!important;border-radius:8px!important;padding:8px 10px!important;font:inherit;font-size:12.5px;font-weight:700;min-height:40px!important;cursor:pointer;box-shadow:none!important;white-space:nowrap}
.san-it.ok .b-si{background:#16a34a!important;border-color:#16a34a!important;color:#fff!important}
.san-it.mal .b-no{background:#dc2626!important;border-color:#dc2626!important;color:#fff!important}
.san-resumen.pend{background:#f1f5f9;color:#475569}
.san-mt-aviso{margin-top:8px;padding:9px 11px;border-radius:10px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;font-size:13px}
/* V33.94 · foto por punto con "Mal" y varias fotos del baño */
.san-chk3 .san-it{flex-wrap:wrap}
.san-chk3 .san-itf{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:2px}
.san-chk3 .san-itf[hidden]{display:none}
.san-itf-b{display:inline-flex;align-items:center;gap:6px;border:1.5px dashed #dc2626;color:#b91c1c;background:#fef2f2;border-radius:10px;padding:8px 12px;font-weight:700;font-size:13px;cursor:pointer;min-height:40px}
.san-itf img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid #e2e8f0}
.san-it.falta-foto .san-itf-b{background:#fee2e2;border-style:solid;animation:sanParpadeo 1s 2}
@keyframes sanParpadeo{50%{background:#fecaca}}
.san-fotos{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.san-fth{position:relative}
.san-fth img{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid #e2e8f0;display:block}
.san-fth button{position:absolute;top:-6px;right:-6px;width:26px;height:26px;border-radius:50%;border:0;background:#0f172a;color:#fff;font-size:13px;cursor:pointer}
.san-chk3 .san-it>.san-it-t{font-size:13.5px;color:#1e293b;font-weight:600}
/* V33.95 · Tendencias */
.san-tend-f{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.san-tend-f select{min-height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:0 8px;font:inherit;font-size:13px;background:#fff}
.san-tend-chk{display:flex;gap:6px;align-items:center;font-size:13px}
.san-tend-k{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.san-tend-k>div{border:1px solid #e2e8f0;border-radius:12px;padding:10px 12px;background:#f8fafc;min-width:0}
.san-tend-k small{display:block;font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase}.san-tend-k b{display:block;font-size:22px;color:#0f172a;margin:2px 0;overflow-wrap:anywhere}.san-tend-k span{font-size:12px;color:#475569}
.san-tend-h{margin:16px 0 8px;font-size:14px;color:#0f172a}.san-tend-h a{font-size:12px;font-weight:500;color:#1d4ed8;margin-left:6px}
.san-tend-bars{display:flex;flex-direction:column;gap:6px}.san-tend-bar{display:grid;grid-template-columns:minmax(120px,1.3fr) 2fr 34px minmax(70px,auto);gap:8px;align-items:center;font-size:13px;cursor:pointer;padding:3px 4px;border-radius:8px}.san-tend-bar:hover{background:#f1f5f9}
.san-tend-bar>span small{display:block;font-size:11px;color:#94a3b8}.san-tend-bar>i{height:10px;background:#f1f5f9;border-radius:5px;overflow:hidden}.san-tend-bar em{display:block;height:100%;border-radius:5px;background:#0e7490}.san-tend-bar em.consumibles{background:#d97706}.san-tend-bar em.mantenimiento{background:#b91c1c}
.san-tend-bar>b{text-align:right}.san-tend-bar>small{font-size:11.5px;color:#64748b}
.san-tend-l{display:flex;flex-direction:column;gap:8px}.san-tend-r{display:grid;grid-template-columns:110px 1fr auto;gap:10px;align-items:start;border:1px solid #e2e8f0;border-radius:12px;padding:10px 12px;background:#fff}.san-tend-r.rep{border-left:4px solid #dc2626}
.san-tend-n b{display:block;font-size:15px}.san-tend-n span{font-size:12px;color:#64748b}.san-tend-d{min-width:0;font-size:13.5px}.san-tend-d small{display:block;font-size:12px;color:#475569;margin-top:3px}
.san-tend-c{color:#92400e!important;background:#fffbeb;border-radius:6px;padding:4px 6px}.san-tend-nt{font-style:italic}
.san-tend-tag{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:1px 7px;background:#f1f5f9;color:#475569;margin-left:4px}.san-tend-tag.mal{background:#fee2e2;color:#b91c1c}.san-tend-tag.bien{background:#dcfce7;color:#15803d}
.san-tend-b{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:560px){.san-tend-r{grid-template-columns:1fr}.san-tend-b{justify-content:flex-start}.san-tend-bar{grid-template-columns:1fr 34px;}.san-tend-bar>i{grid-column:1/-1;grid-row:2}.san-tend-bar>small{grid-column:1/-1}}
