/* SURPRISE TRÁFICO — estilos (desktop primero, responsive básico) */
:root{
  --verde:#3e6b39; --verde2:#4f8447; --verde-suave:#eaf3e7; --acento:#e8930c;
  --fondo:#f4f5f2; --panel:#fff; --linea:#e3e6e0; --texto:#22301f; --suave:#6b7566;
  --rojo:#c0392b; --rojo-bg:#fdeeec; --ok:#2e7d32; --azul:#1e5f8a;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--fondo);color:var(--texto);font-size:14.5px}
.cargando{padding:60px;text-align:center;color:var(--suave)}
button{cursor:pointer;border:1px solid var(--linea);background:#fff;border-radius:7px;padding:7px 13px;font-size:13.5px;font-family:inherit;color:var(--texto)}
button:hover{border-color:var(--verde2)}
button.primario{background:var(--verde);border-color:var(--verde);color:#fff}
button.primario:hover{background:var(--verde2)}
button.acento{background:var(--acento);border-color:var(--acento);color:#fff}
button.peligro{color:var(--rojo);border-color:#eac8c3}
button.chico{padding:4px 9px;font-size:12.5px}
button:disabled{opacity:.45;cursor:default}
input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--linea);border-radius:7px;font-size:14px;font-family:inherit;background:#fff;color:var(--texto)}
input:focus,select:focus,textarea:focus{outline:2px solid #bcd9b4;border-color:var(--verde2)}
label{display:block;font-size:12px;font-weight:600;color:var(--suave);margin:0 0 4px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--suave);padding:8px 10px;border-bottom:2px solid var(--linea)}
td{padding:8px 10px;border-bottom:1px solid var(--linea);vertical-align:middle}
tr:hover td{background:#fafbf8}

/* ---- Login ---- */
.login-fondo{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--verde) 0%,#2c4d28 100%)}
.login-caja{background:#fff;border-radius:14px;padding:36px 34px;width:360px;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.login-caja h1{font-size:22px;color:var(--verde);margin-bottom:2px}
.login-caja .sub{color:var(--suave);font-size:13px;margin-bottom:20px}
.login-caja .campo{margin-bottom:12px}
.login-error{background:var(--rojo-bg);color:var(--rojo);border-radius:7px;padding:8px 10px;font-size:13px;margin-bottom:10px}

/* ---- Layout ---- */
.top{position:sticky;top:0;z-index:30;background:var(--verde);color:#fff;display:flex;align-items:center;gap:14px;padding:10px 18px}
.top .marca{font-weight:700;font-size:17px;letter-spacing:.3px}
.top .marca span{opacity:.75;font-weight:400}
.top .marca .ver-tag{opacity:1;font-weight:700;font-size:11px;background:rgba(255,255,255,.2);padding:1px 7px;border-radius:20px;margin-left:4px;vertical-align:middle}
/* v48: modal usuario/rol — datos a la izquierda, PERMISOS como bloque propio a la derecha (con su scroll) */
.perm-2col{display:grid;grid-template-columns:minmax(290px,360px) 1fr;gap:0 24px;align-items:start}
.perm-panel{border-left:1px solid var(--linea);padding-left:20px;max-height:64vh;overflow-y:auto}
@media (max-width:900px){.perm-2col{grid-template-columns:1fr}.perm-panel{border-left:none;padding-left:0;max-height:none;border-top:1px solid var(--linea);padding-top:10px;margin-top:8px}}
.top .crece{flex:1}
.top .quien{font-size:13px;opacity:.9}
.top button{background:rgba(255,255,255,.12);border-color:transparent;color:#fff}
.cuerpo{display:flex;min-height:calc(100vh - 46px)}
nav.lateral{width:210px;flex:0 0 auto;background:#fff;border-right:1px solid var(--linea);padding:14px 0}
nav.lateral a{display:block;padding:9px 20px;color:var(--texto);text-decoration:none;font-size:14px;border-left:3px solid transparent}
nav.lateral a:hover{background:var(--verde-suave)}
nav.lateral a.activo{border-left-color:var(--verde);background:var(--verde-suave);font-weight:600}
nav.lateral .grupo{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--suave);padding:14px 20px 4px}
main.contenido{flex:1;padding:20px 24px;min-width:0}
h1.titulo{font-size:20px;margin-bottom:14px;font-weight:600}
.panel{background:var(--panel);border:1px solid var(--linea);border-radius:11px;padding:16px;margin-bottom:16px}
.barra{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.crece{flex:1}
.pill{display:inline-block;border-radius:20px;padding:2px 10px;font-size:11.5px;font-weight:600}
.muted{color:var(--suave)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.kpis{display:flex;gap:10px;flex-wrap:wrap}
.kpi{background:#fff;border:1px solid var(--linea);border-radius:10px;padding:10px 16px;min-width:110px}
.kpi .n{font-size:22px;font-weight:700;color:var(--verde)}
.kpi .l{font-size:11.5px;color:var(--suave)}
.rep-fila{display:flex;align-items:center;gap:10px;margin:5px 0;font-size:12.5px}
.rep-lbl{width:130px;min-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--texto)}
.rep-bar{flex:1;background:#eef2ef;border-radius:5px;overflow:hidden;height:16px}
.rep-bar>div{height:16px;border-radius:5px;min-width:2px;transition:width .3s}
.rep-val{min-width:150px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
/* Anular venta (v6): motivos seleccionables prolijos */
.anular-motivos{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.anular-op{display:flex;align-items:center;gap:8px;border:1.5px solid var(--linea);border-radius:9px;padding:8px 12px;cursor:pointer;font-size:13px}
.anular-op:hover{border-color:var(--rojo)}
.anular-op:has(input:checked){border-color:var(--rojo);background:var(--rojo-bg);font-weight:700}
.anular-op input{width:auto}
/* Pago (v6): selector de moneda segmentado, prolijo — el cliente mira esta pantalla */
.mon-seg{display:flex;gap:0;border:1.5px solid var(--linea);border-radius:9px;overflow:hidden;height:42px}
.mon-btn{border:none;background:#fff;padding:0 14px;font-size:13px;cursor:pointer;color:var(--suave);border-right:1px solid var(--linea)}
.mon-btn:last-child{border-right:none}
.mon-btn b{font-size:14px}
.mon-btn.on{background:var(--verde);color:#fff}
.mon-btn.on b{color:#fff}
/* Header v5: menú de usuario + chip de estado de caja */
.user-menu{position:relative}
.user-menu-btn{white-space:nowrap}
.user-menu-drop{display:none;position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--linea);border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.15);min-width:170px;z-index:60;overflow:hidden}
.user-menu.abierto .user-menu-drop{display:block}
.user-menu-drop a{display:block;padding:9px 14px;color:var(--texto);text-decoration:none;font-size:13px}
.user-menu-drop a:hover{background:var(--verde-suave)}
/* v25: chips del header — TODOS el mismo estilo base (.chip-h); solo cambia el color por estado */
.chip-h{font-size:12px;font-weight:700;padding:5px 11px;border-radius:14px;text-decoration:none;white-space:nowrap;border:1px solid transparent;cursor:pointer;font-family:inherit;line-height:1.3;margin-right:7px;display:inline-flex;align-items:center;gap:4px}
.chip-h:last-child{margin-right:0}
.chip-h.pend{background:#fdf3e2;color:#a06508;border-color:#e8c88f}
.chip-h.pend.ok{background:#e8f5e9;color:#2e7d32;border-color:#bfdcc1}
.chip-h.caja-ok{background:#e9f5e6;color:#2e7d32;border-color:#2e7d3255}
.chip-h.caja-vieja{background:#fdeeec;color:#c0392b;border-color:#e74c3c;font-weight:800}
.chip-h.caja-cerrada{background:#c0392b;color:#fff;border-color:#e74c3c;font-weight:800}
.chip-wrap{position:relative;display:inline-block}
.chip-drop{position:absolute;top:calc(100% + 6px);right:0;min-width:230px;background:#fff;border:1px solid var(--linea,#dde3e9);border-radius:10px;box-shadow:0 6px 22px rgba(16,40,64,.18);padding:5px;z-index:60;display:none}
.chip-wrap.abierto .chip-drop{display:block}
.chip-drop a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-radius:7px;text-decoration:none;color:var(--texto,#1f2a37);font-size:13px}
.chip-drop a:hover{background:#f4f6f8}
.chip-drop .pill-n{background:#a06508;color:#fff;border-radius:11px;font-size:11.5px;padding:1px 8px;font-weight:800}
.chip-drop .pill-n.ok{background:#2e7d32}
.chip-drop-ok{padding:8px 10px;color:#2e7d32;font-size:13px;font-weight:600}
/* compat: los .chip-caja viejos heredan el look nuevo por si queda alguna referencia */
.chip-caja{font-size:12px;font-weight:700;padding:5px 11px;border-radius:14px;text-decoration:none;white-space:nowrap}
/* Drag & drop de salidas (v7): verde = se puede, rojo = un pax no está disponible ese día */
.cal-col.drop-ok{background:#d9efd4!important;outline:2px dashed var(--ok);outline-offset:-2px}
.cal-col.drop-no{background:#fbe3e0!important;outline:2px dashed var(--rojo);outline-offset:-2px}
/* Sugeridor en vista semanal (v5) */
.sug-chip{background:#fff;border:1.5px solid var(--verde2);border-radius:9px;padding:6px 8px;margin-bottom:6px;font-size:11px}
.sug-chip-t{font-weight:800;font-size:11px;line-height:1.2;margin-bottom:2px}
.sug-chip-m{color:var(--suave);font-size:10.5px;line-height:1.4}
/* Check-list: últimos 14 días compacto junto al selector (v5) */
.chk-hist-fila{display:flex;gap:4px;overflow-x:auto;max-width:62vw;padding:2px}
.chk-hist.mini{min-width:44px;padding:3px 5px;border-radius:7px;cursor:pointer}
.chk-hist.mini .f{font-size:10px;font-weight:700}
.chk-hist.mini .n{font-size:10px}
.chk-hist.mini.sel{outline:2px solid var(--verde);outline-offset:1px}
/* Nueva salida (v5): secciones numeradas con aire — prioridades claras de un vistazo */
.svc-sec{border:1px solid var(--linea);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:#fff}
.svc-sec-t{font-weight:800;font-size:13px;color:var(--verde);margin-bottom:8px;letter-spacing:.2px}
/* Popup de adicionales (v5): tarjetas profesionales — el cliente mira esta pantalla */
.adic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;max-height:300px;overflow:auto;padding:2px}
.adic-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;border:1.5px solid var(--linea);border-radius:12px;cursor:pointer;text-align:center;transition:border-color .15s,box-shadow .15s,background .15s;background:#fff}
.adic-card:hover{border-color:var(--verde2);box-shadow:0 2px 8px rgba(62,107,57,.12)}
.adic-card.on{border-color:var(--verde);background:var(--verde-suave);box-shadow:0 2px 8px rgba(62,107,57,.18)}
.adic-card input[type=checkbox]{position:absolute;opacity:0;pointer-events:none}
.adic-ico{font-size:30px;line-height:1}
.adic-nom{font-weight:700;font-size:13.5px;line-height:1.25}
.adic-precio{font-size:13px;color:var(--verde);font-weight:700}
.adic-precio small{color:var(--suave);font-weight:400}
.adic-card select{font-size:11.5px;padding:3px 6px;max-width:100%}
.adic-card{position:relative}
.adic-card.top{border-color:var(--acento);box-shadow:0 2px 10px rgba(232,147,12,.22)}
.adic-top-badge{position:absolute;top:-9px;left:50%;transform:translateX(-50%);background:var(--acento);color:#fff;font-size:10px;font-weight:800;padding:1px 8px;border-radius:8px;white-space:nowrap}
.adic-foto{width:100%;height:74px;object-fit:cover;border-radius:8px}
.adic-desc{font-size:11px;color:var(--suave);line-height:1.35}
.adic-banner{margin-top:10px;border-radius:10px;padding:10px 14px;font-size:12.5px;line-height:1.5}
.adic-banner-verde{background:#e9f5e6;border:1px solid var(--verde)}
.adic-banner-azul{background:#eef6ff;border:1px solid #1e5f8a33}
.fila-anulada td{opacity:.55;text-decoration:line-through;text-decoration-color:var(--rojo)}
.fila-anulada td:last-child{text-decoration:none}
.badge-anulada{display:inline-block;background:var(--rojo-bg);color:var(--rojo);border:1px solid var(--rojo);border-radius:5px;padding:0 6px;font-size:10px;font-weight:700;letter-spacing:.5px;text-decoration:none;vertical-align:middle}

/* ---- Toggle segmentado (Mes/Semana · Ingreso/Egreso · Hoy/Todas) ---- */
.seg{display:inline-flex;border:1px solid var(--linea);border-radius:8px;overflow:hidden;flex:0 0 auto}
.seg button{border:none;border-radius:0;padding:6px 14px;background:#fff;font-size:13px}
.seg button + button{border-left:1px solid var(--linea)}
.seg button.on{background:var(--verde);color:#fff;font-weight:600}

/* ---- Calendario ---- */
.cal-cab{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.cal-cab h2{font-size:17px;min-width:190px;text-align:center;text-transform:capitalize}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-dow{font-size:11px;text-transform:uppercase;color:var(--suave);text-align:center;padding:4px 0;font-weight:600}
.cal-dia{background:#fff;border:1px solid var(--linea);border-radius:9px;min-height:128px;padding:5px 6px;cursor:pointer;overflow:hidden}
/* cinta de eventos / días especiales (arriba del día, no ocupan lugar de servicios) */
.cal-eventos{display:flex;flex-direction:column;gap:2px;margin:2px 0}
.cal-evento{font-size:10px;line-height:1.3;color:#fff;padding:1px 5px;border-radius:4px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cal-dia .chip{font-size:10.5px;padding:1px 5px}
/* chip semanal: interno del vehículo a la izquierda con una división, servicio a la derecha */
.chip-sem{display:flex;gap:5px;align-items:baseline}
.chip-veh{font-weight:700;flex:0 0 auto;border-right:1px solid rgba(255,255,255,.55);padding-right:5px;white-space:nowrap}
.chip-desc{overflow:hidden;text-overflow:ellipsis}
.cal-dia:hover{border-color:var(--verde2)}
.cal-dia .num{font-size:12px;font-weight:600;color:var(--suave)}
.cal-dia.otro-mes{opacity:.35}
.cal-dia.hoy{border:2px solid var(--verde)}
.cal-dia.selec{outline:3px solid #bcd9b4}
.chip{display:block;border-radius:5px;padding:1.5px 6px;font-size:11px;color:#fff;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* vista semanal: 8 columnas en una línea */
.cal-semana{display:grid;grid-template-columns:repeat(8,1fr);gap:5px}
.cal-col{background:#fff;border:1px solid var(--linea);border-radius:9px;min-height:360px;cursor:pointer;display:flex;flex-direction:column;overflow:hidden}
.cal-col:hover{border-color:var(--verde2)}
.cal-col.hoy{border:2px solid var(--verde)}
.cal-col.selec{outline:3px solid #bcd9b4}
.cal-col-head{font-size:12px;font-weight:600;text-align:center;padding:5px;border-bottom:1px solid var(--linea);text-transform:capitalize;background:#fafbf8}
.cal-col-body{padding:5px;display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1}
.cal-col-body .chip{white-space:normal;line-height:1.25}
.chip .h{opacity:.85;font-weight:600}
.mas{font-size:11px;color:var(--azul);margin-top:2px}

/* ---- Servicio en lista de día ---- */
.svc{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--linea);border-left-width:5px;border-radius:9px;padding:10px 12px;margin-bottom:8px;background:#fff}
.svc .hora{font-weight:700;font-size:15px;min-width:52px}
.svc .desc{font-weight:600}
.svc .meta{font-size:12.5px;color:var(--suave);margin-top:2px}
.est{border-radius:5px;padding:2px 8px;font-size:11px;font-weight:700}
.est.SinPlanificar{background:#fdeeec;color:var(--rojo)}
.est.Planificado{background:#fdf3e2;color:#a06508}
.est.EnProgreso{background:#e5f0f8;color:var(--azul)}
.est.Finalizado{background:#e9f5e6;color:var(--ok)}
.est.Cancelado{background:#eee;color:#666;text-decoration:line-through}
.adm.Cargado{background:#fdeeec;color:var(--rojo)}
.adm.Controlado{background:#e5f0f8;color:var(--azul)}
.adm.Pagado{background:#e9f5e6;color:var(--ok)}

/* ---- Modal ---- */
.modal-bg{position:fixed;inset:0;background:rgba(20,30,15,.45);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:36px 14px;overflow:auto}
.modal{background:#fff;border-radius:13px;padding:20px 22px;width:100%;max-width:760px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal h2{font-size:17px;color:var(--verde)}
.aviso{background:#fdf3e2;border:1px solid #f2d9a8;color:#7c5205;border-radius:8px;padding:8px 11px;font-size:13px;margin:8px 0}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);background:#243b1f;color:#fff;padding:10px 20px;border-radius:9px;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:200;max-width:90vw}
.toast.ver{opacity:1;transform:translateX(-50%) translateY(0)}
.sw{width:38px;height:21px;border-radius:21px;background:#cfd6cc;border:none;position:relative;flex:0 0 auto;padding:0}
.sw span{position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;transition:.18s}
.sw.on{background:var(--verde2)}
.sw.on span{left:19px}

/* ---- Nav desplegable (Configuración / Administrador) ---- */
nav.lateral details{border:none}
nav.lateral summary.grupo{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--suave);padding:14px 20px 4px;cursor:pointer;list-style:none;user-select:none}
nav.lateral summary.grupo::-webkit-details-marker{display:none}

/* ---- Combo buscador ---- */
.combo{position:relative}
.combo-lista{position:absolute;left:0;right:0;top:100%;background:#fff;border:1px solid var(--linea);border-radius:8px;box-shadow:0 8px 26px rgba(0,0,0,.14);z-index:60;max-height:230px;overflow:auto}
.combo-op{padding:7px 11px;cursor:pointer;font-size:13.5px}
.combo-op:hover{background:var(--verde-suave)}
.oculto{display:none}

/* ---- Pills de estado clickeables (estilo Notion) ---- */
.est-pill.clickeable{cursor:pointer}
.est-pill.clickeable:hover{filter:brightness(.94)}
.pill-menu{position:absolute;background:#fff;border:1px solid var(--linea);border-radius:9px;box-shadow:0 10px 30px rgba(0,0,0,.18);z-index:300;padding:5px;min-width:150px}
.pill-op{padding:5px 7px;border-radius:6px;cursor:pointer}
.pill-op:hover{background:var(--verde-suave)}
.pill-row{display:flex;gap:6px;flex-wrap:wrap}
.sel-estado{cursor:pointer}
.sel-estado.on{font-weight:800}

/* ---- Modal de servicio: layout con check-list al costado ---- */
.svc-layout{display:grid;grid-template-columns:1fr 250px;gap:16px;align-items:start}
.chk-panel{border:1px solid var(--linea);border-radius:10px;padding:12px;background:#fafbf8;position:sticky;top:8px}
.chk-panel h3{font-size:14px;color:var(--verde);margin-bottom:4px}
.chk-item{display:flex;align-items:center;gap:8px;padding:6px 4px;border-bottom:1px solid var(--linea);font-weight:400;font-size:13.5px;cursor:pointer;margin:0}
.chk-item input{width:auto;transform:scale(1.2)}
.chk-item input:checked + span{text-decoration:line-through;color:var(--suave)}
.cat-pick{background:var(--verde-suave);border:1px solid #cfe3c8;border-radius:9px;padding:10px 12px;margin-bottom:12px}
.resp-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:12px}
.resp-col label{margin-bottom:3px}
.resp-col .chico-inp{padding:4px 8px;font-size:12px;margin-bottom:5px}
.chips{display:flex;flex-wrap:wrap;gap:5px;border:1px solid var(--linea);border-radius:8px;padding:7px;max-height:130px;overflow:auto;background:#fff}
.chip-resp{display:flex;align-items:center;gap:4px;font-weight:400;font-size:12.5px;margin:0;border:1px solid var(--linea);border-radius:16px;padding:3px 9px;cursor:pointer}
.chip-resp input{width:auto}
.chip-resp.baja{background:var(--rojo-bg)}
.chip-resp.ocupado{opacity:.6;background:#f3f0ea}
.chip-resp.noapto{text-decoration:line-through;opacity:.6}
.chip-resp:has(input:checked){background:var(--verde-suave);border-color:var(--verde2)}

/* ---- Paleta de 15 colores ---- */
.paleta{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.swatch{width:30px;height:30px;border-radius:8px;cursor:pointer;display:inline-block;border:3px solid transparent}
.swatch.on{border-color:var(--texto);transform:scale(1.1)}

/* ---- Ventas / pagos ---- */
.pago-fila{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--linea);font-size:13px}
.acomp-card{border:1px solid var(--linea);border-radius:9px;padding:9px;margin-bottom:8px;background:#fafbf8}
.acomp-card input,.acomp-card select{padding:5px 7px;font-size:12.5px}

/* ---- Solicitud de excursión: formulario embebido + panel de pasajeros ---- */
.sol-layout{display:grid;grid-template-columns:1fr 280px;gap:16px;align-items:start}
.sol-bloque{background:#fafbf8;border:1px solid var(--linea);border-radius:9px;padding:11px 12px}
.chico-inp{padding:5px 8px;font-size:12.5px}
.pax-item{display:flex;gap:8px;align-items:center;padding:7px 3px;border-bottom:1px solid var(--linea)}
.pax-item:last-child{border-bottom:none}
.pax-num{width:24px;height:24px;border-radius:50%;background:#eef1ec;color:var(--suave);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:0 0 auto}
.pax-num.tit{background:var(--verde-suave);color:var(--verde)}
.pax-check{display:flex;gap:9px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--linea);font-weight:400;cursor:pointer}
.pax-check:last-child{border-bottom:none}
.pax-check input{width:auto;transform:scale(1.15)}

/* Manito: columnas del MISMO ancho en todas las excursiones (table-layout fijo).
   min-width + scroll horizontal evita que se compriman y se superpongan los encabezados. */
.sugerencia{background:#fff8e8;border:1px solid #f0dfae;border-radius:8px;padding:7px 11px;margin-bottom:8px;font-size:12.5px}
.sug-card{border:1px solid #f0dfae;border-radius:9px;padding:9px 11px;margin-bottom:8px;background:#fff8e8}
/* tira semanal compacta arriba de Manito */
.cal-semana-mini{min-width:820px}
.cal-semana-mini .cal-col{min-height:120px}
.cal-semana-mini .chip{font-size:10px}
.manito-scroll{overflow-x:auto}
/* v9/v12: clima chico en cada día (semana, sugerador y mes) + bloque de info del día en Calendario */
.col-clima{text-align:center;line-height:1.2;min-height:14px;cursor:help;white-space:nowrap;overflow:hidden;margin:1px 0}
.cal-dia .col-clima{display:inline;margin-left:4px}
/* chip visual del clima: ícono + máx grande / mín chica; viento y lluvia solo cuando importan */
.clima-chip{display:inline-flex;align-items:center;gap:3px;background:#eef5fb;border:1px solid #d5e5f2;color:#1e5f8a;border-radius:10px;padding:1px 7px;font-size:11px;line-height:1.5}
.clima-chip b{font-size:12px;font-weight:800}
.clima-chip .cmin{color:#7a9db8;font-size:10px}
.clima-chip .cviento{color:#c0392b;font-weight:700;font-size:10px}
.clima-chip .clluvia{color:#4457a7;font-weight:700;font-size:10px}
.clima-chip.ventoso{background:#fdf3f1;border-color:#eccfc9}
.clima-chip.mini{padding:0 5px;font-size:9.5px;gap:2px;border-radius:8px}
.clima-chip.mini b{font-size:10px}
.clima-chip.mini .cmin{font-size:8.5px}
.info-dia{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#f4f8f2;border:1px solid #dfe9da;border-radius:8px;padding:6px 10px;margin-bottom:10px;font-size:12.5px}
.info-dia .pill{font-size:11px}
.info-dia a{color:inherit}
/* v13.1: reservas de la página web — pill en la fila + banner de alerta en Manito */
.pill-web{background:#6a3d9a;color:#fff;font-size:9.5px;font-weight:800;letter-spacing:.3px}
.aviso-web{background:#f3ecfa;border:1.5px solid #c9a9e8;color:#4a2a6e;border-radius:9px;padding:8px 12px;margin-bottom:10px;font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.aviso-confirmar{background:#fdf6e8;border:1.5px solid #e8c88f;color:#7a5a1a;border-radius:9px;padding:8px 12px;margin-bottom:10px;font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.badge-confirmar{display:inline-flex;align-items:center;gap:5px;background:#fdf6e8;border:1.5px solid #e8c88f;color:#8a6410;border-radius:16px;padding:5px 13px;font-weight:700;font-size:12.5px;text-decoration:none;white-space:nowrap;transition:background .12s}
/* v20: panel de control administrativo */
.ctrl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.ctrl-card{display:block;background:#fff;border:1px solid var(--linea);border-radius:10px;padding:12px 14px;text-decoration:none;color:inherit;transition:box-shadow .12s,transform .08s}
.ctrl-card:hover{box-shadow:0 3px 10px rgba(0,0,0,.08);transform:translateY(-1px)}
.ctrl-n{font-size:30px;font-weight:800;line-height:1}
.ctrl-l{font-size:12.5px;font-weight:600;margin-top:3px}
.ctrl-sub{font-size:11px;color:var(--suave);margin-top:2px}
.badge-confirmar:hover{background:#f9edd3}
/* v11: steppers de bultos del reparto de equipajes */
.esp-bulto{flex:1;border:1.5px solid;border-radius:10px;padding:8px;text-align:center}
/* v12: stickers de equipaje (número grande = coincide con la lista de entregas) */
.stk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stk{border:2px solid #333;border-radius:10px;padding:8px 10px;page-break-inside:avoid;background:#fff}
.stk-num{font-size:30px;font-weight:900;line-height:1;color:#111}
.stk-tam{display:inline-block;color:#fff;font-weight:800;font-size:11px;border-radius:6px;padding:1px 8px;margin:3px 0}
.stk-cli{font-size:15px;font-weight:800}
.stk-dest{font-size:11.5px;line-height:1.3}
.stk-pie{font-size:9.5px;color:#555;margin-top:4px;border-top:1px dashed #999;padding-top:3px}
@media print{ .stk-grid{grid-template-columns:repeat(3,1fr)} .stk{border-color:#000} }
.manito-tabla{table-layout:fixed;width:100%;min-width:820px}
.manito-tabla th,.manito-tabla td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.manito-tabla th:nth-child(1),.manito-tabla td:nth-child(1){width:30px}
.manito-tabla th:nth-child(4),.manito-tabla td:nth-child(4),
.manito-tabla th:nth-child(5),.manito-tabla td:nth-child(5){width:92px}
.manito-tabla th:nth-child(6),.manito-tabla td:nth-child(6){width:60px}
.manito-tabla th:nth-child(7),.manito-tabla td:nth-child(7){width:210px}
/* Acciones: NUNCA truncar los botones (con 3 botones el ellipsis los convertía en "…" — bug v9) */
.manito-tabla th:nth-child(8),.manito-tabla td:nth-child(8){width:122px;overflow:visible;text-overflow:clip}
@media (max-width:900px){ .sol-layout{grid-template-columns:1fr} }

/* ---- Documentos imprimibles (voucher / contrato / orden) ---- */
.doc{font-size:13.5px;line-height:1.55;color:#111}
.doc p{margin:3px 0}
.doc-fila{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.doc-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #333;padding-bottom:4px;margin-bottom:8px;font-size:15px}
.doc-obs{font-size:11px;color:#444;margin:8px 0;line-height:1.4}
.doc-cond{font-size:10.5px;color:#333;line-height:1.35;columns:1}
.doc-cond p{margin:2px 0}
.doc table{font-size:12.5px}
.doc table th{border-bottom:1px solid #999;color:#333}
/* Orden de servicio + Lista de pasajeros: tablas con bordes tipo formulario */
.doc-tabla{border-collapse:collapse;width:100%}
.doc-tabla th,.doc-tabla td{border:1px solid #333;padding:3px 6px;font-size:11.5px;text-align:left;color:#000}
.doc-orden-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #333;padding-bottom:6px}
.doc-logo{font-size:26px;font-style:italic;font-weight:700;letter-spacing:1px}
.doc-caja-titulo{display:inline-block;border:1px solid #333;padding:4px 12px;font-weight:700;font-size:15px}
.doc-campos p{border-bottom:1px dotted #bbb;padding:2px 0;margin:0}
.doc-firmas{display:flex;justify-content:space-between;gap:20px;margin-top:38px;font-size:10.5px;text-align:center}
.doc-firmas div{flex:1}

/* ---- Impresión: SOLO el documento, en un área dedicada fuera de la app ---- */
/* El contenido a imprimir se COPIA a #areaImpresion (fuera de #app y del modal).
   En pantalla está oculto; al imprimir se oculta TODO menos esa área, así no
   quedan páginas en blanco por el alto de la app/modal (display:none sí colapsa). */
#areaImpresion{display:none}
@media print{
  body.imprimiendo > *{display:none!important}
  body.imprimiendo > #areaImpresion{display:block!important}
  /* Todo en blanco y negro, sin fondos: se ve pulido aunque el navegador imprima sin "gráficos de fondo" */
  #areaImpresion, #areaImpresion *{color:#000!important;background:transparent!important;box-shadow:none!important;text-shadow:none!important}
  #areaImpresion .doc{font-size:12px;line-height:1.4}
  /* Contrato (v6, Lucas): NO se aprieta en una página — letra legible y fluye a las páginas que haga falta */
  #areaImpresion .doc-cond{font-size:10.5px;line-height:1.35}
  #areaImpresion .doc-cond p{margin:3px 0;page-break-inside:avoid}
  #areaImpresion .doc p, #areaImpresion .doc-tabla tr{page-break-inside:avoid}
  #areaImpresion .doc-obs{font-size:9.5px;line-height:1.25}
  #areaImpresion .doc-tabla th,#areaImpresion .doc-tabla td{border-color:#000!important}
  @page{size:A4;margin:11mm}
}

@media (max-width: 900px){
  .svc-layout,.resp-cols{grid-template-columns:1fr}
  .chk-panel{position:static}
}
@media (max-width: 900px){
  .cuerpo{flex-direction:column}
  nav.lateral{width:100%;display:flex;overflow-x:auto;padding:0;border-right:none;border-bottom:1px solid var(--linea)}
  nav.lateral a{white-space:nowrap;border-left:none;border-bottom:3px solid transparent}
  nav.lateral a.activo{border-left:none;border-bottom-color:var(--verde)}
  nav.lateral .grupo{display:none}
  .grid2,.grid3{grid-template-columns:1fr}
  .cal-dia{min-height:64px}
}

/* Drag & drop del check-list de configuración */
.chk-row{cursor:default}
.chk-row .chk-handle{cursor:grab;user-select:none;color:#999;font-size:16px;padding:0 3px;line-height:1}
.chk-row .chk-handle:active{cursor:grabbing}
.chk-row.chk-over{outline:2px dashed var(--verde);outline-offset:-2px;background:#eef8ec}

/* Caja de solo-lectura (ej: cupo calculado del catálogo) */
.ro-box{padding:8px 10px;border:1px solid var(--linea);border-radius:8px;background:#f7f8f9;font-size:13px;min-height:20px}

/* Plan de salidas sugerido (sugeridor v2) */
.sug-salida{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--linea);border-radius:8px;margin-top:5px;font-size:12.5px;background:#fafbfa}
.sug-salida .sug-n{font-weight:800;color:var(--verde);min-width:22px;text-align:center}

/* Contador mensual del check-list diario (KAREN 12 ...) */
.chk-mes-chip{display:inline-block;background:var(--verde-suave);color:var(--verde);border:1px solid var(--verde);border-radius:7px;padding:3px 9px;font-size:11.5px;margin-left:6px;letter-spacing:.3px}
.chk-mes-chip b{font-size:13px}

/* Badge de tareas en el calendario */
.cal-tareas{float:right;font-size:10px;font-weight:700;padding:0 5px;border-radius:8px;cursor:pointer;line-height:16px}
.cal-tareas.pend{background:#fdeeec;color:#c0392b}
.cal-tareas.ok{background:#e9f5e6;color:#2e7d32}
/* Historial del check-list diario (últimos días) */
.chk-hist{min-width:52px;text-align:center;border:1px solid var(--linea);border-radius:8px;padding:5px 4px;cursor:pointer;font-size:11px}
.chk-hist .f{font-weight:700}
.chk-hist .n{font-size:10.5px;color:var(--suave)}
.chk-hist.ok{background:#e9f5e6;border-color:#bfe0b5}
.chk-hist.mal{background:#fdeeec;border-color:#eac8c3;color:#c0392b}
.chk-hist.hoy{background:#eef4fb;border-color:#c5d8ee}

/* Grilla de francos */
.fran-tabla th,.fran-tabla td{text-align:center;padding:6px 8px;border:1px solid var(--linea)}
.fran-tabla th:first-child,.fran-tabla td:first-child{text-align:left}
.fran-cel{cursor:default;font-size:12.5px}
.fran-cel.libre{color:#bbb}
.fran-cel.busy{background:#eef4fb}
.fran-cel.off{background:#e9f5e6;color:#2e7d32;font-weight:600;cursor:pointer}
.fran-cel.sug{background:#fff8e6;color:#a06508;cursor:pointer}
.fran-cel.sug:hover,.fran-cel.off:hover{outline:2px solid var(--verde);outline-offset:-2px}

/* Francos — vista mensual (columnas fijas, no se redimensionan al marcar) */
.fran-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--linea);border:1px solid var(--linea);border-radius:8px;overflow:hidden}
.fran-grid .cal-dow{background:#f4f6f5;text-align:center;font-size:11.5px;font-weight:700;color:var(--suave);padding:6px 0}
.fran-dia{background:#fff;min-height:82px;padding:4px;display:flex;flex-direction:column;gap:3px;cursor:pointer;overflow:hidden}
.fran-dia.otro-mes{background:#fafbfb;color:#bbb;cursor:default}
.fran-dia.hoy{box-shadow:inset 0 0 0 2px var(--verde)}
.fran-dia .num{font-size:11.5px;color:var(--suave);font-weight:600}
.fran-dia:not(.otro-mes):hover{background:#f6faf6}
.fran-chip{display:block;font-size:11px;padding:1px 5px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.fran-chip.off{background:#e9f5e6;color:#2e7d32;font-weight:600}
.fran-chip.sug{background:#fff8e6;color:#a06508}
.fran-chip:hover{outline:1.5px solid var(--verde);outline-offset:-1px}

/* ===== v23: módulo Contingencia ===== */
.nav-sep{border-top:1px solid #ffffff33;margin:14px 8px 6px}
.lateral a.nav-abajo{font-weight:700}
.ct-top{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ct-tabs{display:flex;gap:2px;overflow-x:auto;border-bottom:2px solid var(--linea);margin-bottom:14px}
.ct-tabs button{border:none;background:none;border-radius:0;border-bottom:3px solid transparent;padding:9px 12px;color:#5b6b7b;font-weight:600;white-space:nowrap;cursor:pointer}
.ct-tabs button:hover{background:#f4f6f8;color:var(--texto)}
.ct-tabs button.on{color:#0b3d62;border-bottom-color:#e08e0b}
.ct-badge{background:#c0392b;color:#fff;border-radius:10px;font-size:11px;padding:1px 6px;margin-left:5px}
.ct-seg{display:inline-flex;border:1px solid var(--linea);border-radius:9px;overflow:hidden}
.ct-seg button{border:none;border-radius:0;border-right:1px solid var(--linea);background:#fff;padding:7px 11px;cursor:pointer;font-size:13px}
.ct-seg button:last-child{border-right:none}
.ct-seg button.on{background:#0b3d62;color:#fff}
.ct-grupos{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:13px}
.ct-grupo{border:1px solid var(--linea);border-radius:12px;background:#fff;box-shadow:0 1px 3px rgba(16,40,64,.08);border-left:5px solid #6b7280;overflow:hidden}
.ct-grupo.e-pendiente{border-left-color:#b34700}
.ct-grupo.e-mihotel{border-left-color:#1d8a4e}
.ct-grupo.e-externo{border-left-color:#1f6feb}
.ct-grupo .cab{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:11px 13px 8px}
.ct-grupo .pnr{font-weight:700;font-size:13px;letter-spacing:.3px;color:#0b3d62}
.ct-grupo .cuerpo{display:block;padding:0 13px 11px}
.ct-grupo .integrantes{margin:2px 0 8px;padding:0;list-style:none}
.ct-grupo .integrantes li{padding:3px 0;border-bottom:1px dashed #eef1f4;display:flex;justify-content:space-between;gap:6px;font-size:14px}
.ct-grupo .integrantes li .doc{color:#5b6b7b;font-size:12px;white-space:nowrap}
.ct-grupo .meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:#5b6b7b;margin:4px 0 8px}
.ct-grupo .meta b{color:var(--texto);font-weight:600}
.ct-grupo .aloja{font-size:13px;padding:7px 9px;border-radius:8px;background:#f7f9fb;margin-bottom:8px}
.ct-grupo .aloja .donde{font-weight:700}
.ct-acc{display:flex;gap:6px;flex-wrap:wrap}
.ct-asignador{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.ct-asignador select{flex:1;min-width:120px}
.ct-capgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.ct-capbar{height:7px;border-radius:5px;background:#eef1f4;overflow:hidden;margin-top:5px}
.ct-capbar>span{display:block;height:100%}
.ct-dropzone{border:2px dashed #b9c6d2;border-radius:12px;padding:30px;text-align:center;color:#5b6b7b;background:#fbfdff;cursor:pointer}
.ct-dropzone.drag{background:#eef6ff;border-color:#125a8a;color:#0b3d62}
.ct-card{border:1px solid var(--linea);border-radius:12px;padding:13px;background:#fff;box-shadow:0 1px 3px rgba(16,40,64,.08)}
.ct-card.propio{border-left:5px solid #1d8a4e}
.ct-sw{width:42px;height:24px;border-radius:14px;background:#cdd5dd;border:none;position:relative;cursor:pointer;flex:0 0 auto;padding:0;transition:.15s;margin-top:2px}
.ct-sw.on{background:#1d8a4e}
.ct-sw span{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.ct-sw.on span{left:21px}
details.ct-flagbox{background:#fdecea;border:1px solid #f0c4be;border-radius:10px;padding:8px 12px;margin-bottom:8px}
details.ct-flagbox summary{cursor:pointer;font-weight:600;color:#c0392b}
details.ct-flagbox ul{margin:8px 0 0;padding-left:18px;font-size:13px;color:#7a2018}

/* ===== v24 ===== */
.nav-toggle{background:none;border:none;color:#fff;font-size:19px;padding:4px 8px;border-radius:8px;opacity:.85;cursor:pointer}
.nav-toggle:hover{background:#ffffff22;opacity:1}
.cuerpo.nav-off .lateral{display:none}
.cuerpo .lateral{display:flex;flex-direction:column}
.lateral a.nav-abajo{margin-top:auto;position:sticky;bottom:0;background:inherit;border-top:1px solid #ffffff22;padding-top:10px;padding-bottom:10px}
.ct-sub{display:inline-flex;border:1px solid var(--linea);border-radius:9px;overflow:hidden;margin-bottom:12px}
.ct-sub button{border:none;border-radius:0;border-right:1px solid var(--linea);background:#fff;padding:8px 14px;cursor:pointer;font-size:13.5px;font-weight:600;color:#5b6b7b}
.ct-sub button:last-child{border-right:none}
.ct-sub button.on{background:#0b3d62;color:#fff}
.ct-ciudad-pill{background:#eef6ff;color:#125a8a;border:1px solid #bcd4ec;border-radius:20px;padding:2px 10px;font-size:12px;font-weight:700}

/* ===== v26: tira de contingencias abiertas ===== */
.ct-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.ct-strip-card{border:1px solid var(--linea,#dde3e9);background:#fff;border-radius:10px;padding:7px 12px;cursor:pointer;font-size:12.5px;text-align:left}
.ct-strip-card:hover{background:#f4f6f8}
.ct-strip-card.act{border-color:#6a3d9a;background:#f9f5fd;box-shadow:0 0 0 1px #6a3d9a55}

/* ===== v29: picker compacto de aeropuertos + chips de flota ===== */
.ct-aeropick{position:relative}
.ct-aerosel{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}
.ct-aerosel:empty{display:none}
.ct-aerosel .pill-aero{display:inline-flex;align-items:center;gap:5px;background:#eef6ff;color:#125a8a;border:1px solid #bcd4ec;border-radius:16px;padding:2px 5px 2px 10px;font-size:12px;font-weight:700}
.ct-aerosel .pill-aero button{border:none;background:none;color:#125a8a;cursor:pointer;font-size:13px;padding:0 4px;line-height:1;border-radius:50%}
.ct-aerosel .pill-aero button:hover{background:#d5e7f7}
.ct-aerosug{position:absolute;z-index:60;left:0;right:0;background:#fff;border:1px solid var(--linea,#dde3e9);border-radius:10px;box-shadow:0 8px 22px rgba(16,40,64,.18);max-height:240px;overflow:auto;margin-top:3px}
.ct-aerosug-op{display:block;width:100%;text-align:left;border:none;background:none;padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f3f6}
.ct-aerosug-op:last-child{border-bottom:none}
.ct-aerosug-op:hover{background:#eef6ff}
.ct-veh-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--linea,#dde3e9);border-radius:18px;padding:4px 12px;font-size:12.5px;background:#fff;cursor:pointer;font-weight:600;color:#5b6b7b}
.ct-veh-chip.on{background:#e7f6ee;border-color:#8fd4ac;color:#1d8a4e}
.ct-veh-chip:hover{border-color:#0b3d62}

/* ===== v30: colores de situación por grupo (Lucas: rojo sin hotel · azul falta info del apto · amarillo ambas) ===== */
.ct-grupo.ct-g-rojo{border-left-color:#c0392b!important;background:#fdf6f5}
.ct-grupo.ct-g-azul{border-left-color:#1f6feb!important;background:#f5f9fe}
.ct-grupo.ct-g-amarillo{border-left-color:#e8b60c!important;background:#fdfaef}

/* v30: mini-KPIs del header de contingencia — verde bien / rojo atender / blanco info */
.ct-kpis-head{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 2px}
.ct-kh{display:flex;flex-direction:column;align-items:center;gap:0;border:1px solid var(--linea,#dde3e9);background:#fff;border-radius:10px;padding:5px 13px;cursor:pointer;min-width:64px}
.ct-kh b{font-size:17px;line-height:1.15;color:#0b3d62}
.ct-kh span{font-size:10.5px;color:#5b6b7b;white-space:nowrap}
.ct-kh.bien{background:#f0f8f2;border-color:#cde8d5}
.ct-kh.bien b{color:#1d8a4e}
.ct-kh.mal{background:#fdf0ee;border-color:#f0c4be}
.ct-kh.mal b{color:#c0392b}
.ct-kh.mal span{color:#c0392b}

/* v30: modal Ampliar (lupa) — la tarjeta ocupa todo el ancho del modal, sin grid */
.ct-bloque-modal{display:block}
.ct-bloque-modal .ct-grupo{width:100%;max-width:none}

/* ===== v30: RESPONSIVE — todo el sistema usable en teléfono/tablet (decisión Lucas) ===== */
@media (max-width: 900px){
  .cuerpo{flex-direction:column}
  .cuerpo .lateral{flex-direction:row;flex-wrap:wrap;gap:2px;width:100%;max-width:none;position:static;padding:6px 8px;overflow-x:auto}
  .cuerpo .lateral a{padding:8px 10px;font-size:13px;white-space:nowrap}
  .cuerpo .lateral details{display:contents}
  .cuerpo .lateral summary.grupo{padding:8px 6px;font-size:12px}
  .lateral a.nav-abajo{margin-top:0;position:static;border-top:none;padding-top:8px;padding-bottom:8px}
  .nav-sep{display:none}
  .contenido{padding:12px 10px}
  .grid2{grid-template-columns:1fr!important}
  .grid2>div[style*="grid-column"]{grid-column:auto!important}
  .kpis{gap:7px}
  .kpi{padding:8px 12px;min-width:calc(50% - 8px)}
  table{font-size:12.5px}
  th,td{padding:6px 6px}
  .panel{padding:12px 12px}
  .barra{gap:6px}
  .barra input,.barra select{min-width:0!important}
  .modal{max-width:96vw!important}
  .ct-grupos{grid-template-columns:1fr}
  .ct-top{flex-direction:column;align-items:stretch}
  .ct-tabs{overflow-x:auto;flex-wrap:nowrap}
  .ct-tabs button{white-space:nowrap}
  .ct-sub{overflow-x:auto;max-width:100%}
  .ct-kpis-head{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .top .marca span{display:none}
  .chip-h{font-size:11.5px;padding:5px 8px}
  input,select,textarea,button{font-size:16px}  /* evita el auto-zoom de iOS al enfocar */
  button.chico{font-size:13px}
}
@media (max-width: 560px){
  .top{flex-wrap:wrap;row-gap:4px;padding:6px 8px}
  .user-menu-btn{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  h1.titulo{font-size:19px}
  .kpi{min-width:calc(50% - 8px)}
  /* tablas anchas: scroll horizontal dentro del panel, la página no se desborda */
  .panel{overflow-x:auto}
}

/* ===== v31 ===== */
/* tarjeta HOY del calendario (rediseño Lucas) */
.hoy-card{background:#fff;border:1px solid var(--linea,#dde3e9);border-left:5px solid #2e5d33;border-radius:12px;padding:10px 14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(16,40,64,.07)}
.hoy-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.hoy-fecha{display:flex;flex-direction:column;line-height:1.1}
.hoy-fecha b{font-size:15px;color:#2e5d33;letter-spacing:.5px}
.hoy-fecha span{font-size:11px;color:#5b6b7b}
.hoy-resumen{font-size:14px}
.hoy-fila{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.hoy-pill{border:none;border-radius:9px;padding:5px 11px;font-size:12.5px;cursor:pointer;font-weight:600}
.hoy-pill.svc{background:#eef6ff;color:#0b3d62;border:1px solid #cfe2f3}
.hoy-pill.svc:hover{background:#ddecfb}
.hoy-pill.svc span{font-weight:400;color:#5b6b7b}
.hoy-pill.aviso{background:color-mix(in srgb, var(--c) 12%, #fff);color:var(--c);border:1px solid color-mix(in srgb, var(--c) 35%, #fff)}
/* eventos del calendario: pill con puntito, más liviana que el bloque macizo */
.cal-evento{display:flex;align-items:center;gap:5px;background:color-mix(in srgb, var(--c, #8e24aa) 12%, #fff);color:color-mix(in srgb, var(--c, #8e24aa) 80%, #000);border-left:3px solid var(--c, #8e24aa);border-radius:6px;padding:2px 7px;font-size:11px;font-weight:600;margin:2px 0;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-evento .pto{width:6px;height:6px;border-radius:50%;background:var(--c, #8e24aa);flex:0 0 auto}
/* semana de Manito expandida */
.manito-sem-exp .cal-semana-mini .cal-col{min-height:300px}
.manito-sem-exp .cal-semana-mini .chip-sem{font-size:13px;padding:7px 9px}
.manito-sem-exp .cal-semana-mini .chip-sem .chip-desc{white-space:normal}
.manito-sem-exp .cal-semana-mini .cal-col-head{font-size:14px}
/* KPIs de contingencia ahora conviven en el header (más compactos) */
.ct-top .ct-kpis-head{margin:0;align-self:center}
.ct-top .ct-kh{padding:3px 10px;min-width:56px}
.ct-top .ct-kh b{font-size:15px}
.ct-top .ct-kh span{font-size:10px}

/* ===== v32: pulido ===== */
/* bloques de contingencia COMPACTOS (Lucas: era imposible ver la info) */
.ct-grupos{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:9px}
.ct-grupo .cab{padding:7px 10px 4px}
.ct-grupo .pnr{font-size:12px}
.ct-grupo .cuerpo{padding:0 10px 8px}
.ct-grupo .integrantes{margin:1px 0 5px}
.ct-grupo .integrantes li{padding:1.5px 0;font-size:12.5px}
.ct-grupo .integrantes li .doc{font-size:11px}
.ct-grupo .meta{font-size:11.5px;gap:3px 10px;margin:2px 0 5px}
.ct-grupo .aloja{font-size:12px;padding:4px 7px;margin-bottom:5px}
.ct-grupo .pill{font-size:10.5px;padding:2px 8px}
.ct-asignador select{font-size:12px;padding:4px 6px}
.ct-asignador{gap:4px;margin-bottom:4px}
.ct-acc{gap:3px}
.ct-acc .chico{font-size:11px;padding:3px 6px}
details.ct-flagbox{padding:4px 9px;margin-bottom:5px}
details.ct-flagbox summary{font-size:11.5px}
details.ct-flagbox ul{font-size:12px;margin-top:4px}
/* header de contingencia en dos líneas: título+KPIs / tabs+acciones */
.ct-tabs-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--linea);margin-bottom:14px}
.ct-tabs-row .ct-tabs{border-bottom:none;margin-bottom:0}
.ct-acciones{display:flex;gap:5px;flex-wrap:wrap;align-items:center;padding-bottom:6px}
/* chips de capacidad de hotel */
.ct-capchip{display:inline-block;border:1px solid #cde8d5;background:#f0f8f2;color:#1d6b3f;border-radius:8px;padding:2px 9px;font-size:11.5px}
.ct-capchip.parcial{border-color:#f0dcb0;background:#fdf7e8;color:#a06508}
.ct-capchip.lleno{border-color:#f0c4be;background:#fdf0ee;color:#c0392b}
/* semáforo de caminos integrado en HOY */
.cam-mini{border:1px solid var(--linea,#dde3e9);background:#fff;border-radius:9px;padding:5px 11px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-weight:600;color:#3a4652}
.cam-mini:hover{border-color:#0b3d62}
.cam-mini.alerta{border-color:#f0c4be;background:#fdf8f7}
.cam-mini .sep{color:#c8ced5}
.cam-mini .mas{color:#1f6feb;font-weight:400;font-size:11px}
.cam-chip{display:inline-flex;align-items:center;gap:3px}
.cam-chip .pto{width:8px;height:8px;border-radius:50%;display:inline-block}

/* ===== v34 ===== */
/* tareas kanban */
.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.kanban-col{background:#f4f6f8;border:1px solid var(--linea,#dde3e9);border-radius:12px;padding:9px;min-height:180px;transition:background .12s}
.kanban-col.drop{background:#e7f0fd;border-color:#1f6feb}
.kanban-head{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 8px;border-bottom:3px solid;margin-bottom:8px;font-size:13.5px}
.kanban-card{background:#fff;border:1px solid var(--linea,#dde3e9);border-radius:10px;padding:8px 10px;margin-bottom:7px;cursor:grab;box-shadow:0 1px 2px rgba(16,40,64,.07)}
.kanban-card:hover{border-color:#0b3d62}
.kanban-card:active{cursor:grabbing}
@media (max-width:900px){.kanban{grid-template-columns:1fr}}

/* ===== v35: Creador DUT ===== */
.dut-tabla{border-collapse:collapse;font-size:12px;width:100%}
.dut-tabla th{background:#eef1f4;border:1px solid #d3d9de;padding:4px 6px;text-align:left;font-size:11px;white-space:nowrap}
.dut-tabla td{border:1px solid #e3e8ee;padding:2px 4px;vertical-align:middle}
.dut-tabla input,.dut-tabla select{padding:3px 5px;font-size:12px}

/* ===== v36: voucher por excursión ===== */
.voucher-uno{page-break-inside:avoid;margin-bottom:6px}
.voucher-sep{border-top:2px dashed #b0b0b0;margin:16px 0}
@media print{ .voucher-sep{border:none;margin:0;page-break-after:always} }

/* ===== v37: arrastre por puntero (Manito / sugeridor) ===== */
.arr-item{touch-action:none}                 /* en tablet: el chip arrastra, no scrollea */
.arr-ghost{position:fixed;z-index:9999;pointer-events:none;transform:translate(-50%,-150%);background:#0b3d62;color:#fff;font-size:12px;font-weight:600;padding:4px 11px;border-radius:8px;box-shadow:0 8px 22px rgba(0,0,0,.35);white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}
body.arrastrando{cursor:grabbing;user-select:none}
body.arrastrando .cal-col-body{overflow:hidden}   /* evita que el scroll del día pelee con el arrastre */
