/* Shared styles for dashboard-like module screens */
:root{
  /* Colores */
  --lp-ink:#1f2b66;
  --lp-primary:#30398D;
  --lp-mid:#1a52a8;
  --lp-shadow:rgba(31,43,102,.32);
  --lp-text:#1f2a4d;
  --lp-muted:#5d6389;
  --lp-subtle:#8792b0;
  /* Estados semánticos */
  --lp-success:#207245;  --lp-success-bg:rgba(32,114,69,.09);  --lp-success-border:rgba(32,114,69,.18);
  --lp-error:#b42318;    --lp-error-bg:rgba(180,35,24,.09);    --lp-error-border:rgba(180,35,24,.18);
  --lp-warning:#9a5b00;  --lp-warning-bg:rgba(154,91,0,.09);   --lp-warning-border:rgba(154,91,0,.18);
  --lp-info:#1a52a8;     --lp-info-bg:rgba(26,82,168,.09);     --lp-info-border:rgba(26,82,168,.18);
  --lp-neutral:#5d6389;  --lp-neutral-bg:rgba(93,99,137,.09);  --lp-neutral-border:rgba(93,99,137,.18);
  /* Escala tipográfica */
  --lp-xs:0.72rem;
  --lp-sm:0.82rem;
  --lp-base:0.9rem;
  --lp-md:0.95rem;
  --lp-lg:1rem;
  --lp-xl:1.15rem;
  --lp-2xl:1.3rem;
  --lp-3xl:1.55rem;
  --lp-hero:1.8rem;
}
.module-shell{max-width:1280px;margin:1rem auto;display:flex;flex-direction:column;gap:1.5rem;padding:0 1rem}

/* ── Hero ─────────────────────────────────────────── */
.module-hero{background:linear-gradient(135deg,#1f2b66 0%,#30398D 55%,#1a52a8 100%);color:#fff;border-radius:16px;padding:1.8rem 2.4rem;box-shadow:0 8px 28px rgba(31,43,102,.20);position:relative;overflow:hidden}
.module-hero::before{content:"";position:absolute;inset:0;background:rgba(255,255,255,.038);clip-path:polygon(70% 0%,100% 0%,100% 100%,44% 100%);pointer-events:none}
.module-hero::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.022);clip-path:polygon(84% 0%,100% 0%,100% 100%,62% 100%);pointer-events:none}
.module-hero h1{font-size:1.8rem;font-weight:700;margin:0;color:#fff;text-shadow:0 12px 32px rgba(10,16,60,.45)}
.module-hero p{margin:.65rem 0 0;color:rgba(255,255,255,.9)}
.module-hero .hero-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.28rem .75rem;border-radius:6px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.20);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff}

/* ── Module grid ──────────────────────────────────── */
.module-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.module-grid--3{grid-template-columns:repeat(3,1fr)}
.module-grid--metrics{gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}

