:root {
    --bg: #f1f4ef;
    --surface: #ffffff;
    --surface-soft: #f7f9f5;

    --line: #d9ded3;
    --line-strong: #c3ccbc;

    --text: #202725;
    --muted: #69726d;

    --primary: #00745d;
    --primary-strong: #005443;
    --accent: #7e9748;

    --success: #2f7d50;
    --warning: #a36a18;
    --danger: #b42318;

    --shadow: 0 12px 35px rgba(31, 61, 50, 0.10);

    --radius: 16px;
    --radius-small: 10px;
    --sidebar: 254px;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body { margin: 0; min-height: 100vh; color: var(--text); background: var(--bg); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 15px; line-height: 1.5; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: var(--sidebar) minmax(0, 1fr); }
.sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    padding: 22px 16px;
    background:
        linear-gradient(
            180deg,
            #0d3b31 0%,
            #082b24 55%,
            #061f1a 100%
        );
    color: #e8f0eb;
    display: flex;
    flex-direction: column;
    z-index: 40;
}

.brand-block {
    display: grid;
    gap: 11px;
    padding: 4px 7px 22px;
    border-bottom: 1px solid rgba(255, 255, 255, .13);
}

.sidebar-logo-box {
    height: 88px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    padding: 6px 10px;
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 10px 28px rgba(0, 0, 0, .20);
}

.sidebar-logo {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    transform: scale(1.16);
}

.sidebar-brand-copy {
    text-align: center;
}

.brand-block strong {
    display: block;
    color: #ffffff;
    font-size: 13px;
    letter-spacing: .03em;
}

