:root{
  --met:#123a5a;
  --met-dark:#0b2941;
  --met-blue:#2563eb;
  --bg:#f3f6fa;
  --line:#e5eaf0;
  --text:#17212b;
  --muted:#6b7785;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--text);min-height:100vh}
a{text-decoration:none}
.met-nav{background:linear-gradient(135deg,var(--met-dark),#174f78)}
.nav-logo{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#fff;color:var(--met);font-size:.95rem}
.btn-nav{color:rgba(255,255,255,.86);border:1px solid rgba(255,255,255,.14)}
.btn-nav:hover{color:#fff;background:rgba(255,255,255,.1)}
.met-login-bg{background:radial-gradient(circle at top,#dcecff 0,#eef4fa 38%,#f7f9fc 100%)}
.met-card{border-radius:22px;overflow:hidden}
.met-logo{width:78px;height:78px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(135deg,#102f4d,#2878b8);color:#fff;font-weight:800;font-size:1.55rem;letter-spacing:.08em}
.worker-shell{max-width:980px}
.page-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.met-kicker{font-size:.72rem;font-weight:800;letter-spacing:.13em;color:#35709d;margin-bottom:5px}
.stat-card{display:block;height:100%;background:#fff;border:1px solid rgba(20,60,99,.05);border-radius:20px;padding:20px;box-shadow:0 8px 25px rgba(20,60,99,.07);color:inherit;position:relative;overflow:hidden;transition:.18s ease}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(20,60,99,.1);color:inherit}
.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#35709d}
.stat-card-success:before{background:#198754}.stat-card-danger:before{background:#dc3545}.stat-card-neutral:before{background:#6c757d}
.stat-label{font-size:.82rem;color:var(--muted);font-weight:650}.stat-value{font-size:2.25rem;line-height:1.1;font-weight:800;margin:6px 0}.stat-foot{font-size:.76rem;color:#8893a0}
.mini-stat{background:#fff;border-radius:18px;padding:16px 18px;box-shadow:0 6px 18px rgba(20,60,99,.06);height:100%}.mini-stat small{display:block;color:var(--muted);font-size:.74rem}.mini-stat strong{display:block;font-size:1.65rem;line-height:1.2;margin-top:3px}
.flow-strip{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:12px;background:#f7f9fc;border:1px solid var(--line);border-radius:18px;padding:18px}.flow-node{text-align:center}.flow-node span{display:block;font-size:.68rem;color:#99a2ad;font-weight:700}.flow-node strong{display:block;font-size:1.8rem}.flow-node small{display:block;color:var(--muted)}.flow-node.active{background:#fff;border-radius:14px;padding:10px;box-shadow:0 5px 18px rgba(20,60,99,.08)}.flow-arrow{font-size:1.4rem;color:#9aa6b2}
.quick-links{display:grid;gap:8px}.quick-links a{display:flex;justify-content:space-between;align-items:center;padding:11px 12px;border-radius:12px;background:#f7f9fc;color:var(--text)}.quick-links a:hover{background:#eef4fa}.quick-links strong{color:var(--met)}
.filter-bar{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:12px}.filter-bar .form-control,.filter-bar .form-select{border-color:#dce3ea}
.met-table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#7b8794;background:#f8fafc;border-bottom:1px solid var(--line);white-space:nowrap;padding:13px 16px}.met-table tbody td{padding:14px 16px;border-color:#edf0f3}.met-table tbody tr:hover{background:#fbfcfd}
.status-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:6px 9px;font-size:.68rem;font-weight:800;white-space:nowrap}.status-in{background:#dcf5e6;color:#14713f}.status-out{background:#edf0f3;color:#56616d}.status-pending{background:#fff1c7;color:#8a6300}.status-ok{background:#e8f0f5;color:#45606f}.source-chip{display:inline-block;padding:4px 7px;border-radius:8px;background:#edf3f8;color:#50697c;font-size:.68rem;font-weight:700}
.worker-action{display:flex;align-items:center;gap:14px;border-radius:20px;padding:18px;text-decoration:none;box-shadow:0 8px 22px rgba(16,47,77,.07);background:#fff;color:#17202a;border:1px solid rgba(0,0,0,.04);transition:.18s ease}.worker-action:hover{transform:translateY(-2px);color:#17202a;box-shadow:0 12px 28px rgba(16,47,77,.1)}.worker-action strong{display:block;font-size:1.08rem}.worker-action small{display:block;color:#6c757d;margin-top:2px}.worker-icon{width:50px;height:50px;border-radius:15px;display:grid;place-items:center;font-size:1.55rem;font-weight:700;background:#eef4fb;flex:0 0 auto}.worker-entry .worker-icon{background:#e7f6ec;color:#198754}.worker-exit .worker-icon{background:#eef1f4;color:#212529}.worker-query .worker-icon{background:#eaf2ff;color:#0d6efd}
.people-list{display:grid}.person-row{display:flex;gap:12px;padding:15px 2px;border-bottom:1px solid #edf0f3}.person-row:last-child{border-bottom:0}.person-avatar{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#eaf2f8;color:#315e7f;font-weight:800;flex:0 0 auto}.person-times{display:flex;gap:22px}.person-times span{display:flex;flex-direction:column}.person-times small{color:#89939f;font-size:.68rem}.person-times strong{font-size:.78rem}.min-w-0{min-width:0}.empty-state{text-align:center;color:var(--muted);padding:36px 12px;background:#f8fafc;border-radius:15px}
.scanner-stage{aspect-ratio:4/3;min-height:280px}.scanner-stage video{width:100%;height:100%;object-fit:cover;display:block}.scanner-guide{position:absolute;left:5%;right:5%;top:12%;bottom:12%;border:3px solid rgba(255,255,255,.96);border-radius:18px;box-shadow:0 0 0 9999px rgba(0,0,0,.18);pointer-events:none}.scanner-pill{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);background:rgba(10,25,38,.8);color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:7px 12px;font-size:.72rem;white-space:nowrap;backdrop-filter:blur(7px)}
.scan-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.scan-step{display:flex;align-items:center;gap:8px;background:#f7f9fc;border:1px solid var(--line);border-radius:14px;padding:10px}.scan-step>span{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#e7edf3;color:#65717d;font-size:.72rem;font-weight:800}.scan-step strong{display:block;font-size:.78rem}.scan-step small{display:block;color:#8a949e;font-size:.66rem}.scan-step.active>span{background:var(--met);color:#fff}
.success-check{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;background:#dff4e7;color:#198754;font-size:3rem;font-weight:700}
@media (max-width:767px){.container{padding-left:14px;padding-right:14px}.met-card{border-radius:18px}.stat-card{padding:16px}.stat-value{font-size:1.8rem}.stat-foot{display:none}.flow-strip{padding:12px;gap:6px}.flow-node strong{font-size:1.35rem}.flow-node small{font-size:.67rem}.flow-arrow{font-size:1rem}.scan-flow{grid-template-columns:1fr}.scanner-stage{aspect-ratio:3/4}.person-times{gap:14px}.status-badge{font-size:.62rem}.page-hero{align-items:flex-start}}


/* Confirmación de persona */
.confirm-person-grid .form-label {
  font-size: .78rem;
  font-weight: 700;
  color: #667085;
  text-transform: uppercase;
  letter-spacing: .035em;
  margin-bottom: .35rem;
}
.confirm-person-grid .form-control,
.confirm-person-grid .form-select {
  min-height: 46px;
  font-weight: 600;
}
.confirm-person-grid input[readonly],
.confirm-person-grid select:disabled {
  background: #f8fafc;
  color: #1f2937;
  opacity: 1;
}
.confirm-summary {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem 1.25rem;
  padding: .85rem 1rem;
  background: #f8fafc;
  border: 1px solid #e9eef5;
  border-radius: .85rem;
  font-size: .9rem;
}


/* MET multinacional */
.nationality-card { min-height: 118px; display:flex; flex-direction:column; justify-content:center; }
.nationality-card span { display:block; margin-top:.25rem; color:var(--bs-secondary-color); font-size:.78rem; }
.nationality-list { display:flex; flex-wrap:wrap; gap:.5rem; }
.nationality-list span { display:inline-flex; align-items:center; gap:.55rem; border:1px solid rgba(15,23,42,.09); border-radius:999px; padding:.42rem .7rem; background:#fff; }
.nationality-list em { min-width:1.65rem; height:1.65rem; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; background:#f1f5f9; font-style:normal; font-weight:700; font-size:.78rem; }

/* MET smart scan + CRM */
.role-chip{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.1);color:#fff;border-radius:999px;padding:.28rem .58rem;font-size:.68rem;font-weight:700}
.role-badge{display:inline-flex;border-radius:999px;padding:.36rem .65rem;font-size:.7rem;font-weight:800}.role-supervisor{background:#e9efff;color:#294f9b}.role-worker{background:#e8f5ee;color:#17643b}
.smart-scan-btn{min-height:58px;font-weight:750;border-radius:16px}.smart-scan-note{display:flex;gap:.7rem;align-items:flex-start;padding:.85rem 1rem;border:1px solid var(--line);background:#f8fafc;border-radius:14px}.smart-scan-note strong,.smart-scan-note small{display:block}.smart-scan-note small{color:var(--muted);margin-top:2px}.smart-scan-dot{width:11px;height:11px;border-radius:50%;background:#198754;margin-top:5px;box-shadow:0 0 0 5px rgba(25,135,84,.1);flex:0 0 auto}
.mini-caption{display:block;color:#9099a4;font-size:.69rem;margin-top:.25rem}
.operation-grid{display:grid;grid-template-columns:1fr 1fr .72fr;gap:14px}.operation-primary,.operation-secondary{background:#fff;border-radius:20px;border:1px solid rgba(15,23,42,.06);box-shadow:0 8px 22px rgba(16,47,77,.07);color:var(--text);transition:.18s ease}.operation-primary{display:flex;align-items:center;gap:16px;padding:20px}.operation-primary:hover,.operation-secondary:hover{transform:translateY(-2px);color:var(--text);box-shadow:0 12px 28px rgba(16,47,77,.1)}.operation-primary small{display:block;color:#7f8b97;font-size:.65rem;font-weight:800;letter-spacing:.08em}.operation-primary strong{display:block;font-size:1.15rem;margin-top:2px}.operation-primary p{margin:2px 0 0;color:var(--muted);font-size:.78rem}.operation-icon{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-size:1.5rem;flex:0 0 auto}.operation-entry .operation-icon{background:#e7f6ec;color:#198754}.operation-exit .operation-icon{background:#eef1f4;color:#25313b}.operation-secondary{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:18px}.operation-secondary>span{font-size:1.5rem}.operation-secondary small{color:var(--muted);font-size:.72rem;margin-top:2px}
.hour-chart{height:180px;display:grid;grid-template-columns:repeat(24,1fr);gap:4px;align-items:end;border-bottom:1px solid var(--line);padding-top:12px}.hour-col{height:100%;display:flex;flex-direction:column;justify-content:flex-end;min-width:0}.hour-bars{height:145px;display:flex;align-items:flex-end;justify-content:center;gap:2px}.hour-bars span{width:38%;min-height:2px;border-radius:3px 3px 0 0}.bar-entry{background:#198754}.bar-exit{background:#6c7a89}.hour-col small{font-size:.56rem;text-align:center;color:#8b96a2;margin-top:4px}.chart-legend{display:flex;gap:16px;color:var(--muted);font-size:.7rem}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{width:9px;height:9px;border-radius:3px}.legend-entry{background:#198754}.legend-exit{background:#6c7a89}
.nationality-ranking{display:grid;gap:11px}.rank-row{display:grid;grid-template-columns:24px 42px 1fr 30px;align-items:center;gap:8px;font-size:.78rem}.rank-pos{width:22px;height:22px;border-radius:7px;background:#f1f5f9;color:#64748b;display:grid;place-items:center;font-size:.65rem;font-weight:800}.rank-track{height:7px;border-radius:999px;background:#edf1f5;overflow:hidden}.rank-track i{display:block;height:100%;background:#35709d;border-radius:inherit}.rank-row>b{text-align:right}
.operator-list{display:grid}.operator-row{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid #edf0f3}.operator-row:last-child{border-bottom:0}.operator-row strong,.operator-row small{display:block}.operator-row small{font-size:.7rem;color:var(--muted);margin-top:1px}.operator-row>b{font-size:1rem;color:var(--met)}
.daily-chart{display:grid;gap:10px}.daily-row{display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:center}.daily-row>small{font-size:.68rem;color:#7c8793}.daily-bars{display:grid;gap:3px}.daily-bars span{display:block;min-width:3px;height:18px;border-radius:5px;position:relative}.daily-entry{background:#dff3e7;color:#146c43}.daily-exit{background:#e8edf2;color:#4f5f6e}.daily-bars b{position:absolute;right:6px;top:1px;font-size:.65rem}
@media(max-width:991px){.operation-grid{grid-template-columns:1fr 1fr}.operation-secondary{grid-column:1/-1;flex-direction:row;gap:9px}.hour-chart{gap:2px}}
@media(max-width:767px){.operation-grid{grid-template-columns:1fr}.operation-secondary{grid-column:auto}.scanner-stage{aspect-ratio:4/5}.hour-chart{height:150px}.hour-bars{height:115px}.hour-col small{font-size:.48rem}.rank-row{grid-template-columns:22px 38px 1fr 28px}}

/* Multi-parque / operación institucional */
.location-card { border-left: 4px solid var(--bs-primary) !important; }
.operation-disabled { opacity: .48; pointer-events: none; filter: grayscale(.25); }
.location-chip { display:inline-flex; align-items:center; gap:.35rem; padding:.35rem .65rem; border-radius:999px; background:#f5f7fb; border:1px solid #e4e8f0; font-size:.8rem; font-weight:600; }
.network-kpi { border:1px solid #edf0f5; border-radius:1rem; padding:1rem; background:#fff; }
.network-kpi small { color:#6c757d; display:block; }
.network-kpi strong { display:block; font-size:1.45rem; line-height:1.15; }
@media (max-width: 767.98px) {
  .location-card .form-select { min-height: 46px; }
}

/* UX operación v3: documento horizontal, turno persistente y acompañantes */
.scanner-stage{aspect-ratio:1.58/1;min-height:0;max-height:none}
.scanner-stage video{object-fit:cover}
.scanner-guide{left:6%;right:6%;top:12%;bottom:12%;border-radius:22px}
.operation-context-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border:1px solid var(--line);background:#fff;border-radius:16px;box-shadow:0 8px 24px rgba(15,23,42,.05)}
.location-start-card{border-left:5px solid var(--met)!important}
.minor-list{display:grid;gap:10px}.minor-row{display:flex;gap:10px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:14px;background:#f8fafc}.minor-row .minor-remove{margin-bottom:2px;white-space:nowrap}
@media(max-width:767px){.scanner-stage{aspect-ratio:1.45/1}.scanner-guide{left:5%;right:5%;top:10%;bottom:10%}.operation-context-bar{align-items:flex-start}.minor-row{align-items:stretch;flex-direction:column}.minor-row .minor-remove{align-self:flex-end}}

/* Estado vivo del parque: prioridad operativa para saber quién queda por salir */
.live-occupancy-card{border:1px solid rgba(25,135,84,.13)!important;background:linear-gradient(180deg,#fff 0%,#fbfefc 100%)}
.live-update-dot{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;font-size:.72rem;font-weight:800;color:#198754;background:#eaf7ef;border-radius:999px;padding:.42rem .68rem}
.live-update-dot span{width:8px;height:8px;border-radius:50%;background:#198754;box-shadow:0 0 0 5px rgba(25,135,84,.10)}
.occupancy-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px;border-radius:18px;background:#f0faf4;border:1px solid #dcefe3}
.occupancy-number{font-size:3.2rem;line-height:.95;font-weight:850;letter-spacing:-.04em;color:#12251a;display:block}
.occupancy-label{display:block;margin-top:.38rem;color:#52665b;font-size:.82rem;font-weight:700}
.occupancy-breakdown{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.occupancy-breakdown span{background:#fff;border:1px solid #e1ebe5;border-radius:999px;padding:.48rem .7rem;color:#5c6c63;font-size:.72rem;white-space:nowrap}
.occupancy-breakdown strong{color:#19271f}
.live-inside-list{max-height:440px;overflow:auto;padding-right:2px}
.live-person-row{background:#fff}
@media(max-width:767px){.occupancy-hero{align-items:flex-start;flex-direction:column}.occupancy-breakdown{justify-content:flex-start}.occupancy-number{font-size:2.85rem}.live-inside-list{max-height:390px}.live-occupancy-card .card-body{padding:1rem!important}}

/* UX operación v8: acciones principales compactas arriba + búsqueda rápida */
.operation-context-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.quick-person-search{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#eef5fb;border:1px solid #d9e7f2;color:var(--met);font-size:1.35rem;font-weight:800;line-height:1;box-shadow:0 4px 12px rgba(18,58,90,.06);transition:.18s ease}
.quick-person-search:hover{background:#e5f0f8;color:var(--met-dark);transform:translateY(-1px)}
.quick-person-search.disabled{opacity:.45;pointer-events:none}
.compact-operation-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.compact-operation{min-height:92px;background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:18px;box-shadow:0 7px 20px rgba(16,47,77,.07);color:var(--text);display:flex;align-items:center;gap:13px;padding:14px 15px;transition:.18s ease;overflow:hidden}
.compact-operation:hover{transform:translateY(-2px);color:var(--text);box-shadow:0 11px 25px rgba(16,47,77,.11)}
.compact-operation-icon{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;flex:0 0 auto;font-size:1.45rem;font-weight:800}
.compact-entry .compact-operation-icon{background:#e7f6ec;color:#198754}
.compact-exit .compact-operation-icon{background:#eef1f4;color:#334155}
.compact-operation-copy{min-width:0}
.compact-operation-copy small{display:block;color:#7f8b97;font-size:.63rem;font-weight:850;letter-spacing:.11em;line-height:1.1}
.compact-operation-copy strong{display:block;font-size:1rem;line-height:1.15;margin-top:4px}
@media(max-width:767px){
  .compact-operation-grid{gap:10px}
  .compact-operation{min-height:88px;padding:12px 10px;gap:9px;border-radius:17px;flex-direction:column;justify-content:center;text-align:center}
  .compact-operation-icon{width:42px;height:42px;border-radius:13px;font-size:1.25rem}
  .compact-operation-copy strong{font-size:.9rem}
  .compact-operation-copy small{font-size:.58rem}
  .operation-context-bar{gap:10px}
  .operation-context-actions{gap:6px}
  .quick-person-search{width:40px;height:40px;border-radius:12px;flex:0 0 auto}
  .change-point-btn{max-width:94px;white-space:normal;line-height:1.15;padding:.38rem .5rem}
}

/* Acceso rápido claramente separado del punto de trabajo */
.worker-utility-row{display:flex;justify-content:flex-end;align-items:center}
.person-query-shortcut{display:inline-flex;align-items:center;gap:9px;min-height:42px;padding:7px 12px 7px 8px;border-radius:14px;background:#fff;border:1px solid #dbe7f0;box-shadow:0 5px 16px rgba(16,47,77,.06);color:var(--text);text-decoration:none;transition:.18s ease}
.person-query-shortcut:hover{color:var(--text);background:#f8fbfd;transform:translateY(-1px);box-shadow:0 8px 20px rgba(16,47,77,.09)}
.person-query-shortcut-icon{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:#eef5fb;color:var(--met);font-size:1.05rem;font-weight:850;line-height:1;flex:0 0 auto}
.person-query-shortcut-copy{display:flex;align-items:baseline;gap:7px;min-width:0}
.person-query-shortcut-copy small{color:#758493;font-size:.57rem;font-weight:850;letter-spacing:.11em;line-height:1}
.person-query-shortcut-copy strong{font-size:.83rem;line-height:1.1;white-space:nowrap}
@media(max-width:767px){.worker-utility-row{justify-content:flex-start}.person-query-shortcut{min-height:40px;padding:6px 11px 6px 7px}.person-query-shortcut-icon{width:29px;height:29px}.person-query-shortcut-copy strong{font-size:.82rem}}
