:root {
  --azul-eps: #0b4f8a;
  --azul-oscuro: #073761;
  --gris-borde: #d8dee5;
  --gris-fondo: #f4f6f8;
  --rojo: #b3261e;
  --verde: #1e7d3c;
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
}

/* Configuración y usuarios */
.page-heading,.section-heading,.table-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.page-heading{margin-bottom:1.4rem}.page-heading h1,.section-heading h2{margin:.15rem 0}.page-heading p,.section-heading p,.table-card-head p{margin:.25rem 0 0;color:#6b808e}.config-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:1.4rem;align-items:start}.config-menu,.config-main,.table-card{background:#fff;border:1px solid #dfeaf0;border-radius:18px;box-shadow:0 8px 24px rgba(7,55,97,.08)}.config-menu{padding:1rem;position:sticky;top:92px}.config-menu-title{display:block;padding:.5rem .65rem;color:#6b808e;font-size:.72rem;font-weight:800;letter-spacing:.14em}.config-menu a{display:flex;align-items:center;gap:.75rem;padding:.85rem;border-radius:12px;color:var(--azul-oscuro);text-decoration:none}.config-menu a.active{background:#e5f7f8;color:#087c88}.config-menu a>span{font-size:1.25rem}.config-menu small{display:block;color:#6b808e;font-weight:400;margin-top:.15rem}.config-main{padding:1.35rem;min-width:0}.config-main .form-card{max-width:none;margin:1.2rem 0}.user-form h3,.table-card h3{margin:0 0 1rem}.table-card{overflow:hidden;box-shadow:none}.table-card-head{padding:1rem 1.1rem;border-bottom:1px solid #dfeaf0}.table-card-head h3{margin:0}.users-table td strong{display:block}.current-user{display:inline-block;color:#087c88;font-weight:700;margin-top:.2rem}.role-badge,.status-pill{display:inline-flex;padding:.3rem .55rem;border-radius:999px;font-size:.76rem;font-weight:800}.role-badge{background:#e9f4f8;color:var(--azul-oscuro)}.status-pill.is-active{background:#e9f8ef;color:#197347}.status-pill.is-inactive{background:#f3f4f6;color:#667085}.row-actions{display:flex;align-items:center;gap:.45rem}.row-actions form{margin:0}.btn-small{font-size:.78rem;padding:.48rem .68rem;white-space:nowrap}

@media (max-width: 900px){.config-layout{grid-template-columns:1fr}.config-menu{position:static}.config-menu-title{display:none}.config-menu a{max-width:280px}.config-main{padding:1rem}}
@media (max-width: 600px){.page-heading,.section-heading{display:block}.section-heading>.btn-secondary{display:inline-block;margin-top:.8rem}.config-main{border-radius:14px}.users-table{min-width:720px}.row-actions{align-items:stretch;flex-direction:column}.row-actions .btn-small{display:block;width:100%;text-align:center}}
.compliance-list{list-style:none;padding:0;margin:1rem 0 0}.compliance-list li{padding:.75rem 0;border-bottom:1px solid #e5edf1}.compliance-list b{color:#1e9d67;margin-right:.5rem}.audit-list>div{display:flex;flex-direction:column;padding:.75rem 0;border-bottom:1px solid #e5edf1}.audit-list span{color:#6b808e;font-size:.78rem;margin-top:.2rem}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--gris-fondo);
  color: #1c2733;
}

a {
  color: var(--azul-eps);
}

button {
  font-family: inherit;
  cursor: pointer;
}

input,
select,
textarea {
  font-family: inherit;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--gris-borde);
  border-radius: 6px;
  font-size: 0.95rem;
  width: 100%;
}

.btn-primary {
  background: var(--azul-eps);
  color: white;
  border: none;
  padding: 0.6rem 1.2rem;
  border-radius: 6px;
  font-weight: 600;
}
.btn-primary:hover {
  background: var(--azul-oscuro);
}
.btn-primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.btn-secondary {
  background: white;
  color: var(--azul-eps);
  border: 1px solid var(--azul-eps);
  padding: 0.45rem 0.9rem;
  border-radius: 6px;
}