.brand-block span {
    display: block;
    color: #b2c5bb;
    font-size: 11px;
    margin-top: 2px;
}
.nav-list { display: grid; gap: 5px; margin-top: 22px; }
.nav-item { display: flex; align-items: center; gap: 11px; padding: 11px 12px; border-radius: 10px; color: #b9cce0; font-weight: 650; }
.nav-item:hover { background: rgba(255,255,255,.07); color: #fff; }
.nav-item.active { background: #fff; color: var(--primary); box-shadow: 0 8px 24px rgba(0,0,0,.16); }
.nav-icon { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; background: rgba(255,255,255,.08); font-size: 10px; letter-spacing: .05em; }
.nav-item.active .nav-icon { background: #e8f2fb; }
.sidebar-note { margin-top: auto; padding: 14px; border-radius: 12px; background: rgba(255,255,255,.06); }
.sidebar-note strong, .sidebar-note span { display: block; }
.sidebar-note strong { color: #fff; font-size: 13px; }
.sidebar-note span { margin-top: 4px; color: #9ab0c6; font-size: 12px; }

.main-column { min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 30; min-height: 70px; padding: 12px 28px; display: flex; align-items: center; justify-content: space-between; gap: 18px; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--line); backdrop-filter: blur(10px); }
.topbar-context span, .topbar-user span { display: block; color: var(--muted); font-size: 11px; letter-spacing: .08em; }
.topbar-context strong, .topbar-user strong { display: block; }
.topbar-user { display: flex; align-items: center; gap: 18px; text-align: right; }
.content-area { max-width: 1500px; margin: 0 auto; padding: 32px; }

.page-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.page-heading h1 { margin: 3px 0 7px; font-size: clamp(28px, 3vw, 40px); line-height: 1.08; letter-spacing: -.035em; }
.page-heading p { margin: 0; color: var(--muted); max-width: 820px; }
.eyebrow { color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .16em; }

.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px; }
.compact-panel { padding: 0; overflow: hidden; }
.narrow-panel { max-width: 760px; }
.panel-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.panel-header h2 { margin: 2px 0 3px; font-size: 20px; }
.panel-header p { margin: 0; color: var(--muted); }
.section-stack { display: grid; gap: 20px; }
.two-column-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }

.metric-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; margin-bottom: 22px; }
.metric-card { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 19px; box-shadow: var(--shadow); }
.metric-card span, .metric-card small { display: block; color: var(--muted); }
.metric-card strong { display: block; margin: 8px 0 3px; font-size: 28px; line-height: 1; }
.metric-card.warning { border-color: #f0d39e; background: #fffaf0; }
.summary-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-bottom: 20px; }
.summary-strip div { padding: 16px; background: var(--surface); }
.summary-strip span { display: block; color: var(--muted); font-size: 12px; }
.summary-strip strong { display: block; margin-top: 4px; }

.item-list { display: grid; }
.item-row { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 13px 0; border-top: 1px solid var(--line); }
.item-row:first-child { border-top: 0; }
.item-row:hover strong { color: var(--accent); }
.item-row strong, .item-row span { display: block; }
.item-row span { color: var(--muted); font-size: 13px; }
.item-meta { text-align: right; }
.timeline { display: grid; gap: 15px; }
.timeline-row { display: grid; grid-template-columns: 12px 1fr; gap: 10px; }
.timeline-dot { width: 9px; height: 9px; margin-top: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 4px #e8f3fc; }
.timeline-row strong, .timeline-row span { display: block; }
.timeline-row span { color: var(--muted); font-size: 12px; margin-top: 2px; }

.button { border: 1px solid transparent; border-radius: 10px; padding: 10px 15px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-weight: 750; line-height: 1.2; }
.button.primary { background: var(--primary); color: #fff; }
.button.primary:hover { background: var(--primary-strong); }
.button.secondary { background: #eff5fb; color: var(--primary); border-color: #d5e2ef; }
.button.ghost { background: transparent; color: var(--text); border-color: var(--line); }
.button.small { padding: 7px 11px; font-size: 13px; }
.button.full { width: 100%; }
.text-link { color: var(--accent); font-weight: 750; }
.icon-button { border: 0; background: transparent; color: var(--text); width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; font-size: 22px; }
.icon-button:hover { background: var(--surface-soft); }

form label { display: grid; gap: 6px; color: #33475e; font-weight: 700; }
input, select, textarea { width: 100%; border: 1px solid var(--line-strong); border-radius: 10px; padding: 10px 12px; background: #fff; color: var(--text); outline: none; }
input:focus, select:focus, textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(13,113,188,.12); }
textarea { resize: vertical; }
label small, .helper-text { color: var(--muted); font-weight: 500; font-size: 12px; }
.required { color: var(--danger); }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }
.span-2 { grid-column: span 2; }
.form-actions { display: flex; justify-content: flex-end; margin-top: 3px; }
.stack-form { display: grid; gap: 15px; }
.inline-form { display: inline; }
.check-inline { display: flex; align-items: center; grid-template-columns: auto 1fr; }
.check-inline input { width: auto; }
.filter-grid { grid-template-columns: 2fr 1fr auto; align-items: end; padding: 0 20px 20px; }
.filter-actions { display: flex; align-items: center; gap: 12px; padding-bottom: 1px; }

.collapse-trigger { width: 100%; border: 0; padding: 18px 20px; background: var(--surface); display: flex; justify-content: space-between; align-items: center; color: var(--text); font-weight: 800; text-align: left; }
.collapse-trigger:hover { background: var(--surface-soft); }
.collapse-symbol { font-size: 22px; color: var(--accent); }
.collapse-content { display: none; padding: 0 20px 20px; }
.collapse-content.open { display: grid; }

.responsive-table { width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th { color: #52647a; background: #f4f7fb; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; text-align: left; }
th, td { padding: 12px 13px; border-bottom: 1px solid var(--line); vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #fbfdff; }
.table-subtext { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }
.actions-cell { text-align: right; white-space: nowrap; }

.status { display: inline-flex; align-items: center; border-radius: 999px; padding: 5px 9px; font-size: 11px; font-weight: 800; background: #edf2f7; color: #4b5f75; }
.status-active, .status-available { background: #e7f6ee; color: var(--success); }
.status-onboarding, .status-trial, .status-pending, .status-planned { background: #e8f2fb; color: #145f98; }
.status-suspended, .status-past_due { background: #fff3dd; color: var(--warning); }
.status-cancelled, .status-disabled, .status-archived, .status-inactive { background: #fbe9e7; color: var(--danger); }

.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 16px; }
.entity-card { border: 1px solid var(--line); border-radius: 14px; padding: 17px; background: var(--surface-soft); transition: transform .15s ease, border-color .15s ease; }
.entity-card:hover { transform: translateY(-2px); border-color: #afc7dd; }
.entity-card h3 { margin: 12px 0 4px; }
.entity-card p { color: var(--muted); margin: 0 0 14px; }
.entity-card-top { display: flex; justify-content: space-between; align-items: center; }
.mini-stats { display: flex; flex-wrap: wrap; gap: 16px; color: var(--muted); font-size: 12px; }
.mini-stats strong { color: var(--text); }
.plan-card .button { margin-top: 16px; }

.module-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; margin: 14px 0 18px; }
.module-check { position: relative; display: grid; grid-template-columns: auto 1fr; align-items: flex-start; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-soft); font-weight: 500; }
.module-check input { width: auto; margin-top: 3px; }
.module-check strong, .module-check small, .module-check em { display: block; }
.module-check small { margin-top: 3px; }
.module-check em { margin-top: 7px; color: var(--accent); font-style: normal; font-size: 11px; font-weight: 800; }
.module-catalog { display: grid; gap: 10px; }
.catalog-heading { margin: 22px 0 3px; font-size: 18px; }
.catalog-card { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 17px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.catalog-card p { margin: 4px 0 0; color: var(--muted); }
.catalog-card > div:last-child { display: grid; justify-items: end; gap: 7px; }
code { background: #eef3f7; color: #36516d; border-radius: 6px; padding: 3px 6px; font-size: 12px; }

.empty-state { min-height: 130px; display: grid; place-content: center; text-align: center; padding: 22px; color: var(--muted); }
.empty-state strong, .empty-state span { display: block; }
.empty-state strong { color: var(--text); }
.flash { border-radius: 11px; padding: 12px 14px; margin-bottom: 16px; border: 1px solid; }
.flash-success { background: #eaf8f0; color: var(--success); border-color: #bfe5cf; }
.flash-error { background: #fff0ef; color: var(--danger); border-color: #f0c5c1; }
.muted { color: var(--muted); }
.small { font-size: 12px; }

.modal { position: fixed; inset: 0; z-index: 100; display: none; align-items: center; justify-content: center; padding: 20px; }
.modal.open { display: flex; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(8, 25, 43, .62); backdrop-filter: blur(3px); }
.modal-dialog { position: relative; z-index: 1; width: min(620px, 100%); max-height: min(88vh, 900px); overflow: auto; background: var(--surface); border-radius: 18px; box-shadow: 0 28px 80px rgba(0,0,0,.27); }
.modal-dialog.wide { width: min(860px, 100%); }
.modal-header { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: flex-start; gap: 15px; padding: 19px 22px; background: rgba(255,255,255,.97); border-bottom: 1px solid var(--line); }
.modal-header h2 { margin: 2px 0 0; }
.modal-body { padding: 22px; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; padding-top: 8px; }
body.modal-open { overflow: hidden; }

.auth-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 18px;
    background:
        radial-gradient(
            circle at 12% 10%,
            rgba(0, 116, 93, .16),
            transparent 34%
        ),
        radial-gradient(
            circle at 88% 90%,
            rgba(126, 151, 72, .18),
            transparent 34%
        ),
        linear-gradient(
            145deg,
            #f8faf7 0%,
            #edf2e9 55%,
            #e5ece1 100%
        );
}

body.auth-body > .auth-shell {
    display: block;
    width: min(920px, 100%);
    max-width: 920px;
    margin: auto;
}

.auth-card {
    width: 100%;
    padding: 27px 28px 25px;
    background: rgba(255, 255, 255, .98);
    border: 1px solid #d4ddd0;
    border-radius: 20px;
    box-shadow:
        0 25px 70px rgba(25, 61, 48, .18),
        0 2px 8px rgba(25, 61, 48, .05);
}

/*
 * Lee el logo directamente desde:
 * guardinexa/assets/img/logo-guardinexa.png
 *
 * Esto reemplaza visualmente la letra G sin tener
 * que modificar todavía el archivo PHP del login.
 */
.auth-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 132px;
    margin-bottom: 3px;
    overflow: hidden;
}

.auth-brand .brand-mark.large {
    width: 100%;
    max-width: 330px;
    height: 132px;
    display: block;
    border-radius: 0;
    background-color: transparent;
    background-image: url("../img/logo-guardinexa.png");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    box-shadow: none;

    color: transparent;
    font-size: 0;
    line-height: 0;
    text-indent: -9999px;
    overflow: hidden;
}

/* También funciona si posteriormente usamos una etiqueta img. */
.auth-logo {
    display: block;
    width: 100%;
    max-width: 330px;
    height: 132px;
    object-fit: contain;
}

.auth-brand > div:not(.brand-mark) {
    display: none;
}

.auth-copy {
    margin: 8px 0 20px;
    text-align: center;
}

.auth-copy h2 {
    margin: 0 0 6px;
    color: var(--text);
    font-size: 21px;
    line-height: 1.2;
}

.auth-copy p {
    margin: 0;
    color: var(--muted);
    font-size: 13px;
}

.auth-card .stack-form {
    gap: 13px;
}

.auth-card form label {
    color: #34443e;
}

.auth-card input {
    min-height: 44px;
    border-color: #c7d2c2;
}

.auth-card input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(0, 116, 93, .14);
}

.auth-card .button {
    min-height: 45px;
}

.auth-card > .muted {
    margin: 17px 0 0;
    text-align: center;
}

@media (max-width: 520px) {
    .auth-body {
        align-items: center;
        padding: 16px 13px;
    }

    body.auth-body > .auth-shell {
        max-width: 100%;
    }

    .auth-card {
        padding: 22px 20px;
        border-radius: 17px;
    }

    .auth-brand {
        min-height: 112px;
    }

    .auth-brand .brand-mark.large,
    .auth-logo {
        height: 112px;
        max-width: 290px;
    }

    .auth-copy {
        margin: 6px 0 18px;
    }

    .auth-copy h2 {
        font-size: 19px;
    }
}

.mobile-only { display: none; }

@media (max-width: 1180px) {
    .metric-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
    .summary-strip { grid-template-columns: repeat(3, minmax(0,1fr)); }
    .card-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 900px) {
    .app-shell { display: block; }
    .sidebar { position: fixed; left: 0; transform: translateX(-105%); transition: transform .2s ease; width: min(300px, 88vw); box-shadow: 18px 0 45px rgba(0,0,0,.25); }
    .sidebar.open { transform: translateX(0); }
    .mobile-only { display: grid; }
    .topbar { padding: 10px 16px; }
    .content-area { padding: 24px 18px; }
    .two-column-grid { grid-template-columns: 1fr; }
    .filter-grid { grid-template-columns: 1fr; align-items: stretch; }
}

@media (max-width: 700px) {
    body { font-size: 14px; }
    .page-heading { display: grid; }
    .page-heading .button { width: 100%; }
    .metric-grid, .summary-strip { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .card-grid, .module-check-grid, .form-grid { grid-template-columns: 1fr; }
    .span-2 { grid-column: span 1; }
    .topbar-context { display: none; }
    .topbar-user { margin-left: auto; }
    .topbar-user span { display: none; }
    .panel { padding: 17px; }
    .compact-panel { padding: 0; }
    .panel-header { display: grid; }
    .panel-header .button { width: 100%; }
    .responsive-table { overflow: visible; }
    table, thead, tbody, th, td, tr { display: block; }
    thead { display: none; }
    tbody { display: grid; gap: 12px; }
    tbody tr { padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-soft); }
    td { display: grid; grid-template-columns: minmax(95px, .65fr) 1.35fr; gap: 10px; border: 0; padding: 6px 0; }
    td::before { content: attr(data-label); color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
    .actions-cell { display: block; text-align: left; margin-top: 7px; }
    .actions-cell::before { display: none; }
    .actions-cell .button { width: 100%; }
    .catalog-card { align-items: flex-start; }
    .catalog-card > div:last-child { min-width: 100px; }
    .modal { padding: 0; align-items: flex-end; }
    .modal-dialog, .modal-dialog.wide { width: 100%; max-height: 93vh; border-radius: 20px 20px 0 0; }
}

@media (max-width: 430px) {
    .metric-grid, .summary-strip { grid-template-columns: 1fr; }
    .content-area { padding: 20px 12px; }
    .topbar-user strong { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

.pwa-install-button {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 150;

    min-height: 46px;
    padding: 11px 18px;

    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;

    color: #ffffff;
    background:
        linear-gradient(
            135deg,
            var(--primary),
            var(--primary-strong)
        );

    box-shadow:
        0 14px 35px rgba(0, 84, 67, .30),
        0 3px 10px rgba(0, 0, 0, .12);

    font-weight: 800;
    line-height: 1;
}

.pwa-install-button:hover {
    transform: translateY(-1px);
    background:
        linear-gradient(
            135deg,
            #00876d,
            var(--primary)
        );
}

.pwa-install-button:disabled {
    cursor: wait;
    opacity: .68;
}

.pwa-install-button[hidden] {
    display: none !important;
}

@media (max-width: 700px) {
    .pwa-install-button {
        right: 14px;
        bottom:
            calc(
                14px +
                env(safe-area-inset-bottom)
            );

        max-width: calc(100vw - 28px);
        min-height: 48px;
        padding: 12px 17px;
    }
}


/* GUARDINEXA CONTRACTS PH V2 */
.subsection {
    margin-top: 24px;
    padding-top: 22px;
    border-top: 1px solid var(--line);
}
.subsection h3 { margin: 0 0 16px; }
.contract-summary-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 24px;
}
.contract-summary-grid > div {
    padding: 13px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--surface-soft);
}
.contract-summary-grid span,
.contract-summary-grid strong { display: block; }
.contract-summary-grid span { color: var(--muted); font-size: 11px; }
.contract-summary-grid strong { margin-top: 4px; }
.compact-empty { min-height: 90px; }
.danger-link { color: var(--danger); border: 0; background: transparent; padding: 0; font: inherit; font-weight: 750; cursor: pointer; }
.migration-warning { border-color: #e8c77d; background: #fffaf0; }
.status-draft { background: #edf2f7; color: #4b5f75; }
.status-grace { background: #fff3dd; color: var(--warning); }
.status-expired { background: #fbe9e7; color: var(--danger); }
@media (max-width: 1000px) {
    .contract-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
    .contract-summary-grid { grid-template-columns: 1fr; }
}

/* GUARDINEXA PROPERTY FLOW V3 */
.gx-fold {
    overflow: hidden;
}

.gx-fold > summary {
    list-style: none;
    cursor: pointer;
}

.gx-fold > summary::-webkit-details-marker {
    display: none;
}

.gx-fold-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 20px 22px;
    font-weight: 800;
}

.gx-fold[open] > .gx-fold-summary {
    border-bottom: 1px solid var(--border);
}

.gx-fold-body {
    padding: 22px;
}

.gx-action-fold {
    margin: 14px 0 22px;
}

.gx-summary-button {
    display: inline-flex;
    width: auto;
    user-select: none;
}

.gx-action-fold[open] > .gx-summary-button {
    margin-bottom: 0;
}

.gx-payer-list {
    display: grid;
    gap: 14px;
    margin-top: 18px;
}

.gx-payer-card {
    border: 1px solid var(--border);
    border-radius: 16px;
    background: #fff;
    overflow: hidden;
}

.gx-payer-card > summary {
    list-style: none;
    cursor: pointer;
}

.gx-payer-card > summary::-webkit-details-marker {
    display: none;
}

.gx-payer-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 20px;
}

.gx-payer-summary > div:first-child {
    display: grid;
    gap: 4px;
}

.gx-payer-summary > div:first-child strong {
    font-size: 1.05rem;
}

.gx-payer-summary > div:first-child span,
.gx-payer-metrics span {
    color: var(--muted);
    font-size: .88rem;
}

.gx-payer-metrics {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px 18px;
}

.gx-payer-body {
    padding: 0 20px 20px;
    border-top: 1px solid var(--border);
}

.gx-inline-actions {
    justify-content: flex-end;
    padding: 14px 0;
}

.gx-contract-list {
    display: grid;
    gap: 12px;
}

.gx-contract-card {
    display: grid;
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface-soft, #f8faf7);
}

.gx-contract-card.is-selected {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(0, 116, 93, .08);
}

.gx-contract-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.gx-contract-head > div {
    display: grid;
    gap: 5px;
}

.gx-contract-head > div:last-child {
    justify-items: end;
}

.gx-module-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.gx-module-chip {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: rgba(0, 116, 93, .10);
    color: var(--primary-strong, #005443);
    font-size: .82rem;
    font-weight: 700;
}

.gx-module-chip.is-inactive {
    opacity: .55;
}

.gx-contract-section {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--border);
}

.compact-summary {
    margin-bottom: 18px;
}

.compact-empty {
    padding: 22px;
}

@media (max-width: 800px) {
    .gx-payer-summary,
    .gx-contract-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .gx-payer-metrics {
        justify-content: flex-start;
    }

    .gx-contract-head > div:last-child {
        justify-items: start;
    }
}

/* GUARDINEXA PAYER SETUP V4 */

.gx-simple-payer-list {
    display: grid;
    gap: 14px;
    margin-top: 24px;
}

.gx-payer-config {
    border: 1px solid var(--line, #d7ded4);
    border-radius: 16px;
    background: #fff;
    overflow: hidden;
}

.gx-payer-config[open] {
    box-shadow: 0 16px 38px rgba(19, 62, 49, .08);
}

.gx-payer-config-summary {
    list-style: none;
    display: grid;
    grid-template-columns:
        minmax(200px, 1.4fr)
        minmax(150px, 1fr)
        85px
        85px
        135px
        auto;
    gap: 18px;
    align-items: center;
    min-height: 88px;
    padding: 18px 20px;
    cursor: pointer;
    background: #fff;
}

.gx-payer-config-summary::-webkit-details-marker {
    display: none;
}

.gx-payer-config-summary:hover {
    background: #f8faf7;
}

.gx-payer-main,
.gx-payer-plan,
.gx-payer-number {
    display: grid;
    gap: 4px;
}

.gx-payer-main strong,
.gx-payer-plan strong,
.gx-payer-number strong {
    color: var(--text, #202725);
}

.gx-payer-main span,
.gx-payer-plan span,
.gx-payer-number span {
    color: var(--muted, #6b746f);
    font-size: 12px;
}

.gx-payer-config-body {
    padding: 0 20px 22px;
    border-top: 1px solid var(--line, #d7ded4);
    background: #fbfcfa;
}

.gx-inline-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 14px 0 4px;
}

.gx-inline-actions form {
    margin: 0;
}

.gx-payer-setup-form {
    display: grid;
    gap: 18px;
}

.gx-setup-block {
    padding: 20px;
    border: 1px solid var(--line, #d7ded4);
    border-radius: 14px;
    background: #fff;
}

.gx-setup-heading {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}

.gx-setup-heading h3 {
    margin: 5px 0 4px;
}

.gx-setup-heading p {
    margin: 0;
    color: var(--muted, #6b746f);
}

.gx-compact-grid {
    align-items: end;
}

.gx-module-owner-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.gx-owner-module {
    display: grid;
    gap: 12px;
    min-height: 154px;
    padding: 16px;
    border: 1px solid #d3dccf;
    border-radius: 14px;
    background: #f9fbf8;
}

.gx-owner-module:hover {
    border-color: #9db390;
}

.gx-owner-module.is-locked {
    opacity: .72;
    background: #f1f3f1;
}

.gx-owner-module-top {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 12px;
    align-items: start;
}

.gx-owner-module-top input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 3px;
}

.gx-owner-module-top span {
    display: grid;
    gap: 5px;
}

.gx-owner-module-top strong {
    color: #173a31;
}

.gx-owner-module-top small {
    color: var(--muted, #6b746f);
    line-height: 1.45;
}

.gx-owner-module em {
    color: #9b3c2f;
    font-style: normal;
    font-weight: 700;
    font-size: 12px;
}

.gx-module-price-label {
    color: var(--muted, #6b746f);
    font-size: 12px;
}

.gx-owner-module input[type="number"] {
    min-height: 42px;
}

.gx-sticky-save {
    justify-content: flex-end;
    padding-top: 2px;
}

.gx-money-fold {
    margin-top: 18px;
    border: 1px solid var(--line, #d7ded4);
    border-radius: 14px;
    background: #fff;
}

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

.gx-money-card {
    padding: 16px;
    border: 1px solid var(--line, #d7ded4);
    border-radius: 12px;
    background: #fbfcfa;
}

.gx-money-card h3 {
    margin-top: 0;
}

@media (max-width: 980px) {
    .gx-payer-config-summary {
        grid-template-columns: 1fr 1fr;
    }

    .gx-module-owner-grid,
    .gx-money-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .gx-payer-config-summary {
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .gx-payer-config-body,
    .gx-setup-block {
        padding-left: 14px;
        padding-right: 14px;
    }
}



/* ==========================================================
   Componentes operativos consolidados
   Estilos operativos integrados en el archivo principal.
   ========================================================== */

:root{--gx20-green:#08745f;--gx20-dark:#173229;--gx20-line:#d2e0d8;--gx20-soft:#eef6f2;--gx20-olive:#78923f}
.gx-v20-toast-stack{position:fixed;top:18px;right:18px;z-index:99999;display:grid;gap:10px;width:min(390px,calc(100vw - 28px))}.gx-v20-toast{display:grid;grid-template-columns:36px 1fr 28px;gap:11px;align-items:start;padding:14px 14px;background:#fff;border:1px solid var(--gx20-line);border-radius:15px;box-shadow:0 18px 55px rgba(14,60,48,.18);animation:gx20in .2s ease}.gx-v20-toast.error{border-color:#e9a39b}.gx-v20-toast-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#ddf5ea;color:#06705a;font-weight:900}.gx-v20-toast.error .gx-v20-toast-mark{background:#fff0ed;color:#a33328}.gx-v20-toast strong{font-size:11px;letter-spacing:.16em;color:var(--gx20-olive)}.gx-v20-toast p{margin:4px 0 0;line-height:1.35}.gx-v20-toast button{border:0;background:transparent;font-size:22px;cursor:pointer;color:#718079}@keyframes gx20in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.gx-v20-confirm{position:fixed;inset:0;z-index:99998;background:rgba(7,34,28,.48);display:grid;place-items:center;padding:20px}.gx-v20-confirm[hidden]{display:none}.gx-v20-confirm-card{width:min(450px,100%);background:#fff;border-radius:20px;padding:26px;box-shadow:0 30px 80px rgba(0,0,0,.25)}.gx-v20-confirm-card>span{font-size:11px;letter-spacing:.2em;color:var(--gx20-olive);font-weight:900}.gx-v20-confirm-card h3{font-size:25px;margin:9px 0}.gx-v20-confirm-card p{color:#52645c;line-height:1.55}.gx-v20-confirm-card>div{display:flex;justify-content:flex-end;gap:10px}.gx-v20-confirm-card button{border:1px solid var(--gx20-line);background:#fff;border-radius:10px;padding:11px 15px;font-weight:800;cursor:pointer}.gx-v20-confirm-card button.primary{background:var(--gx20-green);color:#fff;border-color:var(--gx20-green)}
.gx-v20-login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#dceee5,transparent 38%),linear-gradient(135deg,#f8fbf9,#e8f0eb)}.gx-v20-login-card{width:min(430px,100%);border-radius:24px!important;box-shadow:0 28px 70px rgba(16,62,50,.18)!important}.gx-v20-login-logo{text-align:center;margin-bottom:12px}.gx-v20-login-logo img{width:190px;max-height:125px;object-fit:contain}.gx-v20-login-links{text-align:right;margin-top:-4px}.gx-v20-login-links a,.gx-v20-back-link{color:var(--gx20-green);font-weight:800;text-decoration:none}.gx-v20-resident-account{margin-top:14px}.gx-v20-login .gx-login-intro{font-size:15px;line-height:1.5}
.gx-v20-pagination-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;align-items:end;gap:12px;margin:0 0 16px;padding:12px 14px;background:#f4f8f6;border:1px solid var(--gx20-line);border-radius:14px}.gx-v20-pagination-toolbar label{display:grid;gap:5px;font-size:12px;font-weight:800}.gx-v20-pagination-toolbar input,.gx-v20-pagination-toolbar select{min-height:40px;border:1px solid var(--gx20-line);border-radius:9px;padding:8px 10px;background:#fff}.gx-v20-pagination-toolbar>div{display:flex;align-items:center;gap:8px}.gx-v20-pagination-toolbar button{border:1px solid var(--gx20-line);background:#fff;border-radius:9px;padding:9px 11px;font-weight:800;cursor:pointer}.gx-v20-pagination-toolbar button:disabled{opacity:.45;cursor:not-allowed}
.gx-v20-asset-unit{border:1px solid var(--gx20-line);background:#f8fbf9;border-radius:14px;padding:15px;margin-top:10px}.gx-v20-asset-unit>strong{display:block;margin-bottom:10px;color:var(--gx20-green)}
.gx-v20-full{width:100%;grid-column:1/-1}.gx-v20-compact-action{display:inline-flex!important;width:auto!important;padding:10px 14px!important;min-height:auto!important}.gx-v20-action-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.gx-v20-resident-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
}

.gx-v20-resident-card {
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--gx20-line);
    border-radius: 15px;
    background: #ffffff;
}

.gx-v20-resident-card > summary {
    list-style: none;
}

.gx-v20-resident-card > summary::-webkit-details-marker {
    display: none;
}

.gx-resident-summary {
    display: grid;
    grid-template-columns:
        minmax(220px, 1.5fr)
        minmax(130px, .8fr)
        minmax(110px, .6fr)
        minmax(120px, .7fr)
        minmax(145px, .8fr)
        auto;
    gap: 18px;
    align-items: center;
    padding: 16px 18px;
    cursor: pointer;
}

.gx-resident-summary:hover {
    background: #f7faf8;
}

.gx-resident-row[open] > .gx-resident-summary {
    background: #f2f7f4;
}

.gx-resident-main,
.gx-resident-data {
    min-width: 0;
    display: grid;
    gap: 3px;
}

.gx-resident-main strong {
    color: #08745f;
    font-size: 15px;
}

.gx-resident-main span {
    overflow: hidden;
    color: #687a72;
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gx-resident-data span {
    color: #74837c;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.gx-resident-data strong {
    overflow: hidden;
    color: #263d35;
    font-size: 13px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gx-resident-editor {
    padding: 18px;
    border-top: 1px solid var(--gx20-line);
    background: #fbfcfa;
}

.gx-resident-form {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px !important;
    align-items: end;
}

.gx-resident-form label {
    min-width: 0;
}

.gx-resident-board-check {
    min-height: 44px;
    align-content: center;
    padding: 10px 12px;
    border: 1px solid var(--gx20-line);
    border-radius: 11px;
    background: #ffffff;
}

.gx-resident-save {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
}

.gx-resident-save .gx-primary-button {
    width: 100%;
    min-height: 44px;
}

.gx-v20-resident-card small {
    display: block;
    margin-top: 3px;
    color: #687a72;
}

.gx-v20-resident-code {
    color: var(--gx20-green);
    font-family: ui-monospace, monospace;
    font-weight: 800;
}

@media (max-width: 1050px) {
    .gx-resident-summary {
        grid-template-columns:
            minmax(220px, 1.5fr)
            repeat(2, minmax(120px, 1fr))
            auto;
    }

    .gx-resident-summary .gx-resident-data:nth-of-type(4),
    .gx-resident-summary .gx-resident-data:nth-of-type(5) {
        display: none;
    }

    .gx-resident-form {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .gx-resident-summary {
        grid-template-columns: 1fr auto;
        gap: 10px;
    }

    .gx-resident-summary .gx-resident-data {
        display: none;
    }

    .gx-resident-form {
        grid-template-columns: 1fr;
    }
}
.gx-v20-access-layout{display:grid;grid-template-columns:1fr;gap:18px}.gx-v20-selection-bar{position:sticky;bottom:12px;z-index:10;background:#0b5f4f;color:#fff;border-radius:16px;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 15px 40px rgba(5,61,49,.2)}.gx-v20-selection-bar button{background:#fff;color:#075d4d;border:0;border-radius:10px;padding:11px 16px;font-weight:900}.gx-v20-zone-picker{display:grid;grid-template-columns:1fr 50px 1fr;gap:12px;align-items:center}.gx-v20-zone-picker select{min-height:220px}.gx-v20-zone-picker-actions{display:grid;gap:10px}.gx-v20-zone-picker-actions button{border:1px solid var(--gx20-line);background:#fff;border-radius:9px;padding:9px;font-size:18px}.gx-v20-tech-panel{border-style:dashed!important}
.gx-v20-sealed{display:inline-flex;align-items:center;gap:7px;color:#6d7b75;font-weight:800}.gx-v20-score{display:inline-grid;place-items:center;min-width:44px;height:32px;border-radius:999px;background:#e5f5ed;color:#08715b;font-weight:900}.gx-v20-warning{padding:10px 12px;border-radius:10px;background:#fff7df;border:1px solid #e9cf82;color:#735b14}.gx-v20-comparison{overflow:auto}.gx-v20-comparison table{min-width:850px}
.gx-v20-cronogram{display:grid;gap:12px}.gx-v20-order-card{border:1px solid var(--gx20-line);border-radius:15px;padding:16px;background:#fff}.gx-v20-order-card.overdue{border-color:#e49b92;background:#fff8f7}.gx-v20-order-card.upcoming{border-color:#d8c268}.gx-v20-order-card header{display:flex;justify-content:space-between;gap:12px}.gx-v20-order-card .meta{display:flex;flex-wrap:wrap;gap:10px;color:#5c6e66;font-size:13px;margin-top:8px}
.gx-v20-modal-drawer>summary{display:inline-flex!important;width:auto!important;list-style:none;cursor:pointer}.gx-v20-modal-drawer[open]::before{content:"";position:fixed;inset:0;background:rgba(8,40,33,.42);z-index:9990}.gx-v20-modal-drawer[open]>form,.gx-v20-modal-drawer[open]>.gx-v20-drawer-body{position:fixed;z-index:9991;top:50%;left:50%;transform:translate(-50%,-50%);width:min(720px,calc(100vw - 30px));max-height:88vh;overflow:auto;background:#fff;border-radius:20px;padding:22px;box-shadow:0 30px 80px rgba(0,0,0,.24)}
.gx-v20-supervision-grid{display:grid;grid-template-columns:minmax(300px,.8fr) 1.2fr;gap:18px}.gx-v20-photo-input{padding:18px;border:1px dashed var(--gx20-line);border-radius:12px;background:#f7faf8}
.gx-v20-ip-mask{font-family:ui-monospace,monospace;color:#697a72}.gx-v20-export-bar{display:flex;gap:10px;align-items:center;justify-content:flex-end;margin-bottom:12px}
.gx-v20-location-button{width:100%;border:1px solid #a9cec0;background:#eef9f4;color:#07614f;border-radius:11px;padding:12px;font-weight:900;cursor:pointer}.gx-v20-helper{padding:13px 15px;background:#eef6f2;border-radius:12px;line-height:1.5;color:#52665d}
@media(max-width:850px){.gx-v20-pagination-toolbar{grid-template-columns:1fr 1fr}.gx-v20-pagination-toolbar>span,.gx-v20-pagination-toolbar>div{grid-column:1/-1}.gx-v20-supervision-grid{grid-template-columns:1fr}.gx-v20-zone-picker{grid-template-columns:1fr}.gx-v20-zone-picker-actions{grid-template-columns:1fr 1fr}.gx-v20-zone-picker select{min-height:130px}}
.gx-v20-server-pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:18px}.gx-v20-server-pagination .disabled{pointer-events:none;opacity:.45}.gx-space-choice.supervision{border-color:#9abf70}.gx-space-choice.supervision .gx-space-choice-icon{background:#eef6df;color:#52742d}

:root{--gx21-green:#08745f;--gx21-dark:#173229;--gx21-line:#d5e2db;--gx21-soft:#f2f7f4;--gx21-muted:#66776f;--gx21-danger:#b33b31}
/* Login equilibrado en escritorio y móvil */
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px}.gx-v21-login{width:min(920px,100%);display:grid;grid-template-columns:minmax(300px,.9fr) minmax(380px,1.1fr);overflow:hidden;border:1px solid var(--gx21-line);border-radius:28px;background:#fff;box-shadow:0 28px 80px rgba(19,63,51,.16)}.gx-v21-login-brand{padding:44px;background:linear-gradient(145deg,#0a5a4b,#073d34);color:#fff;display:flex;flex-direction:column;justify-content:space-between;gap:36px}.gx-v21-login-brand img{width:170px;height:105px;object-fit:contain;background:#fff;border-radius:18px;padding:10px}.gx-v21-login-brand h1{font-size:36px;line-height:1.06;margin:12px 0}.gx-v21-login-brand p{line-height:1.65;color:#d9ebe4}.gx-v21-login-form{padding:44px;display:flex;align-items:center}.gx-v21-login-form-inner{width:100%;max-width:460px;margin:auto}.gx-v21-login-form .gx-login-form{gap:16px}.gx-v21-login-form .gx-v20-login-links{margin:0;text-align:right}.gx-v21-login-form .gx-v20-login-links a{display:inline-block;padding:2px 0 8px}.gx-v21-login-form .gx-login-submit{margin-top:0}.gx-v21-resident-link{margin-top:14px}.gx-v21-login-brand .gx-kicker{color:#c4d879}@media(max-width:780px){.gx-v21-login{grid-template-columns:1fr}.gx-v21-login-brand{padding:26px;gap:18px}.gx-v21-login-brand h1{font-size:28px}.gx-v21-login-brand img{width:145px;height:88px}.gx-v21-login-form{padding:28px 24px}}
/* Compactación general */
.gx-v21-command-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.gx-v21-compact-panel{padding:18px!important}.gx-v21-compact-panel .gx-panel-heading{margin-bottom:12px}.gx-v21-compact-panel .gx-panel-heading p{margin:4px 0 0}.gx-v21-list{display:grid;gap:9px}.gx-v21-list-row{display:grid;grid-template-columns:minmax(180px,1.5fr) repeat(3,minmax(110px,.7fr)) auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--gx21-line);border-radius:13px;background:#fff}.gx-v21-list-row small{display:block;color:var(--gx21-muted);margin-top:3px}.gx-v21-action-button{border:0;background:transparent;color:var(--gx21-green);font-weight:800;cursor:pointer;padding:7px}.gx-v21-danger{color:var(--gx21-danger)!important}.gx-v21-zero-gap{margin-top:0!important;padding-top:0!important}.gx-v21-count{display:inline-flex;min-width:28px;height:28px;align-items:center;justify-content:center;border-radius:999px;background:#e2f4ec;color:#08745f;font-weight:900}
/* Modal nativo */
.gx-v21-modal{width:min(720px,calc(100vw - 28px));max-height:90vh;border:0;border-radius:22px;padding:0;box-shadow:0 32px 90px rgba(0,0,0,.28);color:var(--gx21-dark)}.gx-v21-modal::backdrop{background:rgba(6,38,31,.55);backdrop-filter:blur(2px)}.gx-v21-modal-card{background:#fff;display:flex;flex-direction:column;max-height:90vh}.gx-v21-modal-head{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:20px 22px;border-bottom:1px solid var(--gx21-line)}.gx-v21-modal-head h2{margin:0;font-size:23px}.gx-v21-modal-head button{border:0;background:#eef5f1;width:36px;height:36px;border-radius:50%;font-size:23px;cursor:pointer}.gx-v21-modal-body{padding:22px;overflow:auto}.gx-v21-modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--gx21-line);background:#f8fbf9}.gx-v21-modal .gx-v16-form{margin:0}.gx-v21-modal-trigger{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--gx21-line);background:#fff;border-radius:11px;padding:10px 14px;color:var(--gx21-green);font-weight:850;cursor:pointer}.gx-v21-modal-trigger.primary{background:var(--gx21-green);color:#fff;border-color:var(--gx21-green)}
/* Accesos */
.gx-v21-access-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin-bottom:14px}.gx-v21-access-head h2{margin:4px 0}.gx-v21-resident-access-table{width:100%;border-collapse:separate;border-spacing:0}.gx-v21-resident-access-table th,.gx-v21-resident-access-table td{padding:12px;border-bottom:1px solid var(--gx21-line);vertical-align:middle}.gx-v21-resident-access-table th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#52665d;background:#f2f7f4}.gx-v21-profile-badges{
    display:grid;
    gap:6px;
    justify-items:start;
}.gx-v21-profile-badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:#e6f5ef;color:#08745f;font-size:12px;font-weight:800}.gx-v21-profile-picker{display:grid;gap:10px}.gx-v21-profile-option{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:12px;border:1px solid var(--gx21-line);border-radius:13px}.gx-v21-profile-option small{display:block;color:var(--gx21-muted);margin-top:3px}.gx-v21-conflict{padding:11px 13px;border-radius:11px;background:#fff0ed;color:#9b3128;font-weight:700;margin-top:10px}.gx-v21-conflict[hidden]{display:none}.gx-v21-sync-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 16px;border:1px solid var(--gx21-line);border-radius:14px;background:#f5faf7}.gx-v21-technical-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.gx-v21-tech-card{border:1px solid var(--gx21-line);border-radius:16px;background:#fff;padding:16px}.gx-v21-tech-card h3{margin:0 0 6px}.gx-v21-tech-card p{color:var(--gx21-muted);margin:0 0 10px}.gx-v21-tech-items{display:grid;gap:8px}.gx-v21-tech-item{border:1px solid var(--gx21-line);border-radius:11px;padding:10px}.gx-v21-tech-item small{display:block;color:var(--gx21-muted)}@media(max-width:950px){.gx-v21-technical-grid{grid-template-columns:1fr}.gx-v21-list-row{grid-template-columns:1fr 1fr}.gx-v21-list-row>*:first-child{grid-column:1/-1}}
/* Seguridad */
.gx-v21-security-actionbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px}.gx-v21-security-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0}.gx-v21-security-table th,.gx-v21-security-table td{padding:11px 12px;border-bottom:1px solid var(--gx21-line);vertical-align:middle}.gx-v21-security-table th{background:#f1f6f3;color:#51635b;font-size:11px;letter-spacing:.07em;text-transform:uppercase}.gx-v21-security-table td.actions{white-space:nowrap;min-width:130px}.gx-v21-security-table .action-stack{display:flex;gap:8px;align-items:center}.gx-v21-round-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.gx-v21-round-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}.gx-v21-round-card{border:1px solid var(--gx21-line);border-radius:15px;padding:15px;background:#fff}.gx-v21-round-card h3{margin:7px 0}.gx-v21-round-card small{color:var(--gx21-muted)}.gx-v21-export-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:12px}.gx-v21-filter-row{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto;gap:10px;align-items:end;margin-bottom:14px}.gx-v21-filter-row label{display:grid;gap:5px;font-weight:800;font-size:12px}.gx-v21-filter-row input,.gx-v21-filter-row select{min-height:41px;border:1px solid var(--gx21-line);border-radius:10px;padding:8px 10px;background:#fff}.gx-v21-payroll-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.gx-v21-payroll-summary article{padding:14px;border:1px solid var(--gx21-line);border-radius:13px;background:#f7faf8}.gx-v21-payroll-summary strong{display:block;font-size:22px}.gx-v21-payroll-summary span{font-size:12px;color:var(--gx21-muted)}@media(max-width:850px){.gx-v21-filter-row{grid-template-columns:1fr 1fr}.gx-v21-payroll-summary{grid-template-columns:1fr 1fr}}
/* Supervisión global */
.gx-v21-supervision-hero{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:22px;border-radius:18px;background:#0b5d4e;color:#fff;margin-bottom:16px}.gx-v21-supervision-hero h1{margin:5px 0 0;color:#fff}.gx-v21-supervision-hero p{margin:5px 0 0;color:#dcece6}.gx-v21-property-selector{display:grid;grid-template-columns:1fr 1fr;gap:12px}.gx-v21-report-card{border:1px solid var(--gx21-line);border-radius:14px;padding:15px;background:#fff}.gx-v21-report-card header{display:flex;justify-content:space-between;gap:12px}.gx-v21-report-card small{color:var(--gx21-muted)}
/* Cronograma compacto */
.gx-v20-maintenance-list{gap:8px!important}.gx-v20-maintenance-item{grid-template-columns:72px minmax(0,1fr) auto auto!important;padding:12px 14px!important;min-height:0!important;align-items:center!important}.gx-v20-maintenance-item h3{margin:0 0 4px!important}.gx-v20-maintenance-item p,.gx-v20-maintenance-item small{margin:0!important;line-height:1.35}.gx-v20-maintenance-date{padding:7px!important;min-height:58px!important}.gx-v20-maintenance-timeline .gx-panel-heading{margin-bottom:10px!important}.gx-v20-maintenance-timeline .gx-panel-heading p{margin:3px 0 0!important}
/* Evitar elementos cortados */
.gx-v16-table-wrap{overflow:auto}.gx-v16-table-wrap select{min-width:132px;max-width:100%}.gx-v21-nowrap{white-space:nowrap}.gx-v21-empty-compact{padding:38px 20px!important;min-height:0!important}
/* V20.1: formularios compactos y modales sin deformar tablas */
body.gx-v21-modal-open{overflow:hidden}
details.gx-v20-table-drawer>summary,
details.gx-v20-small-drawer>summary,
details.gx-action-drawer>summary{cursor:pointer;list-style:none}
details.gx-v20-table-drawer>summary::-webkit-details-marker,
details.gx-v20-small-drawer>summary::-webkit-details-marker,
details.gx-action-drawer>summary::-webkit-details-marker{display:none}
details.gx-v20-table-drawer[open]::before,
details.gx-v20-small-drawer[open]::before,
details.gx-action-drawer[open]::before{content:"";position:fixed;inset:0;background:rgba(5,36,29,.58);backdrop-filter:blur(2px);z-index:9997}
details.gx-v20-table-drawer[open]>form,
details.gx-v20-small-drawer[open]>.gx-drawer-form,
details.gx-action-drawer[open]>.gx-drawer-form{position:fixed!important;z-index:9998!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)!important;width:min(720px,calc(100vw - 28px))!important;max-height:88vh!important;overflow:auto!important;background:#fff!important;border:1px solid var(--gx21-line)!important;border-radius:20px!important;padding:24px!important;box-shadow:0 32px 90px rgba(0,0,0,.3)!important;margin:0!important;display:grid!important;gap:14px!important}
.gx-v21-details-close{position:sticky;top:-12px;justify-self:end;z-index:2;width:36px;height:36px;border:0;border-radius:50%;background:#eaf3ee;color:#173229;font-size:23px;line-height:1;cursor:pointer}
.gx-action-drawer.gx-dashboard-panel,.gx-v20-small-drawer.gx-dashboard-panel{display:inline-block!important;width:auto!important;min-width:0!important;padding:0!important;margin:0 0 14px!important;border:0!important;background:transparent!important;box-shadow:none!important}
.gx-action-drawer.gx-dashboard-panel>summary,.gx-v20-small-drawer.gx-dashboard-panel>summary{display:inline-flex!important;gap:8px!important;align-items:center!important;padding:11px 15px!important;border:1px solid var(--gx21-line)!important;border-radius:12px!important;background:#fff!important;color:var(--gx21-green)!important;font-weight:850!important}
.gx-action-drawer.gx-dashboard-panel>summary small,.gx-v20-small-drawer.gx-dashboard-panel>summary small{display:none!important}
.gx-v20-full-table{clear:both}
.gx-v16-table-wrap td:last-child,.gx-v16-table-wrap th:last-child{min-width:145px}
.gx-v16-table-wrap td:last-child form{display:inline-flex;margin:2px 4px 2px 0}
.gx-v16-table-wrap td:last-child details{display:inline-block;margin:2px 6px 2px 0}
.gx-v16-table-wrap td:last-child select{min-width:128px;width:100%}
.gx-v20-round-explainer{display:none!important}
@media(max-width:720px){details.gx-v20-table-drawer[open]>form,details.gx-v20-small-drawer[open]>.gx-drawer-form,details.gx-action-drawer[open]>.gx-drawer-form{padding:18px!important;max-height:92vh!important}.gx-v21-login-brand{display:none}.gx-v21-login{display:block;width:min(470px,100%)}.gx-v21-login-form{padding:28px 24px}}


/* Planilla por rango de fechas */
.gx-v21-attendance-toolbar{display:flex;justify-content:space-between;gap:14px;align-items:end;flex-wrap:wrap;margin:0 0 16px}.gx-v21-date-range{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.gx-v21-date-range label{display:grid;gap:5px;font-size:12px;font-weight:850}.gx-v21-date-range input{width:145px;min-height:42px;border:1px solid var(--gx21-line);border-radius:11px;padding:9px 11px;background:#fff}.gx-v21-attendance-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.gx-v21-payroll-hero{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:0 0 16px}.gx-v21-payroll-hero h1{margin:5px 0}.gx-v21-payroll-hero p{margin:0;color:var(--gx21-muted)}.gx-v21-payroll-warning{margin:0 0 14px;padding:13px 15px;border:1px solid #e3bd68;border-radius:13px;background:#fff7df;color:#6c5215}.gx-v21-payroll-table{min-width:1050px}.gx-v21-payroll-open{display:inline-flex;padding:5px 8px;border-radius:999px;background:#fff0ed;color:#9b3128;font-size:12px;font-weight:850}.gx-v21-payroll-next{margin-top:14px}.gx-v21-payroll-next h2{margin:5px 0}.gx-v21-payroll-next p{margin:0;color:var(--gx21-muted);max-width:760px}@media(max-width:760px){.gx-v21-attendance-toolbar,.gx-v21-payroll-hero{align-items:stretch;flex-direction:column}.gx-v21-date-range{display:grid;grid-template-columns:1fr 1fr}.gx-v21-date-range input{width:100%}.gx-v21-attendance-actions>*{flex:1}.gx-v21-payroll-summary{grid-template-columns:1fr 1fr}}

/* Preplanilla operativa */
.gx-prepayroll-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gx-prepayroll-title-row h1{margin:5px 0}.gx-prepayroll-status{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:850}.gx-prepayroll-status.draft{background:#eef3f0;color:#52645c}.gx-prepayroll-status.review{background:#fff5d8;color:#755810}.gx-prepayroll-status.confirmed{background:#e3f6ee;color:#07715d}.gx-prepayroll-status.paid{background:#dff3ff;color:#145b79}.gx-prepayroll-status.cancelled{background:#fff0ed;color:#9b3128}.gx-prepayroll-toolbar{display:flex;justify-content:space-between;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.gx-prepayroll-toolbar-left,.gx-prepayroll-toolbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.gx-prepayroll-toolbar form{margin:0}.gx-prepayroll-summary article.net{background:#e8f7f1;border-color:#a8ddca}.gx-prepayroll-summary article.net strong{color:#06735e}.gx-prepayroll-note{margin:0 0 14px;padding:12px 14px;border:1px solid var(--gx21-line);border-radius:13px;background:#f6faf8;color:#52645c}.gx-prepayroll-table{width:100%;min-width:1450px;border-collapse:separate;border-spacing:0}.gx-prepayroll-table th,.gx-prepayroll-table td{padding:11px 12px;border-bottom:1px solid var(--gx21-line);vertical-align:middle}.gx-prepayroll-table th{background:#f1f6f3;color:#51635b;font-size:11px;letter-spacing:.07em;text-transform:uppercase}.gx-prepayroll-table td small{display:block;color:var(--gx21-muted);margin-top:3px;line-height:1.35}.gx-prepayroll-table tr.excluded{opacity:.58}.gx-prepayroll-net-value{color:#06735e;white-space:nowrap}.gx-prepayroll-line-status{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:850;white-space:nowrap}.gx-prepayroll-line-status.pending{background:#eef3f0;color:#52645c}.gx-prepayroll-line-status.adjusted{background:#e3f6ee;color:#07715d}.gx-prepayroll-line-status.warning{background:#fff3d5;color:#7a5810}.gx-prepayroll-line-status.excluded{background:#fff0ed;color:#9b3128}.gx-prepayroll-modal{width:min(900px,calc(100vw - 28px))}.gx-prepayroll-hours-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.gx-prepayroll-hours-grid article{padding:12px;border:1px solid var(--gx21-line);border-radius:12px;background:#f7faf8}.gx-prepayroll-hours-grid strong{display:block;font-size:19px}.gx-prepayroll-hours-grid span{font-size:11px;color:var(--gx21-muted)}.gx-prepayroll-form{display:grid;gap:15px}.gx-prepayroll-exclude{display:flex!important;grid-template-columns:none!important;align-items:center;gap:9px;padding:11px 12px;border:1px solid #efc6bf;border-radius:11px;background:#fff6f3}.gx-prepayroll-exclude input{width:auto!important;min-height:0!important}.gx-prepayroll-form-section{display:grid;gap:10px}.gx-prepayroll-form-section h3{margin:0;font-size:16px}.gx-prepayroll-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.gx-prepayroll-form label{display:grid;gap:5px;font-weight:800;font-size:12px}.gx-prepayroll-form input,.gx-prepayroll-form textarea{width:100%;min-height:41px;border:1px solid var(--gx21-line);border-radius:10px;padding:9px 10px;background:#fff;color:inherit}.gx-prepayroll-form input[readonly],.gx-prepayroll-form textarea[readonly]{background:#f2f5f3;color:#65746d}.gx-prepayroll-live-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:4px}.gx-prepayroll-live-summary>div{padding:12px;border:1px solid var(--gx21-line);border-radius:12px;background:#f7faf8}.gx-prepayroll-live-summary span{display:block;font-size:11px;color:var(--gx21-muted)}.gx-prepayroll-live-summary strong{display:block;margin-top:3px;font-size:18px}.gx-prepayroll-live-summary .net{background:#e8f7f1;border-color:#a8ddca}.gx-prepayroll-live-summary .net strong{color:#06735e}.gx-primary-button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:900px){.gx-prepayroll-form-grid{grid-template-columns:1fr 1fr}.gx-prepayroll-hours-grid{grid-template-columns:1fr 1fr}.gx-prepayroll-toolbar{align-items:stretch}.gx-prepayroll-toolbar-left,.gx-prepayroll-toolbar-actions{width:100%}.gx-prepayroll-toolbar-actions>*{flex:1}.gx-prepayroll-toolbar-actions button{width:100%}}
@media(max-width:620px){.gx-prepayroll-form-grid,.gx-prepayroll-live-summary{grid-template-columns:1fr}.gx-prepayroll-hero{align-items:stretch}.gx-prepayroll-title-row{display:block}}

/* GUARDINEXA - ajuste visual modal de preplanilla V20.2 */
.gx-prepayroll-modal{
    width:min(1120px,calc(100vw - 32px));
    max-height:94vh;
}
.gx-prepayroll-modal .gx-v21-modal-card{
    max-height:94vh;
}
.gx-prepayroll-modal .gx-v21-modal-head{
    padding:18px 22px;
}
.gx-prepayroll-modal .gx-v21-modal-body{
    padding:18px 22px 22px;
}
.gx-prepayroll-modal .gx-prepayroll-form{
    display:block!important;
    width:100%;
}
.gx-prepayroll-editor-grid{
    display:grid;
    grid-template-columns:minmax(0,1fr) 245px;
    gap:18px;
    align-items:start;
}
.gx-prepayroll-editor-main{
    display:grid;
    gap:14px;
    min-width:0;
}
.gx-prepayroll-editor-side{
    display:grid;
    gap:12px;
    position:sticky;
    top:0;
}
.gx-prepayroll-card-section{
    padding:15px;
    border:1px solid var(--gx21-line);
    border-radius:14px;
    background:#f8fbf9;
}
.gx-prepayroll-section-title{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:16px;
    margin-bottom:12px;
}
.gx-prepayroll-section-title h3{
    margin:3px 0 0;
    font-size:17px;
}
.gx-prepayroll-section-title small{
    color:var(--gx21-muted);
    font-size:11px;
    text-align:right;
}
.gx-prepayroll-form-grid{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:11px!important;
}
.gx-prepayroll-form-grid label{
    min-width:0;
    line-height:1.25;
}
.gx-prepayroll-form input,
.gx-prepayroll-form textarea{
    font-size:14px;
}
.gx-prepayroll-notes{
    padding:15px;
    border:1px solid var(--gx21-line);
    border-radius:14px;
    background:#fff;
}
.gx-prepayroll-notes textarea{
    resize:vertical;
    min-height:92px;
}
.gx-prepayroll-editor-side .gx-prepayroll-live-summary{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px;
    padding:0;
}
.gx-prepayroll-editor-side .gx-prepayroll-live-summary>div{
    padding:14px;
}
.gx-prepayroll-editor-side .gx-prepayroll-live-summary strong{
    font-size:22px;
}
.gx-prepayroll-exclude{
    display:flex!important;
    align-items:flex-start!important;
    gap:10px!important;
    padding:13px!important;
    margin:0!important;
}
.gx-prepayroll-exclude span{
    display:grid;
    gap:2px;
}
.gx-prepayroll-exclude strong{
    font-size:13px;
}
.gx-prepayroll-exclude small{
    color:#80665f;
    font-size:11px;
    font-weight:500;
    line-height:1.35;
}
.gx-prepayroll-hours-grid{
    margin-bottom:14px;
}
.gx-prepayroll-hours-grid article{
    padding:11px 13px;
}
.gx-prepayroll-modal .gx-v21-modal-foot{
    padding:14px 22px;
}
@media(max-width:900px){
    .gx-prepayroll-editor-grid{
        grid-template-columns:1fr;
    }
    .gx-prepayroll-editor-side{
        position:static;
    }
    .gx-prepayroll-editor-side .gx-prepayroll-live-summary{
        grid-template-columns:repeat(3,1fr)!important;
    }
    .gx-prepayroll-form-grid{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
}
@media(max-width:620px){
    .gx-prepayroll-modal{
        width:calc(100vw - 16px);
    }
    .gx-prepayroll-modal .gx-v21-modal-head,
    .gx-prepayroll-modal .gx-v21-modal-body,
    .gx-prepayroll-modal .gx-v21-modal-foot{
        padding-left:14px;
        padding-right:14px;
    }
    .gx-prepayroll-form-grid,
    .gx-prepayroll-editor-side .gx-prepayroll-live-summary{
        grid-template-columns:1fr!important;
    }
    .gx-prepayroll-section-title{
        align-items:flex-start;
        flex-direction:column;
        gap:4px;
    }
    .gx-prepayroll-section-title small{
        text-align:left;
    }
}

/* Cierre completo de planilla V20.3 */
.gx-payroll-revision{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#fff3d6;color:#73550d;font-size:12px;font-weight:850}.gx-payroll-folio{display:block;margin-top:5px;color:var(--gx21-muted);font-weight:750}.gx-payroll-row-actions{min-width:165px}.gx-payroll-row-actions .gx-v21-action-button{display:block;text-align:left;text-decoration:none;white-space:nowrap}.gx-prepayroll-status.paid{background:#dff3ff;color:#145b79}.gx-v21-modal .gx-v16-form textarea{width:100%;border:1px solid var(--gx21-line);border-radius:11px;padding:10px 12px;resize:vertical}.gx-prepayroll-toolbar-actions .gx-secondary-button,.gx-prepayroll-toolbar-left .gx-secondary-button{text-decoration:none}.gx-prepayroll-modal .gx-primary-button{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:760px){.gx-payroll-row-actions{min-width:145px}.gx-prepayroll-toolbar-actions,.gx-prepayroll-toolbar-left{display:grid;grid-template-columns:1fr}.gx-prepayroll-toolbar-actions form,.gx-prepayroll-toolbar-left form{width:100%}}

/* Resident access administration V20.4 */
.gx-ra-settings-form{display:grid;gap:16px}.gx-ra-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gx-ra-toggle{display:grid!important;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:center;padding:13px 14px;border:1px solid var(--gx21-line,#d7e0db);border-radius:13px;background:#f8fbf9}.gx-ra-toggle input{width:19px;height:19px;margin:0}.gx-ra-toggle strong{font-size:13px}.gx-ra-terms-version{max-width:320px}.gx-ra-review-list{display:grid;gap:12px}.gx-ra-review-card{padding:16px;border:1px solid var(--gx21-line,#d7e0db);border-radius:15px;background:#fff}.gx-ra-review-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.gx-ra-review-head>div{display:grid;gap:3px}.gx-ra-review-head span,.gx-ra-review-head small{color:var(--gx21-muted,#6a7871)}.gx-ra-capture-strip{display:grid;grid-template-columns:repeat(3,minmax(0,140px));gap:10px;margin-top:14px}.gx-ra-capture-strip.compact{grid-template-columns:minmax(0,140px)}.gx-ra-capture-strip img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;border:1px solid var(--gx21-line,#d7e0db)}.gx-ra-review-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,2fr);gap:10px;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid #e2e9e5}.gx-ra-action-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.gx-ra-review-form .gx-ra-action-row{grid-column:1/-1}.gx-ra-inline-enrollment{display:grid;grid-template-columns:minmax(230px,1fr) auto;gap:10px;align-items:end;margin-top:14px}.gx-ra-admin-note{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#f4f7f5}.gx-ra-sos-list{display:grid;gap:10px}.gx-ra-sos-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:15px;border:1px solid #ead3d0;border-left:5px solid #d72f25;border-radius:13px;background:#fff8f7}.gx-ra-sos-row.resolved{border-color:#d6e3dd;border-left-color:#2f8c67;background:#f7fbf9}.gx-ra-sos-row>div{display:grid;gap:3px}.gx-ra-sos-row span,.gx-ra-sos-row small{color:var(--gx21-muted,#6a7871)}.gx-ra-sos-row form{display:flex;gap:8px;align-items:center}.gx-ra-sos-row input{min-width:210px}.gx-v16-status.pending_review,.gx-v16-status.awaiting_capture,.gx-v16-status.repeat{background:#fff2cd;color:#785500}.gx-v16-status.approved,.gx-v16-status.enrollment_required{background:#e4f6ed;color:#166a4d}.gx-v16-status.rejected,.gx-v16-status.revoked{background:#ffe5e1;color:#9a2e26}.gx-v16-status.triggered,.gx-v16-status.escalated{background:#d92c25;color:#fff}.gx-v16-status.accepted{background:#ffe4a7;color:#714d00}
@media(max-width:800px){.gx-ra-toggle-grid{grid-template-columns:1fr}.gx-ra-review-head{flex-direction:column}.gx-ra-review-form,.gx-ra-inline-enrollment{grid-template-columns:1fr}.gx-ra-capture-strip{grid-template-columns:repeat(3,1fr)}.gx-ra-sos-row{grid-template-columns:1fr}.gx-ra-sos-row form{display:grid}.gx-ra-sos-row input{min-width:0}}

/* GUARDINEXA V21.1 */
.gx-v211-reader-status{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:0 0 16px;padding:13px 15px;border:1px solid #8bc9ad;border-radius:13px;background:#effaf4;color:#164f3c}.gx-v211-reader-status span{color:#557067}.gx-ra-sos-row.accepted{border-left-color:#d89019;background:#fffaf0}.gx-ra-sos-row.in_route{border-left-color:#d76b1e;background:#fff6ed}.gx-ra-sos-row.on_site{border-left-color:#2f78a8;background:#f1f8fd}.gx-v16-status.in_route{background:#ffe7ca;color:#7d4100}.gx-v16-status.on_site{background:#dceffd;color:#175879}@media(max-width:700px){.gx-v211-reader-status{align-items:flex-start;flex-direction:column}}


/* GUARDINEXA V21.3 - login profesional y acceso biometrico */
.gx-v213-login-mobile-brand{display:none;align-items:center;gap:12px;margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--gx21-line)}
.gx-v213-login-mobile-brand img{width:72px;height:58px;object-fit:contain;border:1px solid var(--gx21-line);border-radius:14px;background:#fff;padding:5px}
.gx-v213-login-mobile-brand div{display:grid;gap:3px}.gx-v213-login-mobile-brand strong{color:#0a4d40;font-size:1.1rem;letter-spacing:.04em}.gx-v213-login-mobile-brand span{color:#64736e;font-size:.78rem;line-height:1.35}
.gx-v213-biometric-login{margin-top:10px;background:#eef7f3!important;border-color:#acd1c3!important;color:#075947!important}
.gx-v213-biometric-note{margin:8px 0 0!important;text-align:center;color:#6b7773!important;font-size:.76rem;line-height:1.35!important}
@media(max-width:720px){.auth-shell{padding:14px;background:linear-gradient(160deg,#e8f2ed,#f8fbf9)}.gx-v21-login{border-radius:22px;box-shadow:0 22px 60px rgba(19,63,51,.17)}.gx-v21-login-form{padding:24px 20px 26px}.gx-v213-login-mobile-brand{display:flex}.gx-v21-login-form h2{font-size:1.65rem;margin-bottom:6px}.gx-v21-login-form .gx-login-intro{margin-top:0}.gx-v21-login-form input{min-height:50px}.gx-v21-login-form .button{min-height:50px}}

/* GUARDINEXA V21.3.1 - claridad de acceso y recuperación */
.auth-shell{
    display:flex;
    align-items:center;
    justify-content:center;
}
.gx-auth-page-wrap{
    width:min(920px,100%);
    display:grid;
    gap:14px;
}
.gx-auth-flashes{
    display:grid;
    gap:10px;
}
.gx-auth-flash{
    margin:0;
    border-radius:14px;
    padding:14px 16px;
    font-weight:750;
    line-height:1.42;
    box-shadow:0 10px 28px rgba(20,65,52,.08);
}
.gx-auth-flash.flash-error{
    background:#fff0ef;
    color:#9f2f25;
    border-color:#e9a39b;
}
.gx-auth-flash.flash-success{
    background:#eaf8f0;
    color:#086a52;
    border-color:#9dd8bf;
}
.gx-login-password-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) 52px;
    gap:10px;
    align-items:stretch;
}
.gx-login-password-wrap{
    position:relative;
    min-width:0;
}
.gx-login-password-wrap input{
    width:100%;
    padding-right:50px!important;
}
.gx-login-eye{
    position:absolute;
    top:50%;
    right:6px;
    width:40px;
    height:40px;
    transform:translateY(-50%);
    display:grid;
    place-items:center;
    border:0;
    border-radius:10px;
    background:transparent;
    color:#53645e;
    cursor:pointer;
}
.gx-login-eye:hover,
.gx-login-eye:focus-visible{
    background:#edf5f1;
    color:#08705b;
    outline:none;
}
.gx-login-eye svg{
    width:22px;
    height:22px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.gx-login-eye .gx-eye-closed{display:none}
.gx-login-eye.is-visible .gx-eye-open{display:none}
.gx-login-eye.is-visible .gx-eye-closed{display:block}
.gx-login-biometric-icon{
    width:52px;
    min-width:52px;
    height:52px;
    align-self:end;
    display:grid;
    place-items:center;
    border:1px solid #9fcbbb;
    border-radius:13px;
    background:#eef7f3;
    color:#07604d;
    cursor:pointer;
    box-shadow:0 5px 14px rgba(8,89,71,.08);
}
.gx-login-biometric-icon[hidden]{display:none!important}
.gx-login-biometric-icon:hover,
.gx-login-biometric-icon:focus-visible{
    background:#dff1e9;
    border-color:#63aa91;
    outline:none;
}
.gx-login-biometric-icon:disabled{
    opacity:.55;
    cursor:wait;
}
.gx-login-biometric-icon svg{
    width:28px;
    height:28px;
    fill:none;
    stroke:currentColor;
    stroke-width:1.65;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.gx-login-biometric-note{
    margin:-7px 0 0;
    padding:9px 11px;
    border-radius:10px;
    background:#fff0ef;
    color:#9f2f25;
    font-size:.8rem;
    line-height:1.35;
}
.gx-login-biometric-note[data-type="info"]{
    background:#edf5f1;
    color:#315f52;
}
@media(max-width:720px){
    body.auth-body{
        display:block;
        min-height:100vh;
        padding:0;
        background:
            radial-gradient(
                circle at 50% 0,
                rgba(18,128,103,.15),
                transparent 42%
            ),
            #edf4f0;
    }

    body.auth-body > .auth-shell{
        width:100%;
        max-width:100%;
        min-height:100vh;
        margin:0;
        padding:0 0 30px;
        display:flex;
        align-items:flex-start;
        justify-content:center;
    }

    .gx-auth-page-wrap{
        width:min(470px,100%);
        gap:12px;
    }

    .gx-auth-flash{
        margin-top:12px;
        font-size:.9rem;
    }

    .gx-v21-login{
        display:block;
        width:100%;
        overflow:visible;
        border:0;
        border-radius:0 0 28px 28px;
        background:transparent;
        box-shadow:none;
    }

    .gx-v21-login-brand{
        display:none;
    }

    .gx-v21-login-form{
        display:block;
        padding:0;
    }

    .gx-v21-login-form-inner{
        width:100%;
        max-width:none;
        overflow:hidden;
        padding-bottom:24px;
        border-radius:0 0 28px 28px;
        background:#fff;
        box-shadow:0 20px 54px rgba(5,63,50,.16);
    }

    .gx-v213-login-mobile-brand{
        min-height:260px;
        margin:0;
        padding:30px 24px 58px;
        display:flex;
        flex-direction:column;
        align-items:center;
        justify-content:center;
        gap:10px;
        text-align:center;
        border:0;
        background:
            radial-gradient(
                circle at 50% 22%,
                rgba(24,154,124,.35),
                transparent 42%
            ),
            linear-gradient(
                155deg,
                #076754,
                #043f35
            );
    }

    .gx-v213-login-mobile-brand img{
        width:112px;
        height:102px;
        padding:7px;
        object-fit:contain;
        border:1px solid rgba(255,255,255,.38);
        border-radius:20px;
        background:rgba(255,255,255,.96);
        box-shadow:0 14px 30px rgba(0,0,0,.16);
    }

    .gx-v213-login-mobile-brand div{
        display:grid;
        justify-items:center;
        gap:5px;
    }

    .gx-v213-login-mobile-brand strong{
        color:#fff;
        font-size:1.45rem;
        letter-spacing:.075em;
    }

    .gx-v213-login-mobile-brand span{
        max-width:310px;
        color:rgba(255,255,255,.84);
        font-size:.82rem;
        line-height:1.4;
    }

    .gx-v21-login-form h2{
        position:relative;
        margin:-30px 0 0;
        padding:30px 22px 0;
        border-radius:28px 28px 0 0;
        background:#fff;
        color:#094c40;
        font-size:1.8rem;
        line-height:1.15;
    }

    .gx-v21-login-form .gx-login-intro{
        margin:8px 22px 22px;
        color:#65736e;
        font-size:.95rem;
    }

    .gx-v21-login-form .gx-login-form{
        width:calc(100% - 44px);
        margin:0 auto;
        gap:13px;
    }

    .gx-v21-login-form .gx-login-form > label{
        gap:6px;
        color:#21483e;
        font-size:.82rem;
        font-weight:800;
    }

    .gx-v21-login-form input{
        min-height:54px;
        border-color:#cbd8d2;
        border-radius:13px;
        background:#fff;
        box-shadow:none;
    }

    .gx-v21-login-form input:focus{
        border-color:#23866e;
        box-shadow:0 0 0 3px rgba(35,134,110,.12);
    }

    .gx-login-password-row{
        grid-template-columns:1fr;
        gap:10px;
    }

    .gx-login-biometric-icon{
        width:100%;
        min-width:0;
        height:52px;
        display:flex;
        align-items:center;
        justify-content:center;
        gap:10px;
        border:1px solid #8bbdab;
        border-radius:13px;
        background:#f3faf7;
        color:#075d4b;
        box-shadow:none;
    }

    .gx-login-biometric-icon::after{
        content:"Entrar con huella o rostro";
        font-size:.94rem;
        font-weight:850;
    }

    .gx-login-biometric-icon svg{
        width:25px;
        height:25px;
    }

    .gx-login-biometric-note{
        margin:0;
        padding:10px 12px;
        border-radius:10px;
        background:#edf6f2;
        color:#315f52;
        text-align:center;
        font-size:.78rem;
    }

    .gx-login-biometric-note.error{
        background:#fff0ef;
        color:#9f2f25;
    }

    .gx-v21-login-form .gx-v20-login-links{
        margin:0;
        text-align:right;
    }

    .gx-v21-login-form .gx-v20-login-links a{
        padding:0 0 4px;
        color:#08715c;
        font-size:.87rem;
        font-weight:800;
    }

    .gx-v21-login-form .gx-login-submit{
        min-height:52px;
        margin-top:2px;
        border-radius:13px;
        box-shadow:0 10px 22px rgba(7,116,95,.18);
    }

    .gx-v21-login-form-inner > .gx-v21-resident-link{
        width:calc(100% - 44px);
        min-height:auto;
        margin:14px auto 0;
        padding:10px;
        border:0;
        background:transparent;
        color:#08715c;
        box-shadow:none;
        font-size:.86rem;
        font-weight:800;
    }

    .gx-v21-login-form-inner > .gx-v21-resident-link::before{
        content:"¿Aún no tienes cuenta?";
        margin-right:5px;
        color:#6b7773;
        font-weight:500;
    }
}

/* GUARDINEXA V22 - seguimiento de informes de supervision */
.gx-v22-attention-summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0;padding:12px 14px;border:1px solid #f0c66e;border-radius:14px;background:#fff8e5}.gx-v22-attention-summary>strong{color:#8a5700}.gx-v22-attention-summary form{margin-left:auto}.gx-v22-attention-summary label{display:flex;align-items:center;gap:8px;font-weight:700}.gx-v22-attention-summary select,.gx-v22-report-actions select{min-height:40px;border:1px solid #cbd8d3;border-radius:10px;background:#fff;padding:0 10px}.gx-v22-report-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}.gx-v22-report-actions form{margin-left:auto}@media(max-width:720px){.gx-v22-attention-summary,.gx-v22-report-actions{align-items:stretch;flex-direction:column}.gx-v22-attention-summary form,.gx-v22-report-actions form{margin-left:0}.gx-v22-report-actions .gx-secondary-button{width:100%;justify-content:center}}


/* GUARDINEXA Etapas 1-3 */
.gx-provider-filterbar{display:grid;grid-template-columns:minmax(240px,1fr) minmax(240px,1fr);gap:12px;margin:0 0 16px}
.gx-provider-filterbar label{display:grid;gap:6px;font-weight:800;color:#284c43}
.gx-provider-filterbar input,.gx-provider-filterbar select{width:100%;padding:11px 12px;border:1px solid #cfded8;border-radius:11px;background:#fff}
@media(max-width:760px){.gx-provider-filterbar{grid-template-columns:1fr}}

/* GUARDINEXA acceso publico multidioma - prompt de crear cuenta */
html[lang="en-US"] .gx-v21-login-form-inner > .gx-v21-resident-link::before{
    content:"Don't have an account yet?";
}
html[lang="zh-CN"] .gx-v21-login-form-inner > .gx-v21-resident-link::before{
    content:"还没有账户？";
}