/* ── Module card ──────────────────────────────────── */
.module-card{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:1.15rem 1.15rem 1.05rem;border-radius:14px;background:#fff;border:1px solid rgba(31,43,77,.09);border-top:3px solid rgba(48,57,141,.50);box-shadow:0 2px 12px rgba(31,43,77,.06);color:#1f2a4d;text-decoration:none;transition:transform .18s,box-shadow .18s,border-top-color .18s,border-color .18s}
.module-card:hover,.module-card:focus-visible{transform:translateY(-2px);box-shadow:0 8px 24px rgba(31,43,102,.13);border-color:rgba(48,57,141,.18);text-decoration:none;color:#1f2a4d;outline:none}
.module-card:focus-visible{box-shadow:0 0 0 3px rgba(48,57,141,.28),0 8px 24px rgba(31,43,102,.12)}
.module-card__head{display:flex;align-items:center;gap:.65rem;margin-bottom:.72rem}
.module-card__icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(145deg,#1f2b66,#1a52a8);display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.05rem;flex-shrink:0;box-shadow:0 4px 12px rgba(31,43,102,.18)}
.module-card__title{font-size:.96rem;font-weight:700;margin:0;flex:1 1 auto}
.module-card__arrow{flex-shrink:0;font-size:.68rem;color:rgba(48,57,141,.32);transition:transform .18s,color .18s}
.module-card:hover .module-card__arrow,.module-card:focus-visible .module-card__arrow{transform:translateX(3px);color:#30398D}
.module-card__desc{font-size:.82rem;line-height:1.5;color:#5d6389;margin:0}
.module-card__tag{display:inline-flex;align-items:center;align-self:flex-start;padding:.22rem .6rem;border-radius:6px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;background:#eaecf8;color:#30398D;margin-top:.65rem}
.module-card.is-disabled{border-top-color:rgba(31,43,77,.14);opacity:.58;pointer-events:none}
.module-card.is-disabled .module-card__arrow{display:none}
.module-card.is-disabled .module-card__icon{background:rgba(31,43,77,.10);color:#6c718f}
.module-card.is-disabled .module-card__tag{background:#e9ecf5;color:#6c718f}
.module-card--accent-blue{border-top-color:#2563eb}
.module-card--accent-blue .module-card__icon{background:linear-gradient(145deg,#1e4fac,#2563eb)}
.module-card--accent-blue:hover .module-card__arrow,.module-card--accent-blue:focus-visible .module-card__arrow{color:#2563eb}
.module-card--accent-cyan{border-top-color:#0891b2}
.module-card--accent-cyan .module-card__icon{background:linear-gradient(145deg,#065e71,#0891b2)}
.module-card--accent-cyan:hover .module-card__arrow,.module-card--accent-cyan:focus-visible .module-card__arrow{color:#0891b2}
.module-card--accent-indigo{border-top-color:#6366f1}
.module-card--accent-indigo .module-card__icon{background:linear-gradient(145deg,#3a3699,#6366f1)}
.module-card--accent-indigo:hover .module-card__arrow,.module-card--accent-indigo:focus-visible .module-card__arrow{color:#6366f1}
.module-card--accent-primary{border-top-color:#1a52a8}
.module-card--accent-primary .module-card__icon{background:linear-gradient(145deg,#1f2b66,#1a52a8)}
.module-card--accent-primary:hover .module-card__arrow,.module-card--accent-primary:focus-visible .module-card__arrow{color:#1a52a8}
.module-card--accent-violet{border-top-color:#7c3aed}
.module-card--accent-violet .module-card__icon{background:linear-gradient(145deg,#5a2899,#7c3aed)}
.module-card--accent-violet:hover .module-card__arrow,.module-card--accent-violet:focus-visible .module-card__arrow{color:#7c3aed}
.module-card--accent-purple{border-top-color:#5b44c2}
.module-card--accent-purple .module-card__icon{background:linear-gradient(145deg,#3a2899,#5b44c2)}
.module-card--accent-purple:hover .module-card__arrow,.module-card--accent-purple:focus-visible .module-card__arrow{color:#5b44c2}
.module-card--accent-amber{border-top-color:#d97706}
.module-card--accent-amber .module-card__icon{background:linear-gradient(145deg,#a05009,#d97706)}
.module-card--accent-amber:hover .module-card__arrow,.module-card--accent-amber:focus-visible .module-card__arrow{color:#d97706}
.module-card--accent-green{border-top-color:#059669}
.module-card--accent-green .module-card__icon{background:linear-gradient(145deg,#046c4e,#059669)}
.module-card--accent-green:hover .module-card__arrow,.module-card--accent-green:focus-visible .module-card__arrow{color:#059669}
.module-card--accent-navy{border-top-color:#30398D}
.module-card--accent-navy .module-card__icon{background:linear-gradient(145deg,#1f2b66,#30398D)}
.module-card--accent-navy:hover .module-card__arrow,.module-card--accent-navy:focus-visible .module-card__arrow{color:#30398D}

/* ── Module actions ───────────────────────────────── */
.module-actions{display:flex;justify-content:flex-end;gap:.75rem}
.module-actions .btn{border-radius:8px;font-weight:600;padding:.5rem 1.3rem}

/* ── App sections ─────────────────────────────────── */
.app-section{margin-top:1.5rem;display:flex;flex-direction:column;gap:.75rem}
.app-section__title{font-weight:800;font-size:1.05rem;color:#1f2a4d;display:flex;align-items:center;gap:.45rem;margin:0}
.app-section__subtitle{margin:0;color:#5d6389;font-size:.95rem}
.app-section--tight{margin-top:.4rem;gap:.6rem}
.app-section--tight .app-section__title{font-size:1rem}
.app-section--tight .app-section__subtitle{font-size:.86rem}
.app-panel{background:#fff;border:1px solid rgba(31,43,77,.08);border-radius:14px;box-shadow:0 4px 16px rgba(31,43,77,.08);padding:1.4rem}
.app-panel--elevated{padding:1rem 1.05rem;border-radius:14px;box-shadow:0 8px 28px rgba(31,43,102,.12)}
.app-table-wrap{overflow:auto;border:1px solid rgba(48,57,141,.10);border-radius:14px;background:#fff}
.app-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem;border-radius:6px;background:rgba(48,57,141,.09);color:#30398D;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}
.app-metric__value{display:block;margin-top:.65rem;font-size:1rem;font-weight:700;color:#1f2a4d;line-height:1.2}
.module-subtitle{margin:0;color:#5d658b;font-size:.95rem}

/* ── Admin shell ──────────────────────────────────── */
.admin-shell{max-width:1280px;margin:1rem auto;padding:0 1rem;display:flex;flex-direction:column;gap:1.5rem}
.admin-card{background:#fff;border:1px solid rgba(31,43,77,.08);border-radius:14px;box-shadow:0 4px 16px rgba(31,43,77,.08);padding:1.75rem}
.admin-card--compact{padding:1.25rem 1.5rem}
.admin-card__title{font-size:1.2rem;font-weight:700;color:#1f2a4d;margin:0}
.admin-card__subtitle{margin:.35rem 0 0;color:#5d6389}
.admin-form-grid{display:grid;gap:1rem 1.25rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.admin-form-grid .form-label{font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;color:#5d6389;margin-bottom:.35rem}
.admin-form-grid .form-control,.admin-form-grid .form-select,.admin-form-grid textarea{border-radius:8px;border:1.5px solid rgba(31,43,77,.14);padding:.6rem .8rem;font-size:.95rem;background:#fff}
.admin-form-grid textarea{resize:vertical}
.admin-form-grid .form-control:focus,.admin-form-grid .form-select:focus,.admin-form-grid textarea:focus{border-color:#30398D;box-shadow:0 0 0 3px rgba(48,57,141,.11);outline:none}
.admin-form-grid .form-control.is-valid,.admin-form-grid .form-select.is-valid,.admin-form-grid textarea.is-valid{border-color:rgba(36,46,110,.18)!important;box-shadow:none!important;background-image:none!important}
.admin-form-grid .form-control.is-invalid,.admin-form-grid .form-select.is-invalid,.admin-form-grid textarea.is-invalid{box-shadow:none}
.admin-field .invalid-feedback{min-height:1.1rem}
.admin-section-title{font-size:1.05rem;font-weight:700;margin:1.2rem 0 .6rem;color:#1f2a4d}
.admin-actions{display:flex;justify-content:flex-end;gap:.75rem;flex-wrap:wrap}
.admin-actions .btn{
  display:inline-flex;align-items:center;gap:.45rem;
  border-radius:8px;font-weight:600;font-size:.88rem;line-height:1;
  padding:.55rem 1.3rem;
  transition:background .15s,box-shadow .15s,transform .1s;
}
.admin-actions .btn:active{transform:translateY(1px)}
.admin-actions .btn-primary{
  background:#30398D;color:#fff;border:none;
  box-shadow:0 4px 14px rgba(31,43,102,.28);
}
.admin-actions .btn-primary:hover,.admin-actions .btn-primary:focus-visible{
  background:#1f2b66;color:#fff;
  box-shadow:0 6px 18px rgba(31,43,102,.35);
}
.admin-actions .btn-outline-secondary{
  background:rgba(31,43,77,.06);color:#5d6389;
  border:1px solid rgba(31,43,77,.12);
}
.admin-actions .btn-outline-secondary:hover,.admin-actions .btn-outline-secondary:focus-visible{
  background:rgba(31,43,77,.11);border-color:rgba(31,43,77,.20);color:#1f2a4d;
}
.admin-table{border-radius:14px;border:1px solid rgba(48,57,141,.10);overflow:hidden;box-shadow:0 4px 16px rgba(31,43,77,.08)}
.admin-table table{margin-bottom:0}
.admin-table thead th{background:#f2f4fc;color:#30398D;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid rgba(48,57,141,.10)}
.admin-table tbody td{vertical-align:middle;font-size:.9rem;color:#1f2a4d}
.admin-table tbody tr:hover{background:rgba(48,57,141,.025)}
.admin-table input[type="date"],.admin-table input[type="text"],.admin-table input[type="file"],.admin-table .form-control{min-width:160px;font-size:.9rem}

/* ── Status pills ─────────────────────────────────── */
.status-pill{display:inline-flex;align-items:center;padding:.2rem .7rem;border-radius:6px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.status-pill.is-active{background:#edf9f0;color:#207245}
.status-pill.is-inactive{background:#ffe9e7;color:#b42318}

/* ── Admin utilities ──────────────────────────────── */
.admin-filter{display:flex;flex-direction:column;gap:1rem}
.admin-filter .admin-form-grid{margin-top:1rem}
.admin-summary{display:flex;flex-direction:column;gap:.35rem;font-size:.95rem;color:#454b71}
.admin-badge{display:inline-flex;padding:.3rem .75rem;border-radius:6px;background:rgba(48,57,141,.09);color:#30398D;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.admin-subtle-card{border:1px dashed rgba(31,43,77,.25);padding:1rem 1.2rem;border-radius:14px;background:rgba(48,57,141,.025);color:#1f2a4d}
.admin-pill{display:inline-flex;align-items:center;gap:.5rem;padding:.45rem 1.15rem;border-radius:8px;background:#30398D;color:#fff;font-size:.86rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 4px 14px rgba(31,43,102,.28)}
.admin-pill + .admin-form-grid{margin-top:1.25rem}
.admin-form-grid .form-text{font-size:.78rem;color:#6c7192;margin-top:.35rem}
.admin-actions .btn-outline-primary{
  background:rgba(48,57,141,.07);color:#30398D;
  border:1px solid rgba(48,57,141,.18);
}
.admin-actions .btn-outline-primary:hover,.admin-actions .btn-outline-primary:focus-visible{
  background:rgba(48,57,141,.13);border-color:rgba(48,57,141,.28);color:#1f2b66;
}

/* Sync con el breakpoint de colapso del header (992px) */
@media (max-width:992px){
  .module-grid--3{grid-template-columns:repeat(2,1fr)}
  .admin-shell{padding:0 .85rem}
}
@media (max-width:576px){
  .module-shell{margin:1rem auto;padding:0 1rem}
  .module-hero{padding:1.6rem 1.4rem;border-radius:16px}
  .module-grid{grid-template-columns:1fr}
  .admin-shell{padding:0 .75rem}
  .admin-actions{justify-content:center}
}
@media (min-width:769px) and (max-width:960px){
  .module-grid--3{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:768px){
  .module-grid--3{grid-template-columns:1fr}
}

/* ── Hub variant — hero compacto, cards con icono grande ─ */
/* Usado en mercadeo_hub, radicador_portal y similares.     */
/* Aplicar con: class="module-shell module-shell--hub"      */
.module-shell--hub{max-width:1280px;margin:1.15rem auto .5rem;padding:0 .9rem;gap:.85rem}
.module-shell--hub .module-hero{padding:1rem 1.2rem;border-radius:16px;box-shadow:0 8px 28px rgba(31,43,102,.20)}
.module-shell--hub .module-hero h1{font-size:1.4rem;line-height:1.1}
.module-shell--hub .module-hero p{margin-top:.35rem;font-size:.88rem}
.module-shell--hub .hero-badge{padding:.25rem .72rem;font-size:.68rem}
.module-shell--hub .module-grid{gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.module-shell--hub .module-card{padding:1.15rem 1.1rem;border-radius:14px;gap:.55rem;box-shadow:0 8px 28px rgba(31,43,102,.12)}
.module-shell--hub .module-card__icon{width:48px;height:48px;border-radius:14px;font-size:1.35rem;box-shadow:0 10px 22px rgba(35,53,112,.22),0 0 0 1px rgba(255,255,255,.2)}
.module-shell--hub .module-card__title{font-size:.98rem}
.module-shell--hub .module-card__desc{font-size:.84rem;line-height:1.35}
.module-shell--hub .module-card__tag{font-size:.66rem;padding:.24rem .62rem}
.module-shell--hub .app-panel{padding:1.05rem 1.1rem;border-radius:14px;box-shadow:0 8px 28px rgba(31,43,102,.12)}
@media (max-width:768px){
  .module-shell--hub{padding:0 .75rem;gap:.75rem}
  .module-shell--hub .module-hero{padding:.9rem 1rem}
  .module-shell--hub .module-hero h1{font-size:1.2rem}
  .module-shell--hub .module-grid{grid-template-columns:1fr}
}

/* ── Subhub variant — hero con stat widget lateral, shell 960px ─ */
/* Usado en clientes, dictamen, correspondencia y similares.        */
/* Aplicar con: class="module-shell module-shell--subhub"           */
.module-shell--subhub{max-width:1280px;margin:1.2rem auto .5rem;padding:0 .9rem;gap:1rem}
.module-shell--subhub .module-hero{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.5rem 2rem}
.module-shell--subhub .hero-copy{min-width:0;flex:1 1 auto}
.module-shell--subhub .module-hero h1{font-size:1.32rem;line-height:1.12;margin:0}
.module-shell--subhub .module-hero p{margin-top:.3rem;font-size:.86rem;color:rgba(255,255,255,.82)}
.module-shell--subhub .hero-badge{gap:.35rem;padding:.22rem .62rem;font-size:.65rem}
.module-shell--subhub .hero-aside{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:72px;height:72px;border-radius:14px;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.16);gap:.1rem}
.module-shell--subhub .hero-aside__num{font-size:2rem;font-weight:800;line-height:1;color:#fff}
.module-shell--subhub .hero-aside__lbl{font-size:.56rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.68)}
.module-shell--subhub .module-grid{gap:.85rem}
@media (max-width:768px){
  .module-shell--subhub{padding:0 .75rem;gap:.75rem}
  .module-shell--subhub .module-hero{flex-direction:column;align-items:flex-start;padding:1rem 1.1rem;gap:.7rem}
  .module-shell--subhub .hero-aside{display:none}
  .module-shell--subhub .module-hero h1{font-size:1.18rem}
  .module-shell--subhub .module-grid{grid-template-columns:1fr}
}

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

/* ── Multi-dropdown — LP canonical ──────────────────────── */
.multi-dropdown{position:relative;z-index:10}
.multi-dropdown__toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.45rem;padding:.42rem .65rem;border-radius:8px;border:1.5px solid rgba(31,43,77,.14);background:#fff;color:#1f2a4d;font-weight:500;font-size:.84rem;cursor:pointer;transition:border .16s,box-shadow .16s;min-height:38px}
.multi-dropdown__label{font-size:.84rem;line-height:1.2;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.multi-dropdown__toggle:hover,.multi-dropdown__toggle:focus{border-color:#30398D;outline:none;box-shadow:0 0 0 3px rgba(48,57,141,.11)}
.multi-dropdown.has-selection .multi-dropdown__toggle{color:#1f2a4d;font-weight:600}
.multi-dropdown__chevron{transition:transform .16s;color:#30398D;font-size:.75rem}
.multi-dropdown.is-open .multi-dropdown__chevron{transform:rotate(-180deg)}
.multi-dropdown__menu{position:absolute;top:calc(100% + .3rem);left:0;width:100%;background:#fff;border-radius:10px;border:1px solid rgba(31,43,77,.12);box-shadow:0 8px 24px rgba(31,43,77,.13);padding:.3rem 0;visibility:hidden;opacity:0;transform:translateY(-4px);transition:opacity .15s,transform .15s;z-index:80;max-height:180px;overflow-y:auto}
.multi-dropdown.is-open .multi-dropdown__menu{visibility:visible;opacity:1;transform:translateY(0)}
.multi-dropdown__option{display:flex;align-items:flex-start;gap:.5rem;padding:.32rem .7rem;font-size:.82rem;color:#1f2a4d;cursor:pointer;transition:background .13s}
.multi-dropdown__option:hover{background:rgba(48,57,141,.07)}
.multi-dropdown__option input{flex-shrink:0;width:1rem;height:1rem;margin:.05rem 0 0;accent-color:#30398D}
.multi-dropdown__option-content{display:flex;flex-direction:column;gap:.08rem;line-height:1.2}
.multi-dropdown__option-title{font-weight:600;color:#1f2a4d}
.multi-dropdown__option-subtitle{font-size:.72rem;color:#686f92}

/* ── multi-dropdown--form — LP-extension variant ─────────── */
/* Larger toggle (form fields), is-invalid state, scrollbar styling, max-height 260px */
.multi-dropdown--form{width:100%}
.multi-dropdown--form .multi-dropdown__toggle{padding:.58rem .85rem;color:#5d6389;font-size:.9rem;font-weight:600}
.multi-dropdown--form .multi-dropdown__toggle:hover{border-color:rgba(48,57,141,.35);box-shadow:0 0 0 3px rgba(48,57,141,.07)}
.multi-dropdown--form.is-open .multi-dropdown__toggle,.multi-dropdown--form .multi-dropdown__toggle:focus-visible{border-color:#30398D;box-shadow:0 0 0 3px rgba(48,57,141,.11);outline:none}
.multi-dropdown--form.is-invalid .multi-dropdown__toggle{border-color:#b42318;box-shadow:0 0 0 3px rgba(180,35,24,.10)}
.multi-dropdown--form .multi-dropdown__chevron{color:rgba(48,57,141,.40);font-size:.72rem}
.multi-dropdown--form .multi-dropdown__menu{max-height:260px;z-index:30;scrollbar-width:thin;scrollbar-color:#30398D #eef0f8}
.multi-dropdown--form .multi-dropdown__menu::-webkit-scrollbar{width:5px}
.multi-dropdown--form .multi-dropdown__menu::-webkit-scrollbar-track{background:#eef0f8}
.multi-dropdown--form .multi-dropdown__menu::-webkit-scrollbar-thumb{background:#30398D;border-radius:4px}
.multi-dropdown--form .multi-dropdown__option{padding:.42rem 1rem;gap:.6rem}

/* ── Filter section ──────────────────────────────────────── */
.filter-section{background:rgba(31,43,77,.025);border-radius:10px;padding:.7rem .9rem;border:1px solid rgba(31,43,77,.07);position:relative}
.filter-section:first-of-type{z-index:20}
.filter-section__title{display:flex;align-items:center;gap:.4rem;font-size:.84rem;color:#1f2a4d;font-weight:700;margin:0 0 .45rem}
.filter-section__title i{color:#30398D;font-size:.88rem}
.filter-section .admin-form-grid{margin-top:0;gap:.55rem .7rem;grid-template-columns:repeat(4,minmax(0,1fr))}
.filter-section--primary .admin-field{min-width:0;display:flex;flex-direction:column}
.filter-section__helper{font-size:.68rem;color:#666e90;margin-top:.2rem;line-height:1.2}

/* ── Empty state canónico ────────────────────────────────── */
.lp-empty-state{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:2.5rem 1.5rem;text-align:center;border-radius:14px;border:1px dashed rgba(48,57,141,.18);background:rgba(48,57,141,.025);color:var(--lp-muted,#5d6389)}
.lp-empty-state__icon{font-size:2rem;color:rgba(48,57,141,.25);line-height:1}
.lp-empty-state__title{font-size:1rem;font-weight:700;color:var(--lp-text,#1f2a4d);margin:0}
.lp-empty-state__text{font-size:.86rem;margin:0;max-width:420px;line-height:1.55}
.lp-table-empty{text-align:center;padding:2.2rem 1.5rem!important;color:var(--lp-muted,#5d6389);font-size:.88rem;font-style:italic}

/* ── Loader canónico LP ──────────────────────────────────── */
.lp-loader-overlay{position:fixed;inset:0;background:rgba(31,43,77,.5);z-index:2000;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.lp-loader-overlay.is-hidden{display:none}
.lp-loader-box{background:#fff;border-radius:16px;padding:1.6rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.85rem;box-shadow:0 26px 70px rgba(31,43,102,.28);min-width:160px;text-align:center}
.lp-loader-spinner{width:36px;height:36px;border:3px solid rgba(48,57,141,.15);border-top-color:#30398D;border-radius:50%;animation:lp-spin .7s linear infinite}
.lp-loader-label{font-size:.88rem;font-weight:700;color:#1f2a4d}
.lp-save-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(255,255,255,.54);opacity:0;visibility:hidden;pointer-events:none;backdrop-filter:blur(3px);transition:opacity .16s ease,visibility .16s ease}
.lp-save-overlay.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.lp-save-loader{position:relative;display:grid;place-items:center;gap:.72rem;width:148px;min-height:148px;padding:1.15rem 1rem 1rem;border:1px solid rgba(48,57,141,.14);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 8px 28px rgba(31,43,102,.20)}
.lp-save-loader__ring{position:absolute;top:16px;width:74px;height:74px;border:3px solid rgba(48,57,141,.16);border-top-color:#30398D;border-radius:50%;animation:lp-spin .86s linear infinite}
.lp-save-loader__logo{position:relative;z-index:1;width:58px;height:58px;object-fit:contain;margin-top:8px;animation:lp-logo-breathe 1.08s ease-in-out infinite}
.lp-save-loader__text{color:#32406f;font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
@keyframes lp-spin{to{transform:rotate(360deg)}}
@keyframes lp-logo-breathe{0%,100%{transform:scale(.96)}50%{transform:scale(1.03)}}

/* ── Inline loader (botones / guardado in-situ) ──────────── */
.lp-btn-loader{display:inline-flex;align-items:center;gap:.5rem}
.lp-btn-loader__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:lp-spin .7s linear infinite;flex-shrink:0}

/* ── Barra flotante canónica LP (planeación / retención) ─ */
.plan-floating-save{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;gap:.55rem;align-items:center;z-index:1030;padding:.45rem .55rem;border-radius:12px;border:1px solid rgba(48,57,141,.12);background:rgba(255,255,255,.96);box-shadow:0 10px 24px rgba(31,43,77,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.plan-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:8px;border:1px solid rgba(38,44,110,.14);background:#fff;color:#24306f;box-shadow:0 6px 16px rgba(31,43,77,.08);cursor:pointer;transition:box-shadow .18s,background .18s,transform .13s;padding:0;font-size:.9rem;line-height:1;text-decoration:none}
.plan-icon-btn:hover{box-shadow:0 8px 22px rgba(31,43,102,.13);transform:translateY(-1px)}
.plan-icon-btn:focus{outline:none;box-shadow:0 0 0 3px rgba(48,57,141,.11)}
.plan-icon-btn--ghost{background:#fff;color:#30398D}
.plan-icon-btn--primary{background:#30398D;color:#fff;border-color:rgba(48,57,141,.3)}
.plan-icon-btn--primary:hover{background:#1f2b66;color:#fff}
.plan-icon-btn[data-tooltip]{position:relative}
.plan-icon-btn[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);right:50%;transform:translateX(50%);background:#1f2a4d;color:#fff;font-size:.72rem;font-weight:700;padding:.28rem .62rem;border-radius:6px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .16s;z-index:10}
.plan-icon-btn[data-tooltip]:hover::after{opacity:1}
.plan-icon-btn .lp-btn-loader:not([hidden]) ~ i{display:none}

/* ── Print global LP ─────────────────────────────────── */
@media print{
  body{padding-top:0!important;background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .lp-header-shell,footer,.flash-stack,.lp-skip,.lp-loader-overlay{display:none!important;}
  .floating-save,.profile-floating-save,.plan-floating-save,.contract-page .floating-save{display:none!important;}
  .module-hero{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .module-card{break-inside:avoid;box-shadow:none!important;border:1px solid #d0d4e8!important;}
  .app-panel,.admin-card{box-shadow:none!important;border:1px solid #d0d4e8!important;}
  .app-table-wrap{overflow:visible!important;}
  .no-print{display:none!important;}
  .print-only{display:block!important;}
}
