:root{
  --verde:#1F4D2B; --verde2:#2E7D32; --verde-claro:#E8F3EA; --verde-borde:#cfe3d3;
  --tinta:#1d2421; --gris:#5f6b66; --gris2:#8a9590; --linea:#e3e8e5; --fondo:#f5f7f6; --blanco:#fff;
  --input:#fff8e1; --input-borde:#e8d9a8; --rojo:#9c0006; --rojo-claro:#fbe3e5; --amarillo:#fff3cd; --azul:#1565C0;
  --radio:8px; --sombra:0 1px 2px rgba(16,40,24,.06),0 2px 8px rgba(16,40,24,.05);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--tinta);background:var(--fondo)}
a{color:var(--verde2);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:20px;margin:0 0 4px;color:var(--verde)}
h2{font-size:15px;margin:22px 0 8px;color:var(--verde)}
.sub{color:var(--gris);font-size:13px;margin:0 0 16px}

/* layout */
.app{display:grid;grid-template-columns:232px 1fr;min-height:100vh}
.side{background:var(--verde);color:#dfeee2;padding:16px 10px;position:sticky;top:0;height:100vh;overflow:auto}
.marca{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:10px}
.marca .logo{width:34px;height:34px;border-radius:8px;background:#7cc36b;display:grid;place-items:center;color:var(--verde);font-weight:800}
.marca b{display:block;color:#fff;font-size:15px}
.marca small{color:#a9cbb0;font-size:11px}
.nav a{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:7px;color:#dfeee2;font-size:13.5px}
.nav a:hover{background:rgba(255,255,255,.08);text-decoration:none}
.nav a.activo{background:#fff;color:var(--verde);font-weight:600}
.nav .ic{width:18px;text-align:center;opacity:.85}
.nav .sep{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#9fc4a6;padding:14px 10px 4px}
.usuario{margin-top:18px;padding:10px;border-top:1px solid rgba(255,255,255,.12);font-size:12px;color:#bcd8c1}
.usuario b{color:#fff;display:block;font-size:13px}
.usuario .cargos{margin:4px 0 8px}
.usuario a{color:#fff;opacity:.85;margin-right:10px}
.usuario form{display:inline}
.usuario button{background:none;border:0;color:#fff;opacity:.85;padding:0;font:inherit;cursor:pointer}
.main{padding:22px 26px 60px;min-width:0}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:6px}

/* componentes */
.card{background:var(--blanco);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);padding:14px 16px}
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.kpi{background:var(--blanco);border:1px solid var(--linea);border-radius:var(--radio);padding:12px 14px;box-shadow:var(--sombra)}
.kpi small{display:block;color:var(--gris);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.kpi b{display:block;font-size:22px;color:var(--verde);margin-top:4px;font-variant-numeric:tabular-nums}
.kpi span{font-size:12px;color:var(--gris2)}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--verde2);background:var(--verde2);color:#fff;
  padding:7px 14px;border-radius:7px;font:600 13px system-ui,sans-serif;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--verde);text-decoration:none}
.btn.sec{background:#fff;color:var(--verde2)}
.btn.sec:hover{background:var(--verde-claro)}
.btn.chico{padding:4px 10px;font-size:12px}
.filtros{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0 14px}
.filtros label{font-size:12px;color:var(--gris);display:flex;flex-direction:column;gap:3px}
.filtros input,.filtros select{padding:6px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;background:#fff}
.tabs{display:flex;gap:4px;margin:6px 0 12px}
.tabs a{padding:6px 12px;border-radius:999px;background:#fff;border:1px solid var(--linea);color:var(--gris);font-size:13px}
.tabs a.on{background:var(--verde2);border-color:var(--verde2);color:#fff}
.msgs{list-style:none;padding:0;margin:0 0 12px}
.msgs li{padding:9px 12px;border-radius:7px;margin-bottom:6px;font-size:13px}
.msgs .success{background:var(--verde-claro);color:var(--verde)}
.msgs .error{background:var(--rojo-claro);color:var(--rojo)}
.msgs .warning{background:var(--amarillo);color:#7a5a00}
.msgs .info{background:#e8eef9;color:#1f3f7a}

/* tablas */
.tw{overflow:auto;background:#fff;border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra)}
table.t{border-collapse:collapse;width:100%;font-size:13px}
.t th{position:sticky;top:0;background:#f0f4f1;color:#3d4a44;text-align:left;font-weight:600;font-size:12px;padding:8px 9px;
  border-bottom:1px solid var(--linea);white-space:nowrap;z-index:1}
.t td{padding:6px 9px;border-bottom:1px solid #eef2ef;vertical-align:top}
.t tr:hover td{background:#fafcfb}
.t .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.t .c{text-align:center}
.t a[href*="/retiro/"],.t .nw{white-space:nowrap}
.t select.ed{min-width:120px}
.t tr.grupo td{border-top:2px solid var(--verde-borde)}
.t tr.tot td{background:var(--verde-claro);font-weight:700}
.t .muted{color:var(--gris2)}
.ed{border:1px solid var(--input-borde);background:var(--input);border-radius:5px;padding:4px 6px;font:inherit;width:100%;min-width:70px}
.ed:focus{outline:2px solid #9ccf9f;border-color:#7dbb82;background:#fff}
.ed-num{width:96px;text-align:right}
.ed-fecha{width:140px}
.ed.cambiado{background:#e9f7ea;border-color:#7dbb82}
.barra-guardar{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:#fff;border-top:1px solid var(--linea);padding:10px 14px;margin-top:10px;border-radius:0 0 var(--radio) var(--radio);box-shadow:0 -2px 8px rgba(0,0,0,.04)}
.barra-guardar .aviso{font-size:12.5px;color:var(--gris)}
.barra-guardar .aviso.pend{color:#9c5700;font-weight:600}

/* estados */
.b{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;background:#eef1ef;color:#3d4a44}
.st1{background:#fff3cd;color:#7a5a00}.st2{background:#dcebfa;color:#1f4f86}.st3{background:#d7f0f0;color:#0d5e5e}
.st4{background:#e3f2e1;color:#2e6b26}.st5{background:#ede3f7;color:#5b2d86}.st6{background:#e1e8f7;color:#2a4a8a}
.st7{background:#c8e6c9;color:#1b5e20}.stx{background:#e0e0e0;color:#555}.stf{background:#fbe3e5;color:var(--rojo)}
.alerta{color:var(--rojo);font-weight:700}
.ok{color:var(--verde2)}
.tag{display:inline-block;background:var(--verde-claro);color:var(--verde);border-radius:5px;padding:1px 6px;font-size:11.5px;margin:1px 2px 1px 0}
.tag.rojo{background:var(--rojo-claro);color:var(--rojo)}
.tag.amar{background:var(--amarillo);color:#7a5a00}

/* calendario */
.cal{border-collapse:separate;border-spacing:4px;width:100%;table-layout:fixed}
.cal th{font-size:12px;color:var(--gris);font-weight:600;padding:4px;text-align:left}
.cal th.dia{background:var(--verde);color:#fff;border-radius:6px;padding:6px 8px}
.cal th.dia small{display:block;font-weight:400;opacity:.8}
.cal td{vertical-align:top;border-radius:7px;padding:7px 8px;font-size:12px;height:86px;border:1px solid transparent}
.cal td.veh{background:#fff;border-color:var(--linea);font-weight:600;font-size:12.5px}
.cal td.veh small{display:block;font-weight:400;color:var(--gris)}
.cal td.libre{background:var(--verde-claro);color:var(--verde2)}
.cal td.medio{background:#dcebfa}.cal td.alto{background:#fff3cd}.cal td.lleno{background:#fbe3e5}
.cal .cnt{font-weight:700;font-size:11.5px;margin-bottom:3px;display:flex;justify-content:space-between}
.cal .r{display:block;color:var(--tinta);margin:2px 0;line-height:1.25}
.cal .r em{font-style:normal;color:var(--gris);font-size:11px}
.cal .mas{font-size:11px}
.cal .r.v-hecho{color:var(--verde)}.cal .r.v-hecho::before{content:""}
.cal .r.v-atrasado{color:var(--rojo)}
.cal .r.v-reagendar,.cal .r.v-fallido{color:#7a5a00;text-decoration:line-through}
.calmes td{height:110px}.calmes td.fuera{background:#f4f4f2;color:#bbb}.calmes td.hoy{border-color:var(--verde)}
.calmes .r{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* barras */
.barras{display:flex;align-items:flex-end;gap:8px;height:150px;padding:8px 4px 0;border-bottom:1px solid var(--linea)}
.barras .m{flex:1;display:flex;gap:2px;align-items:flex-end;height:100%}
.barras .m i{display:block;flex:1;border-radius:3px 3px 0 0;background:var(--verde2)}
.barras .m i.mg{background:#B7791F}
.ejes{display:flex;gap:8px;padding:4px}
.ejes span{flex:1;text-align:center;font-size:11px;color:var(--gris)}
.leyenda{font-size:12px;color:var(--gris);display:flex;gap:14px;margin-top:6px}
.leyenda i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}

/* formularios */
.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 14px}
.form-grid .f{display:flex;flex-direction:column;gap:3px}
.form-grid .f.w2{grid-column:span 2}.form-grid .f.w4{grid-column:span 4}
.form-grid label,.fs th{font-size:12px;color:var(--gris);font-weight:600}
.form-grid input,.form-grid select,.form-grid textarea,.fs input,.fs select{padding:7px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;background:#fff;width:100%}
.form-grid input[type=checkbox]{width:auto}
.errorlist{color:var(--rojo);font-size:12px;margin:2px 0;padding-left:16px}
.fs{width:100%;border-collapse:collapse}
.fs td,.fs th{padding:5px 6px;text-align:left}
.fs tr+tr td{border-top:1px solid #eef2ef}
.ayuda{font-size:12px;color:var(--gris);margin:6px 0}
.cupo{font-size:12.5px;margin-top:4px}

/* login */
.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#1F4D2B 0%,#2E7D32 60%,#5aa74a 100%)}
.login .card{width:min(380px,92vw);padding:28px}
.login h1{margin-bottom:2px}
.login label{display:block;font-size:12px;color:var(--gris);font-weight:600;margin:12px 0 4px}
.login input{width:100%;padding:9px 10px;border:1px solid #cfd8d3;border-radius:7px;font:inherit}
.login .btn{width:100%;justify-content:center;margin-top:18px;padding:10px}

/* ruta (impresión) */
.ruta-cab{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.parada{page-break-inside:avoid}
.res-lista{margin:0;padding-left:0;list-style:none}
.res-lista li{margin:2px 0}
.firma{height:34px}
@media print{
  .side,.no-print,.filtros,.msgs{display:none!important}
  .app{display:block}.main{padding:0}
  body{background:#fff;font-size:11px}
  .tw{box-shadow:none;border:0;overflow:visible}
  .t th{position:static}
  @page{size:letter landscape;margin:10mm}
}
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:static;height:auto}
  .g4,.g5,.g6{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g3,.g2{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr 1fr}
  .main{padding:16px}
}

/* módulos agrupados por área */
.area-mod{margin-bottom:10px}
.area-mod h3{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);margin:6px 0 6px;font-weight:700}
.nav .sep:first-of-type{padding-top:10px}
td.rojo{color:var(--rojo);font-weight:600}
.sug{font-size:11px;color:var(--muted,#667);display:block;margin-top:2px;white-space:nowrap}
table.fs td .precio{width:90px}
.val-ok{color:#1b7f3b;font-weight:600}.val-dif{color:var(--rojo);font-weight:600}.val-na{color:#8a6d00;font-weight:600}
.tag.verde{background:#e3f4e8;color:#1b7f3b}
table.val tr.ret{cursor:pointer}
table.val tr.ret:hover td{background:#f3f8f3}
table.val tr.ret.abierto td{background:#e8f3e9;font-weight:600}
table.val tr.ret .flecha::before{content:"▸";color:#2e7d32}
table.val tr.ret.abierto .flecha::before{content:"▾"}
table.val tr.cab th{background:#e8efe9;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
table.val tr.subtot td{background:#f4f6f4;font-weight:600;font-size:13px}
table.val tr.det>td{background:#fbfcfb;padding:12px 14px}
.det-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:18px}
.det-grid h3{margin:0 0 6px;font-size:15px}
table.mini{font-size:13px;width:100%}
table.mini tr.sec td{background:#eef3ee;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}
@media (max-width:900px){.det-grid{grid-template-columns:1fr}}
.barra-descarga{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.barra-descarga label{display:flex;flex-direction:column;font-size:12px;color:#556;gap:3px}
.barra-descarga select,.barra-descarga input{min-width:160px}
.desc-card{margin-bottom:18px}
.desc-card .cab{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:baseline;margin-bottom:8px}
.desc-card .acciones{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-top:10px}
.desc-card .acciones label{display:flex;flex-direction:column;font-size:12px;color:#556;gap:3px}
.correo-planta{margin-top:14px;border-top:1px dashed #c9d6ca;padding-top:12px}
.correo-planta h3{margin:0 0 8px;font-size:15px}
.correo-html{background:#fff;border:1px solid #d7e2d8;border-radius:8px;padding:14px 16px;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#17251a;max-height:520px;overflow:auto}
.correo-html img{display:block;max-width:100%;height:auto}

.marca{flex-direction:column;align-items:stretch;gap:6px;text-decoration:none}
.marca .marca-img{display:block;background:#fff;border-radius:10px;padding:8px 10px}
.marca .marca-img img{display:block;width:100%;height:auto}
.marca b{font-size:13px;letter-spacing:.08em}
.login-logo{text-align:center;margin-bottom:14px}
.login-logo img{display:block;width:220px;max-width:80%;height:auto;margin:0 auto 6px}
.login-logo b{color:var(--verde);letter-spacing:.1em;font-size:14px}
/* Programar retiro: pasos, tipo de servicio y otros servicios */
.paso{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--verde2);color:#fff;font-size:12px;margin-right:6px}
.opciones{display:flex;gap:8px;flex-wrap:wrap}
.opc{flex:1 1 200px;display:flex;gap:8px;align-items:flex-start;border:1px solid #cfd8d3;border-radius:8px;padding:8px 10px;cursor:pointer;background:#fff}
.opc input{width:auto!important;margin-top:3px}
.opc b{display:block;color:var(--tinta);font-size:13.5px}
.opc small{color:var(--gris);font-size:12px;font-weight:400}
.opc:has(input:checked){border-color:var(--verde2);background:var(--verde-claro);box-shadow:0 0 0 1px var(--verde2) inset}
.form-grid .f.w3{grid-column:span 3}
.fs input.corto{max-width:90px}
.fs td.c-env{white-space:nowrap}
.fs td.c-precio{white-space:nowrap}
.fs td.c-precio input{max-width:90px;display:inline-block}
.fs td.c-precio select{width:auto;display:inline-block;margin-left:4px}
.fs td.c-precio .sug{display:block}
.servicios .chk{display:flex;gap:8px;align-items:center;font-weight:600;cursor:pointer}
.servicios .chk input{width:auto}
.servicios tr:not(.on) td:not(:first-child) > *{opacity:.35}
.servicios tr.on td{background:var(--verde-claro)}
details.mas{margin-top:18px}
details.mas summary{cursor:pointer;font-weight:600;color:var(--verde)}
@media (max-width:800px){.form-grid .f.w3{grid-column:span 4}}
.fs select[name$="tipo_envase"]{min-width:120px}.fs select[name$="-planta"]{min-width:160px}
.punto{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.punto .n{flex:0 0 22px;height:22px;border-radius:50%;background:var(--verde-claro);color:var(--verde);display:grid;place-items:center;font-size:12px;font-weight:700}
.punto .quitar{flex:0 0 auto;border:1px solid #cfd8d3;background:#fff;border-radius:6px;width:30px;height:32px;cursor:pointer;color:var(--rojo);font-size:16px}
#puntos .btn{align-self:flex-start}
ol.puntos{margin:2px 0 0;padding-left:18px}
.btn.peligro{background:#fff;border-color:#d9a3a8;color:var(--rojo)}
.btn.peligro:hover{background:var(--rojo-claro)}
.eliminar-retiro{margin-top:18px;padding-top:14px;border-top:1px solid var(--linea)}
.tripulacion{margin:0 0 14px}
.tripulacion select{min-width:220px}
.ruta-veh{margin:0 0 18px}
.veh-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;background:var(--verde);color:#fff;border-radius:var(--radio) var(--radio) 0 0;padding:8px 14px}
.veh-cab h2{margin:0;color:#fff;font-size:16px}
.veh-cab span{font-size:13px;color:#dfeee2}.veh-cab b{color:#fff}
.ruta-veh .tw{border-top-left-radius:0;border-top-right-radius:0}
@media print{.ruta-veh{break-inside:avoid-page}.ruta-veh+.ruta-veh{break-before:page}.veh-cab{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.fs td.c-cant{white-space:nowrap}
.fs td.c-cant input{max-width:120px;display:inline-block}
.fs .u-est{margin-left:6px;color:var(--gris);font-size:12.5px}
.t input.orden{width:52px;padding:4px;border:1px solid var(--input-borde);background:var(--input);border-radius:5px;text-align:center;font-weight:700}
.solo-print{display:none}
.orden-pie{margin:6px 0 0}
@media print{.solo-print{display:inline}}
/* OT y archivos del retiro */
.c-ot{min-width:130px}.c-ot .ed{margin-bottom:6px}
.arch-cab{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:flex-end}
.arch-cab form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.arch-cab label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--gris)}
.arch-cab input[type=text],.arch-cab select{padding:7px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit}
.arch-cab .ayuda{flex-basis:100%}
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.arch{background:#fff;border:1px solid var(--linea);border-radius:var(--radio);overflow:hidden;box-shadow:var(--sombra)}
.arch img{display:block;width:100%;height:150px;object-fit:cover;background:#eef2ef}
.arch .pdf{display:grid;place-items:center;height:150px;background:var(--rojo-claro);color:var(--rojo);font-weight:800;font-size:26px}
.arch-pie{padding:8px 10px;display:flex;flex-direction:column;gap:4px;font-size:12.5px}
.arch-pie form{margin-top:4px}
.nav a.subitem{padding-left:28px;font-size:13px}
.nav a.subitem .ic{opacity:.7}
.nav a.padre{background:rgba(255,255,255,.12)}
.tabs.sub-cal{margin-bottom:12px}
.tot-res{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline;background:var(--verde-claro);border:1px solid var(--verde-borde);border-top:0;padding:8px 14px;font-size:13px;border-radius:0 0 var(--radio) var(--radio)}
.tot-res em{color:var(--gris);font-style:normal;font-size:12px}
.tot-dia{margin:6px 0 10px;max-width:640px}
@media print{.tot-res,.tot-dia{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}}
.t tr.nuevo-res td{background:#fafcfb;border-top:1px dashed var(--verde-borde)}
.t tr.nuevo-res .sel-nuevo{min-width:170px;color:var(--verde2)}
.val select.lp{display:block;margin-top:4px;max-width:230px;font-size:12px;padding:3px 4px}
.pdf-link{display:block;font-size:11.5px;margin-top:3px}
.maxxa-pend{margin:0 0 12px;font-size:13px}.maxxa-pend summary{cursor:pointer;color:#7a5a00;font-weight:600}.maxxa-pend ul{margin:6px 0 0 18px;padding:0}
/* Correo al cliente (Facturación) */
.correo-btns .btn{display:block;margin:2px 0;text-align:center}
.correo-cli textarea{font:inherit;padding:8px;border:1px solid #cfd8d3;border-radius:6px;width:100%}
.correo-cli label.adj{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #eef2ef;font-size:13.5px}
.correo-cli label.adj input{width:auto}
.acciones-correo{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
/* Valorización: una línea por residuo */
table.val-l tr.ini td{border-top:2px solid #d5e2da}
table.val-l .vm input{width:90px;margin-top:3px;font-size:12px}
table.val-l select.lp{display:block;max-width:190px;margin-top:3px;font-size:11.5px}
table.val-l a.aj{text-decoration:none}
.aj-ret{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;padding:6px 2px}
.aj-ret label{display:flex;flex-direction:column;gap:2px;font-size:12.5px}
button.x-res{float:right;border:0;background:none;color:#b3261e;cursor:pointer;font-size:13px;padding:0 2px 0 6px;line-height:1}
button.x-res:hover{color:#7f1d1d}
/* Ejecución: retirados en verde, pendientes en amarillo */
#tabla-ej tbody.ej-ok td{background:#e6f4ea}
#tabla-ej tbody.ej-pend td{background:#fff8dc}
#tabla-ej tbody.ret-ej{border-top:2px solid #fff}
/* Selector de módulo general: Gestión de retiros · Mantenimiento */
.sistemas{display:flex;gap:4px;margin:0 10px 12px;padding:3px;background:rgba(255,255,255,.08);border-radius:8px}
.sistemas a{flex:1;text-align:center;padding:7px 4px;border-radius:6px;color:rgba(255,255,255,.75);text-decoration:none;font-size:12.5px;font-weight:600;line-height:1.2}
.sistemas a.on{background:#fff;color:#1f4d2b}
.sistemas a:not(.on):hover{color:#fff;background:rgba(255,255,255,.1)}
/* Mantenimiento */
.flota{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.veh-card{border:1px solid #e3e8e4;border-radius:10px;background:#fff;padding:12px 14px;border-top:4px solid #9bc9a5}
.veh-card.rojo{border-top-color:#c62828}.veh-card.amar{border-top-color:#e0a800}.veh-card.verde{border-top-color:#2e7d32}
.veh-card h3{margin:0 0 2px;font-size:16px}.veh-card .km{display:flex;gap:8px;align-items:center;margin:6px 0 10px;font-size:13px}
.veh-card .km input{width:110px}
.veh-card table{width:100%;font-size:12.5px;border-collapse:collapse}.veh-card td{padding:3px 4px;border-bottom:1px solid #f0f3f1;vertical-align:middle}
.veh-card td input[type=date]{width:140px}
.est{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}
.est.Vencida,.est.Vencido,.est.Alta{background:#fde2e1;color:#8e1b14}.est.Por.vencer,.est.Media,.est.En.taller{background:#fff1c2;color:#6b4e00}
.est.OK,.est.Resuelta{background:#dcefe0;color:#1b5e20}.est.Sin.datos,.est.Baja,.est.Abierta{background:#eef1ef;color:#3d4a44}
.falla-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;align-items:end}
.falla-form .ancho{grid-column:1/-1}.falla-form textarea{width:100%;font:inherit;padding:8px;border:1px solid #cfd8d3;border-radius:6px}
/* Descarga: suma por residuo de lo seleccionado */
.suma-sel{display:flex;flex-wrap:wrap;gap:6px;flex-basis:100%;order:-1}
.suma-sel span{background:#e6f4ea;color:#1b5e20;border:1px solid #a8d5b5;border-radius:999px;padding:3px 10px;font-size:12.5px}
.suma-sel small{color:#4b6b52}
.subir-doc{cursor:pointer;font-size:13px;margin-left:2px;opacity:.7}.subir-doc:hover{opacity:1}.subir-doc input{display:none}
.pdf-doc{background:#fde7e4;color:#8e1b14;font-weight:600}
.ds-cel .btn{margin:1px 0}.ds-wa{background:#25d366;border-color:#25d366;color:#fff}.ds-wa:hover{background:#1ebe5a}
/* Usuarios y accesos */
table.acc th.mod{font-size:11.5px;font-weight:600;white-space:nowrap;padding:4px 6px}
table.acc th.sis{background:#eef3ee;font-size:12px}
table.acc td.c{padding:4px 6px}
table.acc input[type=checkbox]{width:16px;height:16px;cursor:pointer}
table.acc .sticky{position:sticky;left:0;background:#fff;z-index:1;min-width:190px}
table.acc tr.inactivo td{opacity:.55}
table.acc select.ed{min-width:120px;max-width:150px}
table.acc th.mod,table.acc td.c{padding:4px 4px}
/* Usuarios y accesos v2 */
.usr-grid{display:grid;grid-template-columns:280px 1fr;gap:14px;align-items:start}
@media (max-width:900px){.usr-grid{grid-template-columns:1fr}}
.usr-lista{padding:10px;max-height:78vh;overflow:auto}
.usr-lista input,.usr-lista select{width:100%;margin-bottom:6px;padding:7px 9px;border:1px solid #cfd8d3;border-radius:6px;font:inherit}
.usr-item{display:block;padding:8px 10px;border-radius:8px;text-decoration:none;color:inherit;border:1px solid transparent;margin-bottom:2px}
.usr-item:hover{background:#f3f7f4}.usr-item.on{background:#e6f4ea;border-color:#a8d5b5}
.usr-item b{display:block;font-size:14px}.usr-item small{display:block;color:#5f6f66;font-size:12px}
.usr-meta{font-size:11.5px;color:#2e7d32}.usr-item.inactivo{opacity:.55}
.usr-nuevo{margin-top:10px;border-top:1px solid #e3e8e4;padding-top:8px}.usr-nuevo summary{cursor:pointer;font-weight:600;color:#2e7d32}
.usr-panel{padding:16px 18px}
.usr-cab{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:1px solid #e3e8e4;padding-bottom:10px}
.usr-datos{display:flex;flex-direction:column;gap:4px;flex:1}
.usr-datos input{border:1px solid transparent;border-radius:6px;padding:4px 6px;font:inherit;background:transparent}
.usr-datos input:hover,.usr-datos input:focus{border-color:#cfd8d3;background:#fff}
.usr-nombre{font-size:20px;font-weight:700}.usr-correo{color:#3d4a44}
.usr-rapido{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 4px}
.usr-rapido select{padding:5px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;margin-left:4px}
.usr-estado{font-size:12.5px;font-weight:600}.usr-estado.ok{color:#2e7d32}.usr-estado.err{color:#b3261e}
.usr-sis{margin:16px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#5f6f66}
.usr-areas{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.usr-area{border:1px solid #e3e8e4;border-radius:10px;padding:8px 10px}
.usr-area h4{margin:0 0 4px;font-size:12px;color:#5f6f66;text-transform:uppercase;letter-spacing:.03em}
.sw{display:grid;grid-template-columns:40px 1fr;column-gap:8px;align-items:center;padding:6px 0;cursor:pointer}
.sw input{display:none}
.sw > span{grid-row:span 2;width:36px;height:20px;border-radius:999px;background:#cfd8d3;position:relative;transition:.15s}
.sw > span::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw input:checked + span{background:#2e7d32}.sw input:checked + span::after{left:18px}
.sw input:disabled + span{opacity:.5}
.sw b{font-size:13.5px}.sw small{font-size:11.5px;color:#5f6f66;grid-column:2}
.sw-grande{grid-template-columns:40px auto;font-weight:600}
.usr-clave{margin-top:14px;font-size:13px}.usr-clave summary{cursor:pointer;color:#5f6f66}
.usr-clave input{padding:5px 8px;border:1px solid #cfd8d3;border-radius:6px;margin-top:6px}
table.acc .si{color:#2e7d32;font-weight:700}
table.acc tbody tr{cursor:pointer}table.acc tbody tr:hover td{background:#f3f7f4}table.acc tr.sel td{background:#e6f4ea}
/* Usuarios: tabla OK / NO */
.ok-pill{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:50%;border:1px solid #f1b5b0;background:#fdecea;color:#c62828;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit;line-height:1}
.ok-pill.on{background:#dcefe0;border-color:#8fcb9d;color:#1b7a2e}
.ok-pill:hover{filter:brightness(.96)}.ok-pill.fija{cursor:default;opacity:.8}
table.acc2 th.mod{font-size:11.5px;white-space:nowrap;padding:6px 4px}
table.acc2 td{padding:5px 6px;vertical-align:middle}table.acc2 td.c{padding:5px 3px}
table.acc2 .sticky{position:sticky;left:0;background:#fff;z-index:1}
.cel-txt{border:1px solid transparent;background:transparent;border-radius:6px;padding:5px 7px;font:inherit;width:100%;min-width:150px}
.cel-txt:hover,.cel-txt:focus{border-color:#cfd8d3;background:#fff}.cel-txt.correo{min-width:200px;color:#3d4a44}
table.acc2 tr.inactivo .cel-txt,table.acc2 tr.inactivo .ok-pill[data-m]{opacity:.5}
.nuevo-inline{display:flex;gap:6px;flex-wrap:wrap;position:sticky;left:6px;max-width:1000px}.nuevo-inline input,.nuevo-inline select{padding:5px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit}
tr.fila-nueva td{background:#fafcfb}
table.acc2 th.area{background:#e6f4ea;color:#1b5e20;font-size:12.5px;font-weight:700;border-bottom:1px solid #cfe3d4}
table.acc2 th.mod{font-size:11px;font-weight:600;white-space:normal;line-height:1.2;max-width:84px;min-width:60px;vertical-align:bottom}
table.acc2 .grp-ini{border-left:2px solid #cfe3d4}
table.acc2 td.perfil b{display:block;font-size:13px}table.acc2 td.perfil small{display:block;font-size:11px;color:#5f6f66}
.cel-txt.persona{font-weight:600;min-width:210px}.cel-txt.persona::placeholder{color:#b08900;font-weight:500}
/* Calendario: sábado y domingo = no hábil (gris rayado); con retiro se ve normal + aviso */
.cal td.finde,.calmes td.finde{background:repeating-linear-gradient(135deg,#f1f3f2 0 8px,#e7eae8 8px 16px) !important;color:#8a948f}
.cal td.finde .mas{opacity:.7}.finde-txt{font-style:italic}
.cal td.finde.con{background:#dcebfa !important;color:inherit;box-shadow:inset 0 0 0 2px #e0a800}
.calmes td.finde.con{background:#dcebfa !important;color:inherit;box-shadow:inset 0 0 0 2px #e0a800}
.cal th.dia.finde,.calmes th.dia.finde{background:#8a948f !important;color:#fff !important}
.finde-tag{font-size:10.5px;font-weight:700;color:#8a5a00;margin-bottom:2px}
.cal td.finde-tot{color:#8a948f}
.cal th.dia.finde:last-child{min-width:90px}
/* Cotizaciones */
.grid.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:800px){.grid.g5{grid-template-columns:1fr 1fr}}
.tag.azul{background:#dcebfa;color:#1d5a99}
.nueva-cot{display:flex;gap:8px;align-items:center}.nueva-cot select{padding:7px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;max-width:260px}
.pasos-cot{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}
.pasos-cot form{display:inline-flex;gap:6px;align-items:center;margin:0}
.pasos-cot .paso{font-weight:600;color:var(--gris)}.pasos-cot .paso.hecho{color:#1b7f3b}
.pasos-cot .rechazo input{padding:5px 7px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;width:170px}
.lin-cot input,.lin-cot select{padding:6px 7px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;width:100%;background:#fff}
.lin-cot td.n input{text-align:right;max-width:120px}
.lin-cot input[type=checkbox]{width:auto}
.cot-pend{border-left:4px solid #1b7f3b;margin-bottom:10px}
.buscar-cot{padding:6px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;width:220px}
/* Nota de venta */
.pasos-nv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
@media (max-width:900px){.pasos-nv{grid-template-columns:1fr}}
.paso-nv{border-top:4px solid #d5dbd7}.paso-nv.activo{border-top-color:#1b7f3b}.paso-nv.hecho{border-top-color:#9cc9a8}
.paso-nv form{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.paso-nv input{padding:6px 8px;border:1px solid #cfd8d3;border-radius:6px;font:inherit}
.paso-nv p{margin:6px 0 0;font-size:12.5px}
.factura-drop{flex-direction:column}
.drop{display:block;border:2px dashed #9cc9a8;border-radius:8px;padding:14px;text-align:center;cursor:pointer;color:#1f4d2b;background:#f4faf6}
.drop.sobre{background:#e3f4e8;border-color:#1b7f3b}.drop input{display:none}
.fila-fact{display:flex;gap:6px;flex-wrap:wrap}.fila-fact input{flex:1;min-width:120px}
.ficha-cab{display:flex;flex-wrap:wrap;gap:10px 28px;margin-bottom:10px}.ficha-cab small{display:block;color:var(--gris);font-size:11.5px}
.cp{cursor:copy;text-decoration:underline dotted #9cc9a8;text-underline-offset:3px}.cp.copiado{background:#e3f4e8}
.btn.copiado{background:#e3f4e8}
.btn.rojo-sec{background:#fff;color:var(--rojo);border:1px solid var(--rojo)}
.pago-f{display:inline-flex;gap:6px;align-items:center;margin:0}.pago-f input[type=date]{padding:4px 6px;border:1px solid #cfd8d3;border-radius:6px;font:inherit}
/* Conciliación bancaria */
.sec-titulo{display:flex;align-items:center;gap:12px;margin:14px 0 6px}.sec-titulo h2{margin:0}
.conc-f{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0}.conc-f.otro{margin-top:6px}
.conc-f select,.conc-f input[type=text],.conc-f input:not([type]),.conc-f input[type=password],.conc-f input[type=file]{padding:5px 7px;border:1px solid #cfd8d3;border-radius:6px;font:inherit;max-width:280px}
.conc-f select.sugerida{border-color:#1b7f3b;background:#f4faf6}
.chk{display:inline-flex;gap:4px;align-items:center;font-size:12.5px}.chk input{width:auto}
.chico-t{font-size:12px}.t td.neg{color:var(--rojo)}
.pasos-ol{margin:6px 0 10px 18px;font-size:13px}.regla{display:flex;gap:8px;align-items:center;margin:4px 0}
/* Flujo de caja */
.t.flujo td.real,.t.flujo th.real{background:#f1f3f2}
.t.flujo td.actual,.t.flujo th.actual{background:#eef6f0;box-shadow:inset 1px 0 0 #1b7f3b,inset -1px 0 0 #1b7f3b}
.t.flujo tr.grupo td{font-weight:700;color:#1f4d2b;background:#fff;padding-top:10px}
.t.flujo tr.saldo td{font-weight:600}.t.flujo td.neg{color:var(--rojo)}
.t.flujo tr.neto td{border-top:2px solid #1f4d2b}
.aviso-flujo{border-left:4px solid #e0a800;margin-bottom:10px}
.barras-flujo{display:flex;gap:6px;align-items:flex-end;position:relative;padding-top:26px;margin-bottom:10px;overflow-x:auto}
.bf{flex:1;min-width:38px;text-align:center}.bf-area{height:72px;display:flex;align-items:flex-end;justify-content:center}
.bf-area span{display:block;width:70%;background:#9cc9a8;border-radius:4px 4px 0 0}.bf.real .bf-area span{background:#8a948f}
.bf.actual .bf-area span{background:#1b7f3b}.bf-area span.neg{background:var(--rojo)}
.bf small{font-size:10.5px;color:var(--gris)}.bf-tit{position:absolute;top:6px;left:14px;font-size:12px;font-weight:600;color:var(--gris)}
.t.flujo td:first-child{min-width:200px;white-space:nowrap}.vista-flujo{display:flex;gap:6px;margin:0 0 10px}
.mant-bloque{display:flex;flex-wrap:wrap;gap:6px;align-items:center;width:100%;margin-top:4px}.nueva-mant{display:inline-flex;gap:6px;flex-wrap:wrap;align-items:center}
.mant-bloque[hidden],.nueva-mant[hidden]{display:none}.conc-f select.sel-mant{max-width:520px}
.lin-cot td.desc-l input{max-width:70px}
.lin-cot td.marg-l.neg{color:var(--rojo)}.lin-cot select[name$=planta]{min-width:130px}
.lin-cot select[name$=unidad]{min-width:96px}
#tabla-residuos tr.borrada td{opacity:.45;text-decoration:line-through}#tabla-residuos tr.borrada td:last-child{opacity:1;text-decoration:none}.quitar-linea{border:1px solid #e3b4b4;background:#fff;color:var(--rojo);border-radius:6px;padding:3px 9px;cursor:pointer;font:inherit}
