:root {
    --portal-sidebar-bg: #12344f;
    --portal-sidebar-text: #ffffff;
    --portal-header-bg: #ffffff;
    --portal-header-text: #333333;
    --portal-content-bg: #f7f7fb;
    --portal-accent: #2ba9d6;
    --portal-border: #dcdfe4;
}
/* Header */
.rz-header {
    background-color: var(--portal-header-bg) !important;
    color: var(--portal-header-text) !important;
    border-bottom: 1px solid var(--portal-border);
}

/* Paleta de Radzen limitada al menú lateral del portal. */
.rz-sidebar.portal-sidebar {
    --rz-panel-menu-item-background-color: transparent;
    --rz-panel-menu-item-color: var(--portal-sidebar-text);
    --rz-panel-menu-icon-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-border: 1px solid rgba(255, 255, 255, 0.08);
    --rz-panel-menu-item-hover-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-hover-background-color: rgba(255, 255, 255, 0.08);
    --rz-panel-menu-item-active-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-active-background-color: rgba(43, 169, 214, 0.22);
    --rz-panel-menu-item-active-indicator: var(--portal-accent);
    --rz-panel-menu-item-2nd-level-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-2nd-level-background-color: transparent;
    --rz-panel-menu-item-2nd-level-hover-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-2nd-level-hover-background-color: rgba(255, 255, 255, 0.08);
    --rz-panel-menu-item-2nd-level-active-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-2nd-level-active-background-color: rgba(43, 169, 214, 0.22);
    --rz-panel-menu-item-2nd-level-offset: 3.25rem;
    --rz-panel-menu-item-3rd-level-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-3rd-level-background-color: transparent;
    --rz-panel-menu-item-3rd-level-hover-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-3rd-level-hover-background-color: rgba(255, 255, 255, 0.08);
    --rz-panel-menu-item-3rd-level-active-color: var(--portal-sidebar-text);
    --rz-panel-menu-item-3rd-level-active-background-color: rgba(43, 169, 214, 0.22);
    background-color: var(--portal-sidebar-bg);
    color: var(--portal-sidebar-text);
}

/* El fondo y los estados se pintan en el wrapper; el divisor, en el li. */
.portal-sidebar .rz-panel-menu .rz-navigation-item-link {
    background: transparent;
}

.portal-sidebar .rz-panel-menu .rz-navigation-menu {
    background-color: rgba(0, 0, 0, 0.10);
}

/* Toggle del Sidebar */
.rz-header .rz-sidebar-toggle {
    color: var(--portal-header-text) !important;
}
h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