.btn-danger {
  background: white;
  color: var(--rojo);
  border: 1px solid var(--rojo);
  padding: 0.4rem 0.8rem;
  border-radius: 6px;
}

.mensaje-error {
  color: var(--rojo);
  background: #fbeceb;
  border: 1px solid #f1c3c0;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  font-size: 0.9rem;
}

.mensaje-exito {
  color: var(--verde);
  background: #e9f7ee;
  border: 1px solid #bfe6cc;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  font-size: 0.9rem;
}

/* Login */
.login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--azul-oscuro), var(--azul-eps));
}
.login-card {
  background: white;
  padding: 2.5rem;
  border-radius: 12px;
  width: 340px;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
}
.login-card h1 {
  margin: 0;
  font-size: 1.4rem;
  color: var(--azul-oscuro);
}
.subtitulo {
  margin: 0 0 0.75rem 0;
  color: #5a6a78;
  font-size: 0.85rem;
}
.login-card label {
  font-size: 0.85rem;
  font-weight: 600;
  color: #354250;
}
.login-page{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(360px,.65fr);padding:clamp(1rem,4vw,4rem);gap:clamp(1.5rem,5vw,6rem);background:linear-gradient(90deg,rgba(3,52,91,.24),rgba(3,52,91,.72)),url('../img/fondo-sedaloreto.jpg') center/cover no-repeat}.login-page:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(3,52,91,.28));pointer-events:none}.login-institution{position:relative;z-index:1;display:flex;align-items:flex-end;padding:clamp(1rem,3vw,3rem);min-height:72vh}.login-institution-copy{max-width:620px;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.35)}.login-institution-copy span{font-weight:800;letter-spacing:.16em;text-transform:uppercase;font-size:.75rem}.login-institution-copy h2{font-size:clamp(2rem,4vw,3.8rem);line-height:1.05;margin:.7rem 0 1rem}.login-institution-copy p{max-width:540px;font-size:1.05rem;line-height:1.55;margin:0}.login-card{position:relative;z-index:2;align-self:center;justify-self:center;width:min(390px,100%);padding:2.2rem;border-radius:20px;box-shadow:0 24px 65px rgba(3,36,62,.35);backdrop-filter:blur(6px)}.login-brand{display:flex;flex-direction:column;padding-bottom:1rem;margin-bottom:.35rem;border-bottom:1px solid #dfeaf0;color:var(--azul-oscuro)}.login-brand strong{font-size:1rem}.login-brand small{color:#637986;margin-top:.2rem}.login-card h1{font-size:1.7rem}.login-card input{min-height:46px}.login-card .btn-primary{margin-top:.35rem;min-height:46px}.topbar-user-menu{position:relative;color:#fff}.topbar-user-menu summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.65rem;padding:.35rem .5rem;border-radius:10px}.topbar-user-menu summary::-webkit-details-marker{display:none}.topbar-user-menu summary:hover,.topbar-user-menu[open] summary{background:rgba(255,255,255,.1)}.user-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#38b9ac;font-size:.76rem;font-weight:900}.user-dropdown{position:absolute;right:0;top:calc(100% + .55rem);z-index:80;width:245px;background:#fff;color:#263c4a;border:1px solid #dbe8ee;border-radius:12px;padding:.65rem;box-shadow:0 16px 38px rgba(0,0,0,.24)}.user-dropdown>div{padding:.55rem;border-bottom:1px solid #e6eef2}.user-dropdown strong,.user-dropdown small{display:block}.user-dropdown small{margin-top:.2rem;color:#71838f;font-size:.72rem}.user-dropdown a,.user-dropdown button{display:block;width:100%;border:0;background:transparent;color:var(--azul-oscuro);text-align:left;text-decoration:none;padding:.7rem;border-radius:8px;font:inherit;cursor:pointer}.user-dropdown a:hover,.user-dropdown button:hover{background:#eaf7f8}.user-dropdown form{margin:0}
@media(max-width:800px){.login-page{grid-template-columns:1fr;place-items:center;background-position:30% center}.login-institution{display:none}.login-card{justify-self:center}.topbar-user-menu .user-identity{display:none}.user-dropdown{position:fixed;right:1rem;top:72px}}
.login-page{background:linear-gradient(90deg,rgba(3,52,91,.24),rgba(3,52,91,.72)),url('../img/fondo-sedaloreto.jpg') center/cover no-repeat}.login-institution-copy{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.35)}.login-institution-copy h2,.login-institution-copy p{text-align:center}.login-brand{text-align:center}.login-card h1,.login-card .subtitulo{text-align:center}.login-card select{min-height:46px;background:#fff}.login-card label{text-align:left}

/* App shell */
.app-shell {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.topbar {
  background: var(--azul-oscuro);
  color: white;
  padding: 0.8rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.topbar-title {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}
.topbar-title span {
  font-size: 0.8rem;
  opacity: 0.85;
}
.topbar-user {
  display: flex;
  align-items: center;
  gap: 1rem;
  font-size: 0.9rem;
}
.topbar-user .btn-secondary {
  background: transparent;
  color: white;
  border-color: rgba(255, 255, 255, 0.6);
}

.app-body {
  flex: 1;
  display: flex;
}
.sidebar {
  width: 220px;
  background: white;
  border-right: 1px solid var(--gris-borde);
  padding: 1.2rem 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.sidebar a {
  padding: 0.65rem 1.2rem;
  color: #354250;
  text-decoration: none;
  font-size: 0.9rem;
  border-left: 3px solid transparent;
}
.sidebar a.active {
  background: #eaf2fa;
  border-left-color: var(--azul-eps);
  color: var(--azul-eps);
  font-weight: 600;
}
.sidebar a:hover {
  background: #f2f5f8;
}

.content {
  flex: 1;
  padding: 1.8rem;
  max-width: 1200px;
}
.content h2 {
  margin-top: 0;
  color: var(--azul-oscuro);
}

table {
  width: 100%;
  border-collapse: collapse;
  background: white;
  border: 1px solid var(--gris-borde);
  font-size: 0.88rem;
}
th,
td {
  padding: 0.55rem 0.7rem;
  border-bottom: 1px solid var(--gris-borde);
  text-align: left;
  vertical-align: top;
}
th {
  background: #eef2f6;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #46545f;
}
tr:hover td {
  background: #fafcfe;
}

.tabla-scroll {
  overflow-x: auto;
}

.badge {
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
  display: inline-block;
}
.badge-en-curso {
  background: #fff3cd;
  color: #8a6300;
}
.badge-pendiente{background:#e8f4fd;color:#075985}
.badge-finalizada {
  background: #e2f4e6;
  color: var(--verde);
}
.badge-anulada {
  background: #fbeceb;
  color: var(--rojo);
}

.form-card {
  background: white;
  border: 1px solid var(--gris-borde);
  border-radius: 10px;
  padding: 1.5rem;
  max-width: 640px;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.form-row {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.form-row label {
  font-size: 0.85rem;
  font-weight: 600;
  color: #354250;
}
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.85rem;
}
.section-title {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #7c8a97;
  margin-top: 0.6rem;
  border-top: 1px dashed var(--gris-borde);
  padding-top: 0.9rem;
}

.filtros-barra {
  display: flex;
  gap: 0.75rem;
  align-items: flex-end;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.filtros-barra .form-row {
  min-width: 160px;
}

.toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
}

.pestanias {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1.2rem;
}

.texto-ayuda {
  margin: 0 0 1rem 0;
  max-width: 640px;
  color: #5a6a78;
}

.texto-pequeno {
  font-size: 0.78rem;
  color: #7c8a97;
}

.confirmacion-card {
  background: white;
  border: 1px solid var(--gris-borde);
  border-radius: 10px;
  padding: 1.5rem;
  max-width: 560px;
}
.confirmacion-card dl {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 0.4rem 1rem;
  margin: 0 0 1.2rem 0;
  font-size: 0.9rem;
}
.confirmacion-card dt {
  font-weight: 600;
  color: #46545f;
}
.confirmacion-card dd {
  margin: 0;
}
.acciones-form {
  display: flex;
  gap: 0.6rem;
  margin-top: 0.5rem;
}

/* Identidad visual del sector saneamiento y dashboard responsivo */
:root {
  --azul-eps: #0878b9;
  --azul-oscuro: #073b62;
  --azul-profundo: #052f4f;
  --aqua: #00a9b7;
  --aqua-claro: #e5f8fa;
  --verde-agua: #36a269;
  --cielo: #eaf5fb;
  --texto: #183449;
  --sombra: 0 10px 30px rgba(6, 59, 98, .08);
}
body { color: var(--texto); background: #f3f8fb; }
.topbar { min-height: 76px; background: linear-gradient(110deg, var(--azul-profundo), #075b8d); padding: .85rem 1.4rem; box-shadow: 0 4px 20px rgba(3,42,70,.18); z-index: 30; }
.topbar-title { flex-direction: row; align-items: center; gap: .75rem; }
.topbar-title > div { display: flex; flex-direction: column; }
.brand-mark { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 13px; background: linear-gradient(135deg,#18b9c4,#58c883); color: white; font-size: 2rem; font-weight: 800; line-height: 1; }
.topbar-title strong { letter-spacing: .02em; }
.topbar-title span:not(.brand-mark) { font-size: .78rem; }
.user-identity { display: flex; flex-direction: column; text-align: right; line-height: 1.25; }
.user-identity small { opacity: .72; font-size: .7rem; letter-spacing: .05em; }
.menu-toggle { display:grid; place-items:center; flex:0 0 auto; width:42px; height:42px; margin-right:.75rem; border:1px solid rgba(255,255,255,.28); border-radius:10px; background:rgba(255,255,255,.08); color:white; font-size:1.4rem; padding:0; cursor:pointer; transition:background .2s,transform .2s; }
.menu-toggle:hover,.menu-toggle:focus-visible{background:rgba(255,255,255,.18)}
.menu-toggle:active{transform:scale(.96)}
.topbar-title{margin-right:auto}
.sidebar { flex:0 0 250px; width:250px; padding:1.1rem .75rem; box-shadow:5px 0 18px rgba(20,55,80,.04); z-index:25; overflow-x:hidden; transition:flex-basis .25s ease,width .25s ease,padding .25s ease,transform .25s ease,border-color .25s ease; }
.sidebar-collapsed .sidebar{flex-basis:0;width:0;padding-left:0;padding-right:0;border-right-color:transparent;transform:translateX(-100%)}
.nav-label { padding: 1rem .85rem .35rem; color: #91a7b6; font-size: .65rem; font-weight: 800; letter-spacing: .13em; }
.sidebar a { border: 0; border-radius: 9px; padding: .75rem .85rem; display: flex; gap: .75rem; align-items: center; }
.sidebar a span { width: 22px; color: var(--aqua); font-size: 1.05rem; text-align: center; }
.sidebar a.active { background: linear-gradient(90deg,#e3f5fa,#edf8f5); color: var(--azul-oscuro); box-shadow: inset 3px 0 var(--aqua); }
.content { width:100%; min-width:0; max-width:none; padding:2rem clamp(1rem,3vw,2.4rem); transition:padding .25s ease; }
.dashboard-hero { background: linear-gradient(120deg,var(--azul-oscuro),#0879a9 65%,#00a9a8); color: white; border-radius: 20px; padding: clamp(1.4rem,3vw,2.2rem); display: flex; justify-content: space-between; gap: 1.5rem; align-items: center; box-shadow: var(--sombra); position: relative; overflow: hidden; }
.dashboard-hero:after { content:""; position:absolute; width:260px; height:260px; right:-80px; top:-130px; border:35px solid rgba(255,255,255,.08); border-radius:50%; }
.dashboard-hero h1 { margin: .15rem 0 .35rem; font-size: clamp(1.65rem,3vw,2.35rem); }
.dashboard-hero p { margin:0; opacity:.82; }
.hero-actions { display:flex; gap:.7rem; z-index:1; flex-wrap:wrap; }
.dashboard-hero .btn-primary { background:white; color:var(--azul-oscuro); }
.dashboard-hero .btn-secondary { background:rgba(255,255,255,.09); color:white; border-color:rgba(255,255,255,.5); }
.eyebrow { color: var(--aqua); text-transform: uppercase; font-size: .68rem; letter-spacing: .13em; font-weight: 800; }
.dashboard-hero .eyebrow { color:#8de9e5; }
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:1rem; margin:1.2rem 0; }
.kpi-card { background:white; border:1px solid #dfeaf0; border-radius:16px; padding:1.15rem; display:flex; align-items:center; gap:1rem; box-shadow:var(--sombra); border-top:3px solid var(--azul-eps); }
.kpi-card > div:last-child { display:flex; flex-direction:column; min-width:0; }
.kpi-card span { color:#617786; font-size:.78rem; font-weight:700; }
.kpi-card strong { color:var(--azul-oscuro); font-size:1.85rem; line-height:1.2; }
.kpi-card small { color:#8194a1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kpi-icon { width:44px; height:44px; display:grid; place-items:center; border-radius:13px; background:var(--cielo); color:var(--azul-eps); font-size:1.3rem; flex:0 0 auto; }
.kpi-aqua { border-top-color:var(--aqua); }.kpi-aqua .kpi-icon{background:var(--aqua-claro);color:var(--aqua)}
.kpi-green { border-top-color:var(--verde-agua); }.kpi-green .kpi-icon{background:#e9f7ef;color:var(--verde-agua)}
.kpi-navy { border-top-color:var(--azul-oscuro); }
.kpi-clock { border-top-color:#7c3aed; }.kpi-clock .kpi-icon{background:#f1eafe;color:#6d28d9}.kpi-clock strong{font-size:1.45rem;font-variant-numeric:tabular-nums}
.site-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin:0 0 1.2rem}.site-summary>div{background:#fff;border:1px solid #dfeaf0;border-radius:12px;padding:.8rem 1rem;display:flex;align-items:baseline;gap:.5rem;box-shadow:0 5px 16px rgba(7,55,97,.05)}.site-summary span{font-weight:700;color:var(--azul-oscuro)}.site-summary strong{font-size:1.25rem;color:var(--aqua)}.site-summary small{color:#758996}.site-badge{display:inline-flex;padding:.25rem .5rem;border-radius:999px;background:#e5f8fa;color:#087c88;font-size:.72rem;font-weight:800}.btn-exit{display:inline-block;text-decoration:none;white-space:nowrap}.agenda-picker{padding:1rem;border:1px solid #b8d5ea;border-radius:10px;background:#f6fbfe}.agenda-summary{margin-top:.7rem;padding:.7rem;border-radius:8px;background:#e8f7ef;color:#176b3a;font-size:.82rem;font-weight:700}
.dashboard-grid { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(260px,.8fr); gap:1rem; margin-bottom:1.35rem; }
.panel-card { background:white; border:1px solid #dfeaf0; border-radius:16px; padding:1.25rem; box-shadow:var(--sombra); }
.panel-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; }
.panel-heading h2,.section-toolbar h2 { margin:.15rem 0 0; font-size:1.12rem; }
.status-live { color:var(--verde-agua); background:#ebf8f0; border-radius:999px; padding:.35rem .65rem; font-size:.72rem; font-weight:700; }
.status-live i { display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--verde-agua); margin-right:.25rem; }
.status-content { display:flex; align-items:center; justify-content:center; gap:clamp(1.5rem,5vw,4rem); padding:1.2rem 0 .3rem; }
.donut { --p:calc(var(--progress)*1%); width:142px; aspect-ratio:1; border-radius:50%; background:conic-gradient(var(--verde-agua) var(--p),#dff4f4 0); display:grid; place-items:center; position:relative; }
.donut:before { content:""; position:absolute; inset:15px; background:white; border-radius:50%; }
.donut div { z-index:1; display:flex; flex-direction:column; align-items:center; }.donut strong{font-size:1.55rem;color:var(--azul-oscuro)}.donut span{font-size:.7rem;color:#768c9a}
.status-list { min-width:190px; }.status-list div { display:flex; justify-content:space-between; gap:2rem; padding:.55rem 0; border-bottom:1px solid #edf2f5; font-size:.84rem; }
.dot { width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.45rem}.dot-green{background:var(--verde-agua)}.dot-aqua{background:var(--aqua)}.dot-gray{background:#aab8c1}
.resource-row { display:flex; gap:.8rem; align-items:center; padding:.9rem 0; border-bottom:1px solid #edf2f5; }.resource-row div{display:flex;flex-direction:column}.resource-row strong{font-size:1.25rem;color:var(--azul-oscuro)}.resource-row span:last-child{font-size:.78rem;color:#758996}.resource-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:var(--aqua-claro);color:var(--aqua);font-size:1.2rem}.panel-link{display:inline-block;margin-top:1rem;font-size:.82rem;font-weight:700;text-decoration:none}
.section-toolbar { margin-top:.5rem; }.section-toolbar h2{font-size:1.35rem}.empty-state{background:white;border:1px dashed #b8d5df;border-radius:16px;text-align:center;padding:2.2rem 1rem;color:#6b808e}.empty-state h3{margin:.5rem 0 .2rem;color:var(--azul-oscuro)}.empty-state p{margin:0}.empty-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#e8f7ef;color:var(--verde-agua);font-size:1.4rem}
table { border:0; border-radius:13px; overflow:hidden; box-shadow:var(--sombra); } th{background:#e9f4f8;color:var(--azul-oscuro)}
.form-card,.confirmacion-card { box-shadow:var(--sombra); border-color:#dfeaf0; }
.visit-entry-layout{display:grid;grid-template-columns:minmax(560px,1fr) minmax(340px,.78fr);gap:1.4rem;align-items:start}.visit-entry-main{min-width:0}.visit-entry-main>.form-card{max-width:none}.ongoing-visits-panel{position:sticky;top:88px;min-width:0;background:#fff;border:1px solid #dfeaf0;border-radius:18px;padding:1.1rem;box-shadow:var(--sombra)}.ongoing-visits-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem;padding:.15rem .1rem 1rem;border-bottom:1px solid #e6eef2}.ongoing-visits-heading h2{margin:.15rem 0 .2rem;font-size:1.25rem}.ongoing-visits-heading p{margin:0;color:#6b808e;font-size:.82rem}.ongoing-visits-list{display:grid;gap:.85rem;margin-top:1rem;max-height:calc(100vh - 230px);overflow:auto;padding-right:.2rem}.ongoing-visit-card{border:1px solid #dbe8ee;border-radius:14px;padding:1rem;background:#fbfdfe}.ongoing-visit-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.7rem}.ongoing-visit-top>div{min-width:0}.ongoing-visit-top strong{display:block;color:var(--azul-oscuro);overflow-wrap:anywhere}.ongoing-visit-top span:not(.site-badge){display:block;color:#6b808e;font-size:.78rem;margin-top:.2rem}.ongoing-visit-details{margin:.85rem 0;display:grid;gap:.55rem}.ongoing-visit-details>div{display:grid;grid-template-columns:64px minmax(0,1fr);gap:.55rem;padding-bottom:.5rem;border-bottom:1px solid #e9eff2}.ongoing-visit-details>div:last-child{border-bottom:0;padding-bottom:0}.ongoing-visit-details dt{font-size:.7rem;font-weight:800;text-transform:uppercase;color:#71838f}.ongoing-visit-details dd{margin:0;color:#223948;font-size:.84rem;overflow-wrap:anywhere}.ongoing-visit-details small{display:block;color:#748692;margin-top:.12rem}.ongoing-visit-card .btn-exit{display:block;width:100%;text-align:center}.ongoing-empty{text-align:center;padding:2rem .5rem .7rem;color:#6b808e}.ongoing-empty h3{margin:.6rem 0 .25rem;color:var(--azul-oscuro)}.ongoing-empty p{margin:0;font-size:.85rem}
input:focus,select:focus,textarea:focus { outline:3px solid rgba(0,169,183,.14); border-color:var(--aqua); }
.sidebar-overlay { display:none; }

@media (max-width: 1050px) {
  .kpi-grid { grid-template-columns:repeat(2,1fr); }
  .dashboard-grid { grid-template-columns:1fr; }
  .visit-entry-layout{grid-template-columns:1fr}.ongoing-visits-panel{position:static;order:-1}.ongoing-visits-list{max-height:none}
}
@media (max-width: 900px) {
  .sidebar,.sidebar-collapsed .sidebar{position:fixed;left:0;top:76px;bottom:0;flex-basis:auto;transform:translateX(-105%);width:min(82vw,280px);padding:1.1rem .75rem;border-right-color:var(--gris-borde)}
  .menu-open .sidebar{transform:translateX(0)}
  .sidebar-overlay{display:block;position:fixed;inset:76px 0 0;background:rgba(1,27,45,.45);z-index:20;opacity:0;pointer-events:none;transition:opacity .2s}
  .menu-open .sidebar-overlay{opacity:1;pointer-events:auto}
}
@media (max-width: 760px) {
  .topbar { min-height:66px; padding:.7rem .85rem; }.menu-toggle{width:38px;height:38px;margin-right:.55rem}.brand-mark{width:36px;height:36px}.topbar-title strong{font-size:.88rem}.topbar-user .user-identity{display:none}.topbar-user{gap:.35rem}.topbar-user .btn-secondary{padding:.4rem .55rem;font-size:.75rem}
  .sidebar,.sidebar-collapsed .sidebar { position:fixed; left:0; top:66px; bottom:0; flex-basis:auto; transform:translateX(-105%); transition:transform .22s ease; width:min(82vw,280px); padding:1.1rem .75rem; border-right-color:var(--gris-borde); }
  .menu-open .sidebar { transform:translateX(0); }.sidebar-overlay{display:block;position:fixed;inset:66px 0 0;background:rgba(1,27,45,.45);z-index:20;opacity:0;pointer-events:none;transition:opacity .2s}.menu-open .sidebar-overlay{opacity:1;pointer-events:auto}
  .content{padding:1rem}.dashboard-hero{align-items:flex-start;flex-direction:column;border-radius:15px}.hero-actions{width:100%}.hero-actions a{flex:1;text-align:center;white-space:nowrap}.kpi-grid{grid-template-columns:1fr 1fr;gap:.65rem}.kpi-card{padding:.85rem;gap:.65rem}.kpi-icon{width:36px;height:36px}.kpi-card strong{font-size:1.45rem}.kpi-card small{display:none}.site-summary{grid-template-columns:1fr}.status-content{flex-direction:column;gap:1rem}.status-list{width:100%}.toolbar{align-items:flex-start;gap:.8rem}.form-grid{grid-template-columns:1fr}.filtros-barra{align-items:stretch}.filtros-barra .form-row{width:100%}.acciones-form{flex-wrap:wrap}.acciones-form>*{flex:1}.confirmacion-card dl{grid-template-columns:1fr}.confirmacion-card dd{margin-bottom:.5rem}
  input,select,textarea,button,.btn-primary,.btn-secondary{min-height:44px}
  .responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table tr{margin-bottom:.85rem;border:1px solid #dfeaf0;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 5px 16px rgba(7,55,97,.06)}.responsive-table td{display:grid;grid-template-columns:120px minmax(0,1fr);gap:.65rem;border-bottom:1px solid #edf2f5;padding:.7rem}.responsive-table td:before{content:attr(data-label);font-size:.7rem;font-weight:800;text-transform:uppercase;color:#6b808e}.responsive-table td:last-child{border-bottom:0}.responsive-table .btn-exit{display:block;text-align:center;width:100%}
}
@media (max-width: 430px) {
  .kpi-grid{grid-template-columns:1fr}.kpi-card small{display:block}.dashboard-hero h1{font-size:1.55rem}.section-toolbar{flex-direction:column;align-items:stretch}.section-toolbar .btn-secondary{text-align:center}
}

.privacy-notice{margin:1rem 0;padding:1rem;border:1px solid #b8d5ea;border-left:4px solid #0b6fa4;border-radius:10px;background:#f3f9fd;color:#16384c}
.success-toast{position:fixed;top:92px;right:24px;z-index:70;background:#16824b;color:#fff;padding:.85rem 1.15rem;border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.22);font-weight:800;animation:toast-in .25s ease-out}.action-modal-backdrop{position:fixed;inset:0;z-index:60;background:rgba(3,31,49,.55);display:grid;place-items:center;padding:1rem}.action-modal{width:min(520px,100%);background:#fff;border-radius:20px;padding:1.6rem;box-shadow:0 24px 70px rgba(0,0,0,.3);text-align:center}.action-modal-icon{width:58px;height:58px;margin:0 auto .7rem;border-radius:50%;display:grid;place-items:center;background:#e8f7ef;color:#16824b;font-size:1.8rem;font-weight:800}.action-modal h2{margin:.2rem 0 .65rem}.action-modal p{line-height:1.5}.action-modal form{display:flex;justify-content:center;gap:.65rem;flex-wrap:wrap;margin-top:1rem}.programmed-message{background:#edf8ff;border:1px solid #b8daf0;border-radius:10px;padding:.8rem}.agenda-reminder{background:#fff4db;border:2px solid #f2ad29;color:#744800;border-radius:10px;padding:.9rem}.agenda-reminder strong{font-size:1.02rem}@keyframes toast-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.pending-entry-section{margin:1rem 0;padding:.8rem;border:1px solid #b8daf0;border-radius:12px;background:#f4faff}.pending-entry-section h3{display:flex;justify-content:space-between;margin:0 0 .65rem;font-size:.86rem;color:var(--azul-oscuro)}.pending-entry-section h3 span{background:var(--azul-eps);color:#fff;border-radius:999px;padding:.1rem .45rem}.pending-entry-card{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.65rem 0;border-top:1px solid #dcebf3}.pending-entry-card:first-of-type{border-top:0}.pending-entry-card div{min-width:0}.pending-entry-card strong,.pending-entry-card small{display:block;overflow-wrap:anywhere}.pending-entry-card small{margin-top:.15rem;color:#6b808e}.pending-entry-card form{margin:0;flex:0 0 auto}
.privacy-notice p{margin:.4rem 0 .7rem;line-height:1.5}.privacy-notice label{display:flex;gap:.55rem;align-items:flex-start;font-weight:600}.privacy-notice input{width:auto;margin-top:.2rem}.privacy-notice a{display:inline-block;margin-top:.6rem}
.agenda-actions{display:flex;gap:.5rem;flex-wrap:wrap}.agenda-actions form{margin:0}.agenda-actions input{min-width:180px}.badge-programada{background:#e8f4fd;color:#075985}.badge-cancelada{background:#fee2e2;color:#991b1b}
.today-agenda-section{padding:1rem 0;border-bottom:1px solid #e6eef2}.today-agenda-section h3,.pending-entry-section h3{display:flex;align-items:center;justify-content:space-between;margin:0 0 .65rem;font-size:.9rem;color:var(--azul-oscuro)}.today-agenda-section h3 span,.pending-entry-section h3 span{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 .4rem;border-radius:999px;background:#e5f8fa;color:#087c88;font-size:.75rem}.today-agenda-list{display:grid;gap:.55rem;max-height:250px;overflow:auto;padding-right:.15rem}.today-agenda-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;padding:.72rem;border:1px solid #dbe8ee;border-radius:11px;background:#fbfdfe}.today-agenda-time{font-weight:800;color:#087c88;font-size:.8rem;white-space:nowrap}.today-agenda-card strong,.today-agenda-card small{display:block}.today-agenda-card strong{font-size:.84rem;color:var(--azul-oscuro)}.today-agenda-card small{font-size:.72rem;color:#71838f;margin-top:.14rem}.today-agenda-empty{margin:0;color:#71838f;font-size:.82rem}.agenda-active-count{display:inline-block;margin-top:.35rem;padding:.18rem .42rem;border-radius:999px;background:#e8f7ef;color:#16824b;font-size:.68rem;font-weight:800}
.no-show-form{margin-top:.45rem}.after-hours-alert{position:fixed;inset:0;z-index:90;background:rgba(3,31,49,.58);display:grid;place-items:center;padding:1rem}.after-hours-alert>div{width:min(520px,100%);background:#fff;border:3px solid #dc2626;border-radius:18px;padding:1.5rem;text-align:center;box-shadow:0 24px 70px rgba(0,0,0,.35)}.after-hours-alert h2{color:#991b1b;margin:.3rem 0}.after-hours-alert p{font-weight:700}.after-hours-alert button{margin-top:.7rem}
.module-permissions{border:1px solid #dbe8ee;border-radius:10px;padding:1rem;margin:1rem 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.module-permissions legend{font-weight:800;color:var(--azul-oscuro);padding:0 .35rem}.module-permissions label{font-size:.86rem}.module-permissions input{width:auto;margin-right:.35rem}.module-permissions small{grid-column:1/-1;color:#71838f}
