/*
 * Estilos globales del panel de Ayuntamientos.
 * Mantiene separado el diseño de las plantillas PHP.
 */
:root
{
  --bg:#f4f7fb;
  --bg-2:#eaf1f9;
  --panel:#ffffff;
  --panel-2:#f8fbff;
  --text:#0f172a;
  --muted:#5f6f86;
  --muted-2:#8a99ad;
  --line:#dbe5f0;
  --line-strong:#c5d3e2;
  --brand:#51c303;
  --brand-2:#3d9202;
  --brand-3:#70d52a;
  --brand-soft:#effbe8;
  --brand-soft-2:#e4f7d7;
  --ok:#047857;
  --ok-soft:#e6f7ef;
  --danger:#b91c1c;
  --danger-soft:#fff1f2;
  --warning:#b45309;
  --shadow-soft:0 10px 28px rgba(15,23,42,.07);
  --shadow:0 22px 58px rgba(15,23,42,.11);
  --shadow-strong:0 30px 80px rgba(15,23,42,.16);
  --radius:24px;
  --radius-sm:16px;
  --sidebar-width:286px;
}
*
{box-sizing:border-box}
html,body
{min-height:100%;margin:0}
body
{
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--text);
  font-size:15px;
  line-height:1.45;
  background:
    radial-gradient(1100px 420px at 22% -10%, rgba(81,195,3,.12), transparent 56%),
    radial-gradient(900px 320px at 96% 0%, rgba(15,118,110,.08), transparent 58%),
    linear-gradient(180deg,#f7faff 0%,var(--bg) 42%,#f3f6fb 100%);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a
{color:inherit;text-decoration:none}
button,input,select,textarea
{font:inherit}
code
{background:#edf4ff;border:1px solid #d7e6fb;border-radius:9px;padding:.12rem .4rem;color:#164187;font-size:.9em}

.app-shell
{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}
.sidebar
{
  position:sticky;top:0;height:100vh;z-index:1300;
  display:flex;flex-direction:column;
  padding:20px 16px;
  background:rgba(255,255,255,.92);
  border-right:1px solid rgba(197,211,226,.75);
  box-shadow:18px 0 48px rgba(15,23,42,.07);
  backdrop-filter:blur(14px);
}
.brand
{
  display:grid;gap:10px;align-items:start;
  padding:8px 8px 20px;margin-bottom:14px;
  border-bottom:1px solid var(--line);
}
.brand__logo-link
{
  display:flex;align-items:center;justify-content:flex-start;
  min-height:72px;width:100%;border-radius:18px;padding:8px 6px;
  background:linear-gradient(180deg,rgba(255,255,255,.76),rgba(248,251,255,.72));
}
.brand__logo
{
  display:block;width:min(202px,100%);height:auto;max-height:86px;
  object-fit:contain;object-position:left center;
}
.brand__fallback
{
  width:50px;height:50px;border-radius:16px;display:grid;place-items:center;
  background:linear-gradient(135deg,#0f172a 0%,#f05a2a 62%,#22c4e8 100%);
  color:#fff;font-weight:950;font-size:.92rem;letter-spacing:-.06em;
  box-shadow:0 16px 34px rgba(15,23,42,.18), inset 0 1px 0 rgba(255,255,255,.16);
}
.brand__meta
{display:grid;gap:2px;padding:0 6px}
.brand__name
{font-weight:950;letter-spacing:-.025em;font-size:1.02rem;text-transform:uppercase;color:#0f172a}
.brand__sub
{font-size:.8rem;color:var(--muted);margin-top:2px}
.nav
{display:flex;flex-direction:column;gap:7px;overflow:auto;padding-right:2px}
.nav__link
{
  display:flex;align-items:center;gap:11px;
  padding:11px 12px;border-radius:16px;
  color:#334155;border:1px solid transparent;font-weight:850;
  transition:background .18s ease,border-color .18s ease,transform .18s ease,color .18s ease,box-shadow .18s ease;
}
.nav__link:hover
{background:#f1f6fd;border-color:#d8e6f5;transform:translateX(2px);color:#0f172a}
.nav__link.is-active
{
  background:linear-gradient(135deg,#e5f0ff,#f3f8ff);
  border-color:#b8d5f7;
  color:#0f2d5c;
  box-shadow:0 10px 24px rgba(81,195,3,.10), inset 4px 0 0 var(--brand);
}
.nav__icon
{
  width:30px;height:30px;border-radius:11px;display:grid;place-items:center;
  background:#f1f5f9;border:1px solid #e2e8f0;font-size:.95rem;line-height:1;
}
.nav__link.is-active .nav__icon
{background:#e9f8df;border-color:#c9ecaF;color:#51c303}

.nav__group
{display:grid;gap:5px}
.nav__group-toggle
{
  width:100%;display:flex;align-items:center;gap:11px;text-align:left;cursor:pointer;
  padding:11px 12px;border-radius:16px;
  color:#334155;border:1px solid transparent;background:transparent;font-weight:850;
  transition:background .18s ease,border-color .18s ease,transform .18s ease,color .18s ease,box-shadow .18s ease;
}
.nav__group-toggle:hover
{background:#f1f6fd;border-color:#d8e6f5;transform:translateX(2px);color:#0f172a}
.nav__group-toggle.is-active
{
  background:linear-gradient(135deg,#e5f0ff,#f3f8ff);
  border-color:#b8d5f7;color:#0f2d5c;
  box-shadow:0 10px 24px rgba(81,195,3,.10), inset 4px 0 0 var(--brand);
}
.nav__group-toggle.is-active .nav__icon
{background:#e9f8df;border-color:#c9ecaf;color:#51c303}
.nav__caret
{margin-left:auto;font-size:1rem;line-height:1;color:#64748b;transition:transform .18s ease}
.nav__group.is-open .nav__caret
{transform:rotate(180deg)}
.nav__submenu
{display:grid;gap:3px;padding:2px 4px 4px 43px}
.nav__submenu[hidden]
{display:none}
.nav__sublink
{
  position:relative;display:flex;align-items:center;gap:9px;min-height:36px;
  padding:8px 10px;border-radius:12px;color:#64748b;border:1px solid transparent;
  font-size:.9rem;font-weight:800;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.nav__sublink:hover
{background:#f6f9fd;border-color:#e1eaf4;color:#0f172a;transform:translateX(2px)}
.nav__sublink.is-active
{background:#eef7e9;border-color:#d5edc8;color:#245b0d}
.nav__subdot
{width:6px;height:6px;flex:0 0 6px;border-radius:999px;background:#cbd5e1}
.nav__sublink.is-active .nav__subdot
{background:var(--brand);box-shadow:0 0 0 4px rgba(81,195,3,.11)}

.main
{min-width:0;display:flex;flex-direction:column}
.topbar
{
  position:sticky;top:0;z-index:1200;min-height:72px;
  display:flex;align-items:center;gap:14px;
  padding:14px 30px;
  background:rgba(255,255,255,.78);
  border-bottom:1px solid rgba(197,211,226,.74);
  backdrop-filter:blur(16px);
}
.sidebar-toggle
{display:none;border:1px solid var(--line);background:#fff;border-radius:14px;padding:10px 13px;box-shadow:var(--shadow-soft);cursor:pointer;color:var(--text)}
.topbar__title
{
  flex:1;min-width:0;
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;
  gap:8px;
}

.breadcrumb
{
  display:flex;align-items:center;gap:7px;
  min-width:0;max-width:100%;
  padding:2px 0 0;
  font-size:.78rem;line-height:1.2;font-weight:800;color:#64748b;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.breadcrumb__link
{color:#64748b;text-decoration:none;border-radius:9px;padding:2px 4px;margin-left:-4px;transition:color .16s ease,background .16s ease}
.breadcrumb__link:hover
{color:#0f172a;background:#eef4fb}
.breadcrumb__separator
{color:#cbd5e1;font-weight:900}
.breadcrumb__current
{min-width:0;color:#2563eb;overflow:hidden;text-overflow:ellipsis}
.topbar__kicker
{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.78rem;font-weight:850;letter-spacing:.02em}
.topbar__kicker:before
{content:"";width:10px;height:10px;border-radius:999px;background:var(--brand-2);box-shadow:0 0 0 4px rgba(15,118,110,.12)}
.topbar h1
{min-width:0;margin:0;font-size:1.16rem;line-height:1.15;font-weight:950;letter-spacing:-.02em;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar p
{display:none;margin:.22rem 0 0;color:var(--muted);font-size:.9rem;max-width:820px}
.content
{width:100%;max-width:1540px;padding:30px 32px 36px}

.eyebrow,.topbar__kicker
{
  text-transform:none;
}
.eyebrow
{
  display:inline-flex;align-items:center;gap:8px;
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:950;color:#0f4c81;
}
.eyebrow:before
{content:"";width:8px;height:8px;border-radius:999px;background:linear-gradient(135deg,var(--brand),var(--brand-2))}

.alert
{margin:18px 32px 0;padding:15px 17px;border-radius:18px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-soft)}
.alert small
{display:block;margin-top:6px;color:var(--muted)}
.alert--danger
{border-color:#fecaca;background:var(--danger-soft);color:var(--danger)}

.grid
{display:grid;gap:18px}.grid--3
{grid-template-columns:repeat(3,minmax(0,1fr))}
.card,.hero-card
{
  background:rgba(255,255,255,.94);
  border:1px solid rgba(219,229,240,.95);
  border-radius:var(--radius);
  box-shadow:var(--shadow-soft);
}
.card
{padding:22px;transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}.card:hover
{box-shadow:var(--shadow);border-color:#cfe0f2}
.hero-card
{
  position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;
  margin-bottom:20px;padding:26px 28px;
  background:
    radial-gradient(620px 220px at 0% 0%, rgba(81,195,3,.13), transparent 62%),
    linear-gradient(135deg,#ffffff 0%,#f0f7ff 100%);
  border-color:#b8d5f7;
  box-shadow:0 22px 54px rgba(81,195,3,.10);
}
.hero-card:after
{content:"";position:absolute;right:-80px;top:-100px;width:270px;height:270px;border-radius:999px;background:linear-gradient(135deg,rgba(81,195,3,.14),rgba(15,118,110,.14));pointer-events:none}
.hero-card h2
{margin:8px 0 8px;font-size:1.85rem;letter-spacing:-.055em;line-height:1.06}.hero-card p
{margin:0;color:var(--muted);max-width:780px}
.hero-card__stat
{position:relative;z-index:1;min-width:160px;padding:20px;border-radius:22px;background:linear-gradient(135deg,#0f172a,#17335f);color:#fff;text-align:center;box-shadow:0 20px 48px rgba(15,23,42,.22)}
.hero-card__stat strong
{display:block;font-size:2.45rem;line-height:1}.hero-card__stat span
{display:block;margin-top:5px;color:#cbd5e1;font-weight:800}
.card__header
{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.card__header h2
{margin:5px 0 0;font-size:1.45rem;line-height:1.1;letter-spacing:-.045em}.card__header p,.card p
{color:var(--muted);margin:.42rem 0 0;line-height:1.55}.page-card-header
{margin:-22px -22px 22px;padding:24px 26px;border-bottom:1px solid #b8d5f7;background:linear-gradient(135deg,#e6f2ff 0%,#f4f9ff 62%,#ffffff 100%);border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}
.header-actions
{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.module-card
{min-height:236px;display:flex;flex-direction:column}.module-card__icon
{width:48px;height:48px;display:grid;place-items:center;border-radius:16px;background:#eef6ff;border:1px solid #d3e6fb;color:#164187;font-size:1.18rem;margin-bottom:14px}.module-card strong,.card--metric strong
{display:block;font-size:1.32rem;margin-top:7px;letter-spacing:-.035em}.module-card p
{min-height:66px}.metric__label
{color:var(--muted);font-size:.78rem;font-weight:950;text-transform:uppercase;letter-spacing:.10em}.mt-4
{margin-top:24px}.text-right
{text-align:right}.muted
{color:var(--muted-2)}

.btn
{appearance:none;border:0;border-radius:14px;padding:10px 15px;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease;color:inherit;white-space:nowrap}.btn:hover
{transform:translateY(-1px)}.btn:disabled
{opacity:.5;cursor:not-allowed;transform:none}.btn--primary
{background:linear-gradient(135deg,var(--brand),#70d52a);color:#fff;box-shadow:0 12px 26px rgba(81,195,3,.20)}.btn--primary:hover
{background:linear-gradient(135deg,#1e40af,var(--brand))}.btn--soft
{margin-top:auto;background:#e8f2ff;color:#164187;border:1px solid #cfe2f7}.btn--ghost
{background:#fff;color:#0f172a;border:1px solid var(--line);box-shadow:0 8px 18px rgba(15,23,42,.05)}.btn--danger
{background:#fee2e2;color:#991b1b}.btn--refresh
{min-width:118px}.icon-btn
{width:40px;height:40px;border-radius:14px;border:1px solid var(--line);background:#fff;font-size:1.25rem;cursor:pointer}

.input
{width:100%;min-height:42px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px 13px;color:var(--text);outline:none;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.input:hover
{border-color:var(--line-strong)}.input:focus
{border-color:#8adf52;box-shadow:0 0 0 4px rgba(81,195,3,.12)}.input--select,select.input
{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#64748b 50%),linear-gradient(135deg,#64748b 50%,transparent 50%);background-position:calc(100% - 18px) calc(50% - 3px),calc(100% - 12px) calc(50% - 3px);background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:38px}.input--date,input[type="date"].input
{color-scheme:light;padding-right:12px;background:#fff}.input--date::-webkit-calendar-picker-indicator
{cursor:pointer;border-radius:10px;padding:5px;background-color:#e8f2ff;filter:none}.field
{display:block;margin-bottom:14px}.field span
{display:block;font-weight:850;margin-bottom:7px;color:#334155}

.ajax-table-card
{display:block;overflow:hidden;padding:22px;border-color:#cfe0f2;box-shadow:var(--shadow)}
.table-toolbar
{display:grid;grid-template-columns:minmax(320px,1fr) 130px auto auto;gap:12px;align-items:end;margin-bottom:16px;padding:16px;border:1px solid #d4e4f5;border-radius:20px;background:linear-gradient(180deg,#ffffff,#f7fbff);box-shadow:0 10px 28px rgba(15,23,42,.04)}
.table-toolbar span,.filter-field span
{display:block;font-size:.72rem;font-weight:950;color:#607086;margin-bottom:7px;text-transform:uppercase;letter-spacing:.105em}.toolbar-search,.toolbar-per-page
{display:block}.filters-grid
{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:12px;margin:0 0 16px;padding:16px;border:1px solid #d4e4f5;border-radius:20px;background:linear-gradient(180deg,#f8fbff,#f3f8fe)}.filters-grid[hidden]
{display:none!important}.filter-field
{min-width:0}.range-inputs
{display:grid;grid-template-columns:1fr 1fr;gap:8px}.table-status
{display:inline-flex;align-items:center;gap:8px;font-size:.9rem;color:var(--muted);margin:0 0 12px;font-weight:700}.table-status:before
{content:"";width:8px;height:8px;border-radius:999px;background:var(--brand-2);box-shadow:0 0 0 4px rgba(15,118,110,.12)}
.table-overview
{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 14px}.table-overview .table-status
{margin:0}.users-table-meta
{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin:0 0 14px}.table-record-count
{display:inline-flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid #d4e4f5;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f7fbff);box-shadow:0 10px 24px rgba(15,23,42,.05);white-space:nowrap}.table-record-count__icon
{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(180deg,#eaf4ff,#dcecff);color:#315f8a;box-shadow:inset 0 1px 0 rgba(255,255,255,.9);flex:0 0 auto}.table-record-count__icon svg
{display:block;width:18px;height:18px;fill:currentColor}.table-record-count__text
{display:inline-flex;align-items:baseline;gap:7px;color:#52657b}.table-record-count__text>span
{font-size:.72rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase;color:#6c8196}.table-record-count__text strong
{font-size:1.1rem;font-weight:950;color:#10213d;line-height:1}@media (max-width:760px){.table-overview,.users-table-meta{justify-content:flex-start}.table-record-count{padding:9px 12px}.table-record-count__icon{width:34px;height:34px}.table-record-count__icon svg{width:16px;height:16px}.table-record-count__text strong{font-size:1rem}}
.table-scroll-top
{display:block;overflow-x:auto;overflow-y:hidden;height:16px;margin:0 0 8px;scrollbar-gutter:stable;scrollbar-width:auto}.table-scroll-top[hidden]
{display:none!important}.table-scroll-top__rail
{height:1px;min-height:1px;pointer-events:none}.table-scroll,.autoconsumo-detail-table-wrap
{overflow:auto}.table-wrap
{overflow:auto;border:1px solid #cfe0f2;border-radius:20px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}.table
{width:100%;border-collapse:separate;border-spacing:0;min-width:980px;background:transparent}.table th,.table td
{padding:14px 15px;border-bottom:1px solid #e9f0f7;text-align:left;vertical-align:middle}.table th
{position:sticky;top:0;z-index:1;background:#edf5ff;font-size:.73rem;color:#52657b;text-transform:uppercase;letter-spacing:.085em;white-space:nowrap;font-weight:950}.table tbody tr
{transition:background .13s ease}.table tbody tr:hover
{background:#f4f9ff}.table tr:last-child td
{border-bottom:0}.table td strong
{font-weight:900;color:#10213d}.table td:first-child,.table th:first-child
{padding-left:18px}.table td:last-child,.table th:last-child
{padding-right:18px}.th-sort
{appearance:none;border:0;background:transparent;padding:0;display:inline-flex;align-items:center;gap:7px;font:inherit;font-weight:950;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.th-sort span
{font-size:.82rem;color:#8497ad}.badge
{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:.82rem;font-weight:900;background:#e8f2ff;color:#164187;border:1px solid #cfe2f7}.row-actions
{display:flex;justify-content:flex-end;gap:8px}.table-link
{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:999px;background:#e8f2ff;color:#164187;font-weight:950;border:1px solid #cfe2f7;transition:background .16s ease,transform .16s ease,box-shadow .16s ease}.table-link:hover
{background:#dcecff;transform:translateY(-1px);box-shadow:0 8px 18px rgba(81,195,3,.10)}.table-link--cups
{background:#ecfdf5;color:#0f766e;border-color:#bfe8d3}.table-link--cups:hover
{background:#dcfce7;box-shadow:0 8px 18px rgba(15,118,110,.10)}.table-link--supply
{background:#eef6ff;color:#0f4c81;border-color:#c8ddf5}.table-link--supply:hover
{background:#e1efff;box-shadow:0 8px 18px rgba(15,76,129,.10)}.icon-wallet,.icon-cups,.icon-supply
{display:inline-grid;place-items:center;width:17px;height:17px}.icon-wallet:before
{content:"↗";font-style:normal;font-size:.82rem;line-height:1}.icon-cups:before
{content:"⎋";font-style:normal;font-size:.88rem;line-height:1}.icon-supply:before
{content:"🔌";font-style:normal;font-size:.92rem;line-height:1}.h5,.text-info,.mr-1
{font:inherit;color:inherit;margin:0}.text-secondary
{color:inherit}
.pagination-bar
{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}.pagination-info
{color:var(--muted);font-size:.92rem;font-weight:700}.pagination-actions
{display:flex;align-items:center;gap:8px}.pagination-current
{min-width:76px;text-align:center;color:#334155;font-weight:900}.empty-row
{text-align:center;padding:28px;color:var(--muted);font-weight:800}.api-error
{padding:14px 16px;border-radius:16px;background:rgba(185,28,28,.08);border:1px solid rgba(185,28,28,.22);color:#991b1b;line-height:1.45;word-break:break-word}.empty-state
{text-align:center;max-width:820px;margin:auto;padding:34px}.empty-state__icon
{width:58px;height:58px;margin:0 auto 14px;border-radius:20px;display:grid;place-items:center;background:#e8f2ff;color:#164187;font-weight:950}.empty-state h2
{margin:0;font-size:1.55rem;letter-spacing:-.04em}.empty-state p
{margin:.65rem auto 0;max-width:600px}.empty-state__actions
{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:18px}

.checklist
{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.checklist>div
{padding:14px 15px;border:1px solid var(--line);border-radius:16px;background:#f8fbff}.checklist strong
{display:block;font-weight:950}.checklist span
{display:block;margin-top:3px;color:var(--muted)}

/* Ficha cliente */
.back-link
{display:inline-flex;align-items:center;gap:8px;margin-bottom:18px;color:#164187;font-weight:950}.client-hero
{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:20px;overflow:hidden;position:relative;background:linear-gradient(135deg,#ffffff,#eff7ff);border-color:#b8d5f7;box-shadow:var(--shadow)}.client-hero:after
{content:"";position:absolute;right:-60px;bottom:-110px;width:260px;height:260px;border-radius:999px;background:linear-gradient(135deg,rgba(81,195,3,.13),rgba(15,118,110,.14));pointer-events:none}.client-hero__main,.client-hero__side
{position:relative;z-index:1}.client-identity
{display:flex;align-items:center;gap:18px}.client-avatar
{width:72px;height:72px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#51c303 70%,#0891b2);color:#fff;font-size:1.45rem;font-weight:950;letter-spacing:-.08em;box-shadow:0 18px 42px rgba(81,195,3,.22)}.client-hero h2
{margin:0;font-size:1.9rem;letter-spacing:-.055em;line-height:1.08}.client-hero p
{margin:.45rem 0 0;color:var(--muted)}.client-hero__side
{min-width:190px;text-align:right;display:grid;justify-items:end;gap:6px}.client-hero__side strong
{font-size:1.2rem;letter-spacing:-.025em}.client-hero__side small
{color:var(--muted);font-weight:850}.status-pill
{display:inline-flex;align-items:center;border-radius:999px;padding:7px 11px;font-size:.8rem;font-weight:950;border:1px solid #dce6f2;background:#f8fafc;color:#475569}.status-pill--ok
{background:var(--ok-soft);border-color:#b8ead1;color:var(--ok)}.status-pill--muted
{background:#f1f5f9;color:#64748b}.client-grid
{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:18px}.info-card
{min-width:0}.info-card--wide
{grid-column:1 / -1}.section-title
{display:flex;gap:13px;align-items:flex-start;margin-bottom:18px}.section-title>span
{width:38px;height:38px;display:grid;place-items:center;border-radius:14px;background:#e8f2ff;color:#164187;font-weight:950;border:1px solid #cfe2f7}.section-title h3
{margin:0;font-size:1.18rem;letter-spacing:-.035em}.section-title p
{margin:.22rem 0 0;color:var(--muted)}.info-grid
{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.info-list
{display:grid;gap:10px}.info-item
{min-width:0;padding:13px 14px;border:1px solid #dce6f2;border-radius:16px;background:linear-gradient(180deg,#fff,#f8fbff)}.info-item span
{display:block;color:#607086;font-size:.73rem;font-weight:950;text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}.info-item strong
{display:block;color:#0f172a;font-size:.98rem;line-height:1.35;word-break:break-word}.info-item--large
{grid-column:span 2}.note-box
{padding:16px 17px;border-radius:18px;background:#f8fbff;border:1px solid #dce6f2;color:#334155;line-height:1.6;white-space:normal}

.toast-area
{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:10px}.toast
{max-width:min(420px,calc(100vw - 32px));padding:13px 15px;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);font-weight:800}.toast.is-success
{border-color:#bbf7d0;background:#f0fdf4;color:#047857}.toast.is-error
{border-color:#fecaca;background:#fff1f2;color:#991b1b}

.modal[hidden]
{display:none}.modal
{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px}.modal__backdrop
{position:absolute;inset:0;background:rgba(15,23,42,.46);backdrop-filter:blur(4px)}.modal__dialog
{position:relative;width:min(720px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border-radius:24px;box-shadow:var(--shadow-strong);border:1px solid var(--line)}.modal__header,.modal__footer
{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 20px;border-bottom:1px solid var(--line)}.modal__footer
{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-end}.modal__header h3
{margin:0;font-size:1.18rem}.modal__body
{padding:20px}

@media(max-width:1180px)
{.grid--3
{grid-template-columns:repeat(2,minmax(0,1fr))}.filters-grid
{grid-template-columns:repeat(2,minmax(180px,1fr))}.client-grid
{grid-template-columns:1fr}.info-grid
{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px)
{.app-shell
{display:block}.sidebar
{position:fixed;left:-310px;width:286px;transition:left .22s ease}.sidebar.is-open
{left:0}.sidebar-toggle
{display:inline-flex}.content
{padding:20px}.topbar
{padding:13px 18px}.table-toolbar
{grid-template-columns:1fr 120px}.table-toolbar .btn
{width:100%}}
@media(max-width:720px)
{.grid--3,.checklist
{grid-template-columns:1fr}.filters-grid,.table-toolbar
{grid-template-columns:1fr}.pagination-bar
{align-items:stretch;flex-direction:column}.pagination-actions
{justify-content:space-between}.pagination-actions .btn
{flex:1}.range-inputs
{grid-template-columns:1fr}.topbar h1
{font-size:.98rem}.content
{padding:14px}.card,.hero-card
{border-radius:20px;padding:17px}.page-card-header
{margin:-17px -17px 18px;padding:18px}.hero-card
{flex-direction:column;align-items:flex-start}.hero-card__stat
{width:100%}.client-hero
{align-items:stretch;flex-direction:column}.client-hero__side
{text-align:left;justify-items:start}.client-identity
{align-items:flex-start}.client-avatar
{width:58px;height:58px;border-radius:19px}.client-hero h2
{font-size:1.45rem}.info-grid
{grid-template-columns:1fr}.info-item--large
{grid-column:auto}}

/* Dashboard administrativo */
.dashboard-hero
{
  position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:24px;
  margin-bottom:20px;padding:28px;border-radius:28px;border:1px solid #d6e3f2;
  background:
    radial-gradient(620px 240px at 8% 0%,rgba(34,196,232,.13),transparent 62%),
    radial-gradient(520px 220px at 100% 0%,rgba(247,183,49,.14),transparent 58%),
    linear-gradient(135deg,#ffffff 0%,#f7fbff 58%,#f3f8ff 100%);
  box-shadow:0 18px 44px rgba(15,23,42,.08);
  color:#0f172a;
}
.dashboard-hero:before
{
  content:"";position:absolute;right:-72px;top:-96px;width:260px;height:260px;border-radius:999px;
  border:34px solid rgba(81,195,3,.06);pointer-events:none;
}
.dashboard-hero:after
{
  content:"";position:absolute;left:-70px;bottom:-110px;width:230px;height:230px;border-radius:999px;
  background:rgba(34,196,232,.07);pointer-events:none;
}
.dashboard-hero__content,.dashboard-hero__actions
{position:relative;z-index:1}
.dashboard-hero .eyebrow
{color:#24567f}.dashboard-hero .eyebrow:before
{background:linear-gradient(135deg,#22c4e8,#f7b731)}
.dashboard-hero h2
{margin:9px 0 8px;font-size:clamp(2rem,3.4vw,3.15rem);line-height:1;letter-spacing:-.065em;color:#102033}
.dashboard-hero p
{margin:0;color:#617187;font-size:1rem;font-weight:750}
.dashboard-hero__actions
{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.dashboard-grid
{display:grid;gap:18px}
.dashboard-grid--modules
{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:18px}
.dashboard-module
{
  position:relative;overflow:hidden;min-height:230px;padding:24px;border-radius:26px;
  background:rgba(255,255,255,.96);border:1px solid #dbe6f2;box-shadow:var(--shadow-soft);
  display:flex;flex-direction:column;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.dashboard-module:hover
{transform:translateY(-2px);box-shadow:0 22px 54px rgba(15,23,42,.10);border-color:#bed3e8}
.dashboard-module:after
{content:"";position:absolute;right:-70px;top:-88px;width:210px;height:210px;border-radius:999px;background:#edf7ff;pointer-events:none}
.dashboard-module--cyan:after
{background:#e8fbff}.dashboard-module--teal:after
{background:#e7f8f5}
.dashboard-module__top
{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.dashboard-module__icon
{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;background:#edf6ff;border:1px solid #cfe2f7;font-size:1.28rem}
.dashboard-module--cyan .dashboard-module__icon
{background:#e8fbff;border-color:#baeefa}.dashboard-module--teal .dashboard-module__icon
{background:#e7f8f5;border-color:#bfe8e0}
.dashboard-module__tag
{font-size:.72rem;font-weight:950;text-transform:uppercase;letter-spacing:.10em;color:#64748b}
.dashboard-module h3
{position:relative;z-index:1;margin:0;font-size:1.55rem;letter-spacing:-.05em;color:#102033}
.dashboard-module p
{position:relative;z-index:1;margin:10px 0 22px;color:#607086;line-height:1.55;max-width:660px;font-weight:650}
.dashboard-module__link
{
  position:relative;z-index:1;margin-top:auto;display:inline-flex;align-items:center;gap:8px;width:max-content;max-width:100%;
  padding:11px 14px;border-radius:14px;background:#51c303;color:#fff;font-weight:950;box-shadow:0 14px 26px rgba(81,195,3,.18);
}
.dashboard-module--cyan .dashboard-module__link
{background:#0284c7;box-shadow:0 14px 26px rgba(2,132,199,.17)}
.dashboard-module--teal .dashboard-module__link
{background:#0f766e;box-shadow:0 14px 26px rgba(15,118,110,.17)}
.dashboard-module__link span
{transition:transform .18s ease}.dashboard-module__link:hover span
{transform:translateX(3px)}
.dashboard-strip
{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;
  padding:14px;border-radius:24px;border:1px solid #dbe6f2;background:rgba(255,255,255,.74);box-shadow:var(--shadow-soft);
}
.dashboard-strip__item
{min-width:0;padding:15px 16px;border-radius:18px;background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #e1e9f3}
.dashboard-strip__item span
{display:block;color:#718096;font-size:.72rem;font-weight:950;text-transform:uppercase;letter-spacing:.09em;margin-bottom:5px}
.dashboard-strip__item strong
{display:block;color:#132338;font-size:1rem;letter-spacing:-.02em}
@media(max-width:1180px)
{.dashboard-hero
{align-items:flex-start;flex-direction:column}.dashboard-hero__actions
{justify-content:flex-start}.dashboard-strip
{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px)
{.dashboard-hero
{padding:22px;border-radius:22px}.dashboard-grid--modules,.dashboard-strip
{grid-template-columns:1fr}.dashboard-hero__actions,.dashboard-hero__actions .btn
{width:100%}}

/* Dashboard de consumos */
.dashboard-intro
{
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px;
  padding:24px 26px;margin-bottom:20px;
  background:linear-gradient(135deg,#ffffff 0%,#f7fbff 100%);
  border:1px solid #d8e6f4;border-radius:24px;box-shadow:var(--shadow-soft);
}
.dashboard-intro__main h2
{margin:8px 0 10px;font-size:1.9rem;line-height:1.08;letter-spacing:-.05em}
.dashboard-intro__main p
{margin:0;color:var(--muted);max-width:880px;font-size:1rem;line-height:1.6}
.dashboard-intro__actions
{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}

.dashboard-kpis
{
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:20px;
}
.dashboard-kpis--with-centers
{
  grid-template-columns:repeat(6,minmax(0,1fr));
}
.dashboard-kpi-card
{
  background:rgba(255,255,255,.96);border:1px solid #d8e6f4;border-radius:22px;
  padding:18px 18px 16px;box-shadow:var(--shadow-soft);
}
.dashboard-kpi-card.is-featured
{
  background:linear-gradient(135deg,#edf6ff 0%,#ffffff 100%);
  border-color:#b8d5f7;
}
.dashboard-kpi-card__label
{
  display:block;color:#5a6f89;font-size:.76rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;
}
.dashboard-kpi-card strong
{
  display:block;margin-top:8px;font-size:1.7rem;line-height:1.1;letter-spacing:-.04em;color:#0f172a;
}
.dashboard-kpi-card small
{display:block;margin-top:8px;color:#6b7d93;line-height:1.45}

.dashboard-panels
{
  display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,.9fr);gap:18px;margin-bottom:20px;
}
.dashboard-panel
{padding:22px}
.dashboard-panel__header
{margin-bottom:18px}
.dashboard-panel__meta
{color:#6b7d93;font-size:.88rem;font-weight:700}
.dashboard-panel--wide
{min-height:320px}
.dashboard-panel--side
{min-height:320px}

.bar-chart
{display:grid;gap:14px}
.bar-chart__row
{display:grid;gap:8px}
.bar-chart__head
{display:flex;align-items:center;justify-content:space-between;gap:14px}
.bar-chart__label
{font-weight:800;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70%}
.bar-chart__value
{font-size:.95rem;color:#274261}
.bar-chart__track
{height:12px;border-radius:999px;background:#edf3fa;overflow:hidden;border:1px solid #e1eaf4}
.bar-chart__fill
{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#51c303,#8ee45a)}
.bar-chart--compact .bar-chart__track
{height:10px}

.dashboard-split
{display:grid;gap:20px;align-items:center;justify-items:center;height:100%}
.donut-card
{display:grid;place-items:center;width:100%}
.donut-card__ring
{
  --percent:0%;
  width:190px;height:190px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(#51c303 0 var(--percent), #dfeaf7 var(--percent) 100%);
  position:relative;
}
.donut-card__ring:before
{
  content:"";position:absolute;inset:18px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px #e3edf8;
}
.donut-card__center
{position:relative;z-index:1;display:grid;place-items:center;text-align:center}
.donut-card__center strong
{font-size:2rem;letter-spacing:-.04em;color:#0f172a}
.donut-card__center span
{margin-top:4px;color:#6b7d93;font-weight:700}
.dashboard-split__legend
{display:grid;gap:12px;width:100%}
.dashboard-split__legend > div
{
  display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;
  padding:12px 14px;border:1px solid #dde8f4;border-radius:16px;background:#fafcff;
}
.legend-dot
{width:10px;height:10px;border-radius:999px;display:inline-block}
.legend-dot--brand
{background:#51c303}
.legend-dot--soft
{background:#cfe0f3}
.dashboard-split__legend strong
{color:#0f172a}
.dashboard-split__legend span:nth-child(2)
{color:#52657e;font-weight:700}

.mini-columns
{
  display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:end;height:100%;min-height:235px;
}
.mini-columns__item
{
  height:100%;display:grid;grid-template-rows:minmax(160px,1fr) auto auto;gap:10px;align-items:end;justify-items:center;
}
.mini-columns__bar-wrap
{
  width:100%;height:100%;display:flex;align-items:flex-end;justify-content:center;padding:0 8px;
}
.mini-columns__bar
{
  width:100%;max-width:48px;border-radius:16px 16px 10px 10px;display:block;
  background:linear-gradient(180deg,#8adf52,#51c303);
  box-shadow:0 12px 24px rgba(81,195,3,.16);
}
.mini-columns__item strong
{font-size:1rem;color:#0f172a}
.mini-columns__item span
{text-align:center;color:#62758d;font-size:.84rem;line-height:1.35}

.dashboard-links
{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.dashboard-link-card
{
  display:block;padding:18px 20px;border-radius:20px;border:1px solid #d8e6f4;background:#fff;box-shadow:var(--shadow-soft);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.dashboard-link-card:hover
{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#bdd7f3}
.dashboard-link-card__tag
{display:inline-flex;align-items:center;gap:8px;color:#0f4c81;font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.dashboard-link-card__tag:before
{content:"";width:8px;height:8px;border-radius:999px;background:#51c303}
.dashboard-link-card strong
{display:block;margin-top:10px;font-size:1.2rem;letter-spacing:-.03em}
.dashboard-link-card p
{margin:7px 0 0;color:var(--muted);line-height:1.55}

@media(max-width:1280px)
{
  .dashboard-kpis
  {grid-template-columns:repeat(3,minmax(0,1fr))}
  .dashboard-panels
  {grid-template-columns:1fr}
}
@media(max-width:900px)
{
  .dashboard-intro
  {flex-direction:column}
  .dashboard-intro__actions
  {justify-content:flex-start}
  .dashboard-kpis
  {grid-template-columns:repeat(2,minmax(0,1fr))}
  .mini-columns
  {grid-template-columns:repeat(3,minmax(0,1fr));min-height:auto}
}
@media(max-width:720px)
{
  .dashboard-intro
  {padding:18px}
  .dashboard-intro__main h2
  {font-size:1.5rem}
  .dashboard-kpis,.dashboard-links
  {grid-template-columns:1fr}
  .dashboard-panel
  {padding:18px}
  .bar-chart__head
  {align-items:flex-start;flex-direction:column}
  .bar-chart__label
  {max-width:100%}
  .mini-columns
  {grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Ajustes dashboard consumos: etiquetas de medición y alineación */
.dashboard-panel__header
{
  align-items:flex-start;
  min-height:86px;
}
.dashboard-measure
{
  margin:6px 0 0;
  color:#64748b;
  font-size:.9rem;
  line-height:1.45;
  max-width:720px;
}
.chart-axis-label
{
  display:flex;
  align-items:center;
  gap:8px;
  margin:-2px 0 14px;
  color:#334155;
  font-size:.84rem;
  font-weight:900;
  letter-spacing:.02em;
}
.chart-axis-label:before
{
  content:"";
  width:20px;
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg,#51c303,#8ee45a);
}
.dashboard-panel--wide,
.dashboard-panel--side
{
  display:flex;
  flex-direction:column;
}
.dashboard-panel .bar-chart,
.dashboard-panel .mini-columns,
.dashboard-panel .dashboard-split
{
  flex:1;
}
.dashboard-panel__meta
{
  white-space:nowrap;
  padding-top:4px;
}
@media(max-width:720px)
{
  .dashboard-panel__header
  {min-height:auto;flex-direction:column}
  .dashboard-panel__meta
  {white-space:normal;padding-top:0}
}


/* Ajuste de rankings con contratos/CUPS: evita desbordes de etiquetas largas */
.dashboard-panel,
.dashboard-panel__header,
.dashboard-panel__header > div,
.dashboard-panel .bar-chart,
.bar-chart,
.bar-chart__row,
.bar-chart__head,
.bar-chart__text,
.bar-chart__track
{
  min-width:0;
}
.dashboard-panel
{
  overflow:hidden;
}
.bar-chart__head
{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  column-gap:14px;
  row-gap:4px;
}
.bar-chart__text
{
  display:grid;
  gap:3px;
  min-width:0;
}
.bar-chart__label,
.bar-chart__detail
{
  display:block;
  min-width:0;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.bar-chart__label
{
  max-width:100%;
}
.bar-chart__detail
{
  color:#64748b;
  font-size:.78rem;
  font-weight:700;
  line-height:1.25;
}
.bar-chart__value
{
  justify-self:end;
  text-align:right;
  white-space:nowrap;
}
.bar-chart__track
{
  width:100%;
  max-width:100%;
}
@media(max-width:720px)
{
  .bar-chart__head
  {
    grid-template-columns:1fr;
  }
  .bar-chart__value
  {
    justify-self:start;
    text-align:left;
  }
}

/* Autocomplete genérico para buscadores y filtros */
.autocomplete-panel
{position:absolute;z-index:9999;display:grid;gap:6px;padding:8px;border:1px solid #d8e6f4;border-radius:16px;background:#fff;box-shadow:0 18px 45px rgba(15,23,42,.16);max-height:320px;overflow:auto}
.autocomplete-panel[hidden]
{display:none}
.autocomplete-item
{width:100%;border:0;border-radius:12px;background:#f8fbff;padding:10px 12px;text-align:left;cursor:pointer;display:grid;gap:3px;color:#0f172a}
.autocomplete-item:hover,.autocomplete-item:focus,.autocomplete-item.is-active
{outline:none;background:#eaf3ff}
.autocomplete-item strong
{font-size:.92rem;line-height:1.25;font-weight:900}
.autocomplete-item span
{color:#64748b;font-size:.78rem;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Selects y calendarios custom: cambia el desplegable real, no solo el campo */
.native-control-hidden
{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  opacity:0!important;
  pointer-events:none!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
}
.ui-select,
.ui-date
{
  position:relative;
  width:100%;
  min-width:0;
}
.ui-select__button,
.ui-date__button
{
  width:100%;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border:1px solid #cfddeb;
  border-radius:15px;
  background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);
  color:#102033;
  padding:10px 12px 10px 14px;
  cursor:pointer;
  text-align:left;
  box-shadow:0 8px 20px rgba(15,23,42,.045);
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease,transform .16s ease;
}
.ui-select__button:hover,
.ui-date__button:hover
{
  border-color:#abc4df;
  background:linear-gradient(180deg,#ffffff 0%,#f2f7ff 100%);
}
.ui-select__button:focus-visible,
.ui-date__button:focus-visible
{
  outline:none;
  border-color:#8adf52;
  box-shadow:0 0 0 4px rgba(81,195,3,.13),0 12px 26px rgba(15,23,42,.07);
}
.ui-select.is-open .ui-select__button
{
  border-color:#8adf52;
  box-shadow:0 0 0 4px rgba(81,195,3,.11),0 14px 30px rgba(15,23,42,.08);
}
.ui-select__value,
.ui-date__value
{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:800;
  color:#172033;
}
.ui-date:not(.has-value) .ui-date__value
{
  color:#7b8ca2;
}
.ui-select__chevron
{
  width:30px;
  height:30px;
  flex:0 0 auto;
  border-radius:11px;
  background:#eaf3ff;
  border:1px solid #d2e4f7;
  position:relative;
}
.ui-select__chevron:before,
.ui-select__chevron:after
{
  content:"";
  position:absolute;
  top:13px;
  width:8px;
  height:2px;
  border-radius:999px;
  background:#255c99;
  transition:transform .16s ease;
}
.ui-select__chevron:before
{left:8px;transform:rotate(45deg)}
.ui-select__chevron:after
{right:8px;transform:rotate(-45deg)}
.ui-select.is-open .ui-select__chevron:before
{transform:rotate(-45deg)}
.ui-select.is-open .ui-select__chevron:after
{transform:rotate(45deg)}
.ui-date__icon
{
  width:30px;
  height:30px;
  flex:0 0 auto;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:#eaf3ff;
  border:1px solid #d2e4f7;
  color:#255c99;
  font-weight:950;
  line-height:1;
}
.ui-select__panel
{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 8px);
  z-index:9998;
  display:grid;
  gap:6px;
  max-height:292px;
  overflow:auto;
  padding:8px;
  border:1px solid #c8d9eb;
  border-radius:18px;
  background:#ffffff;
  box-shadow:0 24px 60px rgba(15,23,42,.17);
}
.ui-select__panel[hidden]
{display:none}
.ui-select__option
{
  width:100%;
  border:0;
  border-radius:13px;
  background:transparent;
  color:#172033;
  padding:10px 11px;
  cursor:pointer;
  text-align:left;
  font-weight:800;
  line-height:1.25;
  transition:background .14s ease,color .14s ease,transform .14s ease;
}
.ui-select__option:hover,
.ui-select__option:focus-visible
{
  outline:none;
  background:#edf6ff;
  color:#0f3d75;
}
.ui-select__option.is-selected
{
  background:linear-gradient(135deg,#51c303,#0284c7);
  color:#ffffff;
  box-shadow:0 10px 22px rgba(81,195,3,.18);
}
.ui-select__option.is-placeholder:not(.is-selected)
{
  color:#7b8ca2;
}
.ui-select__option:disabled
{
  opacity:.48;
  cursor:not-allowed;
}
.ui-calendar
{
  position:fixed;
  z-index:10020;
  width:292px;
  max-height:calc(100vh - 24px);
  overflow:auto;
  min-height:0;
  padding:12px;
  border:1px solid #c8d9eb;
  border-radius:22px;
  background:#ffffff;
  box-shadow:0 28px 70px rgba(15,23,42,.20);
}
.ui-calendar[hidden]
{display:none}
.ui-calendar__header
{
  display:grid;
  grid-template-columns:38px 1fr 38px;
  align-items:center;
  gap:8px;
  margin-bottom:12px;
}
.ui-calendar__header strong
{
  text-align:center;
  color:#102033;
  text-transform:capitalize;
  font-size:.98rem;
  font-weight:950;
}
.ui-calendar__nav
{
  width:38px;
  height:38px;
  border:1px solid #d7e5f4;
  border-radius:14px;
  background:#f6faff;
  color:#164187;
  font-size:1.5rem;
  line-height:1;
  cursor:pointer;
  transition:background .14s ease,border-color .14s ease,transform .14s ease;
}
.ui-calendar__nav:hover
{
  background:#eaf3ff;
  border-color:#b9d2ee;
}
.ui-calendar__weekdays,
.ui-calendar__grid
{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:5px;
}
.ui-calendar__weekdays
{
  margin-bottom:6px;
}
.ui-calendar__weekdays span
{
  display:grid;
  place-items:center;
  height:24px;
  color:#65768c;
  font-size:.72rem;
  font-weight:950;
}
.ui-calendar__blank
{
  height:36px;
}
.ui-calendar__day
{
  height:36px;
  border:1px solid transparent;
  border-radius:13px;
  background:#f8fbff;
  color:#172033;
  cursor:pointer;
  font-weight:850;
  transition:background .14s ease,color .14s ease,border-color .14s ease,box-shadow .14s ease;
}
.ui-calendar__day:hover
{
  background:#eaf3ff;
  border-color:#c7ddf4;
  color:#0f3d75;
}
.ui-calendar__day.is-today
{
  border-color:#93c5fd;
  background:#eff6ff;
}
.ui-calendar__day.is-selected
{
  background:linear-gradient(135deg,#51c303,#0284c7);
  border-color:#51c303;
  color:#fff;
  box-shadow:0 10px 20px rgba(81,195,3,.20);
}
.ui-calendar__day:disabled
{
  opacity:.35;
  cursor:not-allowed;
  background:#f3f6fa;
}
.ui-calendar__footer
{
  position:sticky;
  bottom:-1px;
  z-index:2;
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-top:12px;
  padding-top:10px;
  border-top:1px solid #e4edf7;
  background:#ffffff;
}
.ui-calendar__clear,
.ui-calendar__today
{
  min-height:36px;
  border:1px solid #d7e5f4;
  border-radius:13px;
  background:#f8fbff;
  color:#164187;
  padding:8px 11px;
  cursor:pointer;
  font-weight:900;
}
.ui-calendar__today
{
  background:#51c303;
  border-color:#51c303;
  color:#fff;
}
.ui-calendar__clear:hover,
.ui-calendar__today:hover
{
  filter:brightness(.98);
}
.filter-field .ui-select,
.filter-field .ui-date,
.toolbar-per-page .ui-select
{
  margin-top:0;
}
.range-inputs .ui-date
{
  min-width:0;
}
@media(max-width:720px)
{
  .ui-calendar
  {
    width:calc(100vw - 24px)!important;
    left:12px!important;
    right:12px!important;
  }
}


/* ==========================================================
   V17 - Selects y calendario: estilo sobrio y compacto
   Corrige el desplegable custom anterior: menos azul, menos sombra,
   opciones más legibles y mejor alineación general.
   ========================================================== */
.ui-select,
.ui-date
{
  width:100%;
  min-width:0;
}
.ui-select .native-control-hidden,
.ui-date .native-control-hidden
{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important;
  pointer-events:none!important;
  overflow:hidden!important;
}
.ui-select__button,
.ui-date__button
{
  min-height:42px;
  height:42px;
  border:1px solid #d7e2ee;
  border-radius:13px;
  background:#ffffff;
  color:#122033;
  padding:0 10px 0 13px;
  box-shadow:none;
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
.ui-select__button:hover,
.ui-date__button:hover
{
  border-color:#b8c9dc;
  background:#fbfdff;
}
.ui-select__button:focus-visible,
.ui-date__button:focus-visible,
.ui-select.is-open .ui-select__button
{
  border-color:#2563eb;
  box-shadow:0 0 0 3px rgba(37,99,235,.10);
  background:#ffffff;
}
.ui-select__value,
.ui-date__value
{
  font-size:.92rem;
  font-weight:750;
  letter-spacing:0;
  color:#243246;
  text-transform:none;
}
.ui-select__chevron,
.ui-date__icon
{
  width:28px;
  height:28px;
  border-radius:10px;
  background:#f3f7fb;
  border:1px solid #dce7f2;
  color:#315a8b;
}
.ui-select__chevron:before,
.ui-select__chevron:after
{
  top:12px;
  width:7px;
  height:2px;
  background:#4d6580;
}
.ui-select__chevron:before
{left:7px}
.ui-select__chevron:after
{right:7px}
.ui-select__panel
{
  top:calc(100% + 5px);
  z-index:10030;
  display:block;
  max-height:238px;
  overflow:auto;
  padding:5px;
  border:1px solid #d6e1ed;
  border-radius:14px;
  background:#ffffff;
  box-shadow:0 16px 36px rgba(15,23,42,.12);
}
.ui-select:not(.is-open) .ui-select__panel,
.ui-select__panel[hidden]
{
  display:none!important;
}
.ui-select__option
{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  min-height:36px;
  border-radius:10px;
  padding:8px 34px 8px 10px;
  color:#243246;
  font-size:.9rem;
  font-weight:700;
  letter-spacing:0;
  text-transform:none;
  background:transparent;
  box-shadow:none;
}
.ui-select__option:hover,
.ui-select__option:focus-visible
{
  background:#f3f7fc;
  color:#102033;
  transform:none;
}
.ui-select__option.is-selected
{
  background:#eaf2ff;
  color:#174184;
  box-shadow:none;
}
.ui-select__option.is-selected:after
{
  content:"✓";
  position:absolute;
  right:11px;
  top:50%;
  transform:translateY(-50%);
  width:18px;
  height:18px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:#2563eb;
  color:#ffffff;
  font-size:.72rem;
  font-weight:900;
  line-height:1;
}
.ui-select__option.is-placeholder:not(.is-selected)
{
  color:#64748b;
}
.ui-select__option:disabled
{
  opacity:.45;
  cursor:not-allowed;
}
.toolbar-per-page .ui-select__button
{
  width:100%;
}
.filter-field .ui-select__panel
{
  min-width:100%;
}
.range-inputs .ui-date__button
{
  padding-left:10px;
}
.ui-date__icon
{
  font-size:0;
}
.ui-date__icon:before
{
  content:"";
  width:14px;
  height:14px;
  border-radius:3px;
  border:2px solid #4d6580;
  border-top-width:4px;
  display:block;
}
.ui-calendar
{
  z-index:10040;
  width:286px;
  min-height:auto;
  padding:10px;
  border:1px solid #d6e1ed;
  border-radius:16px;
  background:#ffffff;
  box-shadow:0 18px 42px rgba(15,23,42,.14);
}
.ui-calendar__header
{
  grid-template-columns:34px 1fr 34px;
  gap:7px;
  margin-bottom:10px;
}
.ui-calendar__header strong
{
  font-size:.92rem;
  font-weight:850;
  color:#122033;
}
.ui-calendar__nav
{
  width:34px;
  height:34px;
  border-radius:11px;
  background:#f6f9fc;
  color:#315a8b;
  font-size:1.25rem;
}
.ui-calendar__nav:hover
{
  background:#edf4fb;
  border-color:#c4d3e3;
}
.ui-calendar__weekdays,
.ui-calendar__grid
{
  gap:4px;
}
.ui-calendar__weekdays span
{
  height:22px;
  color:#718096;
  font-size:.68rem;
  font-weight:850;
}
.ui-calendar__blank,
.ui-calendar__day
{
  height:34px;
}
.ui-calendar__day
{
  border-radius:10px;
  background:#ffffff;
  color:#243246;
  font-size:.86rem;
  font-weight:750;
}
.ui-calendar__day:hover
{
  background:#f3f7fc;
  border-color:#d6e1ed;
  color:#102033;
}
.ui-calendar__day.is-today
{
  background:#f8fbff;
  border-color:#9fb8d2;
}
.ui-calendar__day.is-selected
{
  background:#2563eb;
  border-color:#2563eb;
  color:#ffffff;
  box-shadow:none;
}
.ui-calendar__footer
{
  margin-top:10px;
  padding-top:9px;
  border-top:1px solid #e6edf5;
}
.ui-calendar__clear,
.ui-calendar__today
{
  min-height:34px;
  border-radius:11px;
  padding:7px 10px;
  font-size:.86rem;
  font-weight:800;
}
.ui-calendar__today
{
  background:#2563eb;
  border-color:#2563eb;
}

@media(max-width:720px)
{
  .ui-select__panel
  {
    max-height:220px;
  }
}

/* ==========================================================
   V18 - Corrección visual fina: selects y filtros de fecha
   Menos peso visual, texto normal y fechas compactas.
   ========================================================== */
.ui-select__button,
.ui-date__button
{
  min-height:38px!important;
  height:38px!important;
  border-radius:11px!important;
  border-color:#d8e3ef!important;
  background:#ffffff!important;
  padding:0 8px 0 11px!important;
  box-shadow:none!important;
  gap:8px!important;
}
.ui-select__button:hover,
.ui-date__button:hover
{
  border-color:#bfcedf!important;
  background:#ffffff!important;
}
.ui-select__button:focus-visible,
.ui-date__button:focus-visible,
.ui-select.is-open .ui-select__button
{
  border-color:#7aa7d9!important;
  box-shadow:0 0 0 3px rgba(37,99,235,.08)!important;
}
.ui-select__value,
.ui-date__value
{
  font-size:.84rem!important;
  font-weight:650!important;
  line-height:1.15!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:#32445a!important;
}
.filter-field .ui-select__value,
.filter-field .ui-date__value,
.range-inputs .ui-date__value
{
  font-size:.80rem!important;
  font-weight:650!important;
  color:#52657c!important;
}
.ui-date.has-value .ui-date__value,
.filter-field .ui-date.has-value .ui-date__value
{
  color:#172033!important;
  font-weight:700!important;
}
.toolbar-per-page .ui-select__value
{
  font-size:.86rem!important;
  font-weight:700!important;
}
.ui-select__chevron
{
  width:24px!important;
  height:24px!important;
  border-radius:8px!important;
  background:#f7fafc!important;
  border-color:#d7e3ef!important;
}
.ui-select__chevron:before,
.ui-select__chevron:after
{
  top:11px!important;
  width:6px!important;
  height:2px!important;
  background:#5d7288!important;
}
.ui-select__chevron:before
{left:6px!important}
.ui-select__chevron:after
{right:6px!important}
.ui-date__icon
{
  width:18px!important;
  height:18px!important;
  flex:0 0 18px!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:#6a7d91!important;
  opacity:.9!important;
}
.ui-date__icon:before
{
  content:""!important;
  width:13px!important;
  height:13px!important;
  display:block!important;
  border:1.7px solid #6f8195!important;
  border-top-width:4px!important;
  border-radius:3px!important;
  background:transparent!important;
  box-sizing:border-box!important;
}
.range-inputs
{
  gap:7px!important;
}
.range-inputs .ui-date__button
{
  padding-left:10px!important;
  padding-right:8px!important;
}
.range-inputs .ui-date
{
  min-width:0!important;
}
.ui-select__panel
{
  top:calc(100% + 4px)!important;
  padding:4px!important;
  border-radius:12px!important;
  border-color:#d8e3ef!important;
  box-shadow:0 14px 32px rgba(15,23,42,.12)!important;
  max-height:222px!important;
}
.ui-select__option
{
  min-height:32px!important;
  border-radius:8px!important;
  padding:7px 30px 7px 10px!important;
  font-size:.84rem!important;
  font-weight:650!important;
  line-height:1.2!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:#2c3d52!important;
}
.ui-select__option:hover,
.ui-select__option:focus-visible
{
  background:#f3f7fb!important;
  color:#102033!important;
}
.ui-select__option.is-selected
{
  background:#eef5ff!important;
  color:#174184!important;
  box-shadow:none!important;
}
.ui-select__option.is-selected:after
{
  width:16px!important;
  height:16px!important;
  right:9px!important;
  background:#4d83c2!important;
  font-size:.66rem!important;
}
.ui-calendar
{
  width:274px!important;
  padding:9px!important;
  border-radius:14px!important;
  box-shadow:0 16px 38px rgba(15,23,42,.14)!important;
}
.ui-calendar__header
{
  grid-template-columns:30px 1fr 30px!important;
  gap:6px!important;
  margin-bottom:8px!important;
}
.ui-calendar__header strong
{
  font-size:.86rem!important;
  font-weight:800!important;
}
.ui-calendar__nav
{
  width:30px!important;
  height:30px!important;
  border-radius:9px!important;
  font-size:1.1rem!important;
}
.ui-calendar__weekdays,
.ui-calendar__grid
{
  gap:3px!important;
}
.ui-calendar__weekdays span
{
  height:20px!important;
  font-size:.64rem!important;
}
.ui-calendar__blank,
.ui-calendar__day
{
  height:30px!important;
}
.ui-calendar__day
{
  border-radius:8px!important;
  font-size:.78rem!important;
  font-weight:700!important;
}
.ui-calendar__footer
{
  margin-top:8px!important;
  padding-top:8px!important;
}
.ui-calendar__clear,
.ui-calendar__today
{
  min-height:31px!important;
  border-radius:9px!important;
  padding:6px 9px!important;
  font-size:.78rem!important;
  font-weight:750!important;
}
@media(max-width:720px)
{
  .ui-calendar
  {
    width:calc(100vw - 24px)!important;
  }
}


/* v20: selects restaurados + fechas limpias sin icono descuadrado */
.ui-date__icon
{display:none!important;}
.ui-date
{
  width:100%!important;
  min-width:0!important;
}
.ui-date .native-control-hidden
{
  position:absolute!important;
  opacity:0!important;
  pointer-events:none!important;
  width:1px!important;
  height:1px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}
.ui-date__button
{
  width:100%!important;
  min-height:42px!important;
  height:42px!important;
  padding:0 14px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:0!important;
  line-height:1!important;
}
.ui-date__value
{
  width:100%!important;
  height:100%!important;
  display:flex!important;
  align-items:center!important;
  line-height:1!important;
  font-size:.86rem!important;
  font-weight:750!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:#334155!important;
}
.ui-date:not(.has-value) .ui-date__value
{
  color:#6b7f96!important;
  font-weight:750!important;
}
.range-inputs
{
  align-items:start!important;
}
.range-inputs .ui-date,
.range-inputs .ui-date__button
{
  min-width:0!important;
}
.ui-select__button
{
  min-height:42px!important;
  height:42px!important;
  padding:0 10px 0 14px!important;
  align-items:center!important;
}
.ui-select__value
{
  font-size:.86rem!important;
  font-weight:750!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:#334155!important;
}
.filter-field .ui-select__value,
.toolbar-per-page .ui-select__value
{
  font-size:.86rem!important;
  font-weight:750!important;
}
.ui-select__panel
{
  border-radius:14px!important;
  padding:6px!important;
  box-shadow:0 16px 34px rgba(15,23,42,.12)!important;
}
.ui-select__option
{
  border-radius:10px!important;
  padding:9px 10px!important;
  font-size:.86rem!important;
  font-weight:750!important;
  text-transform:none!important;
  letter-spacing:0!important;
}


/* v21: calendario estable con cambio de mes/año */
.ui-calendar__header
{
  grid-template-columns:30px minmax(0,1fr) 30px!important;
  align-items:center!important;
}
.ui-calendar__title
{
  min-width:0!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 74px!important;
  gap:6px!important;
  align-items:center!important;
}
.ui-calendar__month,
.ui-calendar__year
{
  width:100%!important;
  height:30px!important;
  min-height:30px!important;
  border:1px solid #d9e4ef!important;
  border-radius:9px!important;
  background:#fff!important;
  color:#26374a!important;
  font-size:.76rem!important;
  font-weight:750!important;
  line-height:1!important;
  box-shadow:none!important;
  outline:none!important;
}
.ui-calendar__month
{
  padding:0 8px!important;
  text-transform:capitalize!important;
  appearance:auto!important;
}
.ui-calendar__year
{
  padding:0 5px!important;
  text-align:center!important;
  appearance:auto!important;
}
.ui-calendar__month:focus,
.ui-calendar__year:focus
{
  border-color:#8db3dd!important;
  box-shadow:0 0 0 3px rgba(37,99,235,.10)!important;
}
.ui-date__button
{
  align-items:center!important;
  min-height:40px!important;
  height:40px!important;
}
.ui-date__value
{
  display:flex!important;
  align-items:center!important;
  height:100%!important;
  line-height:1.2!important;
}


/* v22: centrar visualmente las fechas dentro del input */
.ui-date__button
{
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  padding:0 12px!important;
}
.ui-date__value
{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  width:100%!important;
  height:100%!important;
  line-height:1!important;
  padding-top:1px!important;
  transform:translateY(0)!important;
}
.range-inputs .ui-date__button,
.filter-field .ui-date__button
{
  justify-content:center!important;
}
.range-inputs .ui-date__value,
.filter-field .ui-date__value
{
  justify-content:center!important;
  text-align:center!important;
}


/* v23: bajar ligeramente el texto de fecha dentro del input */
.ui-date__value
{
  transform:translateY(2px)!important;
  padding-top:0!important;
}
.range-inputs .ui-date__value,
.filter-field .ui-date__value
{
  transform:translateY(2px)!important;
}


/* Mapa de CUPS por ayuntamiento */
.cups-map-card
{
  margin:0 0 20px;
  padding:20px;
  border:1px solid #d8e6f4;
  border-radius:24px;
  background:linear-gradient(135deg,#ffffff 0%,#f7fbff 100%);
  box-shadow:var(--shadow-soft);
}
.cups-map-card__header
{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px;
}
.cups-map-card__header h3
{
  margin:6px 0 8px;
  font-size:1.28rem;
  line-height:1.15;
  letter-spacing:-.03em;
  color:#102033;
}
.cups-map-card__header p
{
  margin:0;
  color:#5f7288;
}
.cups-map-card__legend
{
  display:flex;
  align-items:center;
  gap:10px;
  color:#35516f;
  font-weight:800;
  font-size:.82rem;
  white-space:nowrap;
}
.cups-map-card__tools
{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:10px;
}
.cups-map-zoom-toggle
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:38px;
  padding:8px 13px;
  border:1px solid #c9dbea;
  border-radius:12px;
  background:#fff;
  color:#234665;
  box-shadow:0 5px 14px rgba(15,23,42,.06);
  font:inherit;
  font-size:.82rem;
  font-weight:850;
  cursor:pointer;
  transition:border-color .18s ease,background-color .18s ease,color .18s ease,box-shadow .18s ease;
}
.cups-map-zoom-toggle:hover
{
  border-color:#8fb5d4;
  background:#f5faff;
  color:#123d62;
  box-shadow:0 7px 18px rgba(15,23,42,.10);
}
.cups-map-zoom-toggle:focus-visible
{
  outline:3px solid rgba(37,99,235,.24);
  outline-offset:2px;
}
.cups-map-zoom-toggle svg
{
  width:17px;
  height:17px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.cups-map-card.is-map-detailed .cups-map
{
  min-height:clamp(520px,60vh,580px);
}
.cups-map-card.is-map-detailed .cups-map__canvas
{
  height:clamp(520px,60vh,580px);
}
.dot
{display:inline-block;width:10px;height:10px;border-radius:999px;margin-right:8px;vertical-align:middle}
.dot--map
{background:#51c303;box-shadow:0 0 0 5px rgba(81,195,3,.10)}
.cups-map
{
  position:relative;
  z-index:0;
  isolation:isolate;
  min-height:440px;
  border-radius:22px;
  overflow:hidden;
  border:1px solid #dbe7f2;
  background:#eef5fb;
}
.cups-map__canvas
{
  width:100%;
  height:440px;
}
.cups-map .leaflet-pane,
.cups-map .leaflet-top,
.cups-map .leaflet-bottom
{
  z-index:auto!important;
}
.cups-map .leaflet-control-container
{
  position:relative;
  z-index:20!important;
}
.cups-map .leaflet-popup-pane
{
  z-index:40!important;
}
.cups-map .leaflet-marker-pane,
.cups-map .leaflet-tooltip-pane
{
  z-index:30!important;
}
.cups-map__overlay
{
  position:absolute;
  left:16px;
  top:16px;
  z-index:500;
  max-width:min(420px, calc(100% - 32px));
  padding:10px 14px;
  border-radius:14px;
  background:rgba(255,255,255,.94);
  color:#21364d;
  border:1px solid rgba(199,216,233,.92);
  box-shadow:0 8px 18px rgba(15,23,42,.10);
  font-weight:800;
}
.cups-map__overlay.is-error
{
  color:#8b1e1e;
  border-color:#f0c3c3;
  background:rgba(255,248,248,.97);
}
.cups-map__overlay.is-success
{
  color:#175f34;
  border-color:#bfe5cc;
  background:rgba(246,255,249,.96);
}
.cups-map__overlay.is-hidden
{
  opacity:0;
  visibility:hidden;
  transition:opacity .2s ease, visibility .2s ease;
}
.cups-map-popup
{
  display:grid;
  gap:6px;
  color:#21364d;
  line-height:1.45;
}
.cups-map-popup strong
{
  color:#102033;
  font-size:.95rem;
}
.cups-map-popup span
{
  color:#5f7288;
  font-weight:700;
}
.cups-map-popup__meta
{
  margin-top:4px;
  color:#6b7d93;
  font-size:.8rem;
  font-weight:700;
}
@media(max-width:900px)
{
  .cups-map-card__header
  {flex-direction:column;align-items:flex-start}
  .cups-map-card__tools
  {align-items:flex-start}
  .cups-map-card__legend
  {white-space:normal}
}
@media(max-width:720px)
{
  .cups-map-card
  {padding:16px;border-radius:20px}
  .cups-map,.cups-map__canvas
  {min-height:360px;height:360px}
  .cups-map-card.is-map-detailed .cups-map,
  .cups-map-card.is-map-detailed .cups-map__canvas
  {min-height:clamp(420px,58vh,470px);height:clamp(420px,58vh,470px)}
  .cups-map__overlay
  {left:12px;right:12px;max-width:none;top:12px;padding:9px 12px;font-size:.92rem}
}


.cups-map-card__legend[data-cups-map-legend]
{
  flex-wrap:wrap;
  justify-content:flex-end;
  max-width:620px;
}
.cups-map-card__legend[data-cups-map-legend] span
{
  display:inline-flex;
  align-items:center;
}
.cups-map-card__summary
{
  flex-basis:100%;
  justify-content:flex-end;
  color:#607086;
  font-weight:750;
}
.dot--luz
{background:#2563eb;box-shadow:0 0 0 5px rgba(37,99,235,.10)}
.dot--gas
{background:#f97316;box-shadow:0 0 0 5px rgba(249,115,22,.12)}
.dot--mixed
{background:linear-gradient(135deg,#2563eb 0 50%,#f97316 50% 100%);box-shadow:0 0 0 5px rgba(99,102,241,.10)}
.dot--unknown
{background:#64748b;box-shadow:0 0 0 5px rgba(100,116,139,.10)}
.cups-map-marker-wrap
{background:transparent;border:0}
.cups-map-marker
{
  position:relative;
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border-radius:999px 999px 999px 4px;
  transform:rotate(-45deg);
  border:3px solid #fff;
  box-shadow:0 10px 22px rgba(15,23,42,.24);
}
.cups-map-marker b
{
  transform:rotate(45deg);
  color:#fff;
  font-size:.74rem;
  line-height:1;
  font-weight:950;
}
.cups-map-marker--luz
{background:#2563eb}
.cups-map-marker--gas
{background:#f97316}
.cups-map-marker--mixed
{background:linear-gradient(135deg,#2563eb 0 50%,#f97316 50% 100%)}
.cups-map-marker--unknown
{background:#64748b}
.cups-map-popup__group
{
  display:grid;
  gap:3px;
  margin-bottom:8px;
  padding-bottom:8px;
  border-bottom:1px solid #e2eaf4;
}
.cups-map-popup__group strong
{
  color:#102033;
  font-size:1rem;
}
.cups-map-popup__group span
{
  color:#607086;
  font-weight:800;
}
@media(max-width:900px)
{
  .cups-map-card__legend[data-cups-map-legend]
  {justify-content:flex-start;max-width:none}
  .cups-map-card__summary
  {justify-content:flex-start}
}


/* Coordenadas manuales */
.coord-row-btn
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-width:154px;
  padding:8px 10px;
  white-space:nowrap;
  border:1px solid #cfe0f2;
  border-radius:999px;
  background:#fff;
  color:#31506f;
  font-weight:900;
  font-size:.78rem;
  cursor:pointer;
  box-shadow:0 8px 16px rgba(15,23,42,.05);
}
.coord-row-btn:hover
{transform:translateY(-1px);box-shadow:0 12px 22px rgba(15,23,42,.08)}
.coord-row-btn__dot
{width:9px;height:9px;border-radius:999px;background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.15)}
.coord-row-btn.has-coordinates
{border-color:#bfe5cc;background:#f6fff9;color:#17613a}
.coord-row-btn.has-coordinates .coord-row-btn__dot
{background:#16a34a;box-shadow:0 0 0 4px rgba(22,163,74,.14)}
.coord-row-btn.missing-coordinates
{border-color:#f2d3a8;background:#fffaf2;color:#8a5312}

.coord-modal[hidden]
{display:none!important}
.coord-modal
{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px}
.coord-modal__backdrop
{position:absolute;inset:0;background:rgba(15,23,42,.46);backdrop-filter:blur(5px)}
.coord-modal__dialog
{
  position:relative;z-index:1;width:min(680px,100%);border:1px solid #d7e4f3;border-radius:26px;
  background:linear-gradient(180deg,#ffffff,#f8fbff);box-shadow:0 28px 80px rgba(15,23,42,.28);overflow:hidden;
}
.coord-modal__header
{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px;border-bottom:1px solid #e1eaf4}
.coord-modal__header h3
{margin:6px 0 8px;font-size:1.35rem;letter-spacing:-.035em;color:#102033}
.coord-modal__header p
{margin:0;color:#607086;line-height:1.45;font-weight:700}
.coord-modal__body
{padding:22px 24px 18px}
.coord-modal__body .field
{margin-bottom:14px}
.coord-mode
{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 16px}
.coord-mode__btn
{min-height:40px;border:1px solid #d7e4f3;border-radius:13px;background:#fff;color:#36516d;font-weight:900;cursor:pointer}
.coord-mode__btn.is-active
{background:#e8f2ff;border-color:#9fc3ee;color:#174184;box-shadow:0 8px 18px rgba(81,195,3,.08)}
.coord-modal__map-panel
{display:grid;gap:9px;margin:0 0 14px}
.coord-modal__map-panel[hidden],.coord-modal__manual-panel[hidden]
{display:none!important}

.coord-modal__context-note
{margin:-4px 0 14px;padding:9px 12px;border:1px solid #dbe8f5;border-radius:13px;background:#f7fbff;color:#607086;font-size:.86rem;font-weight:800;line-height:1.35}
.coord-modal__context-note[hidden]
{display:none!important}
.coord-modal__mini-map
{position:relative;width:100%;height:280px;border:1px solid #d7e4f3;border-radius:18px;background:#eef5fb;overflow:hidden;color:#607086;font-weight:850}
.coord-modal__mini-map.is-loading
{display:grid;place-items:center}
.coord-modal__mini-map .leaflet-pane,.coord-modal__mini-map .leaflet-control-container
{font-weight:initial;color:initial}
.coord-modal__mini-map.leaflet-container
{background:#d7eef7}
.coord-modal__mini-map .leaflet-map-pane,
.coord-modal__mini-map .leaflet-tile,
.coord-modal__mini-map .leaflet-marker-icon,
.coord-modal__mini-map .leaflet-marker-shadow,
.coord-modal__mini-map .leaflet-tile-container,
.coord-modal__mini-map .leaflet-pane,
.coord-modal__mini-map .leaflet-overlay-pane,
.coord-modal__mini-map .leaflet-shadow-pane,
.coord-modal__mini-map .leaflet-marker-pane
{
  position:absolute!important;
  left:0;
  top:0;
}
.coord-modal__mini-map .leaflet-map-pane
{z-index:1!important}
.coord-modal__mini-map .leaflet-tile-pane
{z-index:200!important}
.coord-modal__mini-map .leaflet-overlay-pane
{z-index:400!important}
.coord-modal__mini-map .leaflet-shadow-pane
{z-index:500!important}
.coord-modal__mini-map .leaflet-marker-pane
{z-index:600!important}
.coord-modal__mini-map .leaflet-tooltip-pane
{z-index:650!important}
.coord-modal__mini-map .leaflet-popup-pane
{z-index:700!important}
.coord-modal__mini-map .leaflet-control
{position:relative!important;z-index:800!important}
.coord-modal__mini-map .leaflet-tile
{border:0!important;visibility:visible!important;opacity:1}
.coord-modal__map-help
{color:#607086;font-weight:750;font-size:.88rem;line-height:1.35}
.coord-modal__manual-panel
{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.coord-modal__manual-panel .field
{margin-bottom:14px}
.coord-modal__hint
{padding:12px 14px;border:1px solid #dbe8f5;border-radius:16px;background:#f6faff;color:#536a84;font-weight:750;line-height:1.45}
.coord-modal__status
{margin-top:12px;padding:11px 13px;border-radius:14px;border:1px solid #dbe8f5;background:#fff;color:#334155;font-weight:800}
.coord-modal__status.is-success
{background:#f6fff9;border-color:#bfe5cc;color:#17613a}
.coord-modal__status.is-error
{background:#fff7f7;border-color:#f1c2c2;color:#8b1e1e}
.coord-modal__footer
{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px 22px;border-top:1px solid #e1eaf4}
.cups-map-popup__coord-btn
{margin-top:8px;padding:7px 10px;font-size:.78rem;border-radius:12px}
body.coord-modal-open
{overflow:hidden}
@media(max-width:640px)
{
  .coord-modal
  {padding:14px}
  .coord-modal__header,.coord-modal__body,.coord-modal__footer
  {padding-left:18px;padding-right:18px}
  .coord-mode,.coord-modal__manual-panel
  {grid-template-columns:1fr}
  .coord-modal__mini-map
  {height:240px}
  .coord-modal__footer
  {flex-direction:column}
  .coord-modal__footer .btn
  {width:100%}
}


/* Carga segura/manual del mapa */
.cups-map-start
{
  display:grid;
  gap:8px;
  max-width:560px;
}
.cups-map-start strong
{
  color:#102033;
  font-size:.98rem;
}
.cups-map-start span
{
  color:#607086;
  font-weight:750;
  line-height:1.4;
}
.cups-map-start .btn
{
  width:max-content;
  margin-top:4px;
}
@media(max-width:640px)
{
  .cups-map-start .btn
  {width:100%}
}

.cups-map-actions
{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin-top:10px;
}
.cups-map-actions span
{
  color:#607086;
  font-size:.86rem;
  font-weight:800;
}
.cups-map-actions .btn
{
  padding:8px 12px;
  border-radius:12px;
  font-size:.82rem;
}



/* Filtros plegables v57: aspecto de botón, sin JavaScript */
.filters-details
{
  margin:0 0 16px;
  border:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
}
.filters-details__summary
{
  width:max-content;
  max-width:100%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  min-height:42px;
  padding:10px 15px;
  border:1px solid #cfe0f2;
  border-radius:14px;
  background:linear-gradient(180deg,#ffffff,#f7fbff);
  color:#274261;
  font-size:.82rem;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.08em;
  cursor:pointer;
  list-style:none;
  user-select:none;
  box-shadow:0 10px 24px rgba(15,23,42,.06);
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease;
}
.filters-details__summary::-webkit-details-marker
{display:none}
.filters-details__summary:hover
{
  transform:translateY(-1px);
  border-color:#b7d1ed;
  box-shadow:0 14px 28px rgba(15,23,42,.09);
}
.filters-details__icon
{
  display:inline-grid;
  place-items:center;
  width:24px;
  height:24px;
  border-radius:9px;
  background:#eaf4ff;
  font-size:.9rem;
}
.filters-details__label--open
{display:none}
.filters-details[open] .filters-details__label--closed
{display:none}
.filters-details[open] .filters-details__label--open
{display:inline}
.filters-details[open] .filters-details__summary
{
  border-color:#95bce8;
  background:linear-gradient(180deg,#eef7ff,#ffffff);
  box-shadow:0 16px 34px rgba(81,195,3,.10);
}
.filters-details .filter-toggle__chevron
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  transition:transform .16s ease;
}
.filters-details[open] .filter-toggle__chevron
{
  transform:rotate(180deg);
}
.filters-details .filters-grid
{
  margin:12px 0 0;
  padding:16px;
  border:1px solid #d4e4f5;
  border-radius:20px;
  background:linear-gradient(180deg,#f8fbff,#f3f8fe);
  box-shadow:0 10px 28px rgba(15,23,42,.04);
}
@media(max-width:720px)
{
  .filters-details__summary
  {
    width:100%;
  }
}


/* Popup del mapa v71: resultados compactos agrupados por CUPS */
.leaflet-popup.cups-map-popup-theme .leaflet-popup-content-wrapper
{
  border-radius:22px;
  padding:0;
  background:linear-gradient(180deg,#ffffff,#f8fbff);
  box-shadow:0 24px 54px rgba(15,23,42,.22);
  overflow:hidden;
}
.leaflet-popup.cups-map-popup-theme .leaflet-popup-content
{
  margin:0 !important;
  width:460px !important;
}
.leaflet-popup.cups-map-popup-theme .leaflet-popup-tip
{
  background:#ffffff;
}
.cups-map-popupx
{
  display:flex;
  flex-direction:column;
  max-height:460px;
}
.cups-map-popupx__header
{
  padding:16px 18px 14px;
  border-bottom:1px solid #e0ebf7;
  background:linear-gradient(180deg,#ffffff,#f6faff);
}
.cups-map-popupx__eyebrow
{
  margin-bottom:6px;
  color:#5e7a96;
  font-size:.72rem;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.cups-map-popupx__header strong
{
  display:block;
  color:#102033;
  font-size:1rem;
  line-height:1.35;
  margin-bottom:6px;
}
.cups-map-popupx__header span
{
  display:block;
  color:#607086;
  font-weight:800;
  line-height:1.4;
}
.cups-map-popupx__notice
{
  margin:12px 14px 0;
  padding:9px 11px;
  border:1px solid #d9e8f8;
  border-radius:14px;
  background:#f5f9ff;
  color:#48627c;
  font-size:.78rem;
  font-weight:850;
  line-height:1.35;
}
.cups-map-popupx--location .cups-map-popupx__list
{
  max-height:330px;
}
.cups-map-popupx--location .cups-map-popupx__item
{
  box-shadow:none;
}
.cups-map-popupx--location .cups-map-popupx__item + .cups-map-popupx__item
{
  margin-top:0;
}
.cups-map-popupx__list
{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:14px;
  overflow:auto;
}
.cups-map-popupx__item
{
  padding:12px 13px;
  border:1px solid #dbe8f5;
  border-radius:16px;
  background:#ffffff;
  box-shadow:0 8px 18px rgba(15,23,42,.05);
}
.cups-map-popupx__top
{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}
.cups-map-popupx__cups
{
  color:#17324d;
  font-size:.88rem;
  line-height:1.35;
  word-break:break-word;
}
.cups-map-popupx__badge
{
  flex:0 0 auto;
  padding:4px 8px;
  border-radius:999px;
  background:#edf6ff;
  color:#24507c;
  font-size:.7rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.cups-map-popupx__line
{
  color:#4f6277;
  font-weight:700;
  line-height:1.45;
  margin-bottom:8px;
}
.cups-map-popupx__meta
{
  display:grid;
  gap:4px;
  color:#506273;
  font-size:.78rem;
  line-height:1.4;
}
.cups-map-popupx__meta b
{
  color:#1e3852;
}
@media (max-width:640px)
{
  .leaflet-popup.cups-map-popup-theme .leaflet-popup-content
  {
    width:310px !important;
  }
  .cups-map-popupx
  {
    max-height:340px;
  }
}


/* Acciones de coordenadas v62 */
.coord-actions
{
  display:inline-flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.coord-actions .coord-row-btn
{
  min-width:88px;
}
.coord-map-link
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:8px 10px;
  border-radius:999px;
  border:1px solid #b8d5f7;
  background:#eef7ff;
  color:#24507c;
  font-size:.76rem;
  font-weight:950;
  line-height:1;
  text-transform:uppercase;
  letter-spacing:.04em;
  text-decoration:none;
  box-shadow:0 8px 16px rgba(37,99,235,.08);
}
.coord-map-link:hover
{
  transform:translateY(-1px);
  background:#e3f1ff;
  border-color:#95bce8;
  color:#143a61;
}


/* Ver coordenada en mapa interno v63 */
.coord-map-link
{
  cursor:pointer;
}
button.coord-map-link
{
  appearance:none;
  -webkit-appearance:none;
}

/* ==========================================================
   Filtros: operador + autocompletado en inputs de texto
   ========================================================== */
.filter-text-control
{
  display:grid;
  grid-template-columns:minmax(96px, 118px) minmax(0, 1fr);
  gap:8px;
  align-items:stretch;
}
.filter-text-control .ui-select,
.filter-text-control .filter-op-select,
.filter-text-control .input
{
  min-width:0;
  width:100%;
}
.filter-text-control .ui-select__value
{
  max-width:88px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.filter-text-control .ui-select__button
{
  padding-left:10px!important;
  padding-right:8px!important;
}
.autocomplete-panel
{
  z-index:10050;
}
@media(max-width:720px)
{
  .filter-text-control
  {
    grid-template-columns:1fr;
  }
  .filter-text-control .ui-select__value
  {
    max-width:calc(100vw - 110px);
  }
}

.coord-mode--two
{grid-template-columns:repeat(2,minmax(0,1fr))}

/* Popup del mapa v74: agrupación sin pérdida de información y sin contadores internos */
.leaflet-popup.cups-map-popup-theme .leaflet-popup-content
{
  width:520px !important;
}
.cups-map-popupx--location .cups-map-popupx__list
{
  max-height:390px;
}
.cups-map-popupx__changes
{
  display:grid;
  gap:7px;
  margin-top:8px;
}
.cups-map-popupx__change
{
  position:relative;
  display:grid;
  gap:5px;
  padding:8px 42px 8px 10px;
  border:1px solid #e0ebf7;
  border-radius:13px;
  background:#f8fbff;
  color:#425872;
  font-size:.75rem;
  line-height:1.35;
}
.cups-map-popupx__change strong
{
  color:#17324d;
  font-size:.78rem;
  line-height:1.35;
}
.cups-map-popupx__change em
{
  position:absolute;
  top:8px;
  right:8px;
  min-width:26px;
  padding:3px 7px;
  border-radius:999px;
  background:#eaf3ff;
  color:#24507c;
  font-style:normal;
  font-weight:900;
  text-align:center;
}
.cups-map-popupx__change-meta
{
  display:flex;
  flex-wrap:wrap;
  gap:4px 9px;
}
.cups-map-popupx__change-meta span
{
  white-space:normal;
}
.cups-map-popupx__change-meta b
{
  color:#263f59;
}
.cups-map-popupx__notice
{
  display:none !important;
}
@media (max-width:640px)
{
  .leaflet-popup.cups-map-popup-theme .leaflet-popup-content
  {
    width:320px !important;
  }
  .cups-map-popupx--location .cups-map-popupx__list
  {
    max-height:320px;
  }
}

/* Estado en popup del mapa v74: no renderiza HTML heredado, pinta badge propia */
.cups-map-popupx__meta-row
{
  display:inline-flex;
  align-items:center;
  flex-wrap:wrap;
  gap:4px;
  min-width:0;
}
.cups-map-popupx__meta-row--estado
{
  gap:6px;
}
.cups-map-status
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:20px;
  padding:2px 8px;
  border-radius:999px;
  border:1px solid transparent;
  font-size:.68rem;
  font-weight:800;
  line-height:1.15;
  letter-spacing:.01em;
  white-space:nowrap;
}
.cups-map-status--active
{
  color:#166534;
  background:#dcfce7;
  border-color:#86efac;
}
.cups-map-status--pending
{
  color:#92400e;
  background:#fef3c7;
  border-color:#facc15;
}
.cups-map-status--expired
{
  color:#9a3412;
  background:#ffedd5;
  border-color:#fdba74;
}
.cups-map-status--inactive
{
  color:#475569;
  background:#f1f5f9;
  border-color:#cbd5e1;
}
.cups-map-status--danger
{
  color:#991b1b;
  background:#fee2e2;
  border-color:#fca5a5;
}
.cups-map-status--neutral
{
  color:#1e3a5f;
  background:#eaf3ff;
  border-color:#b8d7f7;
}


/* Limpieza v74: sin contadores/mensajes internos en popup de cliente final */
.cups-map-popupx__header span,
.cups-map-popupx__badge,
.coord-modal__hint
{
  display:none !important;
}
.cups-map-popupx__header strong
{
  margin-bottom:0;
}

/* Popup del mapa v75: jerarquía visual e iconos por tipo de energía */
.cups-map-popupx__header
{
  background:
    radial-gradient(circle at 92% 12%,rgba(37,99,235,.12),transparent 120px),
    linear-gradient(135deg,#ffffff,#f3f8ff);
}
.cups-map-popupx__header-main
{
  display:flex;
  align-items:flex-start;
  gap:11px;
}
.cups-map-popupx__header .cups-map-popupx__location-icon
{
  display:grid !important;
  flex:0 0 auto;
  place-items:center;
  width:36px;
  height:36px;
  border-radius:12px;
  background:#e8f2ff;
  color:#2563eb;
  box-shadow:inset 0 0 0 1px rgba(37,99,235,.10);
}
.cups-map-popupx__location-icon svg
{
  width:19px;
  height:19px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.cups-map-popupx__header .cups-map-popupx__eyebrow
{
  display:block !important;
  margin:1px 0 4px;
  color:#5c7590;
  font-size:.65rem;
  font-weight:950;
  line-height:1;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.cups-map-popupx__header-main > div
{
  min-width:0;
}
.cups-map-popupx__cups-block
{
  display:grid;
  gap:2px;
  min-width:0;
}
.cups-map-popupx__cups-block > span
{
  color:#7890a8;
  font-size:.61rem;
  font-weight:950;
  line-height:1;
  letter-spacing:.10em;
  text-transform:uppercase;
}
.cups-map-popupx__change-main
{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  min-width:0;
}
.cups-map-popupx__energy
{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:26px;
  padding:4px 9px 4px 7px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:.7rem;
  font-weight:950;
  line-height:1;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.cups-map-popupx__energy svg
{
  width:14px;
  height:14px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.cups-map-popupx__energy b
{
  color:inherit;
  font:inherit;
}
.cups-map-popupx__energy--luz
{
  color:#1d4ed8;
  background:#dbeafe;
  border-color:#93c5fd;
}
.cups-map-popupx__energy--luz svg
{
  fill:currentColor;
  stroke:none;
}
.cups-map-popupx__energy--gas
{
  color:#c2410c;
  background:#ffedd5;
  border-color:#fdba74;
}
.cups-map-popupx__energy--mixed
{
  color:#6d28d9;
  background:#ede9fe;
  border-color:#c4b5fd;
}
.cups-map-popupx__energy--unknown
{
  color:#475569;
  background:#f1f5f9;
  border-color:#cbd5e1;
}
.cups-map-popupx__supply-type
{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:4px 9px;
  border:1px solid #d7e3ef;
  border-radius:999px;
  background:#ffffff;
  color:#334e68;
  font-size:.7rem;
  font-weight:900;
  line-height:1;
  text-transform:uppercase;
}
.cups-map-popupx__change--luz
{
  border-left:3px solid #3b82f6;
  background:linear-gradient(90deg,#f3f8ff,#f8fbff 45%);
}
.cups-map-popupx__change--gas
{
  border-left:3px solid #f97316;
  background:linear-gradient(90deg,#fff7ed,#f8fbff 45%);
}
.cups-map-popupx__change--mixed
{
  border-left:3px solid #8b5cf6;
  background:linear-gradient(90deg,#f5f3ff,#f8fbff 45%);
}
@media(max-width:640px)
{
  .cups-map-popupx__header-main
  {gap:9px}
  .cups-map-popupx__header .cups-map-popupx__location-icon
  {width:32px;height:32px;border-radius:10px}
}

/* Login ayuntamientos */
.login-page
{
  min-height: 100vh;
  background:
    radial-gradient(circle at top left, rgba(37, 99, 235, .18), transparent 32rem),
    linear-gradient(135deg, #0f172a 0%, #172554 48%, #0f172a 100%);
  display: grid;
  place-items: center;
  padding: 24px;
}

.login-shell
{
  width: min(100%, 440px);
}

.login-card
{
  background: rgba(255, 255, 255, .96);
  border: 1px solid rgba(255, 255, 255, .72);
  border-radius: 28px;
  box-shadow: 0 28px 80px rgba(15, 23, 42, .32);
  padding: 34px;
}

.login-card__brand
{
  display: flex;
  justify-content: center;
  margin-bottom: 24px;
}

.login-card__brand img
{
  max-width: 230px;
  max-height: 86px;
  object-fit: contain;
}

.login-card__header
{
  text-align: center;
  margin-bottom: 22px;
}

.login-card__header h1
{
  margin: 6px 0 8px;
  font-size: clamp(1.9rem, 5vw, 2.5rem);
  color: #0f172a;
}

.login-card__header p
{
  margin: 0;
  color: #64748b;
}

.login-card__error
{
  margin-bottom: 18px;
}

.login-form
{
  display: grid;
  gap: 16px;
}

.login-form__submit
{
  width: 100%;
  justify-content: center;
  margin-top: 6px;
  min-height: 46px;
}

.topbar-user
{
  display: flex;
  align-items: center;
  gap: 12px;
  margin-left: auto;
}

.topbar-user__meta
{
  display: grid;
  gap: 2px;
  text-align: right;
  color: #0f172a;
}

.topbar-user__meta strong
{
  font-size: .92rem;
  line-height: 1.1;
}

.topbar-user__meta span
{
  color: #64748b;
  font-size: .78rem;
  line-height: 1.1;
}

.btn--logout
{
  white-space: nowrap;
}

.brand--logo-error .brand__logo-link
{
  display: none;
}

@media (max-width: 760px)
{
  .topbar-user__meta
  {
    display: none;
  }

  .topbar-user
  {
    margin-left: 0;
  }

  .login-card
  {
    padding: 26px 20px;
    border-radius: 22px;
  }
}


/* Badges de estado: evita texto azul sobre fondos fuertes heredados de la BD */
.table .badge--state
{
  min-height: 27px;
  padding: 6px 11px;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 950;
  line-height: 1;
  letter-spacing: .015em;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.24), 0 8px 18px rgba(15,23,42,.08);
}
.table .badge--state[style*="background-color"]
{
  text-shadow: 0 1px 1px rgba(15,23,42,.22);
}
.table .badge[style*="background-color:#FF5555"],
.table .badge[style*="background-color: #FF5555"],
.table .badge[style*="background-color:#ff5555"],
.table .badge[style*="background-color: #ff5555"],
.table .badge[style*="background:#FF5555"],
.table .badge[style*="background: #FF5555"],
.table .badge[style*="background:#ff5555"],
.table .badge[style*="background: #ff5555"]
{
  color: #fff !important;
  border-color: #ef4444 !important;
  background-color: #ef4444 !important;
  text-shadow: 0 1px 1px rgba(127,29,29,.32);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 8px 18px rgba(239,68,68,.18);
}

/* Dashboard CLI: vencimientos de contratos y suministro desde v_contrato */
.legend-dot--muted
{background:#94a3b8}
.deadline-list
{
  display:grid;
  gap:12px;
  min-width:0;
  flex:1;
  align-content:start;
}
.deadline-list__item
{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:12px 14px;
  border:1px solid #dde8f4;
  border-radius:16px;
  background:#fafcff;
  min-width:0;
}
.deadline-list__main
{
  display:grid;
  gap:4px;
  min-width:0;
}
.deadline-list__main strong,
.deadline-list__main span
{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.deadline-list__main strong
{
  color:#0f172a;
  font-size:.9rem;
}
.deadline-list__main span
{
  color:#64748b;
  font-size:.78rem;
  font-weight:700;
}
.deadline-list__date
{
  display:grid;
  gap:4px;
  justify-items:end;
  text-align:right;
  white-space:nowrap;
}
.deadline-list__date strong
{
  color:#0f172a;
  font-size:.88rem;
}
.deadline-list__date span
{
  color:#64748b;
  font-size:.76rem;
  font-weight:900;
}
.deadline-list__date span.is-overdue
{
  color:#b91c1c;
}
@media(max-width:720px)
{
  .deadline-list__item
  {
    grid-template-columns:1fr;
    align-items:start;
  }
  .deadline-list__date
  {
    justify-items:start;
    text-align:left;
  }
}

.details-grid
{
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
}

.details-grid--four
{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
@media(max-width:1100px)
{
  .details-grid--four
  {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:620px)
{
  .details-grid--four
  {
    grid-template-columns:1fr;
  }
}
.detail-item
{
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:16px;
  display:grid;
  gap:6px;
  padding:14px 16px;
}
.detail-item__label
{
  color:#64748b;
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.detail-item__value
{
  color:#0f172a;
  font-size:.96rem;
  overflow-wrap:anywhere;
}
.users-layout
{
  display:grid;
  gap:18px;
}
.users-form-grid
{
  display:grid;
  gap:14px;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
}
.users-form-actions
{
  align-items:end;
  display:flex;
  gap:10px;
  justify-content:flex-end;
}
.users-table-wrap
{
  overflow:auto;
}
.users-table
{
  border-collapse:collapse;
  min-width:760px;
  width:100%;
}
.users-table th,
.users-table td
{
  border-bottom:1px solid #e2e8f0;
  padding:12px 14px;
  text-align:left;
  vertical-align:top;
}
.users-table th
{
  color:#475569;
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.users-table td
{
  color:#0f172a;
  font-size:.9rem;
}
.users-badge
{
  align-items:center;
  background:#e0f2fe;
  border-radius:999px;
  color:#075985;
  display:inline-flex;
  font-size:.75rem;
  font-weight:900;
  line-height:1.12;
  padding:7px 10px;
}
.users-badge strong
{
  color:inherit;
  font-size:.76rem;
  font-weight:950;
  letter-spacing:.01em;
}
.users-form-grid--wide
{
  grid-template-columns:1fr;
}
.users-form-grid--ordered
{
  align-items:start;
}
.users-form-grid--ordered .field--password
{
  align-self:start;
}
.field--wide
{
  grid-column:span 2;
}
.users-table small
{
  color:#64748b;
  display:block;
  font-size:.78rem;
  margin-top:3px;
}
@media (max-width:760px)
{
  .field--wide
  {
    grid-column:span 1;
  }
}

/* Gestión de usuarios */
.users-hero
{
  display:grid;
  gap:10px;
  grid-template-columns:1fr;
}
.users-hero__main h2
{
  margin-bottom:6px;
}
.users-card--form
{
  border-color:#e9f8df;
}
.users-card__header
{
  border-bottom:1px solid #e2e8f0;
  margin-bottom:18px;
  padding-bottom:16px;
}
.users-form-section
{
  display:grid;
  gap:12px;
  margin-top:18px;
}
.users-form-section:first-of-type
{
  margin-top:0;
}
.users-form-section h3
{
  color:#0f172a;
  font-size:.92rem;
  font-weight:950;
  letter-spacing:.02em;
  margin:0;
  text-transform:uppercase;
}
.users-linked-summary
{
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:18px;
  display:grid;
  gap:12px;
  grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  padding:14px;
}
.users-linked-summary span,
.field small
{
  color:#64748b;
  display:block;
  font-size:.78rem;
  font-weight:700;
  line-height:1.35;
  margin-top:5px;
}
.users-linked-summary strong
{
  color:#0f172a;
  display:block;
  font-size:.95rem;
  margin-top:4px;
}
.field--invalid .input
{
  border-color:#dc2626 !important;
  box-shadow:0 0 0 .18rem rgba(220, 38, 38, .12) !important;
}
.field__error
{
  color:#b91c1c !important;
  display:block;
  font-size:.78rem;
  font-weight:850;
  line-height:1.3;
  margin-top:6px;
}
.field--password small:not(.field__error)
{
  color:#475569;
}
.users-badge--programador,
.users-badge--superadm
{
  background:#fef3c7;
  color:#92400e;
}
.users-badge--adm,
.users-badge--adm-gestion
{
  background:#e0f2fe;
  color:#075985;
}
.users-badge--cli-master
{
  background:#dcfce7;
  color:#166534;
}
.users-badge--cli-user
{
  background:#f1f5f9;
  color:#334155;
}
.users-table
{
  min-width:1040px;
}
.users-table td:nth-child(3),
.users-table td:nth-child(6),
.users-table td:nth-child(7),
.users-table td:nth-child(8),
.users-table td:nth-child(9)
{
  overflow-wrap:anywhere;
}
@media (max-width:960px)
{
  .users-hero
  {
    grid-template-columns:1fr;
  }
}

/* Vista gráfica separada de usuarios */
.users-tabs-card
{
  display:grid;
  gap:14px;
  padding:14px;
}
.users-tabs
{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.users-type-help
{
  display:grid;
  gap:10px;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.users-type-help__item
{
  background:linear-gradient(180deg,var(--brand-soft),#fff);
  border:1px solid var(--line);
  border-radius:18px;
  padding:13px 14px;
}
.users-type-help__item strong
{
  color:var(--brand);
  display:block;
  font-size:.9rem;
  font-weight:950;
  margin-bottom:5px;
}
.users-type-help__item span
{
  color:var(--muted);
  display:block;
  font-size:.84rem;
  font-weight:750;
  line-height:1.35;
}
.users-tab
{
  appearance:none;
  background:var(--brand-soft);
  border:1px solid var(--line);
  border-radius:999px;
  color:var(--brand);
  cursor:pointer;
  font-weight:900;
  padding:10px 14px;
  transition:background .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.users-tab:hover
{
  background:var(--brand-soft-2);
  border-color:var(--brand);
  color:var(--brand);
  transform:translateY(-1px);
}
.users-tab:focus-visible
{
  outline:3px solid var(--brand-soft-2);
  outline-offset:2px;
}
.users-tab.is-active
{
  background:linear-gradient(135deg,var(--brand),var(--brand-2));
  border-color:var(--brand);
  color:var(--panel);
  box-shadow:0 12px 24px rgba(81,195,3,.18);
}
.users-panel
{
  display:none;
  gap:18px;
}
.users-panel.is-active
{
  display:grid;
}
@media (max-width:980px)
{
  .users-type-help
  {
    grid-template-columns:1fr;
  }
}
@media (max-width:620px)
{
  .users-tab
  {
    justify-content:center;
    width:100%;
  }
}

/* DataTable global de usuarios */
.users-card--datatable
{
  border-color:#e9f8df;
  overflow:hidden;
}
.users-datatable__header
{
  align-items:flex-start;
}
.users-datatable-toolbar
{
  background:linear-gradient(180deg, #f8fbff, #ffffff);
  border:1px solid #e2e8f0;
  border-radius:20px;
  display:grid;
  gap:12px;
  grid-template-columns:minmax(260px, 1.8fr) repeat(4, minmax(160px, 1fr));
  margin:8px 0 14px;
  padding:14px;
}
.users-datatable-search
{
  min-width:260px;
}
.users-datatable-page-size
{
  min-width:120px;
}
.users-datatable-wrap
{
  border:1px solid #e9f8df;
  border-radius:22px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85);
}
.users-table--all
{
  min-width:1340px;
}
.users-datatable-table th
{
  background:#edf5ff;
  position:sticky;
  top:0;
  z-index:1;
}
.users-datatable-table th button
{
  align-items:center;
  appearance:none;
  background:transparent;
  border:0;
  color:inherit;
  cursor:pointer;
  display:inline-flex;
  font:inherit;
  gap:6px;
  letter-spacing:inherit;
  padding:0;
  text-align:left;
  text-transform:inherit;
}
.users-datatable-table th button:after
{
  color:#94a3b8;
  content:'↕';
  font-size:.7rem;
}
.users-datatable-table th button.is-active[data-dir="asc"]:after
{
  color:#0f172a;
  content:'↑';
}
.users-datatable-table th button.is-active[data-dir="desc"]:after
{
  color:#0f172a;
  content:'↓';
}
.users-datatable-table tbody tr:hover
{
  background:#f8fbff;
}
.users-datatable-footer
{
  align-items:center;
  color:#64748b;
  display:flex;
  font-size:.86rem;
  font-weight:800;
  justify-content:space-between;
  margin-top:14px;
}
.users-datatable-pagination
{
  display:flex;
  gap:8px;
}
.btn--sm
{
  min-height:34px;
  padding:8px 12px;
}
.users-datatable-pagination .btn:disabled
{
  cursor:not-allowed;
  opacity:.45;
  transform:none;
}
@media (max-width:1180px)
{
  .users-datatable-toolbar
  {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
  .users-datatable-search
  {
    grid-column:1 / -1;
  }
}
@media (max-width:680px)
{
  .users-datatable-toolbar
  {
    grid-template-columns:1fr;
  }
  .users-datatable-footer
  {
    align-items:stretch;
    flex-direction:column;
    gap:10px;
  }
  .users-datatable-pagination
  {
    width:100%;
  }
  .users-datatable-pagination .btn
  {
    justify-content:center;
    width:100%;
  }
}

.users-table-actions
{
  min-width:118px;
  text-align:right;
  white-space:nowrap;
}
.users-delete-btn
{
  border:1px solid #fecaca;
  box-shadow:none;
}
.users-delete-btn:hover
{
  background:#fecaca;
}
.users-row-muted
{
  color:#94a3b8;
  font-weight:800;
}

.table-edit-head,
.table-edit-cell {
  width: 92px;
  min-width: 92px;
  text-align: center;
  white-space: nowrap;
}

.table-row-actions {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.table-edit-btn {
  width: 34px;
  height: 34px;
  border: 1px solid rgba(15, 23, 42, 0.12);
  border-radius: 12px;
  background: #ffffff;
  color: #0f172a;
  cursor: pointer;
  font-size: 17px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
}

.table-edit-btn:hover,
.table-edit-btn:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(37, 99, 235, 0.45);
  outline: none;
}

.table-delete-btn {
  width: 34px;
  height: 34px;
  border: 1px solid rgba(185, 28, 28, 0.22);
  border-radius: 12px;
  background: #fff1f2;
  color: #991b1b;
  cursor: pointer;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 22px rgba(185, 28, 28, 0.08);
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.table-delete-btn__icon {
  width: 18px;
  height: 18px;
  display: block;
  fill: currentColor;
}

.table-delete-btn:hover,
.table-delete-btn:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(185, 28, 28, 0.45);
  background: #ffe4e6;
  box-shadow: 0 10px 24px rgba(185, 28, 28, 0.13);
  outline: none;
}

.table-delete-btn:disabled {
  cursor: not-allowed;
  opacity: .42;
  transform: none;
}

.table-confirm {
  position: fixed;
  inset: 0;
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 22px;
}

.table-confirm__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .48);
  backdrop-filter: blur(4px);
}

.table-confirm__dialog {
  position: relative;
  width: min(430px, 100%);
  border: 1px solid rgba(254, 202, 202, .9);
  border-radius: 24px;
  background: #ffffff;
  box-shadow: 0 28px 70px rgba(15, 23, 42, .22);
  padding: 24px;
  display: grid;
  gap: 16px;
  animation: tableConfirmIn .16s ease-out;
}

.table-confirm__icon {
  width: 48px;
  height: 48px;
  border-radius: 18px;
  background: #fff1f2;
  color: #991b1b;
  border: 1px solid rgba(185, 28, 28, .18);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.table-confirm__icon .table-delete-btn__icon {
  width: 23px;
  height: 23px;
}

.table-confirm__content h2 {
  margin: 0;
  color: #0f172a;
  font-size: 1.2rem;
  line-height: 1.2;
  letter-spacing: -.02em;
}

.table-confirm__content p {
  margin: 8px 0 0;
  color: var(--muted);
  font-weight: 700;
  line-height: 1.5;
}

.table-confirm__actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 2px;
}

.table-confirm__actions .btn--danger {
  border: 1px solid rgba(185, 28, 28, .18);
}

@keyframes tableConfirmIn {
  from {
    opacity: 0;
    transform: translateY(8px) scale(.985);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.table-edit-card {
  max-width: 1120px;
  margin: 0 auto;
}

.table-edit-status {
  min-height: 22px;
  margin-bottom: 16px;
  font-weight: 700;
}

.table-edit-status[data-type="success"] {
  color: #166534;
}

.table-edit-status[data-type="error"] {
  color: #b91c1c;
}

.table-edit-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.table-edit-field--wide {
  grid-column: 1 / -1;
}

.table-edit-field .input[data-datadis-locked="1"] {
  color: #475569;
  background: #f1f5f9;
  border-color: #cbd5e1;
  box-shadow: none;
  cursor: not-allowed;
  opacity: 1;
}

.table-edit-field .input[data-datadis-locked="1"]:focus {
  border-color: #cbd5e1;
  box-shadow: none;
  outline: none;
}

.contract-datadis-loading-open {
  overflow: hidden;
}

.contract-datadis-loading {
  position: fixed;
  inset: 0;
  z-index: 10020;
  display: grid;
  place-items: center;
  padding: 24px;
}

.contract-datadis-loading__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .52);
  backdrop-filter: blur(3px);
}

.contract-datadis-loading__dialog {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 18px;
  width: min(460px, 100%);
  padding: 24px;
  border: 1px solid rgba(255, 255, 255, .72);
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 28px 70px rgba(15, 23, 42, .28);
}

.contract-datadis-loading__spinner {
  flex: 0 0 auto;
  width: 42px;
  height: 42px;
  border: 4px solid #e9f8df;
  border-top-color: var(--brand, #51c303);
  border-radius: 50%;
  animation: contractDatadisSpin .8s linear infinite;
}

.contract-datadis-loading__dialog strong {
  display: block;
  color: #0f172a;
  font-size: 1.05rem;
}

.contract-datadis-loading__dialog p {
  margin: 5px 0 0;
  color: #64748b;
  line-height: 1.45;
}

@keyframes contractDatadisSpin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .contract-datadis-loading__spinner {
    animation-duration: 1.8s;
  }
}

.table-edit-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 24px;
}

@media (max-width: 760px) {
  .table-edit-grid {
    grid-template-columns: 1fr;
  }

  .table-edit-actions {
    flex-direction: column-reverse;
  }

  .table-edit-actions .btn {
    width: 100%;
  }
}

.table-edit-btn:disabled
{
  cursor:not-allowed;
  opacity:.42;
  transform:none;
}
.users-edit-card .users-edit-summary
{
  margin-bottom:18px;
}
.users-edit-btn
{
  box-shadow:none;
}

/* Confirmaciones centralizadas del proyecto */
.app-confirm-open {
  overflow: hidden;
}

.app-confirm {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: grid;
  place-items: center;
  padding: 18px;
}

.app-confirm__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .46);
  backdrop-filter: blur(4px);
}

.app-confirm__dialog {
  position: relative;
  z-index: 1;
  width: min(520px, 100%);
  overflow: hidden;
  border-radius: 24px;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-strong);
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 16px;
  padding: 22px 22px 18px;
}

.app-confirm__dialog::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 5px;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
}

.app-confirm--danger .app-confirm__dialog::before {
  background: linear-gradient(90deg, #dc2626, #ef4444);
}

.app-confirm__icon {
  width: 54px;
  height: 54px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: #eef6ff;
  border: 1px solid #d3e6fb;
  color: #164187;
}

.app-confirm--danger .app-confirm__icon {
  background: #fff1f2;
  border-color: #fecaca;
  color: #b91c1c;
}

.app-confirm__icon svg,
.app-confirm__trash-icon {
  width: 25px;
  height: 25px;
  fill: currentColor;
}

.app-confirm--renew .app-confirm__icon {
  background: #e8f2ff;
  color: #0f5fa8;
}

.app-confirm__renew-icon {
  width: 25px;
  height: 25px;
  fill: currentColor;
}

.app-confirm--renew .app-confirm__actions .btn--danger {
  background: linear-gradient(135deg, #1677c8, #0f5fa8);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 10px 22px rgba(15, 95, 168, .18);
}

.app-confirm__content h2 {
  margin: 2px 0 0;
  font-size: 1.18rem;
  line-height: 1.2;
  color: var(--ink);
  letter-spacing: -.025em;
}

.app-confirm__content p {
  margin: 8px 0 0;
  color: var(--muted);
  font-weight: 700;
  line-height: 1.5;
}

.app-confirm__warning {
  margin-top: 14px;
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 10px;
  align-items: start;
  padding: 12px 13px;
  border: 1px solid #fecaca;
  border-radius: 14px;
  background: var(--danger-soft);
  color: var(--danger);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.45;
}

.app-confirm__warning svg {
  width: 21px;
  height: 21px;
  margin-top: 1px;
  fill: currentColor;
}

.app-confirm__field {
  display: grid;
  gap: 7px;
  margin-top: 16px;
}

.app-confirm__field span {
  color: var(--ink);
  font-size: .9rem;
  font-weight: 800;
}

.app-confirm__field input {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-weight: 700;
  outline: none;
}

.app-confirm__field input:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(81, 195, 3, .12);
}

.app-confirm__actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin: 2px -22px -18px;
  padding: 16px 22px 18px;
  border-top: 1px solid var(--line);
  background: #fbfdff;
}

.app-confirm__actions .btn--danger {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
  box-shadow: none;
}

.app-confirm__actions .btn--danger:hover {
  background: #fecaca;
}

.app-confirm--danger .app-confirm__actions .btn--danger {
  background: linear-gradient(135deg, #dc2626, #b91c1c);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 10px 22px rgba(185, 28, 28, .18);
}

@media (max-width: 560px) {
  .app-confirm__dialog {
    grid-template-columns: 1fr;
  }

  .app-confirm__actions {
    flex-direction: column-reverse;
  }

  .app-confirm__actions .btn {
    width: 100%;
  }
}

.facturas-import-card {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(320px, 1.6fr);
  gap: 18px;
  align-items: end;
  margin: 0 0 18px;
  padding: 18px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.08), rgba(15, 23, 42, 0.03));
}

.facturas-import-card h3 {
  margin: 4px 0 6px;
}

.facturas-import-card p {
  margin: 0;
  color: var(--muted, #64748b);
}

.facturas-import-form {
  display: grid;
  grid-template-columns: minmax(190px, 1fr) minmax(210px, 1fr) auto;
  gap: 12px;
  align-items: end;
}

.facturas-import-form .field {
  margin: 0;
}

.facturas-import-status {
  grid-column: 1 / -1;
  min-height: 20px;
  font-size: 0.92rem;
  color: var(--muted, #64748b);
}

.facturas-import-status[data-type="success"] {
  color: #047857;
  font-weight: 700;
}

.facturas-import-status[data-type="error"] {
  color: #b91c1c;
  font-weight: 700;
}

.facturas-import-status[data-type="loading"] {
  color: #0369a1;
  font-weight: 700;
}

@media (max-width: 980px) {
  .facturas-import-card,
  .facturas-import-form {
    grid-template-columns: 1fr;
  }
}


.facturas-import-card__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.facturas-import-card__summary > div {
  min-width: 0;
}

.facturas-import-card__body {
  margin-top: 1rem;
}

.facturas-import-card.is-collapsed .facturas-import-card__body {
  display: none;
}

.facturas-import-status[data-type="warning"] {
  background: rgba(245, 158, 11, .12);
  border-color: rgba(245, 158, 11, .28);
  color: #92400e;
}

@media (max-width: 720px) {
  .facturas-import-card__summary {
    align-items: stretch;
    flex-direction: column;
  }

  .facturas-import-card__summary .btn {
    width: 100%;
  }
}

.facturas-import-status__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: .75rem;
}

.facturas-import-status .btn--small {
  min-height: 34px;
  padding: .45rem .75rem;
  font-size: .86rem;
}


.facturas-import-card[hidden] {
  display: none !important;
}

.facturas-import-card {
  grid-template-columns: 1fr;
  align-items: stretch;
}

.facturas-import-card__summary {
  margin-bottom: 14px;
}

.facturas-import-card__body {
  margin-top: 0;
}

.facturas-import-card.is-collapsed {
  display: none;
}

/* Facturas - mejora visual de carga masiva */
.facturas-import-card
{
  margin: 0 0 20px;
  padding: 22px 22px 18px;
  border: 1px solid #dbe6f2;
  border-radius: 22px;
  background: linear-gradient(180deg, #fbfdff 0%, #f4f8fd 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9);
}

.facturas-import-card__summary
{
  margin: 0 0 12px;
}

.facturas-import-card__summary h3
{
  margin: 4px 0 4px;
  font-size: 1.05rem;
  letter-spacing: -.02em;
}

.facturas-import-card__summary p
{
  margin: 0;
  max-width: 760px;
}

.facturas-import-card__body
{
  margin-top: 0;
}

.facturas-import-form
{
  grid-template-columns: minmax(240px, 1.05fr) minmax(320px, 1fr) auto;
  gap: 14px;
  padding-top: 4px;
}

.facturas-import-form .field > span
{
  display: inline-block;
  margin-bottom: 8px;
  color: #334155;
  font-size: .86rem;
  font-weight: 900;
}

.facturas-import-form .btn[type="submit"]
{
  min-width: 128px;
}

.facturas-import-status
{
  grid-column: 1 / -1;
  min-height: 0;
  margin-top: 14px;
}

.facturas-import-status__box
{
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid #dbe6f2;
  border-radius: 16px;
  background: #ffffff;
}

.facturas-import-status__content
{
  min-width: 0;
}

.facturas-import-status__title
{
  display: block;
  margin: 0 0 4px;
  font-size: .92rem;
  letter-spacing: -.01em;
}

.facturas-import-status__text
{
  margin: 0;
  line-height: 1.5;
  font-weight: 700;
  white-space: pre-line;
}

.facturas-import-status[data-type="success"] .facturas-import-status__box
{
  border-color: #a7f3d0;
  background: linear-gradient(180deg, #f0fdf4 0%, #ecfdf5 100%);
}

.facturas-import-status[data-type="success"] .facturas-import-status__title,
.facturas-import-status[data-type="success"] .facturas-import-status__text
{
  color: #047857;
}

.facturas-import-status[data-type="warning"] .facturas-import-status__box
{
  border-color: #fcd34d;
  background: linear-gradient(180deg, #fffbea 0%, #fffbeb 100%);
}

.facturas-import-status[data-type="warning"] .facturas-import-status__title,
.facturas-import-status[data-type="warning"] .facturas-import-status__text
{
  color: #92400e;
}

.facturas-import-status[data-type="error"] .facturas-import-status__box
{
  border-color: #fecaca;
  background: linear-gradient(180deg, #fff5f5 0%, #fef2f2 100%);
}

.facturas-import-status[data-type="error"] .facturas-import-status__title,
.facturas-import-status[data-type="error"] .facturas-import-status__text
{
  color: #b91c1c;
}

.facturas-import-status[data-type="loading"] .facturas-import-status__box
{
  border-color: #c9ecaF;
  background: linear-gradient(180deg, #eff6ff 0%, #f8fbff 100%);
}

.facturas-import-status[data-type="loading"] .facturas-import-status__title,
.facturas-import-status[data-type="loading"] .facturas-import-status__text
{
  color: #51c303;
}

.facturas-import-status__actions
{
  margin-top: 0;
  flex-shrink: 0;
}

.btn[data-facturas-import-toggle].is-active
{
  background: linear-gradient(135deg, #e8f2ff, #e9f8df);
  color: #164187;
  box-shadow: none;
}

@media (max-width: 980px)
{
  .facturas-import-form
  {
    grid-template-columns: 1fr;
  }

  .facturas-import-form .btn[type="submit"]
  {
    width: 100%;
  }

  .facturas-import-status__box
  {
    flex-direction: column;
    align-items: stretch;
  }
}


/* Selects centralizados con buscador */
.ui-select__panel
{
  overflow: hidden !important;
  padding: 6px !important;
}

.ui-select__search
{
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 0 0 6px;
  background: #ffffff;
}

.ui-select__search-input
{
  width: 100%;
  min-height: 36px;
  border: 1px solid #d8e3ef;
  border-radius: 10px;
  background: #f8fbff;
  color: #172033;
  padding: 8px 10px;
  font-size: .86rem;
  font-weight: 700;
  outline: none;
}

.ui-select__search-input::placeholder
{
  color: #7b8ca2;
}

.ui-select__search-input:focus
{
  border-color: #7aa7d9;
  background: #ffffff;
  box-shadow: 0 0 0 3px rgba(37,99,235,.08);
}

.ui-select__options
{
  display: grid;
  gap: 4px;
  max-height: 184px;
  overflow: auto;
  padding-right: 2px;
}

.ui-select__empty
{
  padding: 12px 10px;
  color: #64748b;
  font-size: .86rem;
  font-weight: 800;
  text-align: center;
}

.ui-select__option[hidden],
.ui-select__empty[hidden]
{
  display: none !important;
}

.filter-field .ui-select__options,
.toolbar-per-page .ui-select__options
{
  max-height: 168px;
}

@media(max-width:720px)
{
  .ui-select__options
  {
    max-height: 160px;
  }
}

/* Datadis API */
.datadis-sync-card
{
  margin: 0 0 18px;
  padding: 18px;
  border: 1px solid #e9f8df;
  border-radius: 18px;
  background: linear-gradient(135deg, #ffffff, #f8fbff);
  box-shadow: 0 10px 24px rgba(15, 23, 42, .06);
}

.datadis-sync-card__summary
{
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}

.datadis-sync-card__summary h3
{
  margin: 4px 0 4px;
  color: #172033;
  font-size: 1rem;
}

.datadis-sync-card__summary p
{
  margin: 0;
  color: #64748b;
  font-size: .9rem;
}

.datadis-sync-form
{
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(160px, .7fr) auto;
  align-items: end;
  gap: 12px;
}

.datadis-sync-form .field
{
  margin-bottom: 0;
}

.datadis-sync-card--supplies-simple .datadis-sync-card__summary
{
  justify-content: center;
  text-align: center;
}

.datadis-sync-card--supplies-simple .datadis-sync-card__summary > div
{
  width: min(100%, 760px);
}

.datadis-sync-form--supplies-simple
{
  display: flex;
  align-items: center;
  justify-content: center;
}

.datadis-sync-form--supplies-simple > .btn
{
  min-width: 150px;
}

.datadis-sync-form > .btn
{
  align-self: end;
  min-height: 42px;
  margin-bottom: 0;
}

.datadis-sync-form--consumption
{
  grid-template-columns: minmax(150px, .6fr) minmax(150px, .6fr) minmax(170px, .7fr) auto;
}

.datadis-sync-status
{
  margin-top: 12px;
  font-size: .9rem;
  font-weight: 800;
  color: #475569;
}

.datadis-sync-status[data-type="success"]
{
  color: #047857;
}

.datadis-sync-status[data-type="error"]
{
  color: #b91c1c;
}

.datadis-sync-status[data-type="loading"]
{
  color: #51c303;
}

@media(max-width: 980px)
{
  .datadis-sync-form,
  .datadis-sync-form--consumption
  {
    grid-template-columns: 1fr;
  }

  .datadis-sync-form .btn
  {
    width: 100%;
  }
}


.card--chart
{
  margin-bottom: 1rem;
}

.sr-only
{
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.datadis-chart-card__header
{
  padding-bottom: 0.6rem;
}

.datadis-chart-card__range
{
  margin: 0.25rem 0 0;
  color: #64748b;
}

.datadis-period-filter
{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 0 1rem;
  padding: 0.25rem 0;
}

.datadis-period-tabs
{
  display: inline-flex;
  align-items: center;
  padding: 4px;
  border: 1px solid #e9f8df;
  border-radius: 999px;
  background: #eff6ff;
}

.datadis-period-tab
{
  min-width: 84px;
  padding: 0.55rem 1rem;
  border: 0;
  border-radius: 999px;
  color: #1e40af;
  background: transparent;
  font-size: 0.88rem;
  font-weight: 800;
  cursor: pointer;
  transition: color .18s ease, background .18s ease, box-shadow .18s ease;
}

.datadis-period-tab:hover
{
  background: rgba(255, 255, 255, 0.72);
}

.datadis-period-tab.is-active
{
  color: #ffffff;
  background: linear-gradient(135deg, var(--brand), var(--brand-3));
  box-shadow: 0 8px 18px rgba(81,195,3, 0.22);
}

.datadis-period-picker
{
  display: inline-flex;
  align-items: stretch;
  min-height: 42px;
  border: 1px solid #c9ecaF;
  border-radius: 12px;
  overflow: hidden;
  background: #ffffff;
  box-shadow: 0 6px 18px rgba(81,195,3, 0.08);
}

.datadis-period-picker__nav
{
  width: 40px;
  border: 0;
  color: #51c303;
  background: #eff6ff;
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
}

.datadis-period-picker__nav:hover
{
  background: #e9f8df;
}

.datadis-period-picker__field
{
  display: flex;
  align-items: center;
  min-width: 154px;
  border-right: 1px solid #e9f8df;
  border-left: 1px solid #e9f8df;
}

.datadis-period-picker__field input
{
  width: 100%;
  min-height: 40px;
  padding: 0.45rem 0.7rem;
  border: 0;
  outline: 0;
  color: #0f3b78;
  background: #ffffff;
  font-size: 0.86rem;
  font-weight: 800;
  text-align: center;
  color-scheme: light;
}

.datadis-period-picker__field input[type="number"]
{
  appearance: textfield;
}

.datadis-period-picker__field input[type="number"]::-webkit-inner-spin-button,
.datadis-period-picker__field input[type="number"]::-webkit-outer-spin-button
{
  margin: 0;
  appearance: none;
}

.datadis-chart-status
{
  min-height: 1.25rem;
  margin: -0.35rem 0 0.65rem;
  color: #64748b;
  font-size: 0.8rem;
}

.datadis-chart-status[data-type="error"]
{
  color: #b91c1c;
}

.datadis-chart-status[data-type="success"]
{
  color: #047857;
}

.datadis-kpis
{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0.55rem;
  margin-bottom: 0.65rem;
}

.datadis-kpi
{
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 0.65rem 0.8rem;
}

.datadis-kpi__label
{
  display: block;
  color: #64748b;
  font-size: 0.78rem;
  margin-bottom: 0.35rem;
}

.datadis-kpi__value
{
  display: block;
  color: #0f172a;
  font-size: 1rem;
  line-height: 1.3;
}

.datadis-chart__legend
{
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-bottom: 0.45rem;
  color: #475569;
  font-size: 0.85rem;
}

.datadis-chart__legend span
{
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}

.datadis-chart__legend [hidden]
{
  display: none !important;
}

.dot--consumo,
.dot--p1,
.dot--p2,
.dot--p3,
.dot--p4,
.dot--p5,
.dot--p6,
.dot--autoconsumo,
.dot--produccion,
.dot--excedente
{
  width: 10px;
  height: 10px;
  border-radius: 999px;
  display: inline-block;
}

.dot--consumo
{
  background: #0B77BD;
}

.dot--p1
{
  background: #C94B5F;
}

.dot--p2
{
  background: #E8A24C;
}

.dot--p3
{
  background: #55B985;
}

.dot--p4
{
  background: #6F52ED;
}

.dot--p5
{
  background: #3B82F6;
}

.dot--p6
{
  background: #64748B;
}

.dot--autoconsumo
{
  background: #13B8A6;
}

.dot--produccion
{
  background: #6F52ED;
}

.dot--excedente
{
  background: #F59E0B;
}

.datadis-chart
{
  border: 1px solid #dbe7f3;
  border-radius: 18px;
  background: linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);
  min-height: 265px;
  overflow: hidden;
  box-shadow: 0 12px 32px rgba(15, 59, 120, 0.07);
}

.datadis-chart__canvas-wrap
{
  position: relative;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 0.8rem 0.65rem 0.45rem;
  scrollbar-color: #c9ecaF transparent;
  scrollbar-width: thin;
}

.datadis-chart__canvas-wrap::-webkit-scrollbar
{
  height: 7px;
}

.datadis-chart__canvas-wrap::-webkit-scrollbar-track
{
  background: transparent;
}

.datadis-chart__canvas-wrap::-webkit-scrollbar-thumb
{
  border-radius: 999px;
  background: #c9ecaF;
}

.datadis-chart__canvas-wrap[hidden],
.datadis-chart__empty[hidden],
.datadis-chart__tooltip[hidden]
{
  display: none !important;
}

.datadis-chart__canvas
{
  display: block;
  min-width: 100%;
  height: 340px;
  border-radius: 14px;
}

.datadis-chart__empty
{
  min-height: 245px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: #64748b;
  padding: 1rem;
}

.datadis-chart__tooltip
{
  position: absolute;
  z-index: 5;
  display: grid;
  gap: .65rem;
  width: min(420px, calc(100vw - 28px));
  box-sizing: border-box;
  padding: 1rem;
  color: #0f172a;
  background: rgba(255,255,255,.985);
  border: 1px solid #c8dced;
  border-radius: 18px;
  box-shadow: 0 22px 55px rgba(15,23,42,.20), 0 4px 14px rgba(15,23,42,.08);
  font-size: .78rem;
  pointer-events: none;
  backdrop-filter: blur(10px);
}

.datadis-chart__tooltip--floating
{
  position: fixed;
  z-index: 10050;
  max-width: calc(100vw - 28px);
  max-height: calc(100vh - 28px);
  overflow: auto;
}

.datadis-chart__tooltip strong
{
  display:block;
  margin:0;
  padding:0 0 .7rem;
  border-bottom:1px solid #e3edf6;
  color:#10213d;
  font-size:.9rem;
  font-weight:900;
  letter-spacing:.01em;
}

.datadis-chart-tooltip__grid
{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
}

.datadis-chart-tooltip__grid span
{
  display:flex;
  min-width:0;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 9px;
  border:1px solid #e2ebf4;
  border-radius:11px;
  background:#f8fbff;
}

.datadis-chart-tooltip__grid em
{
  min-width:0;
  color:#607086;
  font-style:normal;
  font-weight:700;
}

.datadis-chart-tooltip__grid b
{
  flex:0 0 auto;
  color:#10213d;
  font-weight:900;
  white-space:nowrap;
}

.datadis-chart-tooltip__meta
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 10px;
  border-radius:11px;
  background:#edf5ff;
  color:#46627f;
}

.datadis-chart-tooltip__meta b
{
  color:#164187;
}

.datadis-chart-tooltip__empty
{
  padding:10px 12px;
  border-radius:11px;
  background:#f8fbff;
  color:#607086;
  text-align:center;
}

@media (max-width:560px)
{
  .datadis-chart-tooltip__grid{grid-template-columns:1fr}
}

.datadis-chart__note
{
  margin: 0.7rem 0 0;
  padding: 0.65rem 0.8rem;
  border: 1px solid #c9ecaF;
  border-radius: 10px;
  color: #1e3a8a;
  background: #eff6ff;
  font-size: 0.8rem;
}

.datadis-history-heading
{
  margin: 1.4rem 0 0.75rem;
  padding-top: 1rem;
  border-top: 1px solid #e2e8f0;
}

.datadis-history-heading h3
{
  margin: 0.2rem 0 0.25rem;
}

.datadis-history-heading p
{
  margin: 0;
  color: #64748b;
  font-size: 0.88rem;
}

@media(max-width: 820px)
{
  .datadis-period-filter
  {
    align-items: stretch;
    flex-direction: column;
  }

  .datadis-period-tabs
  {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    width: 100%;
  }

  .datadis-period-tab
  {
    min-width: 0;
    padding-right: 0.5rem;
    padding-left: 0.5rem;
  }

  .datadis-period-picker
  {
    align-self: flex-end;
  }
}

@media(max-width: 520px)
{
  .datadis-period-tabs
  {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-radius: 18px;
  }

  .datadis-period-picker
  {
    width: 100%;
  }

  .datadis-period-picker__field
  {
    flex: 1;
  }
}

/* Iconos visibles en botones de navegación de tablas */
.table-link__icon
{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  flex: 0 0 1.25rem;
  font-size: 1rem;
  line-height: 1;
}

.table-link > span:not(.table-link__icon)
{
  white-space: nowrap;
}

.table-link--contracts
{
  background: #eef2ff;
  color: #3730a3;
  border-color: #c7d2fe;
}

.table-link--contracts:hover
{
  background: #e0e7ff;
  box-shadow: 0 8px 18px rgba(55, 48, 163, .10);
}

.table-link--invoices
{
  background: #fff7ed;
  color: #9a3412;
  border-color: #fed7aa;
}

.table-link--invoices:hover
{
  background: #ffedd5;
  box-shadow: 0 8px 18px rgba(154, 52, 18, .10);
}

.table-link--datadis
{
  background: #f0f9ff;
  color: #075985;
  border-color: #bae6fd;
}

.table-link--datadis:hover
{
  background: #e0f2fe;
  box-shadow: 0 8px 18px rgba(7, 89, 133, .10);
}

.table-link--autoconsumo
{
  background: #fefce8;
  color: #854d0e;
  border-color: #fde68a;
}

.table-link--autoconsumo:hover
{
  background: #fef3c7;
  box-shadow: 0 8px 18px rgba(133, 77, 14, .10);
}

/* Edición de la ficha del ayuntamiento con la misma jerarquía visual que la vista cliente */
.ayuntamiento-edit-page
{
  width:100%;
  max-width:1120px;
  margin:0 auto;
  display:grid;
  gap:18px;
}
.ayuntamiento-edit-form
{
  display:grid;
  gap:18px;
}
.ayuntamiento-edit-summary-card
{
  overflow:hidden;
  padding-bottom:0;
}
.ayuntamiento-edit-summary-card .page-card-header
{
  margin-bottom:0;
}
.ayuntamiento-edit-summary-card .table-edit-status
{
  display:none;
  min-height:0;
  margin:0;
  padding:0 26px;
}
.ayuntamiento-edit-summary-card .table-edit-status:not(:empty)
{
  display:block;
  padding-top:14px;
  padding-bottom:16px;
}
.ayuntamiento-edit-section .card__header
{
  padding-bottom:14px;
  border-bottom:1px solid #e2e8f0;
}
.ayuntamiento-edit-section .card__header h2
{
  margin:0;
}
.ayuntamiento-edit-grid
{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.ayuntamiento-edit-grid.ayuntamiento-edit-section--four
{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.ayuntamiento-edit-grid.ayuntamiento-edit-section--four .table-edit-field--wide
{
  grid-column:auto;
}
@media (max-width:1100px)
{
  .ayuntamiento-edit-grid.ayuntamiento-edit-section--four
  {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (max-width:760px)
{
  .ayuntamiento-edit-grid.ayuntamiento-edit-section--four
  {
    grid-template-columns:1fr;
  }
}
.ayuntamiento-edit-actions-card
{
  padding-top:18px;
  padding-bottom:18px;
}
.ayuntamiento-edit-actions-card .table-edit-actions
{
  margin-top:0;
}

@media (max-width:760px)
{
  .ayuntamiento-edit-summary-card .table-edit-status
  {
    padding-left:18px;
    padding-right:18px;
  }
  .ayuntamiento-edit-grid
  {
    grid-template-columns:1fr;
  }
}
.contract-datadis-prefill {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 420px);
  gap: 24px;
  align-items: center;
  margin-bottom: 24px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel-2);
}

.contract-datadis-prefill h3 {
  margin: 4px 0 6px;
}

.contract-datadis-prefill p,
.contract-datadis-prefill__status {
  margin: 0;
  color: var(--muted, #607080);
}

.contract-datadis-prefill__status {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}

.contract-datadis-prefill__status[data-type="loading"] {
  color: var(--brand);
}

.contract-datadis-prefill__status[data-type="error"] {
  color: var(--danger, #b42318);
  border-color: rgba(185,28,28,.28);
  background: var(--danger-soft);
}

.contract-datadis-prefill__status[data-type="success"] {
  color: var(--ok);
  border-color: rgba(4,120,87,.25);
  background: var(--ok-soft);
}

@media (max-width: 760px) {
  .contract-datadis-prefill {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
}

/* Detalle de autoconsumo: comparativa visual por CUPS. */
.auto-detail-visual {
  margin: 4px 0 24px;
  padding: 0;
  overflow: hidden;
  border: 1px solid #cfe0f2;
  border-radius: var(--radius);
  background: var(--panel);
  box-shadow: var(--shadow-soft);
}

.auto-detail-visual__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  margin: 0;
  padding: 20px 22px 18px;
  border-bottom: 1px solid #d4e4f5;
  background: linear-gradient(135deg, #edf5ff 0%, #f8fbff 68%, #ffffff 100%);
}

.auto-detail-visual__header h3 {
  margin: 5px 0 6px;
  color: #10213d;
  font-size: 1.22rem;
  line-height: 1.15;
  letter-spacing: -.025em;
}

.auto-detail-visual__header p {
  max-width: 760px;
  margin: 0;
  color: var(--muted, #607086);
}

.auto-detail-visual__count {
  min-width: 142px;
  padding: 12px 16px;
  border: 1px solid #cfe0f2;
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 8px 20px rgba(81,195,3, .07);
  text-align: right;
}

.auto-detail-visual__count strong,
.auto-detail-visual__count span {
  display: block;
}

.auto-detail-visual__count strong {
  color: #10213d;
  font-size: 1.35rem;
}

.auto-detail-visual__count span {
  margin-top: 2px;
  color: #607086;
  font-size: .76rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .055em;
}

.auto-detail-visual__metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 16px 20px;
  border-bottom: 1px solid #e4edf6;
  background: #f8fbff;
}

.auto-detail-metric {
  appearance: none;
  min-height: 36px;
  padding: 8px 12px;
  border: 1px solid #cfe0f2;
  border-radius: 12px;
  background: #fff;
  color: #52657b;
  font: inherit;
  font-size: .78rem;
  font-weight: 850;
  cursor: pointer;
  box-shadow: 0 4px 10px rgba(15, 23, 42, .035);
  transition: border-color .15s ease, background .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.auto-detail-metric:hover {
  border-color: #b8d5f7;
  background: #eef6ff;
  color: #164187;
  transform: translateY(-1px);
}

.auto-detail-metric.is-active {
  border-color: var(--brand);
  background: linear-gradient(135deg, var(--brand), var(--brand-3));
  color: #fff;
  box-shadow: 0 8px 18px rgba(81,195,3, .2);
}

.auto-detail-metric:focus-visible {
  outline: 3px solid rgba(81,195,3, .2);
  outline-offset: 2px;
}

.auto-detail-visual__status {
  display: flex;
  min-height: 260px;
  align-items: center;
  justify-content: center;
  margin: 18px 20px 0;
  border: 1px dashed #c9dced;
  border-radius: 20px;
  background: #f8fbff;
  color: #607086;
  font-weight: 750;
}

.auto-detail-visual__status[hidden] {
  display: none !important;
}

.auto-detail-visual__scroll {
  position: relative;
  max-height: 650px;
  margin: 18px 20px 0;
  overflow: auto;
  border: 1px solid #cfe0f2;
  border-radius: 20px;
  background: var(--panel-2);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9);
  scrollbar-color: #a9bfd6 #edf4fb;
}

.auto-detail-visual__scroll::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.auto-detail-visual__scroll::-webkit-scrollbar-track {
  border-radius: 999px;
  background: #edf4fb;
}

.auto-detail-visual__scroll::-webkit-scrollbar-thumb {
  border: 2px solid #edf4fb;
  border-radius: 999px;
  background: #9fb8d2;
}

.auto-detail-visual__scroll[hidden] {
  display: none !important;
}

.auto-detail-visual__stage {
  position: relative;
  min-width: 780px;
}

.auto-detail-visual__canvas {
  display: block;
  width: 100%;
  border-radius: 19px;
}

.auto-detail-visual__tooltip {
  position: absolute;
  z-index: 5;
  width: min(430px, calc(100vw - 48px));
  padding: 14px;
  border: 1px solid #cfe0f2;
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, .98);
  box-shadow: 0 18px 42px rgba(15, 23, 42, .16);
  color: var(--text);
  pointer-events: none;
}

.auto-detail-visual__tooltip[hidden] {
  display: none !important;
}

.auto-detail-visual__tooltip--floating {
  position: fixed;
  z-index: 10000;
  box-sizing: border-box;
  width: min(560px, calc(100vw - 24px));
  max-width: calc(100vw - 24px);
  max-height: calc(100vh - 24px);
  overflow: auto;
  opacity: 0;
  visibility: hidden;
  transform: none;
  transition: none;
  pointer-events: none;
}

.auto-detail-visual__tooltip--floating.is-visible {
  opacity: 1;
  visibility: visible;
  transform: none;
}


.auto-detail-visual__tooltip > strong {
  display: block;
  margin-bottom: 9px;
  color: #10213d;
  font-size: .88rem;
  letter-spacing: .025em;
}

.auto-detail-tooltip__selected {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
  padding: 9px 10px;
  border: 1px solid #cfe2f7;
  border-radius: 12px;
  background: var(--brand-soft);
  color: #164187;
  font-size: .8rem;
}

.auto-detail-tooltip__selected b {
  color: #10213d;
}

.auto-detail-tooltip__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 12px;
}

.auto-detail-tooltip__grid span {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: .72rem;
}

.auto-detail-tooltip__grid em {
  font-style: normal;
}

.auto-detail-tooltip__grid b {
  min-width: 0;
  color: #10213d;
  font-weight: 800;
  overflow-wrap: anywhere;
  text-align: right;
  white-space: normal;
}

.auto-detail-visual__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0;
  padding: 12px 20px 16px;
  color: #607086;
  font-size: .78rem;
}

.auto-detail-visual__footer strong {
  color: #164187;
}

.auto-detail-visual__status[data-type="error"] {
  border-color: rgba(185, 28, 28, .25);
  background: #fff7f7;
  color: #a61b1b;
}

@media (max-width: 760px) {
  .auto-detail-visual__header,
  .auto-detail-visual__footer {
    align-items: stretch;
    flex-direction: column;
  }

  .auto-detail-visual__header {
    padding: 18px;
  }

  .auto-detail-visual__metrics {
    padding: 14px 16px;
  }

  .auto-detail-visual__scroll,
  .auto-detail-visual__status {
    margin-right: 16px;
    margin-left: 16px;
  }

  .auto-detail-visual__footer {
    padding-right: 16px;
    padding-left: 16px;
  }

  .auto-detail-visual__count {
    width: 100%;
    text-align: left;
  }

  .auto-detail-tooltip__grid {
    grid-template-columns: 1fr;
  }
}

/* Dashboard multiayuntamiento: salud, desviaciones y actividad */
.dashboard-panels--stacked
{
  grid-template-columns:minmax(0,1fr);
}
.dashboard-panel--full
{
  width:100%;
  min-height:0;
}
.dashboard-panel__header--compact
{
  min-height:0;
}
.status-pill--neutral
{
  background:#f1f5f9;
  border-color:#dbe4ee;
  color:#526277;
}
.status-pill--warning
{
  background:#fff7e8;
  border-color:#f4d69c;
  color:#9a5b05;
}
.status-pill--error
{
  background:#fff0f0;
  border-color:#f0b8b8;
  color:#b42318;
}
.dashboard-health-summary
{
  display:grid;
  grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);
  gap:18px;
  align-items:stretch;
  margin-bottom:20px;
}

.dashboard-health-summary--simple
{
  grid-template-columns:1fr;
}
.dashboard-health-metrics--simple
{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.dashboard-health-summary__message
{
  display:flex;
  align-items:center;
  padding:18px 20px;
  border:1px solid #dce8f4;
  border-radius:18px;
  background:linear-gradient(135deg,#f8fbff,#fff);
  color:#334155;
  font-weight:750;
  line-height:1.55;
}
.dashboard-health-metrics
{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.dashboard-health-metric,
.dashboard-platform-metric
{
  padding:16px 17px;
  border:1px solid #dde8f4;
  border-radius:18px;
  background:#fbfdff;
  min-width:0;
}
.dashboard-health-metric span,
.dashboard-platform-metric span
{
  display:block;
  color:#64748b;
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.045em;
  text-transform:uppercase;
}
.dashboard-health-metric strong,
.dashboard-platform-metric strong
{
  display:block;
  margin-top:8px;
  color:#0f172a;
  font-size:1.18rem;
  letter-spacing:-.03em;
  overflow-wrap:anywhere;
}
.dashboard-section-label
{
  margin:2px 0 11px;
  color:#53677f;
  font-size:.76rem;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.dashboard-event-list
{
  display:grid;
  gap:10px;
}
.dashboard-event
{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:13px;
  align-items:center;
  padding:13px 15px;
  border:1px solid #dde7f2;
  border-radius:17px;
  background:#fff;
}
.dashboard-event--warning
{
  background:#fffdf8;
  border-color:#efdfbc;
}
.dashboard-event--danger
{
  background:#fffafa;
  border-color:#efcccc;
}
.dashboard-event--neutral
{
  background:#fbfdff;
}
.dashboard-event__marker
{
  width:10px;
  height:10px;
  border-radius:999px;
  background:#d69a22;
  box-shadow:0 0 0 5px rgba(214,154,34,.12);
}
.dashboard-event--danger .dashboard-event__marker
{
  background:#c53b32;
  box-shadow:0 0 0 5px rgba(197,59,50,.1);
}
.dashboard-event__avatar
{
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border-radius:13px;
  background:#eaf3ff;
  border:1px solid #cfe0f3;
  color:#164187;
  font-weight:950;
}
.dashboard-event__content
{
  display:grid;
  gap:4px;
  min-width:0;
}
.dashboard-event__head
{
  display:flex;
  align-items:center;
  gap:9px;
  flex-wrap:wrap;
}
.dashboard-event__content strong
{
  color:#0f172a;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.dashboard-event__content p
{
  margin:0;
  color:#566a82;
  font-size:.9rem;
  line-height:1.45;
}
.dashboard-event__detail
{
  color:#6b7d93;
  font-size:.82rem;
  line-height:1.35;
}
.dashboard-event__badge
{
  display:inline-flex;
  padding:4px 8px;
  border-radius:999px;
  background:#edf3fa;
  color:#52667e;
  font-size:.69rem;
  font-weight:950;
  letter-spacing:.035em;
  text-transform:uppercase;
}
.dashboard-event--danger .dashboard-event__badge
{
  background:#fee9e7;
  color:#a52b23;
}
.dashboard-event--warning .dashboard-event__badge
{
  background:#fff0cf;
  color:#8f5808;
}
.dashboard-event time,
.dashboard-event__metric
{
  color:#6b7d93;
  font-size:.78rem;
  font-weight:800;
  text-align:right;
  white-space:nowrap;
}
.dashboard-event__metric
{
  display:grid;
  gap:4px;
}
.dashboard-event__metric strong
{
  color:#243b57;
  font-size:.9rem;
}
.dashboard-event__metric span
{
  text-transform:capitalize;
}
.dashboard-ok-row
{
  display:flex;
  align-items:center;
  gap:13px;
  padding:16px 18px;
  border:1px solid #bee5d1;
  border-radius:17px;
  background:#f3fcf7;
}
.dashboard-ok-row__icon
{
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:#daf4e6;
  color:#16734a;
  font-weight:950;
}
.dashboard-ok-row div
{
  display:grid;
  gap:3px;
}
.dashboard-ok-row strong
{
  color:#145c3d;
}
.dashboard-ok-row span:not(.dashboard-ok-row__icon)
{
  color:#517064;
  font-size:.88rem;
}
.dashboard-alert-counters
{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.dashboard-alert-counters span
{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:8px 11px;
  border-radius:999px;
  border:1px solid #dce7f2;
  background:#f8fbff;
  color:#63768c;
  font-size:.78rem;
  font-weight:850;
}
.dashboard-alert-counters strong
{
  color:#152f4d;
}
.dashboard-panel__header-actions
{
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  gap:10px;
  flex-wrap:wrap;
}
.dashboard-clear-messages
{
  min-height:38px;
}
.dashboard-message-toolbar
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin:0 0 12px;
}
.dashboard-message-toolbar[hidden],
.dashboard-message-pagination[hidden]
{
  display:none !important;
}
.dashboard-message-search
{
  display:block;
  width:min(520px,100%);
}
.dashboard-message-search .input
{
  width:100%;
  min-height:42px;
  border-radius:14px;
}
.dashboard-message-result
{
  color:#64748b;
  font-size:.82rem;
  font-weight:800;
  white-space:nowrap;
}
.dashboard-message-pagination
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid #e4edf6;
  color:#64748b;
  font-size:.84rem;
  font-weight:800;
}
.dashboard-message-pagination__actions
{
  display:flex;
  gap:8px;
}
.dashboard-message-pagination .btn:disabled
{
  opacity:.45;
  cursor:not-allowed;
  transform:none;
}
.dashboard-platform-grid
{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:20px;
}
.dashboard-platform-metric strong
{
  font-size:1.55rem;
}

@media(max-width:980px)
{
  .dashboard-health-summary
  {
    grid-template-columns:1fr;
  }
  .dashboard-platform-grid
  {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:720px)
{
  .dashboard-health-metrics,
  .dashboard-platform-grid
  {
    grid-template-columns:1fr;
  }
  .dashboard-event
  {
    grid-template-columns:auto minmax(0,1fr);
  }
  .dashboard-event time,
  .dashboard-event__metric
  {
    grid-column:2;
    text-align:left;
    white-space:normal;
  }
  .dashboard-alert-counters
  {
    justify-content:flex-start;
  }
  .dashboard-panel__header-actions
  {
    align-items:stretch;
    justify-content:flex-start;
    width:100%;
  }
  .dashboard-message-toolbar,
  .dashboard-message-pagination
  {
    align-items:stretch;
    flex-direction:column;
  }
  .dashboard-message-search
  {
    width:100%;
  }
  .dashboard-message-result
  {
    white-space:normal;
  }
  .dashboard-message-pagination__actions
  {
    width:100%;
  }
  .dashboard-message-pagination__actions .btn
  {
    flex:1;
  }
}

/* Dashboard de un único ayuntamiento: resumen mensual y rankings energéticos */
.dashboard-kpi-card--comparison strong
{
  font-size:clamp(1.35rem,1.8vw,1.7rem);
  overflow-wrap:anywhere;
}
.dashboard-kpi-comparison
{
  display:inline-flex;
  align-items:center;
  width:fit-content;
  max-width:100%;
  padding:5px 9px;
  border:1px solid #dbe6f2;
  border-radius:999px;
  background:#f8fafc;
  color:#64748b;
  font-size:.74rem;
  font-weight:850;
  line-height:1.25;
}
.dashboard-kpi-comparison.is-up
{
  border-color:#f2c9c4;
  background:#fff5f3;
  color:#a33b31;
}
.dashboard-kpi-comparison.is-down
{
  border-color:#bfe5d4;
  background:#f0fbf6;
  color:#17694d;
}
.dashboard-kpi-comparison.is-neutral
{
  border-color:#dbe6f2;
  background:#f8fafc;
  color:#64748b;
}
.dashboard-panels--equal
{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.dashboard-panels--single .dashboard-panel
{
  min-height:410px;
}
.bar-chart--autoconsumo .bar-chart__fill
{
  background:linear-gradient(90deg,#0f766e,#2dd4bf);
}
.dashboard-panel--autoconsumo .chart-axis-label:before
{
  background:linear-gradient(90deg,#0f766e,#2dd4bf);
}
@media(max-width:1280px)
{
  .dashboard-panels--equal
  {
    grid-template-columns:1fr;
  }
  .dashboard-panels--single .dashboard-panel
  {
    min-height:0;
  }
}

/* Contratos - importación CSV con plantillas reutilizables */
.contratos-import-card .contratos-import-form
{
  grid-template-columns:minmax(260px,1fr) minmax(320px,1fr) auto;
}

.btn[data-contratos-import-toggle].is-active,
.btn[data-contratos-template-toggle].is-active
{
  background:linear-gradient(135deg,#e8f2ff,#e9f8df);
  color:#164187;
  box-shadow:none;
}

.contratos-template-card
{
  margin:0 0 20px;
  padding:22px;
  border:1px solid #dbe6f2;
  border-radius:22px;
  background:#fff;
  box-shadow:0 10px 30px rgba(15,23,42,.05);
}

.contratos-template-card[hidden]
{
  display:none!important;
}

.contratos-template-card__header
{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding-bottom:18px;
  border-bottom:1px solid #e7eef6;
}

.contratos-template-card__header h3
{
  margin:4px 0 5px;
}

.contratos-template-card__header p
{
  margin:0;
  color:#64748b;
  max-width:780px;
}

.contratos-template-analyze
{
  display:grid;
  grid-template-columns:minmax(220px,.8fr) minmax(260px,1fr) minmax(280px,1fr) auto;
  gap:14px;
  align-items:end;
  margin-top:20px;
}

.contratos-template-analyze .field
{
  margin:0;
}

.contratos-template-analyze .field > span
{
  display:inline-block;
  margin-bottom:8px;
  color:#334155;
  font-size:.86rem;
  font-weight:900;
}



.facturas-template-ayuntamientos
{
  grid-column:1 / -1;
}

.facturas-template-ayuntamientos__select
{
  min-height:156px;
  padding:8px 10px;
  background:#fff;
}

.facturas-template-ayuntamientos__select option
{
  padding:8px 10px;
  border-radius:8px;
}

.facturas-template-ayuntamientos .field__hint
{
  display:block;
  margin-top:7px;
  color:#64748b;
  font-size:.82rem;
  font-weight:650;
  line-height:1.35;
}

.contratos-template-mapping
{
  margin-top:20px;
  padding:18px;
  border:1px solid #dbe6f2;
  border-radius:18px;
  background:#f8fbff;
}

.contratos-template-mapping[hidden]
{
  display:none!important;
}

.contratos-template-mapping__intro
{
  display:flex;
  flex-direction:column;
  gap:4px;
  margin-bottom:14px;
}

.contratos-template-mapping__intro span
{
  color:#64748b;
  font-size:.9rem;
}

.contratos-template-mapping__table td
{
  vertical-align:middle;
}

.contratos-template-mapping__table .input
{
  min-width:260px;
}

.contratos-template-mapping__actions
{
  display:flex;
  justify-content:flex-end;
  margin-top:14px;
}

.contratos-template-list
{
  margin-top:22px;
  padding-top:18px;
  border-top:1px solid #e7eef6;
}

.contratos-template-list__header
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}

.contratos-template-list__header span
{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:26px;
  padding:0 9px;
  border-radius:999px;
  background:#eef5ff;
  color:#51c303;
  font-size:.8rem;
  font-weight:900;
}

.contratos-template-list__item
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:12px 0;
  border-top:1px solid #eef2f7;
}

.contratos-template-list__item > div
{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
}

.contratos-template-list__item span,
.contratos-template-empty
{
  color:#64748b;
  font-size:.88rem;
}

.contratos-import-errors
{
  margin:9px 0 0;
  padding-left:18px;
  color:inherit;
  font-size:.86rem;
  font-weight:650;
}

.contratos-import-errors li + li
{
  margin-top:3px;
}

@media (max-width:1100px)
{
  .contratos-template-analyze
  {
    grid-template-columns:1fr 1fr;
  }

  .contratos-import-card .contratos-import-form
  {
    grid-template-columns:1fr;
  }
}

@media (max-width:720px)
{
  .contratos-template-card__header,
  .contratos-template-list__item
  {
    align-items:stretch;
    flex-direction:column;
  }

  .contratos-template-analyze
  {
    grid-template-columns:1fr;
  }

  .contratos-template-mapping__table .input
  {
    min-width:220px;
  }
}

/* Renovaciones de contratos */
.dashboard-renewal-section
{
  margin-top:18px;
}
.dashboard-renewal-card
{
  border-color:#dbe7f3;
}
.dashboard-renewal-summary
{
  display:flex;
  align-items:center;
  min-height:34px;
  padding:7px 12px;
  border:1px solid #dbe7f3;
  border-radius:999px;
  background:#f8fbff;
  color:#475569;
  font-size:.78rem;
  font-weight:900;
  white-space:nowrap;
}
.deadline-list__item.is-soon
{
  border-left:4px solid #d6a72f;
  background:#fffdf7;
}
.deadline-list__item.is-warning
{
  border-left:4px solid #e67e22;
  background:#fff9f3;
}
.deadline-list__item.is-critical,
.deadline-list__item.is-overdue
{
  border-left:4px solid #dc2626;
  background:#fff7f7;
}
.deadline-status
{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:4px 8px;
  border-radius:999px;
  background:#eef3f8;
}
.deadline-status--soon
{
  color:#8a6210 !important;
  background:#fff3cd;
}
.deadline-status--warning
{
  color:#9a4f0a !important;
  background:#ffead5;
}
.deadline-status--critical,
.deadline-status--overdue
{
  color:#991b1b !important;
  background:#fee2e2;
}

.table tbody tr.contract-deadline-row > td
{
  transition:background-color .15s ease, box-shadow .15s ease;
}
.table tbody tr.contract-deadline-row--soon > td
{
  background:#fffdf5;
}
.table tbody tr.contract-deadline-row--warning > td
{
  background:#fff8ef;
}
.table tbody tr.contract-deadline-row--critical > td,
.table tbody tr.contract-deadline-row--overdue > td
{
  background:#fff4f4;
}
.table tbody tr.contract-deadline-row--soon > td:first-child
{
  box-shadow:inset 4px 0 0 #d6a72f;
}
.table tbody tr.contract-deadline-row--warning > td:first-child
{
  box-shadow:inset 4px 0 0 #e67e22;
}
.table tbody tr.contract-deadline-row--critical > td:first-child,
.table tbody tr.contract-deadline-row--overdue > td:first-child
{
  box-shadow:inset 4px 0 0 #dc2626;
}
.contract-deadline-cell
{
  display:grid;
  gap:5px;
  justify-items:start;
  min-width:130px;
}
.contract-deadline-badge
{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:3px 8px;
  border-radius:999px;
  font-size:.7rem;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
}
.contract-deadline-badge--soon
{
  color:#7a560b;
  background:#fff3cd;
}
.contract-deadline-badge--warning
{
  color:#914709;
  background:#ffead5;
}
.contract-deadline-badge--critical,
.contract-deadline-badge--overdue
{
  color:#991b1b;
  background:#fee2e2;
}
@media(max-width:720px)
{
  .dashboard-renewal-summary
  {
    white-space:normal;
    border-radius:14px;
  }
}


/* Detalle autoconsumo: estado de carga visible mientras llega la consulta AJAX. */
.auto-detail-loading {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 14px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface-soft, #f8fafc);
  color: var(--text);
}

.auto-detail-loading[hidden] {
  display: none;
}

.auto-detail-loading__spinner {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  border: 3px solid rgba(15, 23, 42, .14);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: auto-detail-loading-spin .8s linear infinite;
}

.auto-detail-loading strong,
.auto-detail-loading span {
  display: block;
}

.auto-detail-loading strong {
  font-size: .95rem;
}

.auto-detail-loading div > span {
  margin-top: 2px;
  color: var(--muted);
  font-size: .86rem;
}

@keyframes auto-detail-loading-spin {
  to { transform: rotate(360deg); }
}

/* Detalle autoconsumo: selector temporal equivalente a CONSUMOS. */
.auto-detail-period-filter {
  margin: 0;
  padding: 14px 20px;
  border-bottom: 1px solid #e4edf6;
  background: #fff;
}

.auto-detail-period-picker__field {
  justify-content: center;
  padding: 0 .9rem;
  border-top: 0;
  border-bottom: 0;
  background: #fff;
  color: #0f3b78;
  font-weight: 800;
  cursor: pointer;
}

.auto-detail-period-modal-nav {
  display: flex;
  width: 100%;
  margin-bottom: 12px;
}

.auto-detail-period-modal-heading {
  flex: 1;
  justify-content: center;
}

.auto-detail-period-weekdays {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
  margin-bottom: 4px;
}

.auto-detail-period-weekdays[hidden] {
  display: none !important;
}

.auto-detail-period-weekdays span {
  color: #64748b;
  font-size: .78rem;
  font-weight: 800;
  text-align: center;
}

.auto-detail-period-grid {
  display: grid;
  width: 100%;
  gap: 4px;
  border-radius: 18px;
}

.auto-detail-period-grid .datadis-period-tab {
  min-width: 0;
  padding: .55rem .25rem;
}

/* CUPS individual: datos a la izquierda, gráfica a la derecha y desglose debajo. */
.auto-detail-single {
  display: grid;
  grid-template-columns: minmax(270px, 320px) minmax(0, 1fr);
  gap: 18px;
  padding: 18px 20px 0;
  background: #fff;
}

.auto-detail-single[hidden] {
  display: none !important;
}

.auto-detail-single__summary {
  min-width: 0;
  overflow: hidden;
  border: 1px solid #cfe0f2;
  border-radius: 18px;
  background: #f8fbff;
  align-self: start;
}

.auto-detail-single__summary-head {
  padding: 16px 16px 14px;
  border-bottom: 1px solid #dbe8f4;
  background: linear-gradient(135deg, #edf5ff, #fff);
}

.auto-detail-single__summary-head strong,
.auto-detail-single__summary-head small {
  display: block;
}

.auto-detail-single__summary-head strong {
  margin-top: 5px;
  overflow-wrap: anywhere;
  color: #10213d;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .87rem;
}

.auto-detail-single__summary-head small {
  margin-top: 5px;
  color: #607086;
  font-size: .76rem;
  font-weight: 700;
}

.auto-detail-single__fields {
  max-height: 575px;
  margin: 0;
  overflow: auto;
}

.auto-detail-single__fields > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 9px 14px;
  border-bottom: 1px solid #e4edf6;
}

.auto-detail-single__fields > div:last-child {
  border-bottom: 0;
}

.auto-detail-single__fields dt,
.auto-detail-single__fields dd {
  margin: 0;
}

.auto-detail-single__fields dt {
  color: #607086;
  font-size: .74rem;
  font-weight: 700;
}

.auto-detail-single__fields dd {
  max-width: 150px;
  overflow-wrap: anywhere;
  color: #10213d;
  font-size: .76rem;
  font-weight: 850;
  text-align: right;
}

.auto-detail-single__chart-column {
  min-width: 0;
}

.auto-detail-visual__scroll--single {
  max-height: none;
  margin: 0;
}

.auto-detail-visual__stage--single {
  min-width: 620px;
}

.auto-detail-breakdown {
  margin-top: 16px;
  overflow: hidden;
  border: 1px solid #cfe0f2;
  border-radius: 18px;
  background: #fff;
}

.auto-detail-breakdown[hidden] {
  display: none !important;
}

.auto-detail-breakdown__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 16px;
  border-bottom: 1px solid #e4edf6;
  background: #f8fbff;
}

.auto-detail-breakdown__header h4 {
  margin: 3px 0 0;
  color: #10213d;
  font-size: .98rem;
}

.auto-detail-breakdown__header > strong {
  color: #164187;
  font-size: .8rem;
}

.auto-detail-breakdown__table-wrap {
  max-height: 360px;
  overflow: auto;
}

.auto-detail-breakdown__table {
  margin: 0;
  min-width: 760px;
}

.auto-detail-breakdown__table th,
.auto-detail-breakdown__table td {
  white-space: nowrap;
}

.auto-detail-breakdown__period {
  color: #164187;
  font-weight: 850;
}

@media (max-width: 980px) {
  .auto-detail-single {
    grid-template-columns: 1fr;
  }

  .auto-detail-single__fields {
    max-height: none;
  }

  .auto-detail-period-filter {
    align-items: stretch;
    flex-direction: column;
  }

  .auto-detail-period-filter .datadis-period-tabs,
  .auto-detail-period-filter .datadis-period-picker {
    width: 100%;
  }

  .auto-detail-period-filter .datadis-period-tabs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .auto-detail-period-filter .datadis-period-tab {
    min-width: 0;
    padding-right: .45rem;
    padding-left: .45rem;
  }

  .auto-detail-period-filter .auto-detail-period-picker__field {
    flex: 1;
  }
}

@media (max-width: 620px) {
  .auto-detail-single {
    padding-right: 16px;
    padding-left: 16px;
  }

  .auto-detail-period-filter {
    padding-right: 16px;
    padding-left: 16px;
  }

  .auto-detail-period-filter .datadis-period-tabs {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-radius: 18px;
  }

  .auto-detail-breakdown__header {
    align-items: flex-start;
    flex-direction: column;
  }
}


/* Calendario de fecha dentro de los modales de confirmación */
.ui-calendar--confirm
{
  z-index:10080;
  border-color:#c8d9eb;
  box-shadow:0 28px 70px rgba(15,23,42,.24);
}
.app-confirm__field .ui-date__button
{
  min-height:46px;
  border-radius:13px;
  border-color:#cfddeb;
  background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);
  box-shadow:0 8px 20px rgba(15,23,42,.045);
}
.app-confirm__field .ui-date__button:hover
{
  border-color:#abc4df;
  background:linear-gradient(180deg,#ffffff 0%,#f2f7ff 100%);
}
.app-confirm__field .ui-date__button:focus-visible
{
  border-color:#8adf52;
  box-shadow:0 0 0 4px rgba(81,195,3,.13),0 12px 26px rgba(15,23,42,.07);
}

/* Alta y configuración de ayuntamientos */
.onboarding-admin{display:grid;gap:20px}.onboarding-admin-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:26px 28px;border:1px solid var(--border,#e2e8f0);border-radius:18px;background:linear-gradient(135deg,#fff,#f8fafc)}.onboarding-admin-hero h2{margin:4px 0 8px;font-size:clamp(24px,3vw,34px)}.onboarding-admin-hero p{max-width:760px;margin:0;color:var(--muted,#64748b)}.onboarding-admin-stats{display:grid;grid-template-columns:repeat(3,minmax(110px,1fr));gap:10px;min-width:min(460px,100%)}.onboarding-admin-stats>div{padding:14px 16px;border:1px solid var(--border,#e2e8f0);border-radius:14px;background:#fff}.onboarding-admin-stats strong{display:block;font-size:24px}.onboarding-admin-stats span{font-size:12px;color:var(--muted,#64748b)}.onboarding-admin-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:20px}.onboarding-create-grid,.onboarding-public-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.onboarding-field-wide{grid-column:1/-1}.onboarding-form-actions{display:flex;align-items:center;gap:14px;margin-top:18px;flex-wrap:wrap}.onboarding-inline-status{font-size:13px;color:var(--muted,#64748b)}.onboarding-invite-result{margin-top:20px;padding:18px;border:1px solid #bae6fd;border-radius:14px;background:#f0f9ff}.onboarding-invite-result strong{display:block;margin:4px 0}.onboarding-invite-result p{margin:4px 0 12px;color:#475569}.onboarding-invite-copy-row{display:flex;gap:8px}.onboarding-invite-copy-row .input{min-width:0}.onboarding-superadmin-list{display:grid;gap:12px}.onboarding-superadmin-item{padding:14px;border:1px solid var(--border,#e2e8f0);border-radius:14px;background:#fff}.onboarding-superadmin-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.onboarding-superadmin-meta strong{width:100%}.onboarding-superadmin-meta>span:not(.onboarding-badge),.onboarding-superadmin-meta small{color:var(--muted,#64748b);font-size:13px}.onboarding-superadmin-item form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.onboarding-management-card{overflow:hidden}.onboarding-management-header{align-items:flex-start}.onboarding-filters{display:grid;grid-template-columns:minmax(240px,1.5fr) repeat(3,minmax(160px,.65fr));gap:12px;padding:0 20px 18px}.onboarding-table-status{padding:0 20px 12px;color:var(--muted,#64748b);font-size:13px}.onboarding-table-wrap{overflow:auto;border-top:1px solid var(--border,#e2e8f0)}.onboarding-table{width:100%;min-width:1320px;border-collapse:collapse}.onboarding-table th,.onboarding-table td{padding:12px 10px;border-bottom:1px solid var(--border,#e2e8f0);vertical-align:top;text-align:left}.onboarding-table th{position:sticky;top:0;background:#f8fafc;z-index:1;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.onboarding-module-heading,.onboarding-module-cell{text-align:center!important;min-width:92px}.onboarding-ayto-cell{min-width:240px}.onboarding-ayto-cell strong,.onboarding-ayto-cell span{display:block}.onboarding-ayto-cell span{margin-top:3px;font-size:12px;color:#64748b}.onboarding-detection-cell{min-width:330px}.onboarding-status-line{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.onboarding-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.onboarding-badge--success{background:#dcfce7;color:#166534}.onboarding-badge--warning{background:#fef3c7;color:#92400e}.onboarding-badge--neutral{background:#e2e8f0;color:#475569}.onboarding-check-list{display:flex;gap:5px;flex-wrap:wrap}.onboarding-check{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:999px;font-size:10px;background:#f1f5f9;color:#475569}.onboarding-check span{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;font-weight:800}.onboarding-check.is-ok span{background:#dcfce7;color:#166534}.onboarding-check.is-pending span{background:#fee2e2;color:#991b1b}.onboarding-switch{display:inline-flex;position:relative;width:42px;height:24px;cursor:pointer}.onboarding-switch input{position:absolute;opacity:0;pointer-events:none}.onboarding-switch>span{width:42px;height:24px;border-radius:999px;background:#cbd5e1;transition:.18s;box-shadow:inset 0 0 0 1px rgba(15,23,42,.08)}.onboarding-switch>span:after{content:"";display:block;width:18px;height:18px;margin:3px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(15,23,42,.25);transition:.18s}.onboarding-switch input:checked+span{background:#0f172a}.onboarding-switch input:checked+span:after{transform:translateX(18px)}.onboarding-switch.is-locked{opacity:.65;cursor:not-allowed}.onboarding-module-cell small{display:block;margin-top:4px;font-size:10px;color:#64748b}.onboarding-actions-cell{min-width:150px}.btn--compact{padding:7px 9px;font-size:11px}.onboarding-empty,.onboarding-loading{padding:18px;color:#64748b;text-align:center}.onboarding-public-page{min-height:100vh;height:auto;overflow:auto}.onboarding-public-shell{width:min(980px,calc(100% - 30px));margin:34px auto}.onboarding-public-card{width:100%;max-width:none}.onboarding-public-card .login-card__header{max-width:760px}.onboarding-public-form{display:grid;gap:16px}.onboarding-form-section{margin-top:8px;padding-top:16px;border-top:1px solid var(--border,#e2e8f0)}.onboarding-form-section h2{margin:0 0 4px;font-size:17px}.onboarding-form-section p{margin:0;color:#64748b;font-size:13px}.onboarding-public-submit{margin-top:8px;min-height:48px}.onboarding-success-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 18px;border-radius:50%;background:#dcfce7;color:#166534;font-size:28px;font-weight:900}
@media (max-width:1050px){.onboarding-admin-hero{align-items:stretch;flex-direction:column}.onboarding-admin-stats{min-width:0}.onboarding-admin-grid{grid-template-columns:1fr}.onboarding-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-filter-search{grid-column:1/-1}}
@media (max-width:680px){.onboarding-admin-hero{padding:20px}.onboarding-admin-stats{grid-template-columns:1fr}.onboarding-create-grid,.onboarding-public-grid,.onboarding-superadmin-item form,.onboarding-filters{grid-template-columns:1fr}.onboarding-field-wide,.onboarding-filter-search{grid-column:auto}.onboarding-invite-copy-row{flex-direction:column}.onboarding-public-shell{width:min(100% - 18px,980px);margin:12px auto}.onboarding-public-card{padding:20px}}

/* Facturas - plantillas CSV reutilizables */
.facturas-import-card .facturas-import-form
{
  grid-template-columns:minmax(210px,.95fr) minmax(210px,.9fr) minmax(280px,1.15fr) auto;
}

.btn[data-facturas-template-toggle].is-active
{
  background:linear-gradient(135deg,#e8f2ff,#e9f8df);
  color:#164187;
  box-shadow:none;
}

@media (max-width:1100px)
{
  .facturas-import-card .facturas-import-form
  {
    grid-template-columns:1fr 1fr;
  }
  .facturas-import-card .facturas-import-form .btn[type="submit"]
  {
    width:100%;
  }
}

@media (max-width:720px)
{
  .facturas-import-card .facturas-import-form
  {
    grid-template-columns:1fr;
  }
}

/* Facturas / Contratos - mantener alineados los campos al mostrar validaciones */
.facturas-import-form .field,
.contratos-template-analyze .field
{
  position:relative;
  padding-bottom:28px;
}

.facturas-import-form .field > .field__error,
.contratos-template-analyze .field > .field__error
{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  margin:0;
}

.facturas-import-form > .btn[type="submit"],
.contratos-template-analyze > .btn[type="submit"]
{
  margin-bottom:28px;
}

@media (max-width:1100px)
{
  .contratos-import-form > .btn[type="submit"]
  {
    margin-bottom:0;
  }
}

@media (max-width:980px)
{
  .facturas-import-form:not(.contratos-import-form) > .btn[type="submit"]
  {
    margin-bottom:0;
  }
}

@media (max-width:720px)
{
  .contratos-template-analyze > .btn[type="submit"]
  {
    margin-bottom:0;
  }
}


/* Facturas - selector múltiple de Ayuntamientos con el mismo lenguaje visual que los selects del panel */
.facturas-template-ayuntamientos .facturas-multiselect
{
  width:100%;
}

.facturas-multiselect .ui-select__button
{
  min-height:42px;
  height:42px;
}

.facturas-multiselect__panel
{
  max-height:360px;
  overflow:hidden;
}

.facturas-multiselect__options
{
  display:grid;
  gap:6px;
  max-height:238px;
  overflow:auto;
  padding-right:2px;
}

.facturas-multiselect__option
{
  position:relative;
  padding-right:38px;
}

.facturas-multiselect__option.is-selected:after
{
  content:"✓";
  position:absolute;
  right:13px;
  top:50%;
  transform:translateY(-50%);
  font-weight:950;
}

.facturas-multiselect__footer
{
  display:flex;
  justify-content:flex-end;
  padding:8px 4px 2px;
  border-top:1px solid #e7eef6;
}

.facturas-template-ayuntamientos__select.native-control-hidden
{
  min-height:0!important;
  padding:0!important;
}

/* Facturas - rediseño de gestión de plantillas */
.facturas-template-card
{
  position:relative;
  overflow:hidden;
  border-color:#d9e8d4;
  box-shadow:0 18px 46px rgba(15,23,42,.06);
}

.facturas-template-card:before
{
  content:"";
  position:absolute;
  inset:0 auto auto 0;
  width:100%;
  height:4px;
  background:linear-gradient(90deg, #51c303 0%, rgba(81,195,3,.24) 100%);
}

.facturas-template-card .contratos-template-card__header
{
  padding-bottom:20px;
}

.facturas-template-highlights
{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:14px;
  margin-top:20px;
}

.facturas-template-highlight
{
  padding:16px 18px;
  border:1px solid #e4edf6;
  border-radius:18px;
  background:linear-gradient(180deg, #ffffff 0%, #f8fcff 100%);
  box-shadow:0 10px 24px rgba(15,23,42,.04);
  display:grid;
  gap:6px;
}

.facturas-template-highlight__eyebrow
{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:#51c303;
  font-size:.76rem;
  font-weight:900;
  letter-spacing:.06em;
  text-transform:uppercase;
}

.facturas-template-highlight__eyebrow:before
{
  content:"";
  width:8px;
  height:8px;
  border-radius:999px;
  background:#51c303;
  box-shadow:0 0 0 5px rgba(81,195,3,.12);
}

.facturas-template-highlight strong
{
  color:#1e293b;
  font-size:.98rem;
  line-height:1.35;
}

.facturas-template-highlight p
{
  margin:0;
  color:#64748b;
  font-size:.88rem;
  line-height:1.5;
}

.facturas-template-analyze
{
  margin-top:18px;
  padding:20px;
  border:1px solid #e7eef6;
  border-radius:20px;
  background:#fbfdff;
  gap:16px;
}

.facturas-template-analyze .field > span
{
  color:#334155;
}

.facturas-template-analyze .input,
.facturas-template-analyze .ui-select__button
{
  background:#fff;
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset;
}

.facturas-template-ayuntamientos
{
  padding:16px 18px 14px;
  border:1px solid #e7eef6;
  border-radius:18px;
  background:linear-gradient(180deg, #ffffff 0%, #f9fcff 100%);
}

.facturas-template-ayuntamientos .facturas-multiselect
{
  margin-top:4px;
}

.facturas-multiselect .ui-select__button
{
  min-height:48px;
  height:48px;
  padding-right:46px;
  border-radius:14px;
}

.facturas-multiselect.has-selection .ui-select__button
{
  border-color:rgba(81,195,3,.28);
  box-shadow:0 0 0 4px rgba(81,195,3,.08);
}

.facturas-multiselect__panel
{
  margin-top:8px;
  padding:10px;
  border:1px solid #dbe6f2;
  border-radius:18px;
  background:#ffffff;
  box-shadow:0 22px 46px rgba(15,23,42,.14);
}

.facturas-multiselect__options
{
  gap:8px;
  max-height:250px;
}

.facturas-multiselect__option
{
  border-radius:12px;
  min-height:42px;
  padding:11px 40px 11px 14px;
  font-weight:800;
}

.facturas-multiselect__option.is-selected
{
  border-color:rgba(81,195,3,.24);
  background:rgba(81,195,3,.08);
  color:#245b06;
}

.facturas-multiselect__option.is-selected:after
{
  right:14px;
  color:#51c303;
}

.facturas-multiselect__footer
{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:10px 4px 2px;
}

.facturas-multiselect__footer-actions
{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}

.facturas-template-ayuntamientos .field__hint
{
  margin-top:10px;
  line-height:1.45;
}

.facturas-template-card .facturas-import-status__box
{
  border-radius:18px;
}

.facturas-template-card .contratos-template-mapping
{
  margin-top:18px;
  background:linear-gradient(180deg, #f8fbff 0%, #ffffff 100%);
  border-color:#dfe9f4;
}

.facturas-template-card .contratos-template-mapping__intro
{
  gap:8px;
}

.facturas-template-card .contratos-template-list
{
  margin-top:20px;
}

.facturas-template-card .contratos-template-list__item
{
  padding:14px 16px;
  border:1px solid #e9eef5;
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 20px rgba(15,23,42,.04);
}

.facturas-template-card .contratos-template-list__item + .contratos-template-list__item
{
  margin-top:10px;
}

@media (max-width:1100px)
{
  .facturas-template-highlights
  {
    grid-template-columns:1fr;
  }
}

@media (max-width:720px)
{
  .facturas-template-analyze
  {
    padding:16px;
  }

  .facturas-template-ayuntamientos
  {
    padding:14px;
  }

  .facturas-multiselect .ui-select__button
  {
    min-height:46px;
    height:auto;
  }

  .facturas-multiselect__footer
  {
    flex-direction:column;
    align-items:stretch;
  }

  .facturas-multiselect__footer-actions
  {
    justify-content:stretch;
  }
}

/* Facturas - alineación de campos en gestión de plantillas */
.facturas-template-analyze
{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  align-items:start;
}

.facturas-template-analyze > .field
{
  display:flex;
  flex-direction:column;
  align-self:start;
}

.facturas-template-ayuntamientos
{
  grid-column:auto;
  min-height:100%;
}

.facturas-template-ayuntamientos .field__hint
{
  min-height:20px;
}

.facturas-template-analyze > .btn[type="submit"]
{
  width:100%;
  min-height:48px;
  align-self:end;
}

@media (max-width:1100px)
{
  .facturas-template-analyze
  {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (max-width:720px)
{
  .facturas-template-analyze
  {
    grid-template-columns:1fr;
  }

  .facturas-template-analyze > .btn[type="submit"]
  {
    width:100%;
  }
}

/* Facturas - descarga dinámica de la plantilla seleccionada */
.facturas-import-card .facturas-import-form
{
  grid-template-columns:minmax(220px,.85fr) minmax(410px,1.55fr) minmax(280px,1.05fr) auto;
}

.facturas-import-template-picker
{
  display:flex;
  align-items:stretch;
  gap:10px;
  min-width:0;
}

.facturas-import-template-picker > .input,
.facturas-import-template-picker > .ui-select
{
  flex:1 1 auto;
  min-width:0;
}

.facturas-template-download
{
  flex:0 0 auto;
  min-height:44px;
  padding:0 15px;
  white-space:nowrap;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  border-color:rgba(81,195,3,.32);
  color:#2e6d0d;
  background:#f8fff4;
  box-shadow:none;
}

.facturas-template-download:hover,
.facturas-template-download:focus-visible
{
  border-color:#51c303;
  background:#efffe5;
  color:#245b06;
}

.facturas-template-download.is-disabled,
.facturas-template-download[aria-disabled="true"]
{
  pointer-events:none;
  opacity:.48;
  border-color:#dbe6f2;
  background:#f8fafc;
  color:#64748b;
}

.facturas-import-template-field .facturas-template-download__hint
{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  margin:0;
  color:#64748b;
  font-size:.76rem;
  font-weight:650;
  line-height:1.25;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

@media (max-width:1280px)
{
  .facturas-import-card .facturas-import-form
  {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .facturas-import-form > .btn[type="submit"]
  {
    width:100%;
  }
}

@media (max-width:720px)
{
  .facturas-import-card .facturas-import-form
  {
    grid-template-columns:1fr;
  }

  .facturas-import-template-picker
  {
    flex-direction:column;
  }

  .facturas-template-download
  {
    width:100%;
  }

  .facturas-import-template-field .facturas-template-download__hint
  {
    white-space:normal;
  }
}

/* AUTOCONSUMOS · jerarquía visual y espacio para dirección real */
.table-wrap--autoconsumos{overflow-x:auto}
.table--autoconsumos{min-width:1320px;table-layout:fixed}
.table--autoconsumos th,.table--autoconsumos td{padding:12px 11px;vertical-align:middle}
/* AUTOCONSUMOS: la columna de acciones debe alojar Editar + Borrar sin solaparlos.
   34px + 34px + 8px de gap + padding lateral de celda => necesita ~100px reales. */
.table--autoconsumos th:nth-child(1),.table--autoconsumos td:nth-child(1){width:108px;min-width:108px;text-align:center}
.table--autoconsumos .table-row-actions{display:flex;width:100%;align-items:center;justify-content:center;gap:8px;white-space:nowrap}
.table--autoconsumos .table-edit-btn,.table--autoconsumos .table-delete-btn{flex:0 0 34px;position:relative;z-index:1}
.table--autoconsumos th:nth-child(2),.table--autoconsumos td:nth-child(2){width:175px}
.table--autoconsumos th:nth-child(3),.table--autoconsumos td:nth-child(3){width:275px}
.table--autoconsumos th:nth-child(4),.table--autoconsumos td:nth-child(4){width:185px}
.table--autoconsumos th:nth-child(5),.table--autoconsumos td:nth-child(5){width:270px}
.table--autoconsumos th:nth-child(6),.table--autoconsumos td:nth-child(6){width:72px;text-align:center}
.table--autoconsumos th:nth-child(7),.table--autoconsumos td:nth-child(7){width:116px;text-align:center}
.table--autoconsumos th:nth-child(8),.table--autoconsumos td:nth-child(8){width:105px;text-align:center}
.autoconsumo-supply-type{display:inline-flex;align-items:center;max-width:100%;padding:6px 9px;border:1px solid #cfe0f2;border-radius:999px;background:#edf5ff;color:#163f73;font-size:.78rem;font-weight:950;line-height:1.2;white-space:normal;overflow-wrap:anywhere}
.autoconsumo-address{display:block;color:#10213d;font-weight:900;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
.autoconsumo-cau{display:block;white-space:normal;overflow-wrap:anywhere}
.autoconsumo-kind{display:block;line-height:1.45;white-space:normal;overflow-wrap:normal;word-break:normal;hyphens:auto}
.autoconsumo-consumers{display:inline-grid;place-items:center;min-width:32px;height:30px;padding:0 8px;border-radius:999px;background:#f1f5f9;font-weight:900;color:#334155}
.table--autoconsumos .table-link--autoconsumo{white-space:nowrap;padding:7px 9px}
@media(max-width:900px){.table--autoconsumos{min-width:1320px}.table--autoconsumos th,.table--autoconsumos td{padding:11px 9px}}

/* Dashboard · rankings de suministros simplificados con ficha al pasar el ratón */
.dashboard-panel--supply-ranking
{
  position:relative;
  overflow:visible;
  z-index:1;
}
.dashboard-panel--supply-ranking:hover,
.dashboard-panel--supply-ranking:focus-within
{
  z-index:20;
}
.bar-chart--supply-ranking
{
  overflow:visible;
}
.supply-ranking__row
{
  position:relative;
  padding:8px 10px;
  margin:0 -10px;
  border-radius:14px;
  outline:none;
  cursor:help;
  transition:background .16s ease, box-shadow .16s ease;
}
.supply-ranking__row:hover,
.supply-ranking__row:focus-visible,
.supply-ranking__row:focus-within
{
  background:#f7fafc;
  box-shadow:inset 0 0 0 1px #e2e8f0;
}
.supply-ranking__summary
{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:5px 10px;
  min-width:0;
}
.supply-ranking__summary strong
{
  min-width:0;
  color:#0f172a;
  font-size:.94rem;
  font-weight:900;
  line-height:1.3;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.supply-ranking__locality
{
  display:inline-flex;
  align-items:center;
}
.supply-ranking__locality:before
{
  content:"·";
  margin-right:10px;
  color:#94a3b8;
  font-weight:900;
}
.supply-ranking__viewer
{
  position:absolute;
  left:10px;
  right:10px;
  top:calc(100% + 7px);
  z-index:60;
  visibility:hidden;
  opacity:0;
  transform:translateY(-4px);
  pointer-events:none;
  padding:14px;
  border:1px solid #d7e3ef;
  border-radius:16px;
  background:#fff;
  box-shadow:0 20px 50px rgba(15,23,42,.18);
  transition:opacity .14s ease, transform .14s ease, visibility .14s ease;
}
.supply-ranking__row:hover .supply-ranking__viewer,
.supply-ranking__row:focus .supply-ranking__viewer,
.supply-ranking__row:focus-within .supply-ranking__viewer
{
  visibility:visible;
  opacity:1;
  transform:translateY(0);
  pointer-events:auto;
}
.supply-ranking__viewer-head
{
  display:grid;
  gap:3px;
  padding-bottom:10px;
  margin-bottom:10px;
  border-bottom:1px solid #e8eef5;
}
.supply-ranking__viewer-head span
{
  color:#64748b;
  font-size:.7rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.supply-ranking__viewer-head strong
{
  color:#0f172a;
  font-size:1rem;
  line-height:1.35;
}
.supply-ranking__viewer-grid
{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px 14px;
  margin:0;
}
.supply-ranking__viewer-grid > div
{
  min-width:0;
}
.supply-ranking__viewer-grid dt
{
  margin:0 0 2px;
  color:#718096;
  font-size:.69rem;
  font-weight:850;
  letter-spacing:.035em;
  text-transform:uppercase;
}
.supply-ranking__viewer-grid dd
{
  margin:0;
  color:#1e293b;
  font-size:.84rem;
  font-weight:750;
  line-height:1.35;
  overflow-wrap:anywhere;
}
@media(max-width:720px)
{
  .supply-ranking__viewer
  {
    left:0;
    right:0;
    max-height:60vh;
    overflow:auto;
  }
  .supply-ranking__viewer-grid
  {
    grid-template-columns:1fr;
  }
}


/* ALTA Y CONFIGURACIÓN · estado de autorización DATADIS */
.onboarding-badge--danger{background:#fee2e2;color:#991b1b}.onboarding-badge--datadis{gap:6px;border:1px solid currentColor;border-color:color-mix(in srgb,currentColor 20%,transparent);font-weight:850}.onboarding-badge__dot{display:inline-block;width:7px;height:7px;border-radius:999px;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 12%,transparent)}

/* --------------------------------------------------------------------------
   Buscador global de cabecera
   -------------------------------------------------------------------------- */
.global-search
{
  position:relative;
  flex:1 1 520px;
  width:min(620px,42vw);
  max-width:620px;
  min-width:280px;
  margin-left:auto;
  z-index:120;
}
.global-search__field
{
  position:relative;
  display:flex;
  align-items:center;
  min-height:46px;
  border:1px solid #cbd9e7;
  border-radius:16px;
  background:rgba(255,255,255,.96);
  box-shadow:0 10px 26px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.9);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.global-search.is-open .global-search__field,
.global-search__field:focus-within
{
  border-color:#8adf52;
  box-shadow:0 0 0 4px rgba(81,195,3,.10),0 14px 34px rgba(15,23,42,.10);
}
.global-search__icon
{
  display:grid;
  place-items:center;
  width:44px;
  flex:0 0 44px;
  color:#57708b;
  font-size:1.45rem;
  line-height:1;
  transform:translateY(-1px);
}
.global-search__input
{
  width:100%;
  min-width:0;
  height:44px;
  padding:0 92px 0 0;
  border:0;
  outline:0;
  background:transparent;
  color:#0f172a;
  font:inherit;
  font-size:.92rem;
  font-weight:750;
}
.global-search__input::placeholder
{
  color:#8192a6;
  font-weight:650;
}
.global-search__input::-webkit-search-cancel-button
{
  display:none;
}
.global-search__shortcut
{
  position:absolute;
  right:10px;
  top:50%;
  transform:translateY(-50%);
  padding:4px 7px;
  border:1px solid #d9e3ed;
  border-bottom-width:2px;
  border-radius:8px;
  background:#f7fafc;
  color:#708198;
  font-family:inherit;
  font-size:.68rem;
  font-weight:900;
  line-height:1;
  pointer-events:none;
}
.global-search__clear
{
  position:absolute;
  right:61px;
  top:50%;
  transform:translateY(-50%);
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:9px;
  background:#eef3f8;
  color:#52657b;
  font-size:1.2rem;
  line-height:1;
  cursor:pointer;
}
.global-search__clear:hover
{
  background:#e1eaf3;
  color:#0f172a;
}
.global-search__panel
{
  position:absolute;
  left:0;
  right:0;
  top:calc(100% + 10px);
  max-height:min(72vh,650px);
  overflow:hidden;
  border:1px solid #cfdeec;
  border-radius:20px;
  background:rgba(255,255,255,.99);
  box-shadow:0 26px 70px rgba(15,23,42,.20),0 4px 14px rgba(15,23,42,.08);
}
.global-search__panel[hidden]
{
  display:none!important;
}
.global-search__body
{
  max-height:min(64vh,590px);
  overflow:auto;
  padding:8px;
  scrollbar-width:thin;
}
.global-search__group + .global-search__group
{
  margin-top:5px;
  padding-top:5px;
  border-top:1px solid #edf2f7;
}
.global-search__group-title
{
  display:grid;
  grid-template-columns:24px 1fr auto;
  align-items:center;
  gap:6px;
  padding:8px 10px 5px;
  color:#61738a;
  font-size:.71rem;
  font-weight:900;
  letter-spacing:.07em;
  text-transform:uppercase;
}
.global-search__group-title > span:last-child
{
  min-width:24px;
  padding:3px 7px;
  border-radius:999px;
  background:#edf4fb;
  color:#516981;
  text-align:center;
  font-size:.66rem;
}
.global-search__result
{
  width:100%;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) 28px;
  align-items:center;
  gap:10px;
  padding:10px 11px;
  border:1px solid transparent;
  border-radius:14px;
  background:transparent;
  color:#0f172a;
  text-align:left;
  cursor:pointer;
  transition:background .12s ease,border-color .12s ease,transform .12s ease;
}
.global-search__result:hover,
.global-search__result.is-active
{
  border-color:#d6e6f5;
  background:#f3f8fd;
}
.global-search__result:active
{
  transform:scale(.995);
}
.global-search__result.is-loading
{
  opacity:.62;
  pointer-events:none;
}
.global-search__result-icon
{
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  border:1px solid #dce8f4;
  border-radius:13px;
  background:linear-gradient(180deg,#f9fcff,#edf5fc);
  font-size:1.05rem;
}
.global-search__result-copy
{
  min-width:0;
  display:grid;
  gap:3px;
}
.global-search__result-copy strong
{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#13233b;
  font-size:.9rem;
  font-weight:900;
}
.global-search__result-copy small
{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#6b7d91;
  font-size:.75rem;
  font-weight:650;
}
.global-search__result-arrow
{
  color:#91a2b5;
  font-size:.9rem;
  text-align:center;
}
.global-search__result:hover .global-search__result-arrow,
.global-search__result.is-active .global-search__result-arrow
{
  color:#315f8a;
}
.global-search__empty
{
  padding:28px 18px;
  color:#718197;
  text-align:center;
  font-size:.86rem;
  line-height:1.5;
}
.global-search__footer
{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:38px;
  padding:8px 13px;
  border-top:1px solid #e8eef5;
  background:#f8fbfe;
  color:#7a8ca1;
  font-size:.68rem;
  font-weight:750;
}
.global-search__footer > span:first-child
{
  color:#526980;
  font-weight:900;
}

@media (max-width:1100px)
{
  .topbar
  {
    flex-wrap:wrap;
  }
  .global-search
  {
    order:3;
    flex:1 1 100%;
    width:100%;
    max-width:none;
    margin-left:0;
  }
}
@media (max-width:760px)
{
  .topbar
  {
    padding:12px 14px;
    gap:10px;
  }
  .global-search
  {
    min-width:0;
  }
  .global-search__shortcut
  {
    display:none;
  }
  .global-search__input
  {
    padding-right:46px;
  }
  .global-search__clear
  {
    right:9px;
  }
  .global-search__panel
  {
    position:absolute;
    left:0;
    right:0;
    top:calc(100% + 8px);
    max-height:calc(100vh - 150px);
  }
  .global-search__body
  {
    max-height:calc(100vh - 198px);
  }
  .global-search__footer > span:last-child
  {
    display:none;
  }
}

/* ==========================================================
   Filtros SELECT múltiples en todos los listados genéricos
   ========================================================== */
.filter-multiselect
{
  position:relative;
  width:100%;
  min-width:0;
}
.filter-multiselect__native
{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  opacity:0!important;
  pointer-events:none!important;
  overflow:hidden!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}
.filter-multiselect__button
{
  width:100%;
  min-width:0;
  min-height:42px;
  height:42px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid #d7e2ee;
  border-radius:13px;
  background:#fff;
  color:#122033;
  padding:0 10px 0 13px;
  cursor:pointer;
  text-align:left;
  box-shadow:none;
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}
.filter-multiselect__button:hover
{
  border-color:#b8c9dc;
  background:#fbfdff;
}
.filter-multiselect__button:focus-visible,
.filter-multiselect.is-open .filter-multiselect__button
{
  outline:none;
  border-color:#2563eb;
  box-shadow:0 0 0 3px rgba(37,99,235,.10);
  background:#fff;
}
.filter-multiselect.has-selection .filter-multiselect__button
{
  border-color:#9bbce4;
  background:#f8fbff;
}
.filter-multiselect.is-disabled .filter-multiselect__button,
.filter-multiselect__button:disabled
{
  cursor:not-allowed;
  opacity:.62;
  background:#f4f7fa;
}
.filter-multiselect__value
{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#243246;
  font-size:.92rem;
  font-weight:750;
  text-transform:none;
}
.filter-multiselect__chevron
{
  position:relative;
  flex:0 0 28px;
  width:28px;
  height:28px;
  border-radius:10px;
  border:1px solid #dce7f2;
  background:#f3f7fb;
}
.filter-multiselect__chevron:before,
.filter-multiselect__chevron:after
{
  content:"";
  position:absolute;
  top:12px;
  width:7px;
  height:2px;
  border-radius:2px;
  background:#4d6580;
  transition:transform .15s ease;
}
.filter-multiselect__chevron:before
{
  left:7px;
  transform:rotate(40deg);
}
.filter-multiselect__chevron:after
{
  right:7px;
  transform:rotate(-40deg);
}
.filter-multiselect.is-open .filter-multiselect__chevron:before
{
  transform:rotate(-40deg);
}
.filter-multiselect.is-open .filter-multiselect__chevron:after
{
  transform:rotate(40deg);
}
.filter-multiselect__panel
{
  position:absolute;
  top:calc(100% + 6px);
  left:0;
  z-index:12050;
  width:max(100%, 270px);
  max-width:min(430px, calc(100vw - 28px));
  overflow:hidden;
  padding:7px;
  border:1px solid #d6e1ed;
  border-radius:14px;
  background:#fff;
  box-shadow:0 18px 42px rgba(15,23,42,.16);
}
.filter-multiselect__panel[hidden]
{
  display:none!important;
}
.filter-multiselect__search
{
  width:100%;
  min-height:36px;
  border:1px solid #d8e3ef;
  border-radius:10px;
  background:#f8fbff;
  color:#172033;
  padding:8px 10px;
  font-size:.86rem;
  font-weight:700;
  outline:none;
}
.filter-multiselect__search:focus
{
  border-color:#7aa7d9;
  background:#fff;
  box-shadow:0 0 0 3px rgba(37,99,235,.08);
}
.filter-multiselect__options
{
  display:grid;
  gap:3px;
  max-height:300px;
  overflow-y:auto;
  overscroll-behavior:contain;
  margin-top:6px;
  padding:1px 2px 1px 0;
}
.filter-multiselect__option
{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:36px;
  margin:0;
  padding:7px 9px;
  border-radius:9px;
  color:#243246;
  background:transparent;
  font-size:.88rem;
  font-weight:700;
  cursor:pointer;
  user-select:none;
}
.filter-multiselect__option:hover
{
  background:#f3f7fc;
}
.filter-multiselect__option.is-selected
{
  background:#eaf2ff;
  color:#174184;
}
.filter-multiselect__option[hidden]
{
  display:none!important;
}
.filter-multiselect__option input[type="checkbox"]
{
  width:17px;
  height:17px;
  flex:0 0 17px;
  margin:0;
  accent-color:#2563eb;
  cursor:pointer;
}
.filter-multiselect__option span
{
  min-width:0;
  overflow-wrap:anywhere;
}
.filter-multiselect__empty
{
  padding:13px 9px;
  color:#64748b;
  font-size:.84rem;
  font-weight:750;
  text-align:center;
}
.filter-multiselect__empty[hidden]
{
  display:none!important;
}
.filter-multiselect__footer
{
  display:flex;
  justify-content:flex-end;
  margin-top:6px;
  padding-top:6px;
  border-top:1px solid #edf2f7;
}
.filter-multiselect__clear
{
  border:0;
  border-radius:8px;
  background:transparent;
  color:#315f8a;
  padding:6px 8px;
  font-size:.78rem;
  font-weight:800;
  cursor:pointer;
}
.filter-multiselect__clear:hover
{
  background:#f1f6fb;
}
@media(max-width:720px)
{
  .filter-multiselect__panel
  {
    width:100%;
    max-width:100%;
  }
  .filter-multiselect__options
  {
    max-height:250px;
  }
}

/* Avisos / alertas */
.alerts-page{display:grid;gap:18px}
.alerts-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.alerts-card,.alerts-rules-card{padding:20px}
.alerts-card__head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:16px}
.alerts-card__head--stacked{align-items:stretch;display:grid;gap:16px}
.alerts-card__head h2,.alerts-rules-card h2{margin:0 0 6px}
.alerts-card__head p,.alerts-rules-card p{margin:0;color:var(--muted,#667085)}
.alerts-toolbar{display:grid;grid-template-columns:minmax(280px,1fr) 145px 145px 110px auto auto;gap:10px;align-items:end}
.alerts-search,.alerts-date-filter,.alerts-per-page{display:grid;gap:5px}
.alerts-search>span,.alerts-date-filter>span,.alerts-per-page>span{font-size:.76rem;font-weight:800;color:var(--muted,#667085);text-transform:uppercase;letter-spacing:.04em}
.alerts-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:6px 0 20px;align-items:stretch}
.alerts-group-filter{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:flex-start;min-width:0;min-height:86px;padding:14px;border:1px solid var(--border,#e5e7eb);border-radius:14px;background:var(--surface,#fff);color:inherit;text-decoration:none;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.alerts-group-filter:hover{border-color:var(--brand,#51c303);box-shadow:0 8px 22px rgba(16,24,40,.07);transform:translateY(-1px)}
.alerts-group-filter.is-active{border-color:var(--brand,#51c303);box-shadow:0 0 0 2px rgba(81,195,3,.12);background:rgba(81,195,3,.035)}
.alerts-group-filter__icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;align-self:start;background:#f8fafc;font-size:1.08rem}
.alerts-group-filter>span:nth-child(2){display:grid;min-width:0;gap:4px;align-content:start}
.alerts-group-filter strong{font-size:.92rem;line-height:1.22;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}
.alerts-group-filter small{color:var(--muted,#667085);font-size:.75rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.alerts-group-filter b{min-width:32px;height:32px;padding:0 8px;border-radius:999px;display:grid;place-items:center;align-self:start;background:#f2f4f7;font-size:.78rem;font-weight:800}
.alerts-group-filter.is-active b{background:var(--brand,#51c303);color:#fff}
.alerts-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 2px 14px;border-top:1px solid var(--border,#e5e7eb)}
.alerts-results-head>div{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.alerts-results-head span{color:var(--muted,#667085);font-size:.84rem}
.alerts-active-filters{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.alerts-query-chip{background:#f4f6f8;border-radius:999px;padding:6px 10px!important;max-width:55%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alerts-grouped-list{display:grid;gap:18px}
.alerts-group-section{border:1px solid var(--border,#e5e7eb);border-radius:14px;overflow:hidden;background:#fbfcfd;box-shadow:0 5px 18px rgba(16,24,40,.035)}
.alerts-group-section__head{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:13px 15px;border-bottom:1px solid var(--border,#e5e7eb);background:#f8fafc}
.alerts-group-section__title{display:flex;align-items:center;gap:10px;min-width:0}
.alerts-group-section__icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#fff;border:1px solid var(--border,#e5e7eb)}
.alerts-group-section__title h3{margin:0;font-size:.96rem}
.alerts-group-section__title p{margin:2px 0 0;color:var(--muted,#667085);font-size:.78rem}
.alerts-group-section__count{font-size:.78rem;font-weight:700;color:#475467;white-space:nowrap}
.alerts-date-bucket{background:#fff}
.alerts-date-bucket+.alerts-date-bucket{border-top:1px solid var(--border,#e5e7eb)}
.alerts-date-bucket__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 15px;background:#fcfcfd;border-bottom:1px solid #f0f1f3}
.alerts-date-bucket__head strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.045em;color:#344054}
.alerts-date-bucket__head span{font-size:.75rem;color:var(--muted,#667085);font-weight:700}
.alerts-list{display:grid;gap:0}
.alerts-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:start;border:0;border-bottom:1px solid var(--border,#e5e7eb);border-left:4px solid #f59e0b;border-radius:0;padding:15px;background:var(--surface,#fff)}
.alerts-item:last-child{border-bottom:0}
.alerts-item--critica{border-left-color:#dc2626}
.alerts-item--informativa{border-left-color:#2563eb}
.alerts-item__icon{width:38px;height:38px;border-radius:10px;background:#f8fafc;display:grid;place-items:center;font-size:1.15rem}
.alerts-item__topline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:4px}
.alerts-item__type{font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.alerts-item__period{font-size:.76rem;color:var(--muted,#667085);background:#f4f6f8;border-radius:999px;padding:3px 8px}
.alerts-item__date{font-size:.73rem;color:#98a2b3}
.alerts-item h3{margin:0 0 5px;font-size:1rem}
.alerts-item__meta{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:.85rem;color:var(--muted,#667085);margin-bottom:6px}
.alerts-item p{margin:0;color:#475467;line-height:1.5}
.alerts-item__metric{margin-top:8px;font-size:.88rem}
.alerts-item__actions{align-self:center}
.alerts-pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:20px;flex-wrap:wrap}
.alerts-pagination a,.alerts-pagination span{min-width:36px;height:36px;padding:0 9px;border-radius:9px;display:grid;place-items:center;border:1px solid var(--border,#e5e7eb);background:#fff;color:#344054;text-decoration:none;font-size:.84rem;font-weight:700}
.alerts-pagination a:hover{border-color:var(--brand,#51c303);color:var(--brand,#51c303)}
.alerts-pagination a.is-active{background:var(--brand,#51c303);border-color:var(--brand,#51c303);color:#fff}
.alerts-pagination a.is-disabled{pointer-events:none;opacity:.4}
.alerts-pagination span{border-color:transparent;background:transparent;min-width:24px;padding:0}
.alerts-rules-card{display:grid;gap:8px}
.alerts-rules-card p{line-height:1.5}
@media(max-width:1250px){.alerts-groups{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1200px){.alerts-toolbar{grid-template-columns:minmax(260px,1fr) 145px 145px 105px}.alerts-toolbar>.btn{width:100%}}
@media(max-width:1100px){.alerts-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.alerts-toolbar{grid-template-columns:minmax(240px,1fr) 1fr 1fr}.alerts-search{grid-column:1/-1}.alerts-per-page{max-width:140px}}
@media(max-width:760px){.alerts-summary-grid{grid-template-columns:1fr}.alerts-card{padding:14px}.alerts-toolbar{grid-template-columns:1fr 1fr}.alerts-search{grid-column:1/-1}.alerts-per-page{max-width:none}.alerts-toolbar>.btn{width:100%}.alerts-groups{grid-template-columns:1fr}.alerts-group-filter{min-height:auto;padding:13px}.alerts-results-head{align-items:flex-start;flex-direction:column}.alerts-active-filters{justify-content:flex-start}.alerts-query-chip{max-width:100%}.alerts-group-section__head{align-items:flex-start;flex-direction:column}.alerts-group-section__count{white-space:normal}.alerts-item{grid-template-columns:auto minmax(0,1fr)}.alerts-item__actions{grid-column:1/-1}.alerts-item__actions .btn{width:100%}}
@media(max-width:520px){.alerts-toolbar{grid-template-columns:1fr}.alerts-search{grid-column:auto}.alerts-per-page{max-width:none}.alerts-date-bucket__head{padding:8px 11px}}


/* Borrado masivo de Contratos y Facturas (PROGRAMADOR / SUPERADMIN). */
.table-bulk-select-head,
.table-bulk-select-cell {
  width: 48px;
  min-width: 48px;
  text-align: center;
  vertical-align: middle;
}

.table-bulk-checkbox {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: #b91c1c;
  cursor: pointer;
  vertical-align: middle;
}

.table-bulk-checkbox:disabled {
  cursor: not-allowed;
  opacity: .45;
}

.table-bulk-delete-btn {
  border: 1px solid #fecaca;
  min-width: 168px;
  transition: opacity .16s ease, transform .16s ease, box-shadow .16s ease;
}

.table-bulk-delete-btn:not(:disabled):hover,
.table-bulk-delete-btn:not(:disabled):focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 9px 20px rgba(185, 28, 28, .12);
}

/* Borrado masivo · acción compacta integrada junto al contador de registros. */
.table-overview__actions
{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  margin-left:auto;
  min-width:0;
}
.table-overview__actions .table-record-count
{
  margin:0;
}
.table-overview__actions .table-bulk-delete-btn
{
  position:relative;
  display:grid;
  place-items:center;
  width:44px;
  min-width:44px;
  height:44px;
  min-height:44px;
  padding:0;
  border-radius:12px;
  white-space:nowrap;
  line-height:1;
  flex:0 0 44px;
}
.table-bulk-delete-icon
{
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
}
.table-bulk-delete-icon svg
{
  display:block;
  width:20px;
  height:20px;
  fill:currentColor;
}
.table-bulk-delete-count
{
  position:absolute;
  top:-7px;
  right:-7px;
  min-width:20px;
  height:20px;
  padding:0 5px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#b91c1c;
  color:#fff;
  border:2px solid #fff;
  font-size:.68rem;
  font-weight:800;
  line-height:1;
  box-shadow:0 2px 6px rgba(15,23,42,.12);
}
.table-bulk-delete-count[hidden]
{
  display:none !important;
}
@media(max-width:760px)
{
  .table-overview__actions
  {
    width:100%;
    justify-content:flex-start;
    margin-left:0;
  }
}


/* Popup del mapa: accesos directos por suministro */
.cups-map-popupx__actions
{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
  margin-top:11px;
  padding-top:11px;
  border-top:1px solid #e5edf6;
}
.cups-map-popupx__action
{
  appearance:none;
  -webkit-appearance:none;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-width:0;
  min-height:52px;
  padding:7px 5px;
  border:1px solid #d7e3ef;
  border-radius:12px;
  background:#f8fbff;
  color:#23415f;
  cursor:pointer;
  font:inherit;
  text-align:center;
  transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease;
}
.cups-map-popupx__action i
{
  display:grid;
  place-items:center;
  height:18px;
  color:#2563eb;
  font-size:1rem;
  font-style:normal;
  line-height:1;
}
.cups-map-popupx__action b
{
  min-width:0;
  color:inherit;
  font-size:.67rem;
  font-weight:900;
  line-height:1.1;
  white-space:nowrap;
}
.cups-map-popupx__action:not(:disabled):hover
{
  transform:translateY(-1px);
  border-color:#9fc5ef;
  background:#eef6ff;
  box-shadow:0 7px 14px rgba(37,99,235,.09);
}
.cups-map-popupx__action--autoconsumos i{color:#d97706}
.cups-map-popupx__action--contratos i{color:#7c3aed}
.cups-map-popupx__action--facturas i{color:#059669}
.cups-map-popupx__action.is-disabled,
.cups-map-popupx__action:disabled:not(.is-loading)
{
  opacity:.45;
  cursor:not-allowed;
  transform:none;
  box-shadow:none;
}
.cups-map-popupx__action.is-loading
{
  cursor:wait;
  opacity:.72;
}
@media(max-width:640px)
{
  .cups-map-popupx__actions
  {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .cups-map-popupx__action
  {
    min-height:46px;
    flex-direction:row;
    gap:6px;
  }
}


.chart-multiselect-hint
{
  flex: 0 0 100%;
  color: #64748b;
  font-size: .76rem;
  font-weight: 700;
  line-height: 1.35;
}

.datadis-chart__metrics
{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 14px 20px;
  border-top: 1px solid #e4edf6;
  border-bottom: 1px solid #e4edf6;
  background: #f8fbff;
}

.datadis-chart__metrics button
{
  appearance: none;
  min-height: 34px;
  padding: 7px 12px;
  border: 1px solid #cfe0f2;
  border-radius: 12px;
  background: #fff;
  color: #52657b;
  font: inherit;
  font-size: .78rem;
  font-weight: 850;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, color .15s ease, transform .15s ease;
}

.datadis-chart__metrics button:hover
{
  border-color: #b8d5f7;
  background: #eef6ff;
  color: #164187;
  transform: translateY(-1px);
}

.datadis-chart__metrics button.is-active
{
  border-color: var(--brand);
  background: linear-gradient(135deg, var(--brand), var(--brand-3));
  color: #fff;
  box-shadow: 0 8px 18px rgba(81,195,3,.18);
}

.datadis-chart__metrics button:focus-visible
{
  outline: 3px solid rgba(81,195,3,.2);
  outline-offset: 2px;
}

.auto-detail-tooltip__selected--multi
{
  display: grid;
  grid-template-columns: 1fr;
  gap: 5px;
}

.auto-detail-tooltip__selected--multi span
{
  display: flex;
  justify-content: space-between;
  gap: 12px;
}

.auto-detail-tooltip__selected--multi em
{
  font-style: normal;
}


/* Tooltips de gráficas: presentación flotante unificada y más legible. */
.auto-detail-visual__tooltip--floating {
  z-index: 10050;
  width: min(560px, calc(100vw - 28px));
  max-width: calc(100vw - 28px);
  max-height: calc(100vh - 28px);
  box-sizing: border-box;
  padding: 16px;
  overflow: auto;
  border: 1px solid #c8dced;
  border-radius: 18px;
  background: rgba(255,255,255,.985);
  box-shadow: 0 22px 55px rgba(15,23,42,.20), 0 4px 14px rgba(15,23,42,.08);
  backdrop-filter: blur(10px);
}

.auto-detail-visual__tooltip--floating > strong {
  margin: 0 0 11px;
  padding-bottom: 10px;
  border-bottom: 1px solid #e3edf6;
  font-size: .92rem;
  font-weight: 900;
}

.auto-detail-tooltip__selected--multi {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 7px;
  padding: 8px;
  border-radius: 14px;
}

.auto-detail-tooltip__selected--multi span {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 9px;
  border: 1px solid rgba(22,65,135,.10);
  border-radius: 10px;
  background: rgba(255,255,255,.78);
}

.auto-detail-tooltip__selected--multi em {
  min-width: 0;
  color: #46627f;
  font-style: normal;
  font-weight: 750;
}

.auto-detail-tooltip__grid span {
  min-width: 0;
  padding: 7px 9px;
  border: 1px solid #e4edf6;
  border-radius: 10px;
  background: #f8fbff;
}

@media (max-width: 620px) {
  .auto-detail-tooltip__selected--multi { grid-template-columns: 1fr; }
}


/* Gráficas: la unidad visible indica qué métricas son combinables. */
.chart-multiselect-hint strong
{
  color: #163d72;
  font-weight: 900;
}

.chart-metric-unit
{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 22px;
  margin-left: 7px;
  padding: 2px 7px;
  border: 1px solid #d8e5f2;
  border-radius: 999px;
  background: #eef5fb;
  color: #31516f;
  font-size: .67rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: .015em;
  white-space: nowrap;
}

.datadis-chart__metrics button,
.auto-detail-metric
{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
}

.datadis-chart__metrics button.is-active .chart-metric-unit,
.auto-detail-metric.is-active .chart-metric-unit
{
  border-color: rgba(255,255,255,.35);
  background: rgba(255,255,255,.18);
  color: #fff;
}

/* Acciones de los movimientos de Métricas de la plataforma. */
.dashboard-event__actions
{
  display:grid;
  justify-items:end;
  gap:7px;
}
.dashboard-event__delete
{
  min-width:72px;
}
@media(max-width:720px)
{
  .dashboard-event__actions
  {
    grid-column:2;
    justify-items:start;
  }
}


/* Chinchetas contextuales: avisos reutilizados en tablas y gráficas. */
.context-pins{
  margin:0 0 14px;
  padding:12px 14px;
  border:1px solid #f2c56b;
  border-radius:14px;
  background:linear-gradient(135deg,#fffaf0 0%,#fff 72%);
  box-shadow:0 5px 16px rgba(146,88,0,.05);
}
.context-pins[hidden]{display:none!important}
.context-pins__head{display:flex;align-items:center;gap:10px;min-width:0}
.context-pins__head>div{display:grid;gap:1px;min-width:0;flex:1}
.context-pins__head strong{font-size:.88rem;color:#6b4200}
.context-pins__head small{font-size:.76rem;color:#7c6850;line-height:1.35}
.context-pins__badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px;height:34px;padding:0 10px;border-radius:999px;background:#fff0c7;color:#7a4b00;font-size:.78rem;font-weight:900;white-space:nowrap}
.context-pins__list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.context-pins__item{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;padding:6px 9px;border:1px solid #f4deb4;border-radius:10px;background:#fff;color:#594a37;font-size:.73rem}
.context-pins__item strong{font-size:.74rem;color:#5f3d06}
.context-pins__item small{color:#7d6c55;white-space:nowrap}
.context-pins__more{display:inline-flex;align-items:center;padding:6px 9px;border-radius:10px;background:#f8f1e5;color:#795b2a;font-size:.73rem;font-weight:800}
.table-value-with-pin{display:inline-flex;align-items:center;gap:7px;min-width:0}
.data-pin{position:relative;display:inline-flex;align-items:center;justify-content:center;width:27px;height:27px;flex:0 0 27px;border:1px solid #f3c76c;border-radius:9px;background:#fff8e8;font-size:.9rem;line-height:1;cursor:help;box-shadow:0 2px 7px rgba(146,88,0,.08)}
.data-pin b{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border:2px solid #fff;border-radius:999px;display:flex;align-items:center;justify-content:center;background:#d97706;color:#fff;font-size:.58rem;font-weight:900;line-height:1}
@media(max-width:760px){
  .context-pins__head{align-items:flex-start;flex-wrap:wrap}
  .context-pins__head .btn{width:100%}
  .context-pins__item{width:100%}
  .context-pins__item small{white-space:normal}
}
.context-chart-pin{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:5px 10px;border:1px solid #f2c56b;border-radius:999px;background:#fff8e6;color:#754900;font-size:.72rem;font-weight:900;line-height:1;white-space:nowrap;box-shadow:0 3px 10px rgba(146,88,0,.08)}

/* Chinchetas contextuales · detalle en la misma pantalla */
.context-pins__badge,
.context-pins__item,
.context-pins__more,
.context-chart-pin,
.data-pin{
  appearance:none;
  -webkit-appearance:none;
  font:inherit;
  text-align:left;
}
.context-pins__badge,
.context-pins__item,
.context-pins__more,
.context-chart-pin,
.data-pin{cursor:pointer}
.context-pins__badge:hover,
.context-pins__item:hover,
.context-pins__more:hover,
.context-chart-pin:hover,
.data-pin:hover{
  border-color:#d89a26;
  background:#fff3d6;
  transform:translateY(-1px);
}
.context-pins__badge:focus-visible,
.context-pins__item:focus-visible,
.context-pins__more:focus-visible,
.context-chart-pin:focus-visible,
.data-pin:focus-visible{
  outline:3px solid rgba(217,119,6,.22);
  outline-offset:2px;
}
.context-pins__more{border:1px solid #ead3aa;cursor:pointer}
.context-pins__item{transition:border-color .15s ease,background .15s ease,transform .15s ease}
.context-chart-pin{transition:border-color .15s ease,background .15s ease,transform .15s ease}
.data-pin{padding:0}

.has-context-pin-modal{overflow:hidden}
.context-pin-modal[hidden]{display:none!important}
.context-pin-modal{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:24px}
.context-pin-modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.48);backdrop-filter:blur(2px)}
.context-pin-modal__panel{
  position:relative;
  width:min(760px,100%);
  max-height:min(82vh,760px);
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  overflow:hidden;
  border:1px solid #dbe4ee;
  border-radius:20px;
  background:#fff;
  box-shadow:0 28px 70px rgba(15,23,42,.28);
  outline:none;
}
.context-pin-modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:20px 22px 16px;border-bottom:1px solid #e8eef5}
.context-pin-modal__eyebrow{display:block;margin-bottom:4px;color:#a45f00;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.context-pin-modal__header h2{margin:0;color:#172033;font-size:1.2rem;line-height:1.25}
.context-pin-modal__close{appearance:none;width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border:1px solid #d9e2ec;border-radius:11px;background:#fff;color:#475467;font:inherit;font-size:1.55rem;line-height:1;cursor:pointer}
.context-pin-modal__close:hover{background:#f8fafc;color:#172033}
.context-pin-modal__search{display:flex;align-items:end;justify-content:space-between;gap:14px;padding:12px 22px;border-bottom:1px solid #e8eef5;background:#fff}
.context-pin-modal__search label{display:grid;gap:5px;flex:1;min-width:0}
.context-pin-modal__search label>span{color:#667085;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.context-pin-modal__search .input{width:100%;min-width:0}
.context-pin-modal__search-count{flex:0 0 auto;padding:8px 10px;border-radius:999px;background:#f2f4f7;color:#475467;font-size:.75rem;font-weight:800;white-space:nowrap}
.context-pin-modal__empty{display:grid;gap:5px;padding:24px;border:1px dashed #cbd5e1;border-radius:14px;background:#fff;text-align:center}
.context-pin-modal__empty strong{color:#172033}
.context-pin-modal__empty span{color:#667085;font-size:.84rem}
.context-pin-modal__body{display:grid;gap:12px;padding:18px 22px;overflow:auto;background:#f8fafc}
.context-pin-detail{padding:15px 16px;border:1px solid #e2e8f0;border-left:4px solid #d97706;border-radius:14px;background:#fff}
.context-pin-detail--critica{border-left-color:#dc2626}
.context-pin-detail--informativa{border-left-color:#2563eb}
.context-pin-detail__top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px}
.context-pin-detail__pin{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#fff5dd;font-size:1rem}
.context-pin-detail__group{display:block;color:#8a5600;font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.context-pin-detail h3{margin:2px 0 0;color:#172033;font-size:1rem;line-height:1.3}
.context-pin-detail__kind{padding:4px 8px;border-radius:999px;background:#f1f5f9;color:#475569;font-size:.68rem;font-weight:800;white-space:nowrap}
.context-pin-detail__description{margin:12px 0 0;color:#475467;font-size:.88rem;line-height:1.5}
.context-pin-detail__meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin:12px 0 0;padding-top:11px;border-top:1px solid #eef2f6}
.context-pin-detail__meta>div{display:grid;gap:1px;min-width:130px}
.context-pin-detail__meta dt{color:#98a2b3;font-size:.66rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.context-pin-detail__meta dd{margin:0;color:#344054;font-size:.8rem;font-weight:700;overflow-wrap:anywhere}
.context-pin-modal__footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;border-top:1px solid #e8eef5;background:#fff}
.context-pin-modal__footer span{color:#667085;font-size:.76rem;line-height:1.35}
@media(max-width:640px){
  .context-pin-modal{padding:10px}
  .context-pin-modal__panel{max-height:88vh;border-radius:16px}
  .context-pin-modal__header{padding:16px}
  .context-pin-modal__search{align-items:stretch;flex-direction:column;padding:12px 16px}
  .context-pin-modal__search-count{align-self:flex-start}
  .context-pin-modal__body{padding:14px}
  .context-pin-detail__top{grid-template-columns:auto minmax(0,1fr)}
  .context-pin-detail__kind{grid-column:2;justify-self:start}
  .context-pin-modal__footer{align-items:stretch;flex-direction:column;padding:14px 16px}
  .context-pin-modal__footer .btn{width:100%}
}