/* Administración de clientes y licencias */
.admin-heading { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; margin:1.5rem 0; }
.admin-heading h1 { margin:.2rem 0 .5rem; color:#12344f; }
.admin-eyebrow { letter-spacing:.14em; font-size:.75rem; font-weight:700; color:#287b98; margin-bottom:.4rem; }
.admin-card { background:#fff; border:1px solid #dce4eb; border-radius:12px; padding:1.5rem; margin:1.25rem 0; box-shadow:0 3px 12px #12344f06; }
.admin-card h2 { color:#12344f; font-size:1.25rem; margin-top:0; }
.admin-card h3 { font-size:1rem; }
.admin-card label,.admin-filters label { display:flex; flex-direction:column; gap:.4rem; font-size:.9rem; font-weight:600; margin-bottom:1rem; }
.admin-card input:not([type=checkbox]),.admin-card select,.admin-filters input,.admin-filters select { width:100%; box-sizing:border-box; border:1px solid #bdcbd8; border-radius:6px; padding:.65rem .8rem; background:#fff; color:#17354c; font:inherit; min-height:42px; }
.admin-card input:focus,.admin-card select:focus,.admin-filters input:focus,.admin-filters select:focus { outline:2px solid #2ba9d6; outline-offset:2px; }
.admin-card fieldset { border:0; margin:0; padding:0; }
.admin-card fieldset:disabled { opacity:.75; }
.admin-form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1rem; }
.admin-filters { display:grid; grid-template-columns:2fr 1fr 1fr; gap:1rem; background:white; padding:1rem; border-radius:10px; border:1px solid #dce4eb; }
.admin-filters label { margin:0; }
.admin-button { display:inline-block; background:#14516d; color:white!important; padding:.7rem 1.1rem; border:0; border-radius:6px; text-decoration:none; font:inherit; cursor:pointer; }
.admin-card button:not(.admin-button),.admin-table button,.admin-session button { font:inherit; border:1px solid #b9c9d5; border-radius:6px; padding:.5rem .85rem; background:white; cursor:pointer; color:#12344f; }
.admin-card button:disabled { opacity:.5; cursor:not-allowed!important; }
.admin-card .admin-checkbox { flex-direction:row; align-items:center; gap:.6rem; font-weight:400; }
.admin-actions { display:flex; flex-wrap:wrap; gap:.6rem; margin:1rem 0; }
.admin-card details { border-top:1px solid #e0e7ed; padding:1rem 0; }
.admin-card summary { cursor:pointer; font-weight:600; color:#14516d; margin-bottom:.7rem; }
.admin-card .admin-danger { background:#fff2f1; border-color:#cd7a70; color:#942e24; }
.admin-table-wrap { overflow-x:auto; border:1px solid #dce4eb; border-radius:8px; margin-top:1rem; }
.admin-table { width:100%; border-collapse:collapse; background:#fff; }
.admin-table th { background:#edf3f7; text-align:left; font-size:.82rem; color:#35546a; }
.admin-table th,.admin-table td { padding:1rem; border-bottom:1px solid #e3e9ef; }
.admin-table tbody tr:last-child td { border-bottom:0; }
.admin-table a,.admin-card a { color:#176781; }
.admin-badge { display:inline-block; border-radius:20px; background:#e9f3f8; color:#185974; padding:.35rem .7rem; font-size:.8rem; white-space:nowrap; }
.admin-metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; margin-bottom:1.5rem; }
.admin-metrics div { padding:1rem; border-radius:8px; background:#f2f7fa; }
.admin-metrics strong { display:block; font-size:1.7rem; color:#12344f; }
.admin-metrics span { color:#506a7d; font-size:.85rem; }
.admin-facts { display:grid; grid-template-columns:minmax(150px,1fr) 3fr; gap:.6rem; }
.admin-facts dt { color:#506a7d; }.admin-facts dd { margin:0; overflow-wrap:anywhere; }
.admin-muted,.admin-empty { color:#62778a; }.admin-empty { padding:1.5rem; }
.admin-error,.admin-success { padding:1rem; border-radius:8px; }.admin-error { background:#fff0ef; color:#9d3026; border:1px solid #ecc2bc; }.admin-success { background:#edf8f0; color:#246742; border:1px solid #bdddc9; }
.admin-summary { background:#edf6fa; border-left:4px solid #2ba9d6; padding:1rem; margin:1rem 0; border-radius:0 8px 8px 0; }
.admin-serial { display:block; font-size:1rem; padding:1rem; background:#eff4f7; overflow-wrap:anywhere; margin:1rem 0; color:#12344f; }
.admin-audit pre { white-space:pre-wrap; overflow-wrap:anywhere; max-height:260px; overflow:auto; background:#f3f5f7; padding:.8rem; font-size:.8rem; }
.admin-session { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:1rem; font-size:.85rem; margin-bottom:1rem; color:#506a7d; }
/* Acceso al portal administrativo */
.admin-login {
    margin:0; min-height:100vh; min-height:100dvh; box-sizing:border-box;
    display:grid; grid-template-columns:minmax(0,1fr); place-items:center;
    padding:1.5rem; background:linear-gradient(135deg,#12344f,#2ba9d6);
    color:#17354c; font-family:"Segoe UI",Arial,sans-serif;
}
.admin-login .admin-login-card {
    box-sizing:border-box; width:100%; max-width:440px; min-width:0;
    padding:2rem; background:#fff; border-radius:16px; box-shadow:0 18px 50px #12344f30;
}
.admin-login .admin-login-logo {
    display:block; max-width:220px; width:100%; height:auto; max-height:100px;
    object-fit:contain; object-position:left center;
}
.admin-login h1 { margin:1.5rem 0 .5rem; font-size:1.75rem; line-height:1.2; color:#12344f; }
.admin-login .admin-login-description { margin:0 0 1.5rem; color:#506a7d; line-height:1.5; }
.admin-login .admin-login-field { margin-bottom:1.25rem; }
.admin-login label { display:block; margin-bottom:.5rem; font-size:.95rem; font-weight:600; }
.admin-login input:not([type="hidden"]) {
    box-sizing:border-box; width:100%; min-width:0; min-height:46px; padding:.75rem;
    border:1px solid #bdcbd8; border-radius:6px; background:#fff; color:#17354c;
    font:inherit; font-size:1rem;
}
.admin-login .admin-login-submit {
    width:100%; min-height:46px; padding:.75rem 1rem; border:0; border-radius:6px;
    background:#185574; color:#fff; font:inherit; font-weight:600; cursor:pointer;
}
.admin-login .admin-login-submit:hover { background:#12344f; }
.admin-login input:focus-visible,.admin-login button:focus-visible,.admin-login a:focus-visible {
    outline:3px solid #2ba9d6; outline-offset:3px;
}
.admin-login .admin-login-error {
    margin:0 0 1.25rem; padding:.85rem; border:1px solid #ecc2bc; border-radius:6px;
    background:#fff0ef; color:#9d3026; line-height:1.5; overflow-wrap:anywhere;
}
.admin-login .admin-login-demo { display:block; margin-top:1.5rem; text-align:center; color:#176781; line-height:1.5; }
@media(max-width:480px) {
    .admin-login { padding:1rem; }
    .admin-login .admin-login-card { padding:1.5rem; }
}
@media(max-width:700px) { .admin-heading { align-items:flex-start; flex-direction:column; }.admin-filters { grid-template-columns:1fr; }.admin-metrics { grid-template-columns:repeat(2,1fr); }.admin-facts { grid-template-columns:1fr; }.admin-card { padding:1rem; } }
.admin-layout .rz-body,.admin-layout .portal-content { min-width:0; }
@media(max-width:700px) {
    .admin-layout.rz-layout { grid-template-columns:0 minmax(0,1fr); }
    .admin-layout.rz-layout .portal-sidebar { position:fixed; top:51px; bottom:0; z-index:5; }
    .admin-layout .rz-body { padding:1rem; }
}
