@import url("theme.css");

* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: var(--muni-font);
    background: var(--muni-bg);
    color: var(--muni-text);
    line-height: 1.5;
}
a { color: var(--muni-primary); }

.login-page {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    background-color: #1e3a5f;
    background-image:
        linear-gradient(rgba(0, 0, 0, .28), rgba(0, 0, 0, .34)),
        var(--login-bg-image, url("fondo-municipal.png"));
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
    position: relative;
    overflow: hidden;
}
.login-bg-slideshow {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
}
.login-bg-slide {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    opacity: 0;
    transition: opacity 1.1s ease;
}
.login-bg-slide.is-active { opacity: 1; }
.login-page.has-bg-slideshow {
    background-image: linear-gradient(rgba(0, 0, 0, .28), rgba(0, 0, 0, .34));
}
.login-page.has-bg-slideshow .login-shell,
.login-page.has-bg-slideshow > .login-card {
    position: relative;
    z-index: 1;
}
.login-page.login-bg-tone {
    background-color: #12263f;
    background-image: var(--login-bg-gradient, linear-gradient(165deg, #12263f, #1e3a5f));
    background-size: cover;
}
.login-fondo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
    margin: 0 0 16px;
}
.login-fondo-opt {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px;
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    background: #fff;
    cursor: pointer;
    font-size: 13px;
    line-height: 1.3;
}
.login-fondo-opt:has(input:checked) {
    border-color: var(--muni-primary);
    box-shadow: 0 0 0 2px rgba(29, 78, 216, 0.25);
}
.login-fondo-opt input { margin: 0; }
.login-fondo-swatch {
    display: block;
    height: 72px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    border: 1px solid var(--muni-border);
}
.login-fondo-swatch--carousel {
    background:
        linear-gradient(135deg, rgba(30, 58, 95, .55), rgba(196, 163, 90, .4)),
        repeating-linear-gradient(90deg, #1e3a5f 0 20%, #2c4d73 0 40%);
}
.login-page .login-shell { position: relative; z-index: 1; }
@media (prefers-reduced-motion: reduce) {
    .login-bg-slide { transition: none; }
}
.login-shell {
    width: 100%;
    max-width: 440px;
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .85s ease, transform .85s ease;
}
.login-shell.is-ready {
    opacity: 1;
    transform: translateY(0);
}
.login-page .login-card {
    border-radius: 16px;
    padding: 32px 28px 28px;
    text-align: center;
}
.login-page .login-form input {
    background: rgba(255, 255, 255, .96);
    border-color: rgba(255, 255, 255, .60);
    color: #0f172a;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
}
.login-page .login-form input::placeholder {
    color: #64748b;
}
/* Transparent copy over glass — readability via light text + dark shadow */
.login-page .login-text-backdrop,
.login-page .login-institution,
.login-page .login-tagline,
.login-page .login-form-header p,
.login-page .login-hint {
    background: transparent;
    padding: 0;
    border-radius: 0;
    color: rgba(255, 255, 255, .95);
    font-weight: 500;
    text-shadow:
        0 1px 2px rgba(0, 0, 0, .85),
        0 2px 8px rgba(0, 0, 0, .55);
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    line-height: 1.65;
}
.login-page .login-institution {
    letter-spacing: .1em;
    font-weight: 600;
}
.login-page .login-tagline {
    font-weight: 500;
}
.login-page .login-municipio {
    font-size: 2.25rem;
    font-weight: 800;
    color: #fff;
    text-shadow:
        0 1px 3px rgba(0, 0, 0, .9),
        0 3px 12px rgba(0, 0, 0, .6);
}
.login-page .login-form-header h2 {
    font-size: 1.85rem;
    font-weight: 800;
    color: #fff;
    text-shadow:
        0 1px 3px rgba(0, 0, 0, .9),
        0 3px 12px rgba(0, 0, 0, .6);
}
.login-page .login-hint strong {
    color: #fff;
    font-weight: 700;
}
.login-page .login-form label {
    background: transparent;
    padding: 0;
    border-radius: 0;
    color: rgba(255, 255, 255, .97);
    font-weight: 600;
    text-shadow:
        0 1px 3px rgba(0, 0, 0, .95),
        0 2px 12px rgba(0, 0, 0, .75);
}
.login-page .login-version,
.login-page .muni-app-version {
    background: rgba(239, 246, 255, .9);
    border-color: rgba(147, 197, 253, .75);
    color: var(--muni-primary-dark);
    box-shadow:
        inset 0 -2px 0 var(--muni-primary),
        0 1px 4px rgba(15, 23, 42, .22);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.login-card {
    border-radius: 16px;
    padding: 32px 28px 28px;
    text-align: center;
}
.login-brand-panel {
    display: none;
}
.login-brand-inner {
    position: relative;
    text-align: center;
    max-width: 280px;
}
.login-escudo {
    display: block;
    margin: 0 auto 16px;
    filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .15));
    object-fit: contain;
}
.login-institution {
    margin: 0;
    font-size: 12px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #475569;
    font-weight: 600;
}
.login-municipio {
    margin: 4px 0 8px;
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -.02em;
    line-height: 1.1;
    color: #0f172a;
}
.login-tagline {
    margin: 0 0 14px;
    font-size: 14px;
    line-height: 1.45;
    color: #64748b;
}
/* Etiqueta SISTEMA Vx.y.z — login + pie global */
.muni-app-version,
.login-version {
    display: inline-block;
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    line-height: 1.35;
    padding: 4px 12px;
    border-radius: 999px;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    color: var(--muni-primary-dark);
    box-shadow: inset 0 -2px 0 var(--muni-primary);
}
.login-version {
    margin-bottom: 22px;
}
.login-form-panel {
    display: block;
    background: transparent;
    padding: 0;
}
.login-form-inner {
    width: 100%;
    max-width: 360px;
    margin: 0 auto;
    text-align: left;
}
.login-form-header h2 {
    margin: 0 0 6px;
    font-size: 1.35rem;
    color: var(--muni-text);
    text-align: center;
}
.login-form-header p {
    margin: 0 0 20px;
    font-size: 13px;
    color: var(--muni-muted);
    line-height: 1.5;
    text-align: center;
}
.login-form .login-field {
    margin-bottom: 4px;
}
.login-form label {
    margin-top: 14px;
    margin-bottom: 6px;
    color: #334155;
}
.login-form input {
    transition: border-color .15s, box-shadow .15s;
}
.login-form input:focus {
    outline: none;
    border-color: var(--muni-primary);
    box-shadow: 0 0 0 3px rgba(29, 78, 216, .15);
}
.rut-input {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
}
.rut-mensaje {
    font-size: 0.82rem;
    margin: 6px 0 0;
    min-height: 1.2em;
    color: var(--muni-muted);
}
.rut-mensaje.error { color: var(--muni-danger); }
.rut-input.rut-error { border-color: var(--muni-danger); }
.login-submit {
    margin-top: 22px;
    padding: 12px 16px;
    font-size: 15px;
    border-radius: 10px;
}
.login-hint {
    margin: 16px 0 0;
    font-size: 12px;
    color: var(--muni-muted);
    line-height: 1.45;
}
.login-footer {
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid var(--muni-border);
    text-align: center;
    font-size: 13px;
}
.login-footer a {
    color: var(--muni-muted);
    text-decoration: none;
    font-weight: 500;
}
.login-footer a:hover {
    color: var(--muni-primary);
    text-decoration: underline;
}

@media (max-width: 720px) {
    .login-shell {
        max-width: 400px;
    }
    .login-card {
        padding: 24px 20px 22px;
    }
    .login-escudo {
        width: 80px;
        height: 80px;
        margin-bottom: 12px;
    }
    .login-page .login-municipio { font-size: 1.9rem; }
    .login-page .login-form-header h2 { font-size: 1.6rem; }
    .login-tagline { font-size: 13px; margin-bottom: 12px; }
}

/* Legacy single-card (formularios públicos) — excluye login municipal */
body:not(.login-page) .login-card {
    background: var(--muni-surface);
    border-radius: 16px;
    padding: 32px;
    width: 100%;
    max-width: 420px;
    box-shadow: 0 20px 50px rgba(0,0,0,.25);
}

/* Glass login — una sola regla ganadora (después del legacy .login-card) */
.login-page .login-card {
    background: rgba(255, 255, 255, .02);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .06);
    box-shadow:
        0 4px 6px rgba(15, 23, 42, .01),
        0 12px 28px rgba(15, 23, 42, .04),
        inset 0 1px 0 rgba(255, 255, 255, .06);
}
.login-badge {
    display: inline-block;
    background: #dbeafe;
    color: var(--muni-primary-dark);
    font-size: 12px;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
    margin-bottom: 12px;
}
.login-card h1 { margin: 0 0 4px; font-size: 22px; }
.subtitle { color: var(--muni-muted); margin: 0 0 20px; }

label { display: block; font-size: 13px; font-weight: 600; margin: 12px 0 4px; }
input, select, textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--muni-border);
    border-radius: 8px;
    font-size: 15px;
}
.btn {
    display: inline-block;
    padding: 10px 16px;
    border-radius: 8px;
    border: none;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    font-size: 14px;
}
.btn-primary { background: var(--muni-primary); color: #fff; }
.btn-primary:hover { background: var(--muni-primary-dark); }
.btn-accent { background: var(--muni-accent); color: #fff; }
.btn-accent:hover { filter: brightness(0.92); }
.btn-sm { padding: 6px 12px; font-size: 13px; background: #e2e8f0; color: #0f172a; }
.btn-sm.btn-primary { background: var(--muni-primary); color: #fff; }
.btn-sm.btn-primary:hover { background: var(--muni-primary-dark); }
.btn-sm.btn-accent { background: var(--muni-accent); color: #fff; }
.btn-sm.btn-accent:hover { filter: brightness(0.92); }
.btn-warn { background: var(--muni-warn); color: #fff; }
.btn-warn:hover { filter: brightness(0.92); }
.btn-sm.btn-warn { background: var(--muni-warn); color: #fff; }
.btn-sm.btn-danger { background: var(--muni-danger); color: #fff; }
.btn-block { width: 100%; margin-top: 16px; }
.btn-danger { background: var(--muni-danger); color: #fff; }

.btn-danger { background: var(--muni-danger); color: #fff; }
.btn-danger:hover { filter: brightness(0.92); }

/* Certificados DOM: botones «Agregar / Mostrar» resaltados (no confundir con .btn gris). */
.btn-cert-add,
details.cert-legacy-more > summary.btn-cert-add,
details.cert-add-pool > summary.btn-cert-add {
    display: inline-flex !important;
    align-items: center;
    gap: 0.45rem;
    margin: 6px 0 10px;
    padding: 10px 16px !important;
    border-radius: 10px !important;
    border: 2px solid #0284c7 !important;
    background: linear-gradient(180deg, #e0f2fe 0%, #7dd3fc 100%) !important;
    color: #0c4a6e !important;
    font-weight: 800 !important;
    font-size: 13px !important;
    line-height: 1.2;
    text-decoration: none !important;
    cursor: pointer;
    list-style: none;
    box-shadow: 0 2px 6px rgba(2, 132, 199, .35);
}
.btn-cert-add::-webkit-details-marker,
details.cert-legacy-more > summary.btn-cert-add::-webkit-details-marker,
details.cert-add-pool > summary.btn-cert-add::-webkit-details-marker { display: none; }
.btn-cert-add:hover,
details.cert-legacy-more > summary.btn-cert-add:hover,
details.cert-add-pool > summary.btn-cert-add:hover {
    background: linear-gradient(180deg, #bae6fd 0%, #38bdf8 100%) !important;
    border-color: #0369a1 !important;
    color: #082f49 !important;
}
details.cert-legacy-more[open] > summary.btn-cert-add,
details.cert-add-pool[open] > summary.btn-cert-add {
    background: #0369a1 !important;
    border-color: #0369a1 !important;
    color: #fff !important;
}
.cert-add-pool { margin: 10px 0 6px; }
.certificados-listar th.col-icon,
.certificados-listar td.col-icon {
    text-align: center;
    width: 2.75rem;
    padding: 6px 4px;
}

/* ================================================================
 * MuniUI — mensajes v2 (avisos, confirmaciones, toasts)
 * Distinto al legacy: sin alert()/confirm() del navegador.
 * ================================================================ */

.muni-toast-stack {
    position: fixed;
    top: 16px;
    right: 16px;
    z-index: 10050;
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: min(420px, calc(100vw - 32px));
    pointer-events: none;
}
.muni-toast-stack .muni-notice { pointer-events: auto; }

.muni-notice {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 38px 14px 14px;
    border-radius: 12px;
    background: var(--muni-surface);
    border: 1px solid var(--muni-border);
    box-shadow: 0 12px 32px rgba(15, 23, 42, .14);
    overflow: hidden;
    animation: muniNoticeIn .28s ease;
}
.muni-notice.is-out { animation: muniNoticeOut .22s ease forwards; }
@keyframes muniNoticeIn {
    from { opacity: 0; transform: translateX(16px); }
    to { opacity: 1; transform: translateX(0); }
}
@keyframes muniNoticeOut {
    to { opacity: 0; transform: translateX(12px); }
}
.muni-notice__glyph {
    width: 32px;
    height: 32px;
    border-radius: 10px;
    flex-shrink: 0;
    background: #e2e8f0 center/14px no-repeat;
}
.muni-notice--success { border-left: 4px solid #059669; }
.muni-notice--success .muni-notice__glyph { background-color: #d1fae5; }
.muni-notice--danger { border-left: 4px solid #dc2626; }
.muni-notice--danger .muni-notice__glyph { background-color: #fee2e2; }
.muni-notice--warning { border-left: 4px solid #d97706; }
.muni-notice--warning .muni-notice__glyph { background-color: #fef3c7; }
.muni-notice--info { border-left: 4px solid #2563eb; }
.muni-notice--info .muni-notice__glyph { background-color: #dbeafe; }
.muni-notice__body { flex: 1; min-width: 0; }
.muni-notice__title { display: block; font-size: 14px; font-weight: 700; line-height: 1.35; }
.muni-notice__msg { margin: 4px 0 0; font-size: 13px; color: var(--muni-muted); line-height: 1.45; }
.muni-notice__dismiss {
    position: absolute;
    top: 8px;
    right: 8px;
    border: none;
    background: transparent;
    color: var(--muni-muted);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    padding: 2px 6px;
    border-radius: 6px;
}
.muni-notice__dismiss:hover { background: #f1f5f9; color: #0f172a; }
.muni-notice.is-timed .muni-notice__bar {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    background: rgba(15, 23, 42, .08);
    transform-origin: left;
    animation: muniNoticeBar var(--muni-notice-ms, 8s) linear forwards;
}
@keyframes muniNoticeBar { to { transform: scaleX(0); } }

.muni-dialog {
    border: none;
    border-radius: 16px;
    padding: 0;
    max-width: 440px;
    width: calc(100% - 32px);
    box-shadow: 0 28px 60px rgba(15, 23, 42, .28);
    background: var(--muni-surface);
    color: var(--muni-text);
    overflow: hidden;
}
.muni-dialog::backdrop {
    background: rgba(15, 23, 42, .48);
    backdrop-filter: blur(3px);
}
.muni-dialog__head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 1.15rem 1.25rem .35rem;
}
.muni-dialog__icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    flex-shrink: 0;
}
.muni-dialog__icon--confirm { background: #dbeafe; box-shadow: inset 0 0 0 2px #93c5fd; }
.muni-dialog__icon--danger { background: #fee2e2; box-shadow: inset 0 0 0 2px #fca5a5; }
.muni-dialog__icon--info { background: #e0f2fe; box-shadow: inset 0 0 0 2px #7dd3fc; }
.muni-dialog__icon--success { background: #d1fae5; box-shadow: inset 0 0 0 2px #6ee7b7; }
.muni-dialog__icon--warning { background: #fef3c7; box-shadow: inset 0 0 0 2px #fcd34d; }
.muni-dialog__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
}
.muni-dialog__text {
    margin: 0;
    padding: 0 1.25rem 1rem 4.35rem;
    color: var(--muni-muted);
    font-size: 14px;
    line-height: 1.55;
}
.muni-dialog__actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: .85rem 1.25rem 1.15rem;
    background: #f8fafc;
    border-top: 1px solid var(--muni-border);
}
.muni-dialog.card { padding: 0; }
.muni-dialog.card .form-row,
.muni-dialog.card h2 { padding-left: 1.25rem; padding-right: 1.25rem; }
.muni-dialog.card .form-actions {
    padding: .85rem 1.25rem 1.15rem;
    background: #f8fafc;
    border-top: 1px solid var(--muni-border);
    margin: 0;
}

/* Legacy toast (compatibilidad temporal) */
.toast {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border-radius: var(--muni-radius);
    margin-bottom: 16px;
    box-shadow: var(--muni-shadow);
    border: 1px solid transparent;
    animation: toastIn .25s ease;
}
@keyframes toastIn {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}
.toast-icon {
    width: 28px; height: 28px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; flex-shrink: 0;
}
.toast-ok { background: #ecfdf5; border-color: #a7f3d0; }
.toast-ok .toast-icon { background: #059669; color: #fff; }
.toast-error { background: #fef2f2; border-color: #fecaca; }
.toast-error .toast-icon { background: #dc2626; color: #fff; }
.toast-warn { background: #fffbeb; border-color: #fde68a; }
.toast-warn .toast-icon { background: #d97706; color: #fff; }
.toast-info { background: #eff6ff; border-color: #bfdbfe; }
.toast-info .toast-icon { background: #2563eb; color: #fff; }
.toast-body { flex: 1; min-width: 0; }
.toast-title { display: block; font-size: 15px; }
.toast-msg { margin: 4px 0 0; font-size: 14px; color: var(--muni-muted); }
.toast-close {
    background: none; border: none; font-size: 20px; line-height: 1;
    cursor: pointer; color: var(--muni-muted); padding: 0 4px;
}

.state-page {
    min-height: 100vh; display: flex; align-items: center; justify-content: center;
    background: var(--muni-bg); padding: 24px;
}
.state-card {
    background: var(--muni-surface); border-radius: 16px; padding: 36px;
    text-align: center; max-width: 420px; box-shadow: var(--muni-shadow);
    border: 1px solid var(--muni-border);
}
.state-icon { font-size: 48px; margin-bottom: 12px; }
.state-forbidden h1 { color: var(--muni-danger); margin: 0 0 8px; font-size: 22px; }
.state-card-nav {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    justify-content: center;
    gap: 12px;
    margin-top: 1rem;
}
.state-card-nav .action-icon {
    display: inline-flex !important;
    width: 2.5rem;
    height: 2.5rem;
    font-size: 1.25rem;
}

.empty-state {
    text-align: center; padding: 32px 16px; color: var(--muni-muted);
    background: #f8fafc; border-radius: 8px; margin-top: 12px;
}
.toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.toolbar h2 { margin: 0; font-size: 18px; }
.inline-form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.form-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.divider { border: none; border-top: 1px solid var(--muni-border); margin: 24px 0; }

.cap-filters { margin-top: 12px; }
.cap-grid { display: grid; gap: 10px; }
.cap-item {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 12px 14px; border: 1px solid var(--muni-border); border-radius: 10px;
    cursor: pointer; transition: border-color .15s, background .15s;
}
.cap-item:hover { border-color: #93c5fd; }
.cap-item.is-on { background: #eff6ff; border-color: #93c5fd; }
.cap-item input { position: absolute; opacity: 0; pointer-events: none; }
.cap-check {
    width: 22px; height: 22px; border: 2px solid #cbd5e1; border-radius: 6px;
    flex-shrink: 0; margin-top: 2px; position: relative;
}
.cap-item.is-on .cap-check { background: var(--muni-primary); border-color: var(--muni-primary); }
.cap-item.is-on .cap-check::after {
    content: '✓'; color: #fff; font-size: 14px; font-weight: 700;
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
}
.cap-text strong { display: block; font-size: 14px; }
.cap-text small { display: block; color: var(--muni-muted); font-size: 12px; margin-top: 2px; }
.cap-group h3 { margin: 0 0 12px; font-size: 15px; color: var(--muni-muted); text-transform: uppercase; letter-spacing: .04em; }

.alert { padding: 12px 14px; border-radius: 8px; margin-bottom: 16px; border: 1px solid transparent; }
.alert-error { background: #fee2e2; color: var(--muni-danger); }
.alert-warn { background: #fef3c7; color: var(--muni-warn); }
.alert-ok { background: #dcfce7; color: #166534; }
.alert-info { background: #e0f2fe; color: #0c4a6e; border: 1px solid #bae6fd; }

.app-header {
    background: linear-gradient(90deg, #1e3a8a, #1d4ed8);
    color: #fff;
    padding: 14px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    box-shadow: 0 2px 12px rgba(15, 23, 42, .15);
}
.brand { display: flex; align-items: center; gap: 12px; }
.brand strong { color: #fff; }
.brand span { display: block; font-size: 12px; opacity: .85; color: #e2e8f0; }
.user-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; color: #fff; }
.user-identity { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; text-align: right; }
.user-identity .user-name { font-weight: 700; }
.user-identity .user-name-sub { font-size: 13px; font-weight: 700; color: #fbbf24; letter-spacing: .01em; }
.app-header .pill {
    background: rgba(255,255,255,.2);
    color: #fff;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
}
.app-header .btn-sm { background: rgba(255,255,255,.95); color: #1e3a8a; }

.app-main { max-width: 1720px; margin: 0 auto; padding: 14px 28px; width: 100%; }
.hero {
    background: linear-gradient(120deg, #1d4ed8, #0d9488);
    color: #fff;
    border-radius: 12px;
    padding: 14px 22px;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 18px;
}
.hero h1 { margin: 0; font-size: 20px; }
.hero p { margin: 0; opacity: .9; flex: 1; min-width: 240px; font-size: 14px; }
.hero .btn { padding: 8px 14px; font-size: 13px; }

.menu-search-section {
    margin-bottom: 14px;
    padding: 12px 16px;
    background: var(--muni-surface);
    border: 1px solid var(--muni-border);
    border-radius: 16px;
    box-shadow: var(--muni-shadow);
}
.menu-search-label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--muni-muted);
    margin: 0 0 10px;
}
.menu-search-wrap {
    position: relative;
}
.menu-search-icon {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 18px;
    line-height: 1;
    opacity: .55;
    pointer-events: none;
}
.menu-search-input {
    width: 100%;
    padding: 13px 16px 13px 44px;
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    font-size: 16px;
    background: #f8fafc;
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.menu-search-input:focus {
    outline: none;
    border-color: var(--muni-primary);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(29, 78, 216, .12);
}
.menu-search-input::-webkit-search-cancel-button {
    cursor: pointer;
}
.menu-search-results {
    margin-top: 18px;
}
.menu-search-results-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--muni-muted);
    margin: 0 0 12px;
}
.menu-search-grid {
    margin-top: 0;
}
.menu-search-tile {
    position: relative;
}
.menu-search-cat-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
    padding: 3px 8px;
    border-radius: 999px;
    margin-bottom: 8px;
    background: #e2e8f0;
    color: #475569;
}
.menu-search-cat-badge.cat-informatica { background: #ede9fe; color: #5b21b6; }
.menu-search-cat-badge.cat-control { background: #e0f2fe; color: #0369a1; }
.menu-search-cat-badge.cat-funcionario { background: #cffafe; color: #0e7490; }
.menu-search-cat-badge.cat-finanzas { background: #dcfce7; color: #15803d; }
.menu-search-cat-badge.cat-dideco { background: #fae8ff; color: #a21caf; }
.menu-search-cat-badge.cat-transito { background: #fef9c3; color: #a16207; }
.menu-search-empty {
    margin: 0;
    padding: 20px 16px;
    text-align: center;
    color: var(--muni-muted);
    background: #f8fafc;
    border-radius: 10px;
    border: 1px dashed var(--muni-border);
    font-size: 14px;
}

.avisos-home {
    position: relative;
    margin-bottom: 12px;
}
.avisos-toggle {
    display: inline-block;
    position: relative;
}
.avisos-summary {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    list-style: none;
    padding: 7px 14px;
    border-radius: 999px;
    background: #e0f2fe;
    border: 1px solid #bae6fd;
    color: #0c4a6e;
    font-size: 13px;
    font-weight: 700;
    user-select: none;
    transition: background .15s, box-shadow .15s;
}
.avisos-summary::-webkit-details-marker { display: none; }
.avisos-summary:hover { background: #bae6fd; }
.avisos-toggle[open] .avisos-summary {
    background: #0ea5e9;
    border-color: #0284c7;
    color: #fff;
}
/* Ley Karin — misma mecánica que .avisos-summary (campana + contador rojo), pero con ícono de
 * escudo y color distintivo (mismo tono --cat-accent que .cat-ley-karin) para no confundirla con
 * la campana de Ayuda intranet. */
.avisos-summary--karin {
    background: #fff1f2;
    border-color: #fecdd3;
    color: #be123c;
}
.avisos-summary--karin:hover { background: #fecdd3; }
.avisos-summary--doc-visado {
    background: #fef9c3;
    border-color: #fde047;
    color: #854d0e;
}
.avisos-summary--doc-visado:hover { background: #fde047; }
.avisos-summary--doc-firma {
    background: #ede9fe;
    border-color: #c4b5fd;
    color: #5b21b6;
}
.avisos-summary--doc-firma:hover { background: #c4b5fd; }
.avisos-bell { font-size: 16px; line-height: 1; }
.avisos-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #dc2626;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
}
.avisos-panel {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    z-index: 900;
    width: min(560px, calc(100vw - 60px));
    max-height: 60vh;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--muni-border);
    border-radius: 14px;
    padding: 14px;
    box-shadow: 0 18px 44px rgba(15, 23, 42, .22);
}
.avisos-panel .alert:last-child { margin-bottom: 0 !important; }
a.avisos-summary { text-decoration: none; }

body.print-page { background: #fff; color: #0f172a; padding: 24px; }
body.print-page h1 { font-size: 20px; margin: 0 0 4px; }
.print-meta { font-size: 12px; color: #475569; margin: 0 0 14px; }
table.calif-pauta-grid { table-layout: fixed; width: 100%; font-size: 8px; }
table.calif-pauta-grid th.col-factor,
table.calif-pauta-grid td.col-factor,
table.calif-pauta-grid col.col-factor { width: 32%; white-space: nowrap; }
table.calif-pauta-grid th.col-subfactor,
table.calif-pauta-grid td.col-subfactor,
table.calif-pauta-grid col.col-subfactor { width: 36%; white-space: nowrap; }
table.calif-pauta-grid th.col-nota,
table.calif-pauta-grid td.col-nota,
table.calif-pauta-grid col.col-nota {
    width: 7%;
    text-align: center;
    white-space: nowrap;
}
table.calif-pauta-grid th.col-glosa,
table.calif-pauta-grid td.col-glosa,
table.calif-pauta-grid col.col-glosa {
    width: 25%;
    white-space: normal;
    line-height: 1.2;
    vertical-align: middle;
    text-align: center;
}
.calif-pre-sheet table.calif-pauta-grid th,
.calif-pre-sheet table.calif-pauta-grid td {
    vertical-align: middle;
}
.calif-pre-sheet table.calif-pauta-grid th.col-factor,
.calif-pre-sheet table.calif-pauta-grid td.col-factor,
.calif-pre-sheet table.calif-pauta-grid th.col-subfactor,
.calif-pre-sheet table.calif-pauta-grid td.col-subfactor {
    text-align: left;
}
.calif-pre-sheet table.calif-pauta-grid th.col-nota,
.calif-pre-sheet table.calif-pauta-grid td.col-nota,
.calif-pre-sheet table.calif-pauta-grid th.col-glosa,
.calif-pre-sheet table.calif-pauta-grid td.col-glosa {
    text-align: center;
}
.calif-pre-sheet table.calif-pauta-grid td.col-glosa {
    height: 10mm;
    min-height: 10mm;
}
.calif-pre-sheet table.calif-pauta-grid .calif-glosa-box {
    display: block;
    min-height: 8.5mm;
    line-height: 1.2;
}
body.print-page table.calif-pauta-grid { table-layout: fixed; width: 100%; font-size: 12px; }
body.print-page table.print-table.calif-pauta-factores,
body.print-page table.print-table.calif-pauta-coef {
    table-layout: fixed;
    width: 100%;
    font-size: 12px;
}
body.print-page table.calif-pauta-factores .col-factor { width: 28%; white-space: nowrap; }
body.print-page table.calif-pauta-factores .col-subfactor { width: 30%; white-space: nowrap; }
body.print-page table.calif-pauta-factores .col-mide { width: 42%; white-space: normal; }
body.print-page table.calif-pauta-coef .col-escalafon { width: 46%; white-space: nowrap; }
body.print-page table.calif-pauta-coef .col-coef { width: 18%; text-align: center; white-space: nowrap; }
table.print-table th, table.print-table td {
    border: 1px solid #94a3b8;
    padding: 6px 8px;
    text-align: left;
    vertical-align: top;
}
table.print-table th { background: #f1f5f9; }
@media print {
    body.print-page { padding: 0; }
    body.print-page.print-carta {
        padding: 0;
        font-size: 10.5pt;
    }
    .calif-pre-sheet h1,
    .calif-print-carta h1 { font-size: 13pt; margin: 0 0 3pt; }
    .calif-pre-sheet .print-meta,
    .calif-print-carta .print-meta { font-size: 7.5pt; margin: 0 0 4pt; }
    table.calif-pauta-grid { table-layout: fixed; width: 100%; font-size: 7.5pt; }
    table.calif-pauta-grid th.col-factor,
    table.calif-pauta-grid td.col-factor,
    table.calif-pauta-grid col.col-factor { width: 32%; white-space: nowrap; }
    table.calif-pauta-grid th.col-subfactor,
    table.calif-pauta-grid td.col-subfactor,
    table.calif-pauta-grid col.col-subfactor { width: 36%; white-space: nowrap; }
    table.calif-pauta-grid td.col-nota { width: 7%; text-align: center; white-space: nowrap; }
    table.calif-pauta-grid td.col-glosa {
        width: 25%;
        white-space: normal;
        line-height: 1.2;
        vertical-align: middle;
        text-align: center;
        font-size: 7pt;
    }
    .calif-pre-sheet table.calif-pauta-grid th,
    .calif-pre-sheet table.calif-pauta-grid td {
        vertical-align: middle !important;
        padding-top: 2pt;
        padding-bottom: 2pt;
    }
    .calif-pre-sheet table.calif-pauta-grid th.col-factor,
    .calif-pre-sheet table.calif-pauta-grid td.col-factor,
    .calif-pre-sheet table.calif-pauta-grid th.col-subfactor,
    .calif-pre-sheet table.calif-pauta-grid td.col-subfactor {
        text-align: left !important;
    }
    .calif-pre-sheet table.calif-pauta-grid th.col-nota,
    .calif-pre-sheet table.calif-pauta-grid td.col-nota,
    .calif-pre-sheet table.calif-pauta-grid th.col-glosa,
    .calif-pre-sheet table.calif-pauta-grid td.col-glosa {
        text-align: center !important;
    }
    .calif-pre-sheet table.calif-pauta-grid td.col-glosa {
        height: 10mm;
        min-height: 10mm;
        padding: 2pt 3pt;
    }
    .calif-pre-sheet table.calif-pauta-grid .calif-glosa-box {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 8.5mm;
        line-height: 1.2;
    }
    .calif-print-pauta table.calif-pauta-factores,
    .calif-print-carta table.calif-pauta-factores {
        table-layout: fixed;
        width: 100%;
        font-size: 7.5pt;
    }
    .calif-print-pauta table.calif-pauta-factores .col-factor,
    .calif-print-carta table.calif-pauta-factores .col-factor { width: 28%; white-space: nowrap; }
    .calif-print-pauta table.calif-pauta-factores .col-subfactor,
    .calif-print-carta table.calif-pauta-factores .col-subfactor { width: 30%; white-space: nowrap; }
    .calif-print-pauta table.calif-pauta-factores .col-mide,
    .calif-print-carta table.calif-pauta-factores .col-mide { width: 42%; white-space: normal; }
    .calif-print-pauta table.calif-pauta-coef {
        table-layout: fixed;
        width: 100%;
        font-size: 7.5pt;
    }
    .calif-print-pauta table.calif-pauta-coef .col-escalafon { width: 46%; white-space: nowrap; }
    .calif-print-pauta table.calif-pauta-coef .col-coef {
        width: 18%;
        text-align: center;
        white-space: nowrap;
    }
    .calif-pre-sheet table.print-table th,
    .calif-pre-sheet table.print-table td,
    .calif-print-carta table.print-table th,
    .calif-print-carta table.print-table td { padding: 2px 4px; }
    .calif-print-carta h2 { font-size: 10pt; margin: 6pt 0 3pt; }
    .calif-print-carta .print-jefe { font-size: 8.5pt; margin: 0 0 4pt; }
    .calif-print-carta h3 { font-size: 9pt; margin: 5pt 0 2pt; }
    .calif-print-carta section { break-inside: avoid; }
    .calif-print-carta.personal-print-oficial section.personal-print-depto {
        break-inside: auto;
        page-break-inside: auto;
    }
    .calif-print-carta.personal-print-oficial section.personal-print-depto-break {
        break-before: page !important;
        page-break-before: always !important;
    }
    .calif-print-head { display: flex; gap: 8pt; align-items: center; border-bottom: 2pt solid #1e3a5f; padding-bottom: 4pt; margin: 0 0 6pt; }
    .calif-print-escudo { width: 36pt; height: auto; }
    .calif-print-org { margin: 0 0 1pt; font-weight: 700; font-size: 9pt; color: #1e3a5f; letter-spacing: .04em; text-transform: uppercase; }
    .calif-print-aviso { background: #f4f1ea; border-left: 3pt solid #1e3a5f; padding: 4pt 6pt; margin: 0 0 6pt; font-size: 7pt; line-height: 1.25; }
    .calif-print-foot { margin-top: 4pt; border-top: 0.75pt solid #94a3b8; padding-top: 2pt; font-size: 6.5pt; color: #475569; }
    .calif-pre-sheet {
        page-break-inside: auto;
        break-inside: auto;
        page-break-after: auto;
        break-after: auto;
    }
    .calif-pre-sheet p { margin: 0 0 3pt; font-size: 8pt; }
    .calif-pre-sheet h2 { font-size: 11pt; margin: 2pt 0 2pt; text-align: center; }
    .calif-firmas-row {
        display: flex !important;
        flex-wrap: nowrap !important;
        justify-content: center !important;
        align-items: stretch;
        gap: 8mm;
        margin-top: 8pt;
        width: 100%;
    }
    .calif-firma-box {
        flex: 0 0 72mm !important;
        width: 72mm !important;
        max-width: 72mm !important;
        min-height: 0 !important;
        border: 1pt solid #1e3a5f;
        padding: 3pt 4pt 4pt;
        font-size: 7.5pt;
        text-align: center;
        box-sizing: border-box;
    }
    .calif-firmas-row--3 .calif-firma-box,
    .calif-firmas-row--junta .calif-firma-box,
    .calif-print-junta .calif-firma-box,
    .calif-hoja-calif--papel .calif-firma-box {
        flex: 0 0 58mm !important;
        width: 58mm !important;
        max-width: 58mm !important;
    }
    .calif-hoja-pre--papel .calif-firma-box {
        flex: 0 0 72mm !important;
        width: 72mm !important;
        max-width: 72mm !important;
    }
    .calif-firma-espacio,
    .calif-firma-box .calif-firma-linea {
        display: block;
        width: 100%;
        min-height: 26mm !important; /* FEA ~60 pt + margen */
        border-bottom: 0.75pt solid #64748b;
        margin: 1pt 0 3pt;
    }
    .calif-firma-box strong { display: block; color: #1e3a5f; margin-bottom: 1pt; }
    .calif-print-junta {
        font-size: 8.5pt;
        line-height: 1.2;
    }
    .calif-print-junta h1 { font-size: 12pt; margin: 0 0 2pt; }
    .calif-print-junta p { margin: 0 0 3pt; font-size: 8pt; }
    .calif-print-junta .print-meta { font-size: 7pt; margin: 0 0 2pt; }
    .calif-print-junta .calif-print-aviso {
        font-size: 7pt;
        padding: 3pt 6pt;
        margin: 0 0 4pt;
        line-height: 1.2;
    }
    .calif-print-junta .calif-print-head {
        margin: 0 0 4pt;
        padding-bottom: 3pt;
        gap: 6pt;
    }
    .calif-print-junta .calif-print-escudo { width: 32px; height: auto; }
    .calif-print-junta table.print-table { font-size: 8pt; }
    .calif-print-junta table.print-table th,
    .calif-print-junta table.print-table td {
        padding: 2pt 4pt;
        line-height: 1.15;
        font-size: 8pt;
    }
    .calif-print-junta .calif-firmas-row {
        gap: 6mm;
        margin-top: 6pt;
    }
    .calif-print-junta .calif-firma-box {
        font-size: 7pt;
    }
    .calif-print-junta .calif-firma-box strong {
        margin-bottom: 1pt;
        font-size: 7pt;
    }
    .calif-print-junta .calif-print-foot {
        margin-top: 4pt;
        font-size: 7pt;
        page-break-after: avoid;
    }
    .calif-print-pauta .calif-pauta-notas {
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        gap: 3pt;
        margin: 4pt 0 6pt;
    }
    .calif-print-pauta .calif-pauta-notas span {
        display: block;
        border: 0.6pt solid #94a3b8;
        padding: 2pt 3pt;
        text-align: center;
        font-size: 7pt;
    }
    .calif-print-pauta .calif-pauta-listas {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 3pt;
        margin: 0 0 6pt;
    }
    .calif-print-pauta .calif-pauta-listas span {
        display: block;
        border: 0.6pt solid #1e3a5f;
        padding: 3pt 4pt;
        font-size: 7.5pt;
    }
    .calif-print-marca {
        display: inline-block;
        background: #1e3a5f;
        color: #fff;
        font-size: 8pt;
        letter-spacing: .06em;
        text-transform: uppercase;
        padding: 2pt 6pt;
        margin: 0 0 3pt;
        font-weight: 700;
    }
    .personal-print-depto-break {
        break-before: page !important;
        page-break-before: always !important;
    }
    .personal-print-oficial h2 { font-size: 13pt; margin: 8pt 0 4pt; }
    .personal-print-oficial h3 { font-size: 11pt; margin: 8pt 0 4pt; }
    .personal-print-oficial .personal-print-meta {
        background: #f4f1ea;
        border-left: 3.5pt solid #1e3a5f;
        padding: 6pt 9pt;
        margin: 0 0 8pt;
        font-size: 9pt;
        line-height: 1.4;
    }
    .personal-print-oficial .personal-print-meta p { margin: 0 0 3pt; }
    .personal-print-oficial .personal-print-meta p:last-child { margin: 0; }
    .personal-print-oficial .personal-print-meta span {
        display: block;
        font-size: 7.5pt;
        font-weight: 700;
        letter-spacing: .04em;
        text-transform: uppercase;
        color: #1e3a5f;
        margin-bottom: 1pt;
    }
    .personal-print-oficial table.personal-nomina-print { table-layout: fixed; width: 100%; border-collapse: collapse; }
    .personal-print-oficial table.personal-nomina-print thead th {
        background: #1e3a5f;
        color: #fff;
        border-color: #1e3a5f;
        font-size: 7.5pt;
        text-transform: uppercase;
        letter-spacing: .02em;
        padding: 2pt 3pt;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print td {
        padding: 1.5pt 3pt;
        font-size: 8pt;
        vertical-align: middle;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print tbody tr:nth-child(even) td { background: #f4f7fb; }
    .personal-print-oficial table.personal-nomina-print .col-num,
    .personal-print-oficial table.personal-nomina-print col.col-num {
        width: 6%;
        text-align: right;
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print .col-rut,
    .personal-print-oficial table.personal-nomina-print col.col-rut {
        width: 16%;
        text-align: right;
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print .col-nombre,
    .personal-print-oficial table.personal-nomina-print col.col-nombre {
        width: auto;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print .col-cargo,
    .personal-print-oficial table.personal-nomina-print col.col-cargo {
        width: 26%;
        white-space: nowrap;
    }
    .personal-print-oficial table.personal-nomina-print .col-depto,
    .personal-print-oficial table.personal-nomina-print col.col-depto { width: 28%; white-space: normal; }
    .personal-print-oficial table.personal-nomina-print .col-rol,
    .personal-print-oficial table.personal-nomina-print col.col-rol { width: 22%; white-space: nowrap; }
}

.calif-aviso-legal {
    border: 1px solid #c4b5a0;
    background: #faf6ef;
    padding: 12px 14px;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.45;
    margin: 0 0 12px;
}
.calif-roles-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}
.calif-roles-grid article {
    border: 1px solid var(--muni-border);
    border-radius: 10px;
    padding: 12px 14px;
    background: #fff;
}
.calif-roles-grid h4 { margin: 0 0 6px; }
.calif-roles-grid p { margin: 0; font-size: 14px; line-height: 1.45; }
.calif-print-modern .calif-print-head,
body.print-page .calif-print-head {
    display: flex;
    gap: 10px;
    align-items: center;
    border-bottom: 3px solid #1e3a5f;
    padding-bottom: 6px;
    margin: 0 0 8px;
}
.calif-print-skip {
    margin: 0 16px 12px;
    padding: 8px 12px;
    background: #e0f2fe;
    border: 1px solid #7dd3fc;
    border-radius: 8px;
    color: #0c4a6e;
    font-size: 13px;
}
.calif-pre-sheet--compact h2 {
    font-size: 14px;
    margin: 0 0 4px;
}

/* Hoja de calificación (Junta) — modelo papel Quilleco, acabado institucional */
.calif-hoja-calif--papel {
    max-width: 210mm;
    margin: 0 auto 16px;
    font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
    color: #1a2332;
    background: #fff;
}
.calif-hc-head {
    text-align: center;
    margin: 0 0 12px;
    padding: 0 0 10px;
    border-bottom: 2px solid #1e3a5f;
}
.calif-hc-muni {
    margin: 0;
    font-size: 11px;
    letter-spacing: .12em;
    font-weight: 700;
    color: #1e3a5f;
    text-transform: uppercase;
}
.calif-hc-head h1 {
    margin: 6px 0 2px;
    font-size: 17px;
    font-weight: 700;
    letter-spacing: .03em;
    color: #0f172a;
}
.calif-hc-periodo {
    margin: 0;
    font-size: 11px;
    color: #475569;
}
.calif-hoja-calif--papel table.print-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    margin: 0 0 10px;
}
.calif-hoja-calif--papel table.print-table th,
.calif-hoja-calif--papel table.print-table td {
    border: 1px solid #334155;
    padding: 4px 8px;
    vertical-align: middle;
}
.calif-hc-id th {
    width: 22%;
    background: #f1f5f9;
    font-weight: 700;
    text-align: left;
    color: #1e3a5f;
    font-size: 11px;
    white-space: nowrap;
}
.calif-hc-pauta thead th {
    background: #1e3a5f;
    color: #fff;
    font-size: 10px;
    letter-spacing: .04em;
    text-align: center;
    font-weight: 600;
}
.calif-hc-pauta .col-fac { width: 48%; text-align: left; }
.calif-hc-pauta .col-nsf,
.calif-hc-pauta .col-nf,
.calif-hc-pauta .col-c,
.calif-hc-pauta .col-pt {
    width: 13%;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.calif-hc-factor-row td {
    background: #e8eef5;
    font-size: 11px;
    color: #1e3a5f;
}
.calif-hc-resumen th {
    background: #f1f5f9;
    font-weight: 700;
    color: #1e3a5f;
    white-space: nowrap;
}
.calif-hc-resumen .calif-hc-pt {
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    width: 14%;
    color: #0f172a;
}
.calif-hc-obs { font-size: 12px; margin: 6px 0 10px; line-height: 1.35; }
.calif-hc-notif {
    border: 1px solid #334155;
    margin: 0 0 12px;
    background: #fafbfc;
}
.calif-hc-notif-grid {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 8px 16px;
    align-items: center;
    padding: 8px 12px;
    border-bottom: 1px solid #cbd5e1;
}
.calif-hc-notif-title {
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .06em;
    color: #1e3a5f;
}
.calif-hc-notif-opts {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    font-size: 12px;
}
.calif-hc-notif-fecha { font-size: 12px; white-space: nowrap; }
.calif-hc-notif-nota {
    margin: 0;
    padding: 6px 12px;
    font-size: 10px;
    color: #475569;
    line-height: 1.35;
}
.calif-hoja-calif--papel .calif-firmas-row {
    margin-top: 14px;
}
.calif-hoja-calif--papel .calif-firma-box {
    border: 1px solid #1e3a5f;
    background: #fff;
}
.calif-hc-foot {
    margin: 10px 0 0;
    font-size: 10px;
    color: #64748b;
    font-style: italic;
}

@media print {
    .calif-hoja-calif--papel {
        max-width: none;
        margin: 0;
        font-size: 9.5pt;
    }
    .calif-hc-head {
        border-bottom-width: 1.5pt;
        padding-bottom: 6pt;
        margin-bottom: 6pt;
    }
    .calif-hc-head h1 { font-size: 13pt; }
    .calif-hc-muni { font-size: 8pt; }
    .calif-hc-periodo { font-size: 8pt; }
    .calif-hoja-calif--papel table.print-table { font-size: 8.5pt; margin: 0 0 5pt; }
    .calif-hoja-calif--papel table.print-table th,
    .calif-hoja-calif--papel table.print-table td {
        border-color: #1e293b;
        padding: 2pt 4pt;
    }
    .calif-hc-pauta thead th {
        background: #1e3a5f !important;
        color: #fff !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        font-size: 7.5pt;
    }
    .calif-hc-factor-row td {
        background: #e8eef5 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    .calif-hc-resumen .calif-hc-pt { font-size: 12pt; }
    .calif-hc-notif-grid {
        grid-template-columns: auto 1fr auto;
        gap: 4pt 8pt;
        padding: 4pt 6pt;
    }
    .calif-hc-notif-nota { font-size: 7pt; padding: 3pt 6pt; }
    .calif-hoja-calif--papel .calif-firmas-row { margin-top: 8pt; }
    .calif-hc-foot { font-size: 7pt; }
}

/* Precalificación — mismo acabado institucional que hoja de calificación */
.calif-hoja-pre--papel {
    max-width: 210mm;
    margin: 0 auto 16px;
    font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
    color: #1a2332;
    background: #fff;
}
.calif-hoja-pre--papel table.print-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    margin: 0 0 10px;
}
.calif-hoja-pre--papel table.print-table th,
.calif-hoja-pre--papel table.print-table td {
    border: 1px solid #334155;
    padding: 4px 8px;
    vertical-align: middle;
}
.calif-hoja-pre--papel .calif-firmas-row { margin-top: 14px; }
.calif-hoja-pre--papel .calif-firma-box {
    border: 1px solid #1e3a5f;
    background: #fff;
}

@media print {
    .calif-hoja-pre--papel {
        max-width: none;
        margin: 0;
        font-size: 9.5pt;
    }
    .calif-hoja-pre--papel table.print-table { font-size: 8.5pt; margin: 0 0 5pt; }
    .calif-hoja-pre--papel table.print-table th,
    .calif-hoja-pre--papel table.print-table td {
        border-color: #1e293b;
        padding: 2pt 4pt;
    }
    .calif-hoja-pre--papel .calif-firmas-row { margin-top: 10pt; }
}
.calif-print-escudo { width: 44px; height: auto; }
.calif-print-org {
    margin: 0 0 2px;
    font-weight: 700;
    font-size: 12px;
    color: #1e3a5f;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.calif-print-aviso {
    background: #f4f1ea;
    border-left: 4px solid #1e3a5f;
    padding: 6px 10px;
    margin: 0 0 8px;
    font-size: 12px;
    line-height: 1.3;
}
.calif-print-foot {
    margin-top: 8px;
    border-top: 1px solid #94a3b8;
    padding-top: 5px;
    font-size: 11px;
    color: #475569;
}
/*
 * Firmas centradas. Espacio FEA (rúbrica legible ~200×60 pt ≈ 70×21 mm;
 * ejemplo FirmaGob 100×150 pt ≈ 35×53 mm). Usamos ~70×26 mm (2 firmas)
 * y ~58×26 mm (3 firmas / comisión) para que quepa el estampado.
 */
.calif-firmas-row {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: stretch;
    gap: 10mm;
    margin-top: 10px;
    width: 100%;
}
.calif-firma-box {
    flex: 0 0 72mm;
    width: 72mm;
    max-width: 72mm;
    box-sizing: border-box;
    border: 1px solid #1e3a5f;
    padding: 4px 6px 6px;
    font-size: 11px;
    text-align: center;
    background: #fff;
}
.calif-firmas-row--3 .calif-firma-box,
.calif-firmas-row--junta .calif-firma-box {
    flex: 0 0 58mm;
    width: 58mm;
    max-width: 58mm;
}
.calif-firma-espacio,
.calif-firma-box .calif-firma-linea {
    display: block;
    width: 100%;
    min-height: 26mm; /* ~74 pt: cabida rúbrica FEA 60 pt + margen */
    border-bottom: 1px solid #64748b;
    margin: 2px 0 6px;
    box-sizing: border-box;
}
.calif-firma-box strong { display: block; color: #1e3a5f; margin-bottom: 1px; }
.calif-firma-ident {
    line-height: 1.2;
    margin-bottom: 2px;
    text-align: center;
}
.calif-firma-rut {
    display: block;
    font-size: 10px;
    color: #334155;
}
.calif-firma-cargo {
    display: block;
    font-size: 10px;
    font-weight: 700;
    color: #1e3a5f;
    text-transform: uppercase;
    letter-spacing: .02em;
    text-align: center;
}
.calif-notif-bloque {
    border: 1px solid #94a3b8;
    padding: 6px 10px;
    margin: 8px 0;
    font-size: 12px;
}
.calif-notif-bloque .calif-check { margin-right: 6px; }
.calif-print-junta {
    font-size: 13px;
    line-height: 1.25;
}
.calif-print-junta table.print-table th,
.calif-print-junta table.print-table td {
    font-size: 12px;
    line-height: 1.2;
    padding: 3px 6px;
    vertical-align: top;
}
.calif-print-junta .calif-firmas-row {
    gap: 6mm;
    margin-top: 8px;
}
.calif-print-junta .calif-firma-box {
    font-size: 10px;
}
.calif-print-junta .calif-print-aviso {
    font-size: 11px;
    padding: 4px 8px;
    margin: 0 0 6px;
}
.calif-print-junta .calif-print-head {
    margin: 0 0 6px;
    padding-bottom: 4px;
}
.calif-print-junta p { margin: 0 0 4px; }
.calif-print-marca {
    display: inline-block;
    background: #1e3a5f;
    color: #fff;
    font-size: 11px;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: 3px 8px;
    margin: 0 0 4px;
    font-weight: 700;
}
.calif-print-pauta .calif-pauta-notas,
.calif-print-pauta .calif-pauta-listas {
    display: grid;
    gap: 6px;
    margin: 0 0 8px;
}
.calif-print-pauta .calif-pauta-notas { grid-template-columns: repeat(7, 1fr); }
.calif-print-pauta .calif-pauta-listas { grid-template-columns: repeat(4, 1fr); }
.calif-print-pauta .calif-pauta-notas span,
.calif-print-pauta .calif-pauta-listas span {
    display: block;
    border: 1px solid #94a3b8;
    padding: 4px 6px;
    font-size: 12px;
}
.personal-nomina-table {
    table-layout: fixed;
    width: 100%;
    max-width: 920px;
}
.personal-nomina-table .col-num {
    width: 3.2rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.personal-nomina-table .col-rut {
    width: 8.6rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.personal-nomina-table .col-cargo {
    width: 11.5rem;
    white-space: nowrap;
}
.personal-nomina-table .col-marca,
.personal-nomina-table .col-rol {
    width: 7.5rem;
    white-space: nowrap;
}
body.print-page .personal-print-oficial .personal-print-meta {
    background: #f4f1ea;
    border-left: 4px solid #1e3a5f;
    padding: 8px 12px;
    margin: 0 0 12px;
    font-size: 13px;
    line-height: 1.4;
}
body.print-page .personal-print-oficial .personal-print-meta p { margin: 0 0 4px; }
body.print-page .personal-print-oficial .personal-print-meta p:last-child { margin: 0; }
body.print-page .personal-print-oficial .personal-print-meta span {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #1e3a5f;
    margin-bottom: 2px;
}
body.print-page .calif-print-carta.personal-print-oficial {
    max-width: 210mm;
    margin: 0 auto;
    padding: 0;
    box-sizing: border-box;
}
body.print-page .personal-print-oficial .personal-print-depto {
    background: #fff;
    box-sizing: border-box;
    padding: 10mm 12mm 14mm;
    margin: 0 auto 10mm;
    min-height: 257mm;
    box-shadow: 0 1px 0 0 #cbd5e1, 0 8px 24px rgba(15, 23, 42, 0.08);
}
body.print-page .personal-print-oficial .personal-print-depto-break {
    break-before: page;
    page-break-before: always;
}
@media print {
    body.print-page .calif-print-carta.personal-print-oficial {
        max-width: none;
        margin: 0;
        padding: 0;
        box-shadow: none;
    }
    body.print-page .personal-print-oficial .personal-print-depto {
        min-height: 0;
        margin: 0;
        padding: 0;
        box-shadow: none;
    }
}
body.print-page .personal-print-oficial table.personal-nomina-print { table-layout: fixed; width: 100%; }
body.print-page .personal-print-oficial table.personal-nomina-print thead th {
    background: #1e3a5f;
    color: #fff;
    border-color: #1e3a5f;
    text-transform: uppercase;
    letter-spacing: .02em;
    font-size: 10px;
    padding: 3px 4px;
    white-space: nowrap;
}
body.print-page .personal-print-oficial table.personal-nomina-print td {
    padding: 2px 4px;
    font-size: 10.5px;
    vertical-align: middle;
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
    hyphens: none;
}
body.print-page .personal-print-oficial table.personal-nomina-print tbody tr:nth-child(even) td {
    background: #f4f7fb;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-num,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-num {
    width: 6%;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-rut,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-rut {
    width: 16%;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-nombre,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-nombre {
    width: auto;
    white-space: nowrap;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-cargo,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-cargo {
    width: 26%;
    white-space: nowrap;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-depto,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-depto {
    width: 28%;
    white-space: normal;
}
body.print-page .personal-print-oficial table.personal-nomina-print .col-rol,
body.print-page .personal-print-oficial table.personal-nomina-print col.col-rol {
    width: 22%;
    white-space: nowrap;
}

.calif-norma {
    margin: 12px 0 0;
    font-size: 14px;
    line-height: 1.45;
}
.calif-norma ul { margin: 6px 0 0; padding-left: 1.25rem; }
.calif-norma li { margin: 4px 0; }

.dir-unidad-meta {
    margin: 0 0 14px;
    padding: 12px 16px;
}
.dir-unidad-meta p { margin: 0 0 6px; }
.dir-unidad-meta p:last-child { margin: 0; }
.dir-unidad-meta ul { margin: 4px 0 8px; padding-left: 1.2rem; }

.menu-section { margin-bottom: 14px; }
.menu-section h2 {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--muni-muted);
    margin: 0 0 8px;
}
.section-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
}
.section-head h2 { margin: 0; flex: 1; min-width: 12rem; }
.category-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
}
@media (max-width: 1500px) {
    .category-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 1100px) {
    .category-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
    .category-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 540px) {
    .category-grid { grid-template-columns: 1fr; }
}
.category-card {
    --cat-accent: #1d4ed8;
    --cat-bg: #f8fafc;
    --cat-icon-bg: #dbeafe;
    position: relative;
    overflow: hidden;
    background: var(--cat-bg);
    border: 1px solid var(--muni-border);
    border-radius: 14px;
    padding: 14px 14px 12px;
    text-decoration: none !important;
    color: var(--muni-text) !important;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-height: 128px;
    box-shadow: var(--muni-shadow);
    transition: box-shadow .2s, transform .2s, border-color .2s;
}
.category-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background: linear-gradient(90deg, var(--cat-accent), color-mix(in srgb, var(--cat-accent) 55%, #fff));
}
.category-card:hover {
    box-shadow: 0 14px 32px rgba(15, 23, 42, .14);
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--cat-accent) 40%, #fff);
}
.category-icon-wrap {
    width: 38px;
    height: 38px;
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    line-height: 1;
    background: var(--cat-icon-bg);
    margin-bottom: 6px;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.6);
}
.category-title {
    display: block;
    font-size: 15px;
    font-weight: 700;
    color: var(--muni-text);
    line-height: 1.2;
}
.category-count {
    display: block;
    font-size: 12px;
    color: var(--muni-muted);
    margin-top: 1px;
}
.category-enter {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--cat-accent);
    margin-top: auto;
    padding-top: 6px;
}
.cat-informatica { --cat-accent: #7c3aed; --cat-bg: #faf5ff; --cat-icon-bg: #ede9fe; }
.cat-administracion { --cat-accent: #1d4ed8; --cat-bg: #eff6ff; --cat-icon-bg: #dbeafe; }
.cat-alcaldia { --cat-accent: #0f766e; --cat-bg: #f0fdfa; --cat-icon-bg: #ccfbf1; }
.cat-concejo { --cat-accent: #b45309; --cat-bg: #fffbeb; --cat-icon-bg: #fde68a; }
.cat-control { --cat-accent: #0369a1; --cat-bg: #f0f9ff; --cat-icon-bg: #bae6fd; }
.cat-dideco { --cat-accent: #c026d3; --cat-bg: #fdf4ff; --cat-icon-bg: #f5d0fe; }
.cat-documentos { --cat-accent: #475569; --cat-bg: #f8fafc; --cat-icon-bg: #e2e8f0; }
.cat-educacion { --cat-accent: #2563eb; --cat-bg: #eff6ff; --cat-icon-bg: #bfdbfe; }
.cat-finanzas { --cat-accent: #15803d; --cat-bg: #f0fdf4; --cat-icon-bg: #bbf7d0; }
.cat-general { --cat-accent: #64748b; --cat-bg: #f8fafc; --cat-icon-bg: #e2e8f0; }
.cat-juzgado { --cat-accent: #1e40af; --cat-bg: #eff6ff; --cat-icon-bg: #93c5fd; }
.cat-ley-karin { --cat-accent: #be123c; --cat-bg: #fff1f2; --cat-icon-bg: #fecdd3; }
.cat-obras { --cat-accent: #ea580c; --cat-bg: #fff7ed; --cat-icon-bg: #fed7aa; }
.cat-oficina-partes { --cat-accent: #0d9488; --cat-bg: #f0fdfa; --cat-icon-bg: #99f6e4; }
.cat-personal { --cat-accent: #0891b2; --cat-bg: #ecfeff; --cat-icon-bg: #a5f3fc; }
.cat-salud { --cat-accent: #dc2626; --cat-bg: #fef2f2; --cat-icon-bg: #fecaca; }
.cat-secplan { --cat-accent: #4f46e5; --cat-bg: #eef2ff; --cat-icon-bg: #c7d2fe; }
.cat-transito { --cat-accent: #ca8a04; --cat-bg: #fefce8; --cat-icon-bg: #fef08a; }
.cat-archivo-digital { --cat-accent: #4338ca; --cat-bg: #eef2ff; --cat-icon-bg: #c7d2fe; }
.cat-gestion-documental { --cat-accent: #0f766e; --cat-bg: #f0fdfa; --cat-icon-bg: #99f6e4; }
.cat-funcionario { --cat-accent: #0891b2; --cat-bg: #ecfeff; --cat-icon-bg: #a5f3fc; }
.sgd-list { margin: 0 0 12px; padding-left: 1.25rem; line-height: 1.55; }
.sgd-list li { margin-bottom: 6px; }
.sgd-phase { margin-bottom: 20px; padding: 14px 16px; background: var(--muni-surface); border: 1px solid var(--muni-border); border-radius: 12px; }
.sgd-phase h3 { margin: 0 0 10px; font-size: 16px; color: var(--muni-text); }
.ley-karin-form textarea { min-height: 140px; resize: vertical; }
.tile-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 14px;
}
/* Hubs de módulo: tarjetas lado a lado y centradas */
.module-body .tile-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 280px));
    justify-content: center;
}
.tile { display: flex; flex-direction: column; }
.tile {
    background: var(--muni-surface);
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    padding: 18px;
    text-decoration: none;
    color: inherit;
    transition: box-shadow .15s, transform .15s;
}
.tile:hover {
    box-shadow: 0 8px 24px rgba(15,23,42,.12);
    transform: translateY(-1px);
    border-color: #93c5fd;
}
.tile.tile-disabled {
    opacity: 0.42;
    filter: grayscale(0.35);
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
    border-style: dashed;
    background: #f8fafc;
}
.tile.tile-disabled:hover {
    box-shadow: none;
    transform: none;
    border-color: var(--muni-border);
}
.tile.tile-disabled .tile-icon {
    background: #e2e8f0;
}
/* Vista Informática: tarjeta denegada / sin permiso (sigue permitiendo clic derecho ACL) */
.tile.tile-acl-denied,
.category-card.cat-acl-denied {
    opacity: 0.46;
    filter: grayscale(0.45);
    border-style: dashed;
    background: #f1f5f9;
    position: relative;
}
.tile.tile-acl-denied:hover,
.category-card.cat-acl-denied:hover {
    opacity: 0.62;
    filter: grayscale(0.25);
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
}
.tile-acl-denied-badge {
    display: inline-block;
    margin-top: 6px;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 650;
    letter-spacing: .02em;
    color: #9f1239;
    background: #ffe4e6;
    align-self: flex-start;
}
.category-card.cat-acl-denied .tile-acl-denied-badge {
    margin: 4px 0 0;
}
.tile-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 11px;
    font-size: 22px;
    line-height: 1;
    margin-bottom: 10px;
    background: #f1f5f9;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .06);
    font-family: "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", "Segoe UI Symbol", sans-serif;
}
.tile-title { display: block; font-weight: 700; margin-bottom: 4px; }
.tile-desc { display: block; font-size: 13px; color: var(--muni-muted); }

.app-footer {
    text-align: center;
    padding: 24px;
    color: var(--muni-muted);
    font-size: 13px;
}

.muni-global-footer {
    width: 100%;
    padding: 16px;
    margin-top: auto;
}
.muni-global-footer__card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 10px 24px;
    background: #fff;
    border: 2px solid #1a1a1a;
    border-radius: 14px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, .08);
}
.muni-global-footer__escudo {
    flex: 0 0 auto;
    width: 52px;
    height: auto;
    object-fit: contain;
}
.muni-global-footer__text {
    flex: 1;
    text-align: center;
    min-width: 0;
}
.muni-global-footer__line {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.35;
    color: #111;
}
.muni-global-footer__line + .muni-global-footer__line {
    margin-top: 2px;
}
.muni-global-footer__version {
    margin: 8px 0 0;
    padding: 0;
}
.muni-global-footer__version .muni-app-version {
    margin: 0;
}
@media (max-width: 640px) {
    .muni-global-footer__card {
        padding: 10px 12px;
        gap: 10px;
    }
    .muni-global-footer__escudo {
        width: 40px;
    }
    .muni-global-footer__escudo--right {
        display: none;
    }
    .muni-global-footer__line {
        font-size: 12px;
    }
    .muni-global-footer__version .muni-app-version {
        font-size: 11.5px;
        padding: 3px 10px;
    }
}

body[data-muni-ui="1"] {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}
body[data-muni-ui="1"] .muni-global-footer {
    margin-top: auto;
}
body[data-muni-ui="1"] .app-main {
    flex: 1;
    overflow-x: auto;
    max-width: 100%;
}
/* Centrar cuerpo de módulos (max-width) dentro del layout flex */
body[data-muni-ui="1"] > .module-body,
body[data-muni-ui="1"] .app-main > .module-body {
    align-self: center;
}

.admin-layout { max-width: 960px; margin: 0 auto; padding: 24px; }
.admin-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.card {
    background: var(--muni-surface);
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 16px;
}
table.data {
    width: 100%;
    max-width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    table-layout: auto;
}
table.data th, table.data td {
    border: 1px solid var(--muni-border);
    padding: 8px 10px;
    text-align: left;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: none;
}
table.data th {
    background: #f8fafc;
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}
/* Fecha (1ª) y Estado (última) no se parten, aunque la descripción sea larga. */
table.data td:first-child,
table.data th:first-child,
table.data td:last-child,
table.data th:last-child {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}
.module-body table th {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}
table.data td.col-estado,
table.data th.col-estado,
table.data-table td.col-estado,
table.data-table th.col-estado,
table.data td.col-w-sit,
table.data-table td.col-w-sit,
table.data th.col-w-sit,
table.data-table th.col-w-sit {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
    min-width: 7.5rem;
}
table.data td.highlight-cell { background: #2563eb; color: #fff; font-weight: 600; }
table.data tbody tr.fila-ficha-incompleta,
table.data-table tbody tr.fila-ficha-incompleta {
    background: #fef3c7;
}
@media print {
    table.data tbody tr.fila-ficha-incompleta,
    table.data-table tbody tr.fila-ficha-incompleta {
        background: transparent;
    }
}

.module-header {
    background: var(--muni-surface);
    border-bottom: 1px solid var(--muni-border);
    padding: 16px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}
.module-header-nav {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}
.module-header .action-icon {
    width: 2.35rem;
    height: 2.35rem;
    font-size: 1.2rem;
}
.action-icon-back:hover { background: #eff6ff; border-color: #93c5fd; }
.module-body { width: 100%; max-width: min(1680px, 100%); margin: 0 auto; padding: 24px; box-sizing: border-box; }
/* Listados: ancho disponible en escritorio; en tablet/celular el wrap hace scroll, no solapa. */
.module-body:has(table),
.module-body:has(.table-wrap) {
    max-width: min(1720px, 100%);
    box-sizing: border-box;
}
.module-body:has(.reloj-gestion-listar),
.module-body.reloj-gestion-listar,
.module-body.reloj-jornada-wide,
.module-body.reloj-marcaciones,
.module-body.reloj-resumen-extras,
.module-body.rmm { max-width: min(1720px, 100%); }
.module-body:has(.decretos-pago-listar) { max-width: min(1200px, 100%); }
.module-body:has(.ofp-catalogos) { max-width: min(1200px, 100%); }
.module-body:has(.gp-solicitudes) { max-width: min(1600px, 100%); padding-left: 16px; padding-right: 16px; }
.module-body:has(.gp-docs) { max-width: min(1600px, 100%); padding-left: 16px; padding-right: 16px; }
.module-body:has(.decretos-libro-listar) { max-width: min(1200px, 100%); }
.module-body:has(.firmantes-table) { max-width: min(1200px, 100%); overflow-x: hidden; }
.module-body:has(.certificados-1996-listar) { max-width: min(1480px, 100%); }
.module-body:has(.contratos-listar),
.module-body:has(.concejo-actas-listar),
.module-body:has(.concejo-fechas-listar),
.module-body:has(.concejo-solicitudes-listar),
.module-body:has(.ofp-bandeja),
.module-body:has(.agenda-eventos),
.module-body:has(.proyectos-listar),
.module-body:has(.auditoria-sgd),
.module-body.auditoria-sgd,
.module-body:has(.catalogo-tramites-listar),
.module-body.catalogo-tramites-listar,
.module-body:has(.reglamentos-listar),
.module-body.reglamentos-listar,
.module-body.flota,
.module-body:has(.calificatorio-listar),
.module-body.calificatorio-listar,
.module-body:has(.bitacoras-listar),
.module-body.bitacoras-listar,
.module-body.help-layout,
.module-body:has(.help-layout) { max-width: min(1680px, 100%); }

/* Auditoría SGD — columnas aprovechando el ancho disponible */
.auditoria-sgd .table-wrap { width: 100%; overflow-x: visible; }
.auditoria-sgd table.auditoria-table {
    table-layout: fixed;
    width: 100%;
    font-size: 13.5px;
}
.auditoria-sgd table.auditoria-table th,
.auditoria-sgd table.auditoria-table td {
    padding: 9px 12px;
    vertical-align: top;
    word-break: break-word;
}
.auditoria-sgd .col-fecha { width: 9%; white-space: nowrap; }
.auditoria-sgd .col-rut { width: 10%; white-space: nowrap; }
.auditoria-sgd .col-accion { width: 22%; }
.auditoria-sgd .col-accion code {
    font-size: 12.5px;
    word-break: break-all;
    white-space: normal;
}
.auditoria-sgd .col-modulo { width: 11%; }
.auditoria-sgd .col-registro { width: 12%; }
.auditoria-sgd .col-detalle { width: 28%; }
.auditoria-sgd .col-ip { width: 8%; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Catálogo trámites admin */
.catalogo-tramites-listar .table-wrap { width: 100%; }
.catalogo-tramites-listar table.table-list-compact { table-layout: fixed; width: 100%; font-size: 13px; }
.catalogo-tramites-listar .col-orden { width: 4.5rem; }
.catalogo-tramites-listar .col-slug { width: 16%; word-break: break-all; }
.catalogo-tramites-listar .col-titulo { width: 22%; }
.catalogo-tramites-listar .col-plazo { width: 5rem; }
.catalogo-tramites-listar .col-mod { width: 10%; }
.catalogo-tramites-listar .col-url { width: 22%; word-break: break-all; }
.catalogo-tramites-listar .col-activo { width: 5rem; text-align: center; }
.catalogo-tramites-listar .col-icon { width: 3.25rem; text-align: center; }

/* Reglamentos municipales */
.reglamentos-listar .toolbar {
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
}
.reglamentos-listar .toolbar-actions .action-icon {
    width: 2.35rem;
    height: 2.35rem;
    font-size: 1.15rem;
}
.reglamentos-listar .table-wrap { width: 100%; }
.reglamentos-listar table.table-list-compact {
    table-layout: auto;
    width: 100%;
    font-size: 14px;
}
.reglamentos-listar table.data-table th,
.reglamentos-listar table.data-table td {
    padding: 10px 12px;
    vertical-align: top;
}
.reglamentos-listar table.data-table tbody tr:nth-child(even) { background: #f8fafc; }
.reglamentos-listar table.data-table tbody tr:hover { background: #eff6ff; }
.reglamentos-listar .col-num { width: 1%; white-space: nowrap; font-variant-numeric: tabular-nums; }
.reglamentos-listar .col-fecha { width: 1%; white-space: nowrap; }
.reglamentos-listar .col-tipo { width: 12%; }
.reglamentos-listar .col-materia { width: 48%; white-space: normal; word-break: break-word; line-height: 1.45; }
.reglamentos-listar .col-resp { width: 16%; }
.reglamentos-listar .col-icon { width: 1%; text-align: center; white-space: nowrap; }
.reglamentos-listar .col-acciones { width: 1%; vertical-align: middle; }

/* Calificatorio listado */
.calificatorio-listar .table-wrap { width: 100%; overflow-x: auto; }
.calificatorio-listar table.table-list-compact { table-layout: auto; width: 100%; font-size: 13.5px; }
.calificatorio-listar .col-rut { width: 9.5rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
.calificatorio-listar .col-nombre { white-space: nowrap; min-width: 16rem; }
.calificatorio-listar .col-depto { min-width: 12rem; }
.calificatorio-listar .col-cargo { white-space: nowrap; }
.calificatorio-listar .col-nota { width: 5rem; text-align: center; }
.calificatorio-listar .col-estado { width: 8rem; white-space: nowrap; }
.calificatorio-listar .col-icon { width: 1%; white-space: nowrap; text-align: center; }

/* Bitácoras movilización */
.bitacoras-listar .table-wrap { width: 100%; overflow-x: visible; }
.bitacoras-listar table.table-list-compact { table-layout: fixed; width: 100%; font-size: 13px; }
.bitacoras-listar .col-rut { width: 9.5rem; white-space: nowrap; }
.bitacoras-listar .col-patente { width: 7rem; white-space: nowrap; }
.bitacoras-listar .col-nombre { width: auto; }
.bitacoras-listar .col-viajes { width: 5rem; text-align: center; font-variant-numeric: tabular-nums; }
.bitacoras-listar .col-icon { width: 4.5rem; text-align: center; }
.bitacoras-listar table.bitacora-detalle { font-size: 12.5px; }
.bitacoras-listar .bitacora-detalle .col-num { width: 3.5rem; }
.bitacoras-listar .bitacora-detalle .col-fecha { width: 8.5rem; white-space: nowrap; }
.bitacoras-listar .bitacora-detalle .col-destino { width: 14%; word-break: break-word; }
.bitacoras-listar .bitacora-detalle .col-motivo { width: 12%; word-break: break-word; }
.bitacoras-listar .bitacora-detalle .col-depto { width: 8%; }
.bitacoras-listar .bitacora-detalle .col-odo { width: 9%; white-space: nowrap; }
.bitacoras-listar .bitacora-detalle .col-sol { width: 5.5rem; white-space: nowrap; }

.ofp-bandeja .table-wrap-fit { overflow-x: hidden; width: 100%; }
.ofp-bandeja table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.ofp-bandeja table.table-list-compact th,
.ofp-bandeja table.table-list-compact td {
    padding: 8px 10px;
    vertical-align: top;
}
.agenda-eventos .table-wrap-fit { overflow-x: hidden; width: 100%; }
.agenda-eventos table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}

/* Gestion de pagos — tabla ancha y columnas estables */
.gp-solicitudes { max-width: none; }
.gp-solicitudes .table-wrap { width: 100%; }
.gp-solicitudes table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.gp-solicitudes table.table-list-compact th,
.gp-solicitudes table.table-list-compact td {
    padding: 8px 10px;
    vertical-align: top;
}
.gp-solicitudes .col-n { width: 4%; text-align: center; white-space: nowrap; }
.gp-solicitudes .col-fecha { width: 7%; white-space: nowrap; }
.gp-solicitudes .col-fecha-hora { width: 9%; white-space: nowrap; }
.gp-solicitudes .col-depto,
.gp-solicitudes .col-tipo { width: 9%; }
.gp-solicitudes .col-motivo { width: 30%; }
.gp-solicitudes .col-estado { width: 7%; text-align: center; white-space: nowrap; }
.gp-solicitudes .col-num { width: 6%; text-align: center; white-space: nowrap; }
.gp-solicitudes .col-icon { width: 3.5%; text-align: center; white-space: nowrap; }
.gp-solicitudes .motivo-cell {
    white-space: normal;
    overflow-wrap: break-word;
    word-break: normal;
    line-height: 1.35;
}
.gp-solicitudes .gp-n-sol {
    display: inline-block;
    font-weight: 700;
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dotted currentColor;
    padding: 0 2px;
}
.gp-solicitudes .gp-n-sol:hover { opacity: 0.85; }
.gp-solicitudes .gp-n-sol-readonly { font-weight: 700; }
.gp-solicitudes .archivo-vacio { opacity: 0.7; }
.gp-solicitudes .gp-icon-svg {
    display: block;
    width: 1.1rem;
    height: 1.1rem;
}
.gp-solicitudes .action-icon { flex-shrink: 0; }
.gp-estado-ANULADO td { background: #cd5c5c; color: #fff; }
.gp-estado-PAGADO td { background: #90EE90; }
.gp-estado-ENVIADO td { background: #ffd700; }
.gp-estado-BORRADOR td { background: #fff; }
.gp-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
}
.gp-form-grid .full { grid-column: 1 / -1; }

/* Documentos de solicitud */
.gp-docs { max-width: none; }
.gp-docs .table-wrap { width: 100%; }
.gp-docs table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.gp-docs table.table-list-compact th,
.gp-docs table.table-list-compact td {
    padding: 8px 10px;
    vertical-align: top;
}
.gp-docs .col-icon { width: 4%; text-align: center; white-space: nowrap; }
.gp-docs .col-fecha { width: 8%; white-space: nowrap; }
.gp-docs .col-hora { width: 7%; white-space: nowrap; }
.gp-docs .col-tipo { width: 14%; }
.gp-docs .col-ndoc { width: 12%; white-space: nowrap; }
.gp-docs .col-est { width: 9%; }
.gp-docs .col-materia { width: auto; }
.gp-docs .materia-cell {
    white-space: normal;
    overflow-wrap: break-word;
    word-break: normal;
    line-height: 1.35;
}
.gp-docs .gp-icon-disabled {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    opacity: 0.35;
    cursor: not-allowed;
}
.certificados-1996-listar .table-wrap { overflow-x: visible; }
.certificados-1996-listar table.data { table-layout: auto; font-size: 13px; }
.certificados-1996-listar th.col-icon,
.certificados-1996-listar td.col-icon { width: 2.75rem; text-align: center; padding: 6px 4px; }
.certificados-1996-listar .col-num {
    text-align: right;
    padding-right: 1rem;
    white-space: nowrap;
}
.certificados-1996-listar .col-fecha { white-space: nowrap; }
.certificados-1996-listar .col-propietario {
    white-space: nowrap;
    max-width: 22rem;
    overflow: hidden;
    text-overflow: ellipsis;
}
.action-icon-print:hover { background: #eff6ff; border-color: #93c5fd; }
.action-icon-print svg,
.action-icon-preview svg { display: block; }
/* Precalificación (verde) vs calificación Junta (ámbar) — Hoja de vida */
a.action-icon-print-pre {
    color: #047857;
    background: #ecfdf5;
    border-color: #6ee7b7;
}
a.action-icon-print-pre:hover {
    background: #d1fae5;
    border-color: #34d399;
    color: #065f46;
}
a.action-icon-print-calif {
    color: #c2410c;
    background: #fff7ed;
    border-color: #fdba74;
}
a.action-icon-print-calif:hover {
    background: #ffedd5;
    border-color: #fb923c;
    color: #9a3412;
}
.calif-print-bar .calif-print-item {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: .2rem;
    min-width: 4.5rem;
    margin-right: .35rem;
}
.calif-print-bar .calif-print-label {
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .02em;
    color: #475569;
    text-align: center;
    line-height: 1.15;
}
.calif-print-bar a.action-icon-print {
    width: 2.45rem;
    height: 2.45rem;
}
button.action-icon-print-lg {
    width: 2.55rem;
    height: 2.55rem;
    background: #2563eb;
    border-color: #1d4ed8;
    color: #fff;
    box-shadow: 0 1px 4px rgba(37, 99, 235, .38);
}
button.action-icon-print-lg:hover {
    background: #1d4ed8;
    border-color: #1e40af;
    color: #fff;
}
button.action-icon-preview-lg,
.action-icon-preview {
    width: 2.55rem;
    height: 2.55rem;
    background: #c2410c;
    border-color: #9a3412;
    color: #fff;
    box-shadow: 0 1px 4px rgba(194, 65, 12, .45);
}
button.action-icon-preview-lg:hover,
.action-icon-preview:hover {
    background: #9a3412;
    border-color: #7c2d12;
    color: #fff;
}
a.action-icon-print { color: #1d4ed8; }
.action-icon-hub:hover { background: #eff6ff; border-color: #93c5fd; }
.action-icon-home:hover { background: #f0fdf4; border-color: #86efac; }
.action-icon-back:hover { background: #eff6ff; border-color: #93c5fd; }
.action-icon-add:hover { background: #f0fdf4; border-color: #86efac; }
.action-icon-calendar:hover { background: #eff6ff; border-color: #93c5fd; }
.action-icon-planilla:hover { background: #f0fdf4; border-color: #86efac; }
.action-icon-resolucion:hover { background: #fff7ed; border-color: #fdba74; }
.action-icon-firma:hover { background: #faf5ff; border-color: #d8b4fe; }
button.action-icon {
    font: inherit;
    appearance: none;
    -webkit-appearance: none;
}
.module-body:has(.certificados-listar) { max-width: min(1480px, 100%); }
.certificados-listar .col-propietario {
    white-space: nowrap;
    min-width: 18rem;
    max-width: 28rem;
    overflow: hidden;
    text-overflow: ellipsis;
}
.certificados-listar .col-num {
    text-align: right;
    padding-right: 1rem;
    white-space: nowrap;
}
.certificados-listar .col-fecha { white-space: nowrap; }
.certificados-listar th.col-icon,
.certificados-listar td.col-icon {
    text-align: center;
    width: 2.75rem;
    padding: 6px 4px;
}
.firmantes-table { width: 100%; table-layout: auto; }
.firmantes-table th.col-icon,
.firmantes-table td.col-icon { text-align: center; padding: 6px 4px; vertical-align: middle; white-space: nowrap; }
.firmantes-table th.col-icon { font-size: 12px; }
.firmantes-table tr.row-editing { background: #eff6ff; }
.firmantes-col-rut { white-space: nowrap; font-variant-numeric: tabular-nums; }
.doc-tramite-tipos-module .card { overflow: hidden; }
.doc-tramite-tipos-module .table-wrap { overflow-x: visible; }
.doc-tramite-tipos-module table.doc-tramite-tipos-table {
    table-layout: fixed;
    width: 100%;
    min-width: 0;
}
.doc-tramite-tipos-table th,
.doc-tramite-tipos-table td {
    overflow-wrap: break-word;
    word-break: normal;
    vertical-align: middle;
}
.doc-tramite-tipos-table th { white-space: nowrap; }
.doc-tramite-tipos-table .col-w-codigo { width: 11%; }
.doc-tramite-tipos-table .col-w-nombre { width: 24%; }
.doc-tramite-tipos-table .col-w-modulo { width: 12%; }
.doc-tramite-tipos-table .col-w-accion { width: 22%; font-size: 13px; }
.doc-tramite-tipos-table .col-w-activo { width: 9%; text-align: center; white-space: nowrap; }
.doc-tramite-tipos-table .col-w-visado,
.doc-tramite-tipos-table .col-w-firma { width: 11%; text-align: center; }
.doc-tramite-tipos-table th.col-w-visado,
.doc-tramite-tipos-table th.col-w-firma { white-space: normal; line-height: 1.3; font-size: 12px; }
.doc-tramite-tipos-table td.col-w-visado,
.doc-tramite-tipos-table td.col-w-firma { padding: 8px 6px; }
.doc-tramite-tipos-table .col-w-codigo code {
    font-size: 12px;
    word-break: break-all;
}
.doc-tramite-tipos-module .cap-item.is-inline {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 4px;
}
.decretos-pago-listar { overflow: hidden; }
.decretos-libro-listar { overflow: hidden; }
.form-grid { display: grid; gap: 12px; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.form-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.toolbar { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 12px; }
.inline-form { display: inline-flex; gap: 8px; align-items: center; }
.table-wrap { overflow-x: auto; max-width: 100%; width: 100%; -webkit-overflow-scrolling: touch; }
.table-wrap-fit { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.notificador-module { overflow-x: hidden; max-width: min(1100px, 100%); }
.notificador-module .card { overflow: hidden; }
.notificador-table-wrap {
    overflow-x: visible;
    max-width: 100%;
}
.notificador-queue-table {
    table-layout: fixed;
    width: 100%;
    min-width: 0;
}
.notificador-queue-table th,
.notificador-queue-table td {
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-word;
}
.notificador-queue-table th:nth-child(1),
.notificador-queue-table td:nth-child(1) { width: 3.5rem; }
.notificador-queue-table th:nth-child(2),
.notificador-queue-table td:nth-child(2) { width: 8.5rem; white-space: nowrap; }
.notificador-queue-table th:nth-child(3),
.notificador-queue-table td:nth-child(3) { width: 7rem; }
.notificador-queue-table th:nth-child(4),
.notificador-queue-table td:nth-child(4) { width: 5.5rem; }
.notificador-queue-table th:nth-child(5),
.notificador-queue-table td:nth-child(5) { width: 4.5rem; }
.notificador-queue-table th:nth-child(8),
.notificador-queue-table td:nth-child(8) { width: 6.5rem; }
.notificador-queue-table th:last-child,
.notificador-queue-table td:last-child { width: 3.25rem; white-space: nowrap; text-align: center; }
.notificador-module .inline-form { max-width: 100%; }
.notificador-back { margin-top: 1rem; }
@media (max-width: 900px) {
    .notificador-queue-table .col-hide-md { display: none; }
}
@media (max-width: 640px) {
    .notificador-queue-table .col-hide-sm { display: none; }
    .notificador-module .inline-form { flex-direction: column; align-items: stretch; }
    .notificador-module .inline-form > div { width: 100%; }
}
table.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
table.data-table th, table.data-table td {
    border: 1px solid var(--muni-border);
    padding: 8px 10px;
    text-align: left;
}
table.data-table th { background: #f8fafc; white-space: nowrap; }
.decretos-pago-listar table.table-list-compact {
    table-layout: fixed;
    width: 100%;
}
.decretos-pago-listar .col-w-num { width: 5%; }
.decretos-pago-listar .col-w-fecha { width: 10%; }
.decretos-pago-listar .col-w-materia { width: 55%; }
.decretos-pago-listar .col-w-monto { width: 14%; }
.decretos-pago-listar .col-w-icon { width: 3.5%; }
.decretos-pago-listar table.table-buscar .col-w-ano { width: 6%; }
.decretos-pago-listar table.table-buscar .col-w-num { width: 6%; }
.decretos-pago-listar table.table-buscar .col-w-fecha { width: 10%; }
.decretos-pago-listar table.table-buscar .col-w-materia { width: 46%; }
.decretos-pago-listar table.table-buscar .col-w-monto { width: 12%; }
.decretos-pago-listar table.table-buscar .col-w-icon { width: 3.5%; }
.decretos-pago-listar .col-materia { overflow: hidden; font-size: 14px; }
.decretos-pago-listar .materia-ellipsis {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    line-height: 1.4;
}
.decretos-pago-listar .col-monto {
    text-align: right;
    padding-right: 1rem;
    white-space: nowrap;
}
.decretos-pago-listar .col-num,
.decretos-pago-listar .col-fecha { white-space: nowrap; }
.decretos-pago-listar .col-icon { text-align: center; padding: 6px 4px; }
.decretos-pago-listar th.col-icon { font-size: 12px; }
.action-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    border: 1px solid var(--muni-border);
    background: #fff;
    text-decoration: none;
    font-size: 1rem;
    line-height: 1;
}
.action-icon:hover { background: #f1f5f9; border-color: #93c5fd; }
.action-icon-pdf:hover { background: #fef2f2; border-color: #fca5a5; }
.action-icon-edit:hover { background: #eff6ff; border-color: #93c5fd; }
.reloj-row-actions {
    display: inline-flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    white-space: nowrap;
}
.reloj-jornada-wide td.col-icon {
    width: 1%;
    white-space: nowrap;
    vertical-align: middle;
    text-align: right;
}
.reloj-row-actions .action-icon-view {
    color: #1d4ed8;
    background: #eff6ff;
    border-color: #93c5fd;
}
.reloj-row-actions .action-icon-edit {
    color: #b45309;
    background: #fffbeb;
    border-color: #fcd34d;
}
.reloj-row-actions .action-icon-view:hover {
    background: #dbeafe;
    border-color: #60a5fa;
}
.reloj-row-actions .action-icon-edit:hover {
    background: #fef3c7;
    border-color: #fbbf24;
}
.action-icon-save:hover { background: #ecfdf5; border-color: #6ee7b7; }
.action-icon-search:hover { background: #eff6ff; border-color: #93c5fd; }
.dec-icon-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
button.dec-icon-accion,
a.dec-icon-accion {
    width: auto;
    min-width: 4.6rem;
    height: auto;
    padding: 6px 8px 5px;
    flex-direction: column;
    gap: 2px;
    cursor: pointer;
}
a.dec-icon-accion.is-active {
    background: #eff6ff;
    border-color: #2563eb;
    color: #1e3a8a;
}
.dec-icon-accion-txt { font-size: 11px; font-weight: 600; color: #334155; line-height: 1.1; }
.dec-firmas-hoy {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin: 8px 0 12px;
}
.dec-firmas-hoy div {
    background: #f8fafc;
    border: 1px solid var(--muni-border, #e2e8f0);
    border-radius: 8px;
    padding: 8px 10px;
}
.dec-firmas-hoy span {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: #64748b;
}
.dec-firmas-hoy strong { display: block; margin-top: 2px; }
@media (max-width: 720px) {
    .dec-firmas-hoy { grid-template-columns: 1fr; }
}
.org-toolbar { margin-bottom: 12px; }
.org-search { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.org-search input[type="search"] {
    min-width: 14rem;
    max-width: 28rem;
    padding: 6px 10px;
    border: 1px solid var(--muni-border);
    border-radius: 8px;
}
.org-inline-edit {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.org-inline-edit input[type="text"],
.org-inline-edit input:not([type]),
.org-inline-edit input[type="date"] {
    min-width: 8rem;
    max-width: 12rem;
}
.org-file {
    max-width: 12rem;
    font-size: 12px;
}
.org-mod .form-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.action-icon-download:hover { background: #ecfdf5; border-color: #6ee7b7; }
.action-icon-delete:hover { background: #fef2f2; border-color: #fca5a5; }
.action-icon-view:hover { background: #eff6ff; border-color: #93c5fd; }
.action-icon-review:hover { background: #f0fdf4; border-color: #86efac; }
.action-icon-requeue:hover { background: #fff7ed; border-color: #fdba74; }
.action-icon-video:hover { background: #f5f3ff; border-color: #c4b5fd; }
.action-icon.is-disabled { opacity: .35; cursor: not-allowed; border-style: dashed; }
table.data-table th.col-acciones,
table.data-table td.col-acciones {
    white-space: nowrap;
    width: 6.5rem;
    min-width: 6.5rem;
    text-align: center;
    vertical-align: middle;
}
table.data-table .row-actions,
.row-actions,
.inline-actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex-wrap: nowrap;
}
table.data-table .row-actions form,
table.data-table .row-actions-delete,
.row-actions form,
.inline-actions form {
    display: inline-flex;
    margin: 0;
    padding: 0;
}
.ofp-destinos-table .row-actions .action-icon,
.ofp-destinos-table .row-actions form .action-icon,
.ofp-catalog-table .row-actions .action-icon,
.ofp-catalog-table .row-actions form .action-icon {
    flex: 0 0 auto;
}
.concejo-actas-listar .col-icon { text-align: center; }
.concejo-actas-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px 16px; margin-bottom: 16px; }
.concejo-actas-filters label { margin: 0; font-size: 13px; }
.concejo-actas-filters select,
.concejo-actas-filters input[type="number"] { width: auto; min-width: 110px; }
.concejo-actas-filters .filter-periodo { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.concejo-actas-filters .filter-periodo-check { display: flex; align-items: center; gap: 6px; font-weight: 500; }
.concejo-actas-filters .filter-periodo-check input { width: auto; margin: 0; }
.decretos-libro-listar table.table-list-compact {
    table-layout: fixed;
    width: 100%;
}
.decretos-libro-listar table.table-alcaldicios .col-w-num { width: 6%; }
.decretos-libro-listar table.table-alcaldicios .col-w-fecha { width: 10%; }
.decretos-libro-listar table.table-alcaldicios .col-w-depto { width: 11%; }
.decretos-libro-listar table.table-alcaldicios .col-w-tipo { width: 13%; }
.decretos-libro-listar table.table-alcaldicios .col-w-materia { width: auto; }
.decretos-libro-listar table.table-alcaldicios .col-w-icon { width: 3.25rem; }
.decretos-libro-listar table.table-personal .col-w-num { width: 7%; }
.decretos-libro-listar table.table-personal .col-w-fecha { width: 11%; }
.decretos-libro-listar table.table-personal .col-w-tipo { width: 16%; }
.decretos-libro-listar table.table-personal .col-w-materia { width: auto; }
.decretos-libro-listar table.table-personal .col-w-icon { width: 3.25rem; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-ano { width: 6%; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-num { width: 6%; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-fecha { width: 9%; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-depto { width: 10%; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-tipo { width: 11%; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-materia { width: auto; }
.decretos-libro-listar table.table-buscar-alcaldicios .col-w-icon { width: 3.25rem; }
.decretos-libro-listar table.table-buscar-personal .col-w-ano { width: 6%; }
.decretos-libro-listar table.table-buscar-personal .col-w-num { width: 6%; }
.decretos-libro-listar table.table-buscar-personal .col-w-fecha { width: 10%; }
.decretos-libro-listar table.table-buscar-personal .col-w-tipo { width: 14%; }
.decretos-libro-listar table.table-buscar-personal .col-w-materia { width: auto; }
.decretos-libro-listar table.table-buscar-personal .col-w-icon { width: 3.25rem; }
.decretos-libro-listar .col-materia { overflow: hidden; font-size: 14px; }
.decretos-libro-listar .materia-ellipsis {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    line-height: 1.4;
}
.decretos-libro-listar .col-num,
.decretos-libro-listar .col-fecha { white-space: nowrap; }
.decretos-libro-listar .col-depto,
.decretos-libro-listar .col-tipo {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
}
.decretos-libro-listar .col-icon { text-align: center; padding: 6px 4px; vertical-align: middle; }
.decretos-libro-listar th.col-icon { font-size: 12px; text-align: center; padding: 8px 4px; }
.completitud-resumen {
    margin: 0 0 14px;
    padding: 12px 14px;
    background: #f8fafc;
    border: 1px solid var(--muni-border);
    border-left: 4px solid #64748b;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.45;
}
.completitud-resumen-titulo { margin: 0 0 6px; font-size: 13px; color: var(--muni-text); }
.completitud-resumen-list {
    margin: 0 0 8px;
    padding-left: 1.2rem;
}
.completitud-resumen-list li { margin-bottom: 4px; }
.completitud-resumen-nota {
    margin: 0;
    font-size: 12px;
    color: var(--muni-muted);
}
.completitud-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 4px;
}
.completitud-pill {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.35;
    white-space: nowrap;
    cursor: help;
}
.completitud-pill-info { background: #e0f2fe; color: #0369a1; }
.completitud-pill-warn { background: #fef3c7; color: #92400e; }
.detail-grid { display: grid; grid-template-columns: 160px 1fr; gap: 8px 16px; margin: 12px 0; }
.detail-grid dt { font-weight: 600; color: var(--muni-muted); }
.detail-grid dd { margin: 0; }
.hint { font-size: 13px; color: var(--muni-muted); margin: 8px 0 0; }
.pill { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.pill-ok { background: #dcfce7; color: #166534; }
.pill-warn { background: #fef3c7; color: #92400e; }
.pill-bad { background: #fee2e2; color: #991b1b; }
.upload-instructions {
    background: #f8fafc;
    border: 1px solid var(--muni-border);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 18px;
    font-size: 14px;
    line-height: 1.5;
}
.upload-instructions-title { margin: 0 0 10px; font-size: 14px; }
.upload-instructions-list {
    margin: 0;
    padding-left: 1.25rem;
}
.upload-instructions-list li { margin-bottom: 6px; }
.upload-instructions-list li:last-child { margin-bottom: 0; }
.search-form-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    margin-bottom: 4px;
}
.search-input-wide {
    flex: 1 1 280px;
    min-width: 200px;
    max-width: 100%;
}
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.empty-state {
    margin: 20px 0;
    padding: 24px;
    text-align: center;
    color: var(--muni-muted);
    background: #f8fafc;
    border-radius: 10px;
    border: 1px dashed var(--muni-border);
}
.upload-preview-panel {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--muni-border);
}
.upload-preview-panel h3 { margin: 0 0 8px; font-size: 16px; }

.admin-layout-wide { max-width: 1100px; }
.hint { color: var(--muni-muted); font-size: 14px; margin: 4px 0 0; }
.profile-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin-top: 16px; }
.profile-card {
    background: var(--muni-surface); border: 1px solid var(--muni-border); border-radius: 12px;
    padding: 18px; display: flex; flex-direction: column; gap: 10px;
}
.profile-card.is-off { opacity: .65; }
.profile-card-head h3 { margin: 0; font-size: 17px; }
.profile-slug { font-size: 12px; color: var(--muni-muted); background: #f1f5f9; padding: 2px 8px; border-radius: 6px; }
.profile-desc { margin: 0; font-size: 13px; color: var(--muni-muted); }
.profile-stats { display: flex; flex-wrap: wrap; gap: 12px; font-size: 13px; color: var(--muni-muted); }
.profile-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 8px; }
.pill-warn { background: #fef3c7; color: #92400e; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-grid .form-span-2 { grid-column: 1 / -1; }
.form-grid .hint { margin: 0; }
@media (max-width: 640px) { .form-grid { grid-template-columns: 1fr; } }
.profile-form label { display: block; margin-top: 12px; font-weight: 600; font-size: 13px; }
.profile-form input[type=text], .profile-form textarea, .profile-form select {
    width: 100%; margin-top: 6px; padding: 10px 12px; border: 1px solid var(--muni-border); border-radius: 8px;
}
.cap-item.is-inline { display: inline-flex; margin-top: 12px; padding: 8px 12px; }
.perm-module { margin: 16px 0; border: 1px solid var(--muni-border); border-radius: 10px; overflow: hidden; }
.perm-module summary {
    cursor: pointer; padding: 12px 16px; background: #f8fafc; font-weight: 600;
    display: flex; justify-content: space-between; align-items: center;
}
.perm-module .cap-grid { padding: 12px 16px 16px; }
.perm-count { font-size: 12px; color: var(--muni-muted); font-weight: 500; }
.perm-toolbar { display: flex; gap: 8px; margin-bottom: 12px; }
.sticky-actions { position: sticky; bottom: 0; background: var(--muni-surface); padding: 12px 0; border-top: 1px solid var(--muni-border); }

/* Numeración correlativa — huecos en listados */
.numeracion-panel { margin-top: 0; }
.numeracion-form { margin: 12px 0 16px; }
.numeracion-ano-sel {
    margin: 8px 0 12px;
    padding: 8px 0 10px;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--muni-ink, #1e3a8a);
    border-bottom: 2px solid var(--muni-border, #cbd5e1);
}
.numeracion-resumen { margin: 12px 0 6px; font-size: 15px; }
.numeracion-lista-texto {
    font-family: ui-monospace, Consolas, monospace;
    font-size: 13px;
    word-break: break-word;
    background: #f8fafc;
    padding: 10px 12px;
    border-radius: 8px;
    border: 1px solid var(--muni-border);
}
.numeracion-huecos {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}
.numeracion-chip {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    background: #fef3c7;
    color: #92400e;
    border: 1px solid #fcd34d;
    text-decoration: none;
}
a.numeracion-chip:hover { background: #fde68a; color: #78350f; }
.odc-upload-pendientes {
    margin: 0 0 16px;
    padding: 12px 14px;
    background: #f8fafc;
    border: 1px solid var(--muni-border);
    border-radius: 10px;
}
.compras-form .hint,
.odc-upload > .hint,
.numeracion-panel > .hint { margin: 0 0 14px; }

.movilizacion-listar .table-wrap { overflow-x: visible; }
.vehiculos-admin-listar .table-wrap { overflow-x: visible; }
.vehiculos-admin-listar .col-patente { width: 8.5rem; white-space: nowrap; }
    table-layout: fixed;
    width: 100%;
}
.movilizacion-listar .col-w-num { width: 4%; }
.movilizacion-listar .col-w-fecha { width: 8%; white-space: nowrap; }
.movilizacion-listar .col-w-tipo { width: 10%; }
.movilizacion-listar .col-w-numdoc { width: 7%; }
.movilizacion-listar .col-w-envia { width: 8%; }
.movilizacion-listar .col-w-materia { width: auto; min-width: 0; }
.movilizacion-listar .col-w-hora { width: 6%; white-space: nowrap; }
.movilizacion-listar .col-w-sit { width: 8%; }
.movilizacion-listar .col-icon { width: 3.25rem; text-align: center; }
.movilizacion-listar .col-materia .materia-ellipsis {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.movilizacion-listar td.col-monto,
.movilizacion-listar th.col-monto {
    text-align: right;
    white-space: nowrap;
}

.muni-dialog.card { padding: 0; }
.muni-dialog.card .form-row,
.muni-dialog.card h2 { padding-left: 1.25rem; padding-right: 1.25rem; }
.muni-dialog.card .form-actions {
    padding: .85rem 1.25rem 1.15rem;
    background: #f8fafc;
    border-top: 1px solid var(--muni-border);
    margin: 0;
}

/* Diálogos modales (confirmación / formularios) — ver MuniUI arriba */
.muni-dialog--plain {
    padding: 1.25rem;
}
.muni-dialog--plain .muni-dialog__text { padding-left: 1.25rem; }

/* Centro de ayuda — FAQ y manual */
.help-layout {
    display: grid;
    grid-template-columns: minmax(220px, 280px) 1fr;
    gap: 20px;
    align-items: start;
}
@media (max-width: 800px) {
    .help-layout { grid-template-columns: 1fr; }
}
.help-layout--faq .help-main { max-width: 920px; }
.help-sidebar { position: sticky; top: 12px; }
.help-sidebar h2 { margin: 0 0 12px; font-size: 16px; }
.help-sidebar-cta { margin-top: 16px; }
.btn-block { display: block; width: 100%; text-align: center; }
.help-toc ul { list-style: none; margin: 0; padding: 0; }
.help-toc li { margin: 4px 0; }
.help-toc a {
    display: block;
    padding: 6px 10px;
    border-radius: 8px;
    text-decoration: none;
    color: var(--muni-text);
    font-size: 14px;
}
.help-toc a:hover { background: #f1f5f9; }
.help-toc a.is-active {
    background: #eff6ff;
    color: var(--muni-primary);
    font-weight: 600;
}
.help-toc-part { margin-bottom: 14px; }
.help-toc-part-title {
    margin: 0 0 6px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muni-muted);
}
.help-intro { margin-bottom: 0; }
.help-intro--simple { padding: 20px 22px; }
.help-intro-title { margin: 0 0 10px; font-size: 22px; line-height: 1.3; }
.help-intro-lead { margin: 0; font-size: 16px; line-height: 1.6; color: var(--muni-text); }
.help-soporte-cta { margin-top: 16px; }
.help-soporte-cta h2 { margin: 0 0 8px; font-size: 17px; }
.help-soporte-cta--prominent {
    border: 2px solid #93c5fd;
    background: linear-gradient(180deg, #eff6ff 0%, #fff 100%);
}
.help-soporte-cta-inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.help-soporte-actions { margin: 0; flex-shrink: 0; }
.help-quick-nav { margin-top: 16px; }
.help-quick-nav h2 { margin: 0 0 10px; font-size: 17px; }
.help-quick-links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 8px;
}
.help-quick-links a {
    display: block;
    padding: 10px 12px;
    border: 1px solid var(--muni-border);
    border-radius: 10px;
    text-decoration: none;
    font-weight: 600;
    background: #fff;
}
.help-quick-links a:hover { background: #f1f5f9; }
.help-admin-note { margin-top: 8px; }
.help-admin-note h2 { margin: 0 0 8px; font-size: 17px; }
.faq-section { margin-bottom: 28px; }
.faq-section > h2 { margin: 0 0 14px; font-size: 20px; }
.faq-item {
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    margin-bottom: 10px;
    background: var(--muni-surface);
    overflow: hidden;
}
.faq-item summary {
    cursor: pointer;
    padding: 16px 18px;
    font-weight: 600;
    font-size: 16px;
    line-height: 1.45;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item[open] summary { background: #f8fafc; border-bottom: 1px solid var(--muni-border); }
.faq-q { flex: 1 1 200px; }
.faq-a {
    padding: 16px 18px 18px;
    border-top: 1px solid var(--muni-border);
    background: #f8fafc;
    font-size: 15px;
    line-height: 1.65;
}
.faq-a-lead { margin: 0 0 12px; }
.faq-a-action { margin: 16px 0 0; }
.faq-pasos {
    margin: 0;
    padding-left: 1.35rem;
}
.faq-pasos li { margin: 0 0 10px; }
.faq-pasos li:last-child { margin-bottom: 0; }
.help-first-visit {
    margin: 0 0 20px;
    padding: 16px 18px;
    border: 1px solid #93c5fd;
    border-radius: 12px;
    background: #eff6ff;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 16px;
}
.help-first-visit[hidden] { display: none !important; }
.help-first-visit-text { margin: 0; flex: 1 1 280px; font-size: 15px; line-height: 1.5; }
.help-first-visit-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.manual-part { margin: 28px 0 0; }
.manual-part-title {
    margin: 0 0 12px;
    font-size: 20px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--muni-border);
}
.help-chapter { margin-bottom: 16px; }
.help-chapter-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    margin-bottom: 8px;
}
.help-chapter-head h3 { margin: 0; font-size: 17px; flex: 1 1 200px; }
.help-chapter h4 { margin: 16px 0 8px; font-size: 14px; color: var(--muni-muted); }
.help-chapter-anchor { margin-top: 12px; }
.help-link-list { margin: 8px 0 0; padding-left: 20px; }
.help-link-list li { margin: 4px 0; }
.help-status-pill {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 3px 8px;
    border-radius: 999px;
    white-space: nowrap;
}
.help-status--pending { background: #f1f5f9; color: #64748b; }
.help-status--draft { background: #fef3c7; color: #92400e; }
.help-status--ok { background: #dcfce7; color: #166534; }

.ayuda-aviso-pill {
    background: #dbeafe;
    border-color: #3b82f6;
    color: #1e40af;
    font-weight: 600;
    animation: ayuda-pulse 2s ease-in-out infinite;
}
.ayuda-badge-nuevo {
    background: #fef08a;
    color: #854d0e;
    font-size: 11px;
}
tr.ayuda-fila-nueva td {
    background: #fffbeb;
}
@keyframes ayuda-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.35); }
    50% { box-shadow: 0 0 0 6px rgba(59, 130, 246, 0); }
}

/* ================================================================
 * Ley Karin (21.643) — resumen legal, tabs formal/informativo, formulario extendido
 * ================================================================ */
.ley-karin-legal {
    border-left: 4px solid #be123c;
}
.ley-karin-legal summary {
    cursor: pointer;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    padding: 2px 0;
}
.ley-karin-legal summary::-webkit-details-marker { display: none; }
.ley-karin-legal-badge {
    display: inline-block;
    background: #fff1f2;
    color: #be123c;
    font-size: 12px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 999px;
    white-space: nowrap;
}
.ley-karin-legal-title {
    flex: 1 1 260px;
    font-weight: 700;
    font-size: 15px;
    color: var(--muni-text);
}
.ley-karin-legal-toggle {
    font-size: 12px;
    font-weight: 600;
    color: var(--muni-primary);
    white-space: nowrap;
}
.ley-karin-legal[open] .ley-karin-legal-toggle { visibility: hidden; }
.ley-karin-legal[open] .ley-karin-legal-toggle::before {
    content: 'Ocultar detalle';
    visibility: visible;
}
.ley-karin-legal-body {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--muni-border);
    font-size: 14px;
    line-height: 1.55;
}
.ley-karin-legal-body h4 {
    margin: 0 0 8px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muni-muted);
}
.ley-karin-legal-body ul {
    margin: 0;
    padding-left: 1.2rem;
}
.ley-karin-legal-body li { margin-bottom: 4px; }
.ley-karin-legal-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 16px 24px;
    margin: 12px 0;
}

.ley-karin-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 0 0 22px;
}
@media (max-width: 640px) {
    .ley-karin-tabs { grid-template-columns: 1fr; }
}
.ley-karin-tab {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    margin: 0;
    padding: 16px 18px;
    border: 1px solid rgba(45, 90, 84, 0.18);
    border-radius: 14px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.72);
    color: #4a5c58;
    transition: background .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.ley-karin-tab input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ley-karin-tab-title {
    font-family: "Source Sans 3", "Segoe UI", sans-serif;
    font-size: 1.05rem;
    font-weight: 700;
    color: #1f3531;
}
.ley-karin-tab-desc {
    font-size: 0.88rem;
    font-weight: 500;
    color: #5f736e;
    line-height: 1.35;
}
.ley-karin-tab:hover {
    border-color: rgba(45, 90, 84, 0.35);
    transform: translateY(-1px);
}
.ley-karin-tab.is-active {
    background: linear-gradient(145deg, #e8f3ef 0%, #f4faf7 100%);
    border-color: #3d7a6e;
    box-shadow: 0 8px 22px rgba(45, 90, 84, 0.12);
}
.ley-karin-tab.is-active .ley-karin-tab-title { color: #1a4a42; }
.ley-karin-tab.is-active .ley-karin-tab-desc { color: #3d635b; }

/* —— Canal de denuncias (intranet): presentación acogedora —— */
.ley-karin-public-page {
    background:
        radial-gradient(1000px 480px at 10% -5%, rgba(61, 122, 110, 0.28), transparent 55%),
        radial-gradient(900px 420px at 95% 10%, rgba(196, 164, 120, 0.22), transparent 50%),
        linear-gradient(165deg, #d9e8e3 0%, #efe8dc 48%, #f7f3ea 100%) !important;
    min-height: 100vh;
}
.ley-karin-canal {
    --lk-ink: #1f3531;
    --lk-muted: #5a6f6a;
    --lk-sage: #2d5a54;
    --lk-sage-soft: #e8f3ef;
    --lk-sand: #f3efe6;
    --lk-paper: #fffcf7;
    --lk-line: rgba(45, 90, 84, 0.14);
    font-family: "Source Sans 3", "Segoe UI", sans-serif;
    color: var(--lk-ink);
    max-width: min(1080px, 100%);
    margin: 0 auto 2rem;
    padding: clamp(1.25rem, 3vw, 2rem);
    border-radius: 22px;
    background:
        radial-gradient(1200px 420px at 8% -10%, rgba(61, 122, 110, 0.16), transparent 55%),
        radial-gradient(900px 380px at 100% 0%, rgba(196, 164, 120, 0.18), transparent 50%),
        linear-gradient(180deg, var(--lk-sand) 0%, var(--lk-paper) 42%, #fff 100%);
    border: 1px solid var(--lk-line);
    box-shadow: 0 18px 40px rgba(31, 53, 49, 0.08);
    animation: ley-karin-fade-in .45s ease both;
}
@keyframes ley-karin-fade-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: none; }
}
.ley-karin-canal-hero {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem 1.5rem;
    margin-bottom: 1.15rem;
}
.ley-karin-canal-kicker {
    margin: 0 0 0.35rem;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--lk-sage);
}
.ley-karin-canal-title {
    margin: 0 0 0.55rem;
    font-family: Fraunces, Georgia, serif;
    font-weight: 650;
    font-size: clamp(1.75rem, 3.2vw, 2.35rem);
    line-height: 1.15;
    color: var(--lk-ink);
    letter-spacing: -0.02em;
}
.ley-karin-canal-lead {
    margin: 0;
    max-width: 40rem;
    font-size: 1.05rem;
    line-height: 1.55;
    color: var(--lk-muted);
}
.ley-karin-canal-back {
    background: rgba(255, 255, 255, 0.75) !important;
    border-color: var(--lk-line) !important;
    color: var(--lk-sage) !important;
}
.ley-karin-canal-reassure {
    margin: 0 0 1.25rem;
    padding: 0.95rem 1.15rem;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.78);
    border: 1px solid var(--lk-line);
    border-left: 4px solid #3d7a6e;
}
.ley-karin-canal-reassure p {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.5;
    color: var(--lk-muted);
}
.ley-karin-canal-reassure strong { color: var(--lk-ink); }

.ley-karin-canal .ley-karin-form.form-grid {
    display: block;
    background: rgba(255, 255, 255, 0.62);
    border: 1px solid var(--lk-line);
    border-radius: 18px;
    padding: clamp(1rem, 2.4vw, 1.5rem);
}
.ley-karin-section {
    margin: 0 0 1.15rem !important;
    padding: 1.15rem 1.2rem 1.2rem !important;
    border: 1px solid var(--lk-line) !important;
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(255, 252, 247, 0.95), rgba(255, 255, 255, 0.9));
    box-shadow: 0 6px 18px rgba(31, 53, 49, 0.04);
}
.ley-karin-section:first-of-type { margin-top: 0 !important; }
.ley-karin-section-head {
    display: flex;
    gap: 0.85rem;
    align-items: flex-start;
    margin-bottom: 0.85rem;
}
.ley-karin-step {
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: Fraunces, Georgia, serif;
    font-weight: 650;
    font-size: 1rem;
    color: #fff;
    background: linear-gradient(145deg, #3d7a6e, #2d5a54);
    box-shadow: 0 4px 12px rgba(45, 90, 84, 0.28);
}
.ley-karin-section-head h3 {
    margin: 0 0 0.2rem !important;
    font-family: Fraunces, Georgia, serif;
    font-size: 1.2rem !important;
    font-weight: 650;
    color: var(--lk-ink);
    text-transform: none;
    letter-spacing: -0.01em;
}
.ley-karin-section-sub {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.4;
    color: var(--lk-muted);
}
.ley-karin-optional {
    font-family: "Source Sans 3", sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lk-muted);
}
.ley-karin-canal .ley-karin-form label {
    color: #2c403c;
    font-weight: 600;
}
.ley-karin-canal .ley-karin-form input,
.ley-karin-canal .ley-karin-form select,
.ley-karin-canal .ley-karin-form textarea {
    border-radius: 10px;
    border-color: rgba(45, 90, 84, 0.22);
    background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ley-karin-canal .ley-karin-form input:focus,
.ley-karin-canal .ley-karin-form select:focus,
.ley-karin-canal .ley-karin-form textarea:focus {
    border-color: #3d7a6e;
    box-shadow: 0 0 0 3px rgba(61, 122, 110, 0.18);
    outline: none;
}
.ley-karin-form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem 1.25rem;
    margin-top: 0.5rem !important;
    padding: 1rem 0.25rem 0.25rem !important;
    border-top: 1px solid var(--lk-line) !important;
}
.ley-karin-form-actions-hint {
    margin: 0;
    flex: 1 1 220px;
    font-size: 0.9rem;
    color: var(--lk-muted);
    line-height: 1.4;
}
.ley-karin-submit {
    min-width: 220px;
    border: none !important;
    border-radius: 999px !important;
    padding: 0.75rem 1.4rem !important;
    font-weight: 700 !important;
    background: linear-gradient(145deg, #3d7a6e, #2d5a54) !important;
    box-shadow: 0 10px 24px rgba(45, 90, 84, 0.28);
}
.ley-karin-submit:hover {
    filter: brightness(1.05);
}

.ley-karin-public-card {
    max-width: min(1120px, 100%);
    width: 100%;
    margin: 24px auto;
    text-align: left;
    background:
        radial-gradient(900px 320px at 0% 0%, rgba(61, 122, 110, 0.2), transparent 55%),
        linear-gradient(165deg, #f3efe6 0%, #fffcf7 45%, #ffffff 100%);
    border: 1px solid rgba(45, 90, 84, 0.16);
    box-shadow: 0 18px 48px rgba(31, 53, 49, 0.14);
    color: #1f3531;
    padding: 28px 32px 26px;
    border-radius: 20px;
    font-family: "Source Sans 3", "Segoe UI", sans-serif;
}
.ley-karin-public-card h1 {
    color: #1f3531;
    font-family: Fraunces, Georgia, serif;
    font-size: clamp(1.7rem, 2.6vw, 2.15rem);
    margin: 10px 0 8px;
    font-weight: 650;
}
.ley-karin-public-card .login-badge {
    background: #e8f3ef;
    color: #1a4a42;
    border: 1px solid rgba(45, 90, 84, 0.2);
}
.ley-karin-public-card .subtitle {
    color: #5a6f6a;
    max-width: 52rem;
    margin-left: auto;
    margin-right: auto;
    line-height: 1.55;
}
.ley-karin-public-card h1,
.ley-karin-public-card .login-badge,
.ley-karin-public-card .subtitle {
    text-align: center;
}
.ley-karin-public-card label,
.ley-karin-public-card .form-section h3,
.ley-karin-public-card .hint {
    color: #2c403c;
}
.ley-karin-public-card .form-section {
    border-top-color: rgba(45, 90, 84, 0.14);
}
.ley-karin-public-card .form-actions {
    border-top-color: rgba(45, 90, 84, 0.14);
}
.ley-karin-public-card input,
.ley-karin-public-card select,
.ley-karin-public-card textarea {
    background: #fff;
    color: #0f172a;
    border-color: rgba(45, 90, 84, 0.22);
}
.ley-karin-public-card .alert-info,
.ley-karin-public-card .alert-warn,
.ley-karin-public-card .alert-ok,
.ley-karin-public-card .alert-error {
    color: #0f172a;
}
.ley-karin-public-card a { color: #2d5a54; }
.ley-karin-public-card .ley-karin-tab {
    background: rgba(255, 255, 255, 0.75);
    border-color: rgba(45, 90, 84, 0.18);
    color: #4a5c58;
}
.ley-karin-public-card .ley-karin-tab.is-active {
    background: linear-gradient(145deg, #e8f3ef 0%, #f4faf7 100%);
    border-color: #3d7a6e;
    color: #1a4a42;
}
.ley-karin-form .form-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 18px;
}
@media (max-width: 720px) {
    .ley-karin-form .form-row { grid-template-columns: 1fr; }
}

/* El .form-grid genérico (línea ~995) se reutiliza en muchos formularios con distinto número
 * de columnas (ver .profile-form más abajo, 2 columnas). Para Ley Karin forzamos SIEMPRE una
 * sola columna en flujo de bloque: evita que un elemento (p. ej. el botón enviar) quede solo
 * en la 2ª columna y se estire verticalmente por el "align-items: stretch" por defecto de
 * CSS Grid, generando un bloque de color gigante y vacío alrededor del botón.
 */
.ley-karin-form.form-grid {
    display: block;
}
.ley-karin-form .form-section + .form-section { margin-top: 18px; }
.ley-karin-form .form-actions {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--muni-border);
}
.ley-karin-form .form-actions .btn-primary {
    min-width: 200px;
}

.form-section {
    margin: 18px 0;
    padding-top: 16px;
    border-top: 1px solid var(--muni-border);
}
.form-section:first-of-type { margin-top: 4px; padding-top: 0; border-top: none; }
.form-section h3 { margin: 0 0 10px; font-size: 15px; }

@media (max-width: 480px) {
    .ley-karin-public-card { padding: 22px 16px 20px; margin: 12px auto; }
    .ley-karin-form .form-actions .btn-primary { width: 100%; }
    .ley-karin-canal { padding: 1rem; border-radius: 16px; }
}

/* Adjuntos cifrados (Ley Karin y similares) */
.adjuntos-list { list-style: none; margin: 10px 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.adjunto-item {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 8px 12px; border: 1px solid var(--muni-border); border-radius: 8px; background: #f8fafc;
    font-size: 13px; flex-wrap: wrap;
}
.adjunto-nombre { font-weight: 600; }
.adjunto-meta { color: var(--muni-muted); font-size: 12px; }
.adjunto-actions { display: flex; gap: 6px; align-items: center; }

.check-inline {
    display: flex !important;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 500;
    margin: 10px 0 !important;
    cursor: pointer;
}
.check-inline input[type="checkbox"] { width: auto; margin: 0; }
.check-inline-aligned { margin-top: 26px !important; }
.check-group { margin: 10px 0; }
.check-group-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 6px;
}
.check-group .check-inline { display: inline-flex !important; margin: 0 16px 6px 0 !important; }

/* Informática reporte + ítems 4/5/8 */
.informatica-report-lead { margin-bottom: 1rem; max-width: 72ch; }
.informatica-report-grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr; }
@media (min-width: 1100px) { .informatica-report-grid { grid-template-columns: 1fr 1fr; } }
.informatica-report-card { padding: 0; overflow: hidden; }
.informatica-report-card-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 14px 16px 10px; border-bottom: 1px solid var(--muni-border);
    background: linear-gradient(180deg, #f8fafc 0%, #fff 100%);
}
.informatica-report-card-head h2 { margin: 0; font-size: 1.05rem; }
.informatica-report-badge {
    font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
    padding: 4px 10px; border-radius: 999px; background: #dbeafe; color: #1d4ed8;
}
.informatica-report-badge.is-alert { background: #fee2e2; color: #b91c1c; }
.informatica-report-frame-wrap { background: #0f172a; min-height: 420px; max-height: 72vh; overflow: auto; }
.informatica-report-frame { display: block; width: 100%; min-height: 420px; height: 72vh; border: 0; background: #fff; }
.informatica-report-foot { margin-top: 12px; }
.toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}
.compras-listar .toolbar select,
.compras-listar .toolbar input[type="search"] {
    width: auto;
}
.compras-listar .toolbar input[type="search"] {
    min-width: 14rem;
    max-width: 22rem;
}
.compras-listar .col-fecha { text-align: center; }
.compras-listar .col-estado { min-width: 7.5rem; white-space: nowrap; word-break: keep-all; }
.compras-listar .col-w-estado { width: 96px; }
.compras-listar .col-icon { width: 44px; text-align: center; }
.bodega-inventario-listar .toolbar input[type="search"] {
    width: auto;
    min-width: 16rem;
}
.bodega-inventario-listar .col-num { text-align: right; white-space: nowrap; }
.bodega-inventario-listar .col-fecha { text-align: center; white-space: nowrap; }
.bodega-inventario-listar .col-icon { text-align: center; width: 3.25rem; }
.bodega-inventario-listar td.is-low-stock { color: var(--muni-warn); font-weight: 700; }
.contratos-listar .col-w-depto { width: 16rem; }
.contratos-listar .table-wrap-fit { overflow-x: hidden; width: 100%; }
.contratos-listar table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.contratos-listar table.table-list-compact th,
.contratos-listar table.table-list-compact td {
    padding: 8px 10px;
    vertical-align: top;
}
.contratos-listar .col-num { width: 3.5rem; white-space: nowrap; text-align: center; }
.contratos-listar .col-fecha { width: 8.25rem; white-space: nowrap; text-align: center; }
.contratos-listar .col-monto { width: 8.5rem; text-align: right; white-space: nowrap; }
.contratos-listar .col-depto { width: 16rem; white-space: nowrap; }
.contratos-listar .col-estado { width: 11rem; max-width: none; white-space: nowrap; word-break: normal; text-align: center; }
.contratos-listar .col-icon { width: 3.25rem; text-align: center; }
.contratos-listar .col-materia { white-space: normal; word-break: break-word; }
.contratos-listar th.col-fecha,
.contratos-listar td.col-fecha,
.contratos-listar th.col-estado,
.contratos-listar td.col-estado,
.contratos-listar th.col-num,
.contratos-listar td.col-num,
.contratos-listar th.col-icon,
.contratos-listar td.col-icon {
    text-align: center;
}
.contratos-listar th.col-monto,
.contratos-listar td.col-monto {
    text-align: right;
}
.contratos-listar td.col-fecha,
.contratos-listar td.col-icon,
.contratos-listar td.col-num,
.contratos-listar td.col-monto,
.contratos-listar td.col-estado {
    vertical-align: middle;
}
.subrogancia-upload-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; max-width: 220px; }
.subrogancia-upload-label { display: flex; flex-direction: column; gap: 2px; font-size: 12px; }
.formatos-reemplazar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.becas-listar .beca-total-num { font-weight: 700; font-variant-numeric: tabular-nums; }
.compras-correlativos-alert {
    margin: 0 0 12px; padding: 10px 12px; border: 1px solid #fecaca; border-radius: 10px; background: #fff7ed;
}
.numeracion-chip.is-alert { background: #fef2f2; border-color: #fca5a5; color: #b91c1c; font-weight: 700; }
tr.row-correlativo-salto td.col-num { box-shadow: inset 3px 0 0 #f59e0b; }
a.th-sort { color: inherit; text-decoration: none; font-weight: 700; }
a.th-sort:hover { color: #2563eb; text-decoration: underline; }
.proyectos-listar .table-wrap-fit { overflow-x: hidden; width: 100%; }
.proyectos-listar table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.proyectos-listar table.table-list-compact th,
.proyectos-listar table.table-list-compact td {
    padding: 8px 10px;
    vertical-align: top;
}
.proyectos-listar .col-icon { width: 3.25rem; text-align: center; }
.proyectos-listar .col-proyecto { white-space: normal; word-break: break-word; }
.proyectos-listar .col-cuenta,
.proyectos-listar .col-bip { white-space: nowrap; font-variant-numeric: tabular-nums; }
.proyectos-listar .col-bip a { text-decoration: none; }
.proyectos-listar .col-bip a:hover { text-decoration: underline; }
.proyectos-listar .col-monto { text-align: right; white-space: nowrap; width: 8.5rem; }
.permisos-saldos-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.saldo-card {
    border: 1px solid var(--muni-border); border-radius: 12px; padding: 14px 16px; background: #fff;
    border-top: 4px solid var(--saldo-accent, #2563eb);
}
.saldo-card h3 { margin: 0 0 8px; font-size: .95rem; color: #475569; }
.saldo-big { margin: 0 0 10px; font-size: 2rem; font-weight: 800; color: var(--saldo-accent, #2563eb); line-height: 1.1; }
.saldo-big span { display: block; font-size: .8rem; font-weight: 600; color: #64748b; margin-top: 4px; }
.saldo-mini { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0; }
.saldo-mini div { text-align: center; }
.saldo-mini dt { font-size: 11px; color: #64748b; margin: 0; }
.saldo-mini dd { margin: 2px 0 0; font-weight: 700; font-size: 1rem; }

/* Modo consulta / solo lectura */
.muni-readonly-banner {
    position: sticky;
    top: 0;
    z-index: 9999;
    background: #0f766e;
    color: #ecfdf5;
    text-align: center;
    padding: 10px 16px;
    font-size: 0.95rem;
    line-height: 1.4;
    box-shadow: 0 2px 8px rgba(15, 118, 110, 0.35);
}
.muni-readonly-banner strong { color: #fff; }

/* Rese�a Ley 18.695 art. 29 ? men� Direcci�n de Control */
.control-ley-banner {
    margin: 0 0 14px;
    padding: 14px 16px;
    border-radius: 12px;
    border: 1px solid #0f766e;
    border-left: 5px solid #0f766e;
    background: linear-gradient(180deg, #ecfdf5 0%, #f0fdfa 100%);
    color: #134e4a;
}
.control-ley-banner__kicker {
    margin: 0 0 4px;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 700;
    color: #0f766e;
}
.control-ley-banner__titulo {
    display: block;
    margin: 0 0 8px;
    font-size: 1.05rem;
    color: #115e59;
}
.control-ley-banner p {
    margin: 0 0 8px;
    font-size: 0.92rem;
    line-height: 1.45;
}
.control-ley-banner p:last-child { margin-bottom: 0; }
.menu-section--control .section-head h2 {
    color: #115e59;
}
body.muni-readonly form button[type="submit"],
body.muni-readonly form input[type="submit"],
body.muni-readonly .btn-primary,
body.muni-readonly .btn-accent,
body.muni-readonly .btn-danger,
body.muni-readonly button.btn-primary,
body.muni-readonly a.btn-primary[href*="eliminar"],
body.muni-readonly a.btn-primary[href*="borrar"] {
    pointer-events: none !important;
    opacity: 0.45 !important;
    cursor: not-allowed !important;
}
body.muni-readonly input[type="file"] {
    pointer-events: none !important;
    opacity: 0.45 !important;
}
/* Permitir Salir y navegación */
body.muni-readonly .user-bar a.btn,
body.muni-readonly a.btn-sm[href*="logout"],
body.muni-readonly a.btn-sm[href*="index.php"] {
    pointer-events: auto !important;
    opacity: 1 !important;
    cursor: pointer !important;
}
/* Gestión usuarios v2 — campos de contraseña con botón mostrar/ocultar */
.gestion-usuarios .password-field,
#form-editar-usuario .password-field,
#form-crear-usuario .password-field {
  display: flex;
  align-items: stretch;
  gap: 0;
  position: relative;
}
.gestion-usuarios .password-field input,
#form-editar-usuario .password-field input,
#form-crear-usuario .password-field input {
  flex: 1 1 auto;
  width: 100%;
  padding-right: 2.6rem;
}
.gestion-usuarios .btn-password-toggle,
#form-editar-usuario .btn-password-toggle,
#form-crear-usuario .btn-password-toggle {
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 4px 8px;
  line-height: 1;
  font-size: 1rem;
  color: #334155;
  border-radius: 4px;
}
.gestion-usuarios .btn-password-toggle:hover,
#form-editar-usuario .btn-password-toggle:hover,
#form-crear-usuario .btn-password-toggle:hover,
.gestion-usuarios .btn-password-toggle:focus-visible,
#form-editar-usuario .btn-password-toggle:focus-visible,
#form-crear-usuario .btn-password-toggle:focus-visible {
  background: rgba(15, 23, 42, 0.08);
  outline: none;
}
.gestion-usuarios .password-change-block,
#form-editar-usuario .password-change-block {
  border: 1px solid #dbe3ef;
  border-radius: 8px;
  padding: 12px 14px 14px;
  margin: 4px 0 8px;
  grid-column: 1 / -1;
}
.gestion-usuarios .password-change-block legend,
#form-editar-usuario .password-change-block legend {
  padding: 0 6px;
  font-weight: 600;
  color: #0f172a;
}

/* Informes SUBDERE (Finanzas) — tablas a ancho completo, sin scroll horizontal */
.module-body:has(.informes-subdere),
.module-body.informes-subdere,
.module-body:has(.daf-consulta-listar),
.module-body.daf-consulta-listar,
.module-body:has(.formatos-doc-listar),
.module-body.formatos-doc-listar,
.module-body:has(.rentas-listar),
.module-body.rentas-listar {
    max-width: min(1680px, 100%);
    padding-left: 16px;
    padding-right: 16px;
}

.formatos-doc-listar .table-wrap {
  width: 100%;
  overflow-x: auto;
}
.formatos-doc-listar table.formatos-table {
  table-layout: fixed;
  width: 100%;
  font-size: 0.9rem;
  border-collapse: collapse;
}
.formatos-doc-listar table.formatos-table th,
.formatos-doc-listar table.formatos-table td {
  padding: 0.55rem 0.65rem;
  vertical-align: middle;
  border-bottom: 1px solid #e2e8f0;
}
.formatos-doc-listar table.formatos-table thead th {
  background: #0f2744;
  color: #fff;
  font-weight: 600;
  text-align: left;
  white-space: nowrap;
}
.formatos-doc-listar .col-nombre { width: 38%; }
.formatos-doc-listar .col-estado { width: 7.5rem; text-align: center; }
.formatos-doc-listar .col-icon { width: 5.5rem; text-align: center; }
.formatos-doc-listar .col-uso { width: 9.5rem; text-align: center; }
.formatos-doc-listar .col-acciones { width: 22%; }
.formatos-doc-listar .col-nombre .fmt-name {
  display: block;
  font-weight: 600;
  color: #0f2744;
  line-height: 1.3;
  word-break: break-word;
}
.formatos-doc-listar .col-nombre .fmt-file {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.78rem;
  color: #64748b;
  font-weight: 400;
}
.formatos-doc-listar .file-input-compact {
  max-width: 100%;
  width: 100%;
  font-size: 0.75rem;
}
.formatos-doc-listar .formatos-reemplazar {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: nowrap;
  margin: 0;
  max-width: 100%;
}
.formatos-doc-listar .formatos-reemplazar .action-icon {
  flex: 0 0 auto;
}
.formatos-doc-listar .formatos-reemplazar .file-input-compact {
  flex: 1 1 auto;
  min-width: 0;
}
.formatos-doc-listar .pill {
  display: inline-block;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
}
.formatos-doc-listar .pill-ok { background: #dcfce7; color: #166534; }
.formatos-doc-listar .pill-neutral { background: #f1f5f9; color: #475569; }
.formatos-doc-listar a.fmt-uso {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: #1e4a7a;
  text-decoration: none;
  padding: 0.25rem 0.45rem;
  border-radius: 6px;
  background: #e8eef6;
}
.formatos-doc-listar a.fmt-uso:hover { background: #d7e4f4; }
@media (max-width: 900px) {
  .formatos-doc-listar .col-uso { width: 7rem; }
  .formatos-doc-listar .col-acciones { width: 30%; }
}

.rentas-listar .table-wrap { width: 100%; overflow-x: visible; }
.rentas-listar table.data,
.rentas-listar table.data-table { width: 100%; font-size: 13.5px; }
.informes-subdere .table-wrap {
    overflow-x: hidden;
    width: 100%;
}
.informes-subdere .informes-subdere-table {
    width: 100%;
    table-layout: auto;
}
.informes-subdere .row-actions {
    display: inline-flex;
    gap: 0.35rem;
    align-items: center;
    flex-wrap: nowrap;
}

/* Listados Control / Concejo / OFP — anchos estables, sin scroll horizontal */
.module-body:has(.control-compras-listar),
.module-body:has(.control-contratos-listar),
.module-body:has(.control-consultas-listar),
.module-body:has(.concejo-solicitudes-listar),
.module-body:has(.decretos-faltantes) {
    max-width: min(1600px, 100%);
}

.ofp-bandeja table.table-list-compact .col-num { width: 4.5rem; white-space: nowrap; }
.ofp-bandeja table.table-list-compact .col-fecha { width: 7.5rem; white-space: nowrap; }
.ofp-bandeja table.table-list-compact th.ofp-priority,
.ofp-bandeja table.table-list-compact td.ofp-priority { width: 12px; padding: 0; }
.ofp-bandeja table.table-list-compact td:nth-child(4) { width: 9rem; }
.ofp-bandeja table.table-list-compact td:nth-child(5) { width: 11rem; }
.ofp-bandeja table.table-list-compact td:nth-child(7) { width: 9rem; }
.ofp-bandeja table.table-list-compact td:last-child { width: auto; min-width: 7.5rem; white-space: nowrap; }

.concejo-actas-listar table.table-list-compact,
.concejo-fechas-listar table.table-list-compact,
.concejo-solicitudes-listar table.table-list-compact,
.control-consultas-listar table.table-list-compact,
.control-compras-listar table.table-list-compact,
.control-contratos-listar table.table-list-compact,
.decretos-faltantes table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.concejo-actas-listar table.data-table.table-list-compact,
.concejo-fechas-listar table.data-table.table-list-compact {
    table-layout: fixed;
    width: 36rem;
    max-width: 100%;
}
.concejo-actas-listar,
.concejo-fechas-listar {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}
.concejo-actas-listar .table-wrap-fit,
.concejo-fechas-listar .table-wrap-fit {
    width: auto;
    max-width: 100%;
    overflow-x: auto;
}

.concejo-actas-listar .col-w-fecha,
.concejo-actas-listar th.col-fecha,
.concejo-actas-listar td.col-fecha {
    width: 8.5rem;
    white-space: nowrap;
}
.concejo-actas-listar .col-w-periodo,
.concejo-actas-listar th.col-periodo,
.concejo-actas-listar td.col-periodo {
    width: 8rem;
    white-space: nowrap;
}
.concejo-actas-listar .col-w-sesion,
.concejo-actas-listar th.col-sesion,
.concejo-actas-listar td.col-sesion {
    width: 5.5rem;
    text-align: center;
    white-space: nowrap;
}
.concejo-actas-listar .col-w-icon,
.concejo-actas-listar th.col-icon,
.concejo-actas-listar td.col-icon,
.concejo-actas-listar .col-icon {
    width: 3.6rem;
    text-align: center;
    white-space: nowrap;
    padding-left: 4px;
    padding-right: 4px;
}
.concejo-solicitudes-listar .table-wrap-fit,
.control-consultas-listar .table-wrap-fit,
.control-compras-listar .table-wrap-fit,
.control-contratos-listar .table-wrap-fit,
.decretos-faltantes .table-wrap-fit {
    overflow-x: hidden;
    width: 100%;
}

.concejo-fechas-listar .col-w-icon { width: 3.25rem; }
.concejo-fechas-listar .col-w-fecha { width: 7.5rem; white-space: nowrap; }
.concejo-fechas-listar .col-w-num { width: 5rem; white-space: nowrap; }
.concejo-fechas-listar .col-w-depto { width: 7.5rem; white-space: nowrap; }
.concejo-fechas-listar td { white-space: nowrap; width: 1%; }

.concejo-solicitudes-listar .col-w-fecha,
.control-consultas-listar .col-fecha { width: 7.5rem; white-space: nowrap; }
.concejo-solicitudes-listar .col-w-sesion { width: 11rem; }
.concejo-solicitudes-listar .col-w-depto { width: 9rem; }
.concejo-solicitudes-listar .col-w-estado { width: 8rem; }
.concejo-solicitudes-listar .col-w-icon,
.concejo-solicitudes-listar .col-icon { width: 3.25rem; text-align: center; }
.concejo-solicitudes-listar table.table-list-compact {
    table-layout: auto;
    width: 100%;
    max-width: 100%;
    font-size: 13px;
}
.concejo-concejal-list {
    list-style: none;
    margin: 0 0 0.75rem;
    padding: 0;
    display: grid;
    gap: 0.25rem;
}
.concejo-concejal-list label { font-weight: normal; }
.concejo-copia-concejales { margin-top: 0.5rem; }
.concejo-solicitudes-listar .col-materia,
.control-consultas-listar .col-materia,
.control-compras-listar .col-materia,
.control-contratos-listar .col-materia,
.decretos-faltantes .col-materia {
    white-space: normal;
    word-break: break-word;
}

.control-compras-listar .col-num { width: 3rem; }
.control-compras-listar .col-fecha { width: 7.5rem; white-space: nowrap; }
.control-contratos-listar .col-icon { width: 3.25rem; text-align: center; }
.control-contratos-listar .col-fecha { width: 8.25rem; white-space: nowrap; text-align: center; }

.decretos-faltantes .col-num { width: 4.5rem; }
.decretos-faltantes .col-fecha { width: 7.5rem; white-space: nowrap; }
.decretos-faltantes .col-icon { width: 3.25rem; text-align: center; }

.module-body:has(.control-reglamentos-listar),
.module-body:has(.control-viaticos-listar),
.module-body:has(.subrogancias-listar) {
    max-width: min(1600px, 100%);
}
.control-reglamentos-listar table.table-list-compact,
.control-viaticos-listar table.table-list-compact,
.subrogancias-listar table.table-list-compact {
    table-layout: fixed;
    width: 100%;
    font-size: 13px;
}
.control-reglamentos-listar .table-wrap-fit,
.control-viaticos-listar .table-wrap-fit,
.subrogancias-listar .table-wrap-fit {
    overflow-x: hidden;
    width: 100%;
}
.control-reglamentos-listar .col-tipo { width: 14rem; }
.control-reglamentos-listar .col-num { width: 5rem; white-space: nowrap; }
.control-reglamentos-listar .col-fecha { width: 7.5rem; white-space: nowrap; }
.control-reglamentos-listar .col-materia { white-space: normal; word-break: break-word; }
.control-reglamentos-listar .col-icon { width: 3.25rem; text-align: center; }

.control-viaticos-listar .col-num { width: 7rem; white-space: nowrap; }
.control-viaticos-listar .col-fecha { width: 7.5rem; white-space: nowrap; }
.control-viaticos-listar .col-materia { white-space: normal; word-break: break-word; }
.control-viaticos-listar .col-icon { width: 3.25rem; text-align: center; }

.subrogancias-listar .col-tipo { width: 9rem; }
.subrogancias-listar .col-num { width: 6.5rem; white-space: nowrap; }
.subrogancias-listar .col-fecha { width: 7.5rem; white-space: nowrap; }
.subrogancias-listar .col-materia { white-space: normal; word-break: break-word; }
.subrogancias-listar .col-firmantes { white-space: normal; word-break: break-word; }
.subrogancias-listar .col-icon { width: 3.25rem; text-align: center; }
.subrogancias-listar .subrogancia-upload { width: 13rem; }

.input-monto {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.reloj-gestion-toolbar {
    margin-bottom: 1rem;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.reloj-gestion-toolbar input[type="search"] {
    width: 100%;
    max-width: 28rem;
    padding: 8px 12px;
    border: 1px solid var(--muni-border);
    border-radius: 8px;
    font-size: 15px;
}
.reloj-gestion-tabla-wrap { overflow-x: visible; }
.reloj-gestion-listar table.data {
    table-layout: auto;
    width: 100%;
    min-width: 1100px;
}
.reloj-gestion-listar table.data th,
.reloj-gestion-listar table.data td {
    white-space: nowrap;
    vertical-align: middle;
}
.reloj-gestion-listar .col-num,
.reloj-gestion-listar .col-us { width: 7rem; }
.reloj-gestion-listar .col-nombre { min-width: 18rem; }
.reloj-gestion-listar .col-rut { min-width: 8.5rem; }
.reloj-gestion-listar .col-estado { min-width: 7.5rem; }
.reloj-gestion-listar .col-acciones { min-width: 7.5rem; width: 1%; text-align: center; }

.module-body.reloj-jornada-wide { max-width: min(1720px, 100%); padding-left: 16px; padding-right: 16px; }
.reloj-jornada-wide .table-wrap { overflow-x: visible; }
.reloj-resumen-extras .table-wrap { overflow-x: visible; max-width: 100%; }
.reloj-resumen-extras table.data {
    width: 100%;
    min-width: 0;
    table-layout: auto;
}
.reloj-jornada-wide table.data {
    width: 100%;
    min-width: 0;
    table-layout: auto;
    font-size: 13px;
}
.reloj-jornada-wide table.data th,
.reloj-jornada-wide table.data td {
    vertical-align: top;
}
.reloj-jornada-wide .col-rut { white-space: nowrap; width: 8rem; }
.reloj-jornada-wide .col-nombre { min-width: 9rem; }
.reloj-jornada-wide .col-escalafon { min-width: 6rem; }
.reloj-jornada-wide .col-unidad { min-width: 8rem; }
.reloj-jornada-wide .col-rol { min-width: 6rem; }
.reloj-jornada-wide .col-horario { min-width: 7.5rem; max-width: 12rem; }
.reloj-jornada-wide .col-decision { min-width: 5.5rem; width: 6.5rem; }
.jornada-h-modelo,
.jornada-h-linea {
    display: block;
    line-height: 1.35;
    white-space: normal;
}
.jornada-h-modelo { font-weight: 700; }
.jornada-h-linea { font-variant-numeric: tabular-nums; }
.jornada-toolbar-print {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 12px;
}
.jornada-preview-choice {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}
.jornada-choice {
    position: relative;
    display: inline-flex;
    margin: 0;
    cursor: pointer;
}
.jornada-choice input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
}
.jornada-choice span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.15rem;
    height: 2.15rem;
    border-radius: 8px;
    border: 1px solid var(--muni-border);
    background: #fff;
    color: #475569;
}
.jornada-choice:hover span { border-color: #93c5fd; background: #f8fafc; }
.jornada-choice-keep input:checked + span {
    background: #ecfdf5;
    border-color: #34d399;
    color: #047857;
}
.jornada-choice-replace input:checked + span {
    background: #fff7ed;
    border-color: #fb923c;
    color: #c2410c;
}
.jornada-choice-honorarios input:checked + span {
    background: #eef2ff;
    border-color: #818cf8;
    color: #3730a3;
}
.jornada-choice input:focus-visible + span {
    outline: 2px solid #2563eb;
    outline-offset: 2px;
}
.jornada-preview-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 16px;
    padding: 0;
    list-style: none;
}
.jornada-preview-stats li {
    background: #f8fafc;
    border: 1px solid var(--muni-border);
    border-radius: 8px;
    padding: 6px 12px;
    font-size: 14px;
}
.jornada-preview-choice {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
}
.jornada-preview-choice label { white-space: normal; }
.jornada-obs { margin: 0 0 16px; }
.jornada-preview-note {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    color: var(--muni-muted);
}

.module-body.reloj-import { max-width: min(1120px, 100%); }
.module-body.reloj-import.reloj-jornada-wide { max-width: min(1680px, 100%); }
.reloj-import-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: 16px;
    align-items: start;
}
.reloj-import-title {
    margin: 0 0 8px;
    font-size: 1.15rem;
}
.reloj-import-drop {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    margin: 18px 0 8px;
    padding: 22px 18px;
    border: 2px dashed #cbd5e1;
    border-radius: 12px;
    background: #f8fafc;
}
.reloj-import-drop-label { font-weight: 600; }
.reloj-import-drop-hint { font-size: 13px; color: var(--muni-muted); }
.reloj-import-drop input[type="file"] { max-width: 100%; }
.reloj-import-rules { display: grid; gap: 12px; }
.reloj-import-rule {
    background: var(--muni-surface);
    border: 1px solid var(--muni-border);
    border-radius: 12px;
    padding: 14px 16px;
}
.reloj-import-rule h3 {
    margin: 0 0 8px;
    font-size: 14px;
}
.reloj-import-rule ul {
    margin: 0;
    padding-left: 1.15rem;
    font-size: 13.5px;
    line-height: 1.45;
    color: var(--muni-text, #0f172a);
}
.reloj-import-rule li { margin-bottom: 6px; }
.reloj-import-rule li:last-child { margin-bottom: 0; }
@media (max-width: 860px) {
    .reloj-import-grid { grid-template-columns: 1fr; }
}
.reloj-estado-activo { color: var(--muni-primary); font-weight: 600; }
.reloj-estado-inactivo { color: var(--muni-muted); }
table.data-sortable th[data-sort] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}
table.data-sortable th[data-sort]::after {
    content: " \2195";
    opacity: .35;
    font-size: .85em;
}
table.data-sortable th.is-asc::after {
    content: " \25B2";
    opacity: 1;
}
table.data-sortable th.is-desc::after {
    content: " \25BC";
    opacity: 1;
}

.muni-preview-bar {
    display: none;
    position: sticky;
    top: 0;
    z-index: 80;
    gap: 12px;
    align-items: center;
    justify-content: center;
    padding: 10px 16px;
    background: #0f172a;
    color: #fff;
    font-weight: 600;
}
body.print-page .muni-preview-bar {
    display: flex;
}
html.muni-print-preview .muni-preview-bar {
    display: flex;
}
html.muni-print-preview .no-print,
html.muni-print-preview .module-header,
html.muni-print-preview .muni-global-footer,
html.muni-print-preview .muni-toast-stack {
    display: none !important;
}
@media print {
    .muni-preview-bar {
        display: none !important;
    }
    .personal-marcar-unidad {
        break-inside: avoid;
        page-break-inside: avoid;
    }
}

.reloj-acciones {
    display: flex;
    flex-wrap: nowrap;
    gap: 6px;
    align-items: center;
    justify-content: center;
}
.reloj-accion-form { display: inline-flex; margin: 0; padding: 0; }
.reloj-acciones .action-icon {
    cursor: pointer;
    flex-shrink: 0;
}
.action-icon-activar {
    color: #166534;
    font-weight: 700;
}
.action-icon-activar:hover { background: #f0fdf4; border-color: #86efac; }
.action-icon-desactivar {
    color: #9a3412;
    font-weight: 700;
}
.action-icon-desactivar:hover { background: #fff7ed; border-color: #fdba74; }

/* Home / hubs: centrar grillas de tarjetas */
.app-main .tile-grid,
.module-body .tile-grid {
    justify-content: center;
}
.app-main .category-grid {
    justify-content: center;
}

/* Justificativo / cometido en calendario de asistencia */
.evento-dia.evento-just a.evento-just-doc {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.evento-dia.evento-just a.evento-just-doc:hover {
    color: #1d4ed8;
}

/* =================================================================
 * Pantallas e informes: sin solape (PC, tablet, celular e impresión)
 * ================================================================= */
.auditoria-sgd .table-wrap,
.bitacoras-listar .table-wrap,
.certificados-1996-listar .table-wrap,
.doc-tramite-tipos-module .table-wrap,
.movilizacion-listar .table-wrap,
.vehiculos-admin-listar .table-wrap,
.notificador-table-wrap {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
}
.card:has(> .table-wrap),
.card:has(> table),
.card:has(.table-wrap),
.module-body:has(.firmantes-table) {
    overflow-x: auto;
    max-width: 100%;
}
table.data-table th,
table.data-table td,
table.data th,
table.data td,
table.print-table th,
table.print-table td {
    vertical-align: top;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: none;
}
body.print-page {
    overflow-x: auto;
    max-width: 100%;
    box-sizing: border-box;
}
body.print-page table.print-table,
body.print-page table.data-table,
body.print-page table.data {
    width: 100%;
    max-width: 100%;
    table-layout: auto;
}
body.print-page table.print-table.calif-pauta-grid,
body.print-page table.personal-nomina-print {
    table-layout: fixed;
}
body.print-page table.calif-pauta-grid .col-factor,
body.print-page table.calif-pauta-grid .col-subfactor,
body.print-page table.calif-pauta-grid .col-nota {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}
body.print-page table.calif-pauta-grid .col-glosa {
    white-space: normal;
    line-height: 1.2;
    vertical-align: middle;
    text-align: center;
}
body.print-page .calif-pre-sheet table.calif-pauta-grid th,
body.print-page .calif-pre-sheet table.calif-pauta-grid td {
    vertical-align: middle;
}
body.print-page .calif-pre-sheet table.calif-pauta-grid th.col-factor,
body.print-page .calif-pre-sheet table.calif-pauta-grid td.col-factor,
body.print-page .calif-pre-sheet table.calif-pauta-grid th.col-subfactor,
body.print-page .calif-pre-sheet table.calif-pauta-grid td.col-subfactor {
    text-align: left;
}
body.print-page .calif-pre-sheet table.calif-pauta-grid th.col-nota,
body.print-page .calif-pre-sheet table.calif-pauta-grid td.col-nota,
body.print-page .calif-pre-sheet table.calif-pauta-grid th.col-glosa,
body.print-page .calif-pre-sheet table.calif-pauta-grid td.col-glosa {
    text-align: center;
}
body.print-page .calif-pre-sheet table.calif-pauta-grid td.col-glosa {
    height: 10mm;
    min-height: 10mm;
}
body.print-page .calif-pre-sheet table.calif-pauta-grid .calif-glosa-box {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 8.5mm;
}
@media (max-width: 900px) {
    .app-header { padding: 10px 12px; }
    .app-main { padding: 10px 12px; }
    .module-header { padding: 12px; }
    .module-body { padding: 12px 10px; }
    .card { padding: 14px 12px; }
    .hero p { min-width: 0; }
    .section-head h2 { min-width: 0; }
    .toolbar,
    .form-actions,
    .inline-form {
        flex-wrap: wrap;
        max-width: 100%;
    }
    body:not(.print-page) table.data-table,
    body:not(.print-page) table.data,
    body:not(.print-page) table.table-list-compact,
    body:not(.print-page) table.personal-nomina-table,
    body:not(.print-page) table.auditoria-table {
        table-layout: auto !important;
        width: max-content;
        min-width: 100%;
        max-width: none;
    }
    body:not(.print-page) table.data-table th,
    body:not(.print-page) table.data th,
    body:not(.print-page) .module-body table th {
        white-space: normal;
        line-height: 1.25;
    }
    table.data-table td.col-rut,
    table.data-table th.col-rut,
    table.data td.col-rut,
    table.data th.col-rut,
    table.data-table td.col-fecha,
    table.data-table th.col-fecha,
    table.data td.col-fecha,
    table.data th.col-fecha,
    table.data-table td.col-num,
    table.data-table th.col-num,
    table.data-table td.col-monto,
    table.data-table th.col-monto {
        white-space: nowrap;
    }
    body:not(.print-page) table.data-table td.col-materia,
    body:not(.print-page) table.data-table th.col-materia,
    body:not(.print-page) table.data-table td.col-nombre,
    body:not(.print-page) table.data-table th.col-nombre {
        min-width: 12rem;
    }
}
@media screen and (max-width: 820px) {
    body.print-page {
        padding: 8px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    body.print-page .calif-print-carta.personal-print-oficial,
    body.print-page .calif-print-carta,
    body.print-page .calif-pre-sheet {
        width: 210mm;
        max-width: none;
        box-sizing: border-box;
        margin: 0 auto 12px;
    }
    body.print-page .personal-print-oficial .personal-print-depto {
        width: 210mm;
        max-width: none;
        min-height: 0;
        margin-bottom: 12px;
    }
    body.print-page .calif-print-pauta .calif-pauta-notas {
        grid-template-columns: repeat(7, minmax(0, 1fr));
    }
    body.print-page .calif-print-pauta .calif-pauta-listas {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
    body.print-page .calif-firmas-row {
        display: flex !important;
        justify-content: center !important;
    }
}
@media print {
    .table-wrap,
    .table-wrap-fit,
    .card,
    .app-main,
    body.print-page {
        overflow: visible !important;
    }
    table.data-table,
    table.data,
    table.table-list-compact,
    table.print-table,
    table.personal-nomina-print,
    table.personal-nomina-table {
        table-layout: auto !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }
    table.data-table th,
    table.data-table td,
    table.data th,
    table.data td,
    table.print-table th,
    table.print-table td {
        white-space: normal !important;
        overflow-wrap: break-word;
        word-break: normal;
        hyphens: none;
    }
    table.print-table .col-rut,
    table.print-table .col-num,
    table.personal-nomina-print .col-rut,
    table.personal-nomina-print .col-num {
        white-space: nowrap !important;
    }
    .calif-pre-sheet table.calif-pauta-grid,
    .calif-print-pauta table.calif-pauta-factores,
    .calif-print-carta table.calif-pauta-factores,
    .calif-print-pauta table.calif-pauta-coef {
        table-layout: fixed !important;
        font-size: 7.5pt !important;
    }
    .calif-pre-sheet table.calif-pauta-grid .col-factor,
    .calif-pre-sheet table.calif-pauta-grid .col-subfactor,
    .calif-pre-sheet table.calif-pauta-grid .col-nota,
    .calif-print-pauta table.calif-pauta-factores .col-factor,
    .calif-print-pauta table.calif-pauta-factores .col-subfactor,
    .calif-print-carta table.calif-pauta-factores .col-factor,
    .calif-print-carta table.calif-pauta-factores .col-subfactor,
    .calif-print-pauta table.calif-pauta-coef .col-escalafon,
    .calif-print-pauta table.calif-pauta-coef .col-coef,
    .personal-print-oficial table.personal-nomina-print .col-nombre,
    .personal-print-oficial table.personal-nomina-print .col-cargo {
        white-space: nowrap !important;
        overflow-wrap: normal !important;
        word-break: keep-all !important;
    }
    .calif-pre-sheet table.calif-pauta-grid .col-factor { width: 32% !important; }
    .calif-pre-sheet table.calif-pauta-grid .col-subfactor { width: 36% !important; }
    .calif-pre-sheet table.calif-pauta-grid .col-nota { width: 7% !important; }
    .calif-pre-sheet table.calif-pauta-grid .col-glosa {
        width: 25% !important;
        white-space: normal !important;
        line-height: 1.2;
        height: 10mm !important;
        min-height: 10mm !important;
        vertical-align: middle !important;
        text-align: center !important;
        font-size: 7pt !important;
    }
    .calif-pre-sheet table.calif-pauta-grid th,
    .calif-pre-sheet table.calif-pauta-grid td {
        vertical-align: middle !important;
    }
    .calif-pre-sheet table.calif-pauta-grid th.col-factor,
    .calif-pre-sheet table.calif-pauta-grid td.col-factor,
    .calif-pre-sheet table.calif-pauta-grid th.col-subfactor,
    .calif-pre-sheet table.calif-pauta-grid td.col-subfactor {
        text-align: left !important;
    }
    .calif-pre-sheet table.calif-pauta-grid th.col-nota,
    .calif-pre-sheet table.calif-pauta-grid td.col-nota {
        text-align: center !important;
    }
    .calif-pre-sheet table.calif-pauta-grid .calif-glosa-box {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 8.5mm;
    }
    .personal-print-oficial table.personal-nomina-print.personal-nomina-print--unidad {
        table-layout: fixed !important;
    }
    .personal-print-oficial table.personal-nomina-print .col-nombre { width: auto !important; }
    .personal-print-oficial table.personal-nomina-print .col-cargo { width: 26% !important; }
    .personal-print-oficial table.personal-nomina-print .col-rut { width: 16% !important; }
    .personal-print-oficial table.personal-nomina-print .col-num { width: 6% !important; }
    .calif-print-pauta .calif-pauta-notas { grid-template-columns: repeat(7, minmax(0, 1fr)); }
    .calif-print-pauta .calif-pauta-listas { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .calif-firmas-row {
        display: flex !important;
        justify-content: center !important;
    }
}

.cometido-ruts { margin: 8px 0 4px; }
.cometido-rut-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.cometido-rut-row select { flex: 1 1 280px; min-width: 220px; }
.cometido-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }

/* —— Decretos personal: creador + fichas —— */
.dec-pers-creador .dec-pers-ano { margin: 0 0 1.25rem; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.dec-pers-grupo { margin: 0 0 1.75rem; }
.dec-pers-grupo-head h2 { margin: 0 0 .25rem; font-size: 1.05rem; color: #0f2744; }
.dec-pers-grupo-head .hint { margin: 0 0 .85rem; }
.dec-pers-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px;
}
.dec-pers-card {
    display: flex;
    flex-direction: column;
    border: 1px solid #d0dbe8;
    border-radius: 14px;
    background: linear-gradient(160deg, #fff 0%, #f4f7fb 100%);
    box-shadow: 0 2px 10px rgba(15, 39, 68, .06);
    overflow: hidden;
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.dec-pers-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(15, 39, 68, .12);
    border-color: #7aa0c9;
}
.dec-pers-card-main {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto auto;
    gap: .2rem .75rem;
    padding: 1rem 1.05rem .85rem;
    text-decoration: none;
    color: inherit;
    flex: 1;
}
.dec-pers-num {
    grid-row: 1 / span 3;
    align-self: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 10px;
    background: #1e4a7a;
    color: #fff;
    font-weight: 700;
    font-size: .95rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.dec-pers-icon { font-size: 1.25rem; line-height: 1; }
.dec-pers-title { font-weight: 700; color: #0f2744; font-size: .98rem; }
.dec-pers-desc { color: #4a5d73; font-size: .86rem; grid-column: 2; }
.dec-pers-modelo {
    display: block;
    text-align: center;
    padding: .42rem .6rem;
    font-size: .8rem;
    font-weight: 600;
    background: #e8eef6;
    color: #1e4a7a;
    text-decoration: none;
    border-top: 1px solid #d5dee8;
}
.dec-pers-modelo:hover { background: #d7e4f4; }
.dec-pers-modelo.is-muted { color: #64748b; font-weight: 500; }
.dec-pers-foot { margin-top: .5rem; }

.dec-pers-tipo-pick {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 10px;
    margin-top: 6px;
}
.dec-pers-tipo-opt {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid #d0dbe8;
    border-radius: 10px;
    background: #f8fafc;
    cursor: pointer;
    margin: 0;
}
.dec-pers-tipo-opt:has(input:checked) {
    border-color: #1e4a7a;
    background: #eef4fb;
    box-shadow: 0 0 0 2px rgba(30, 74, 122, .15);
}
.dec-pers-tipo-opt input { margin: 0; }
.dec-pers-tipo-num {
    flex: 0 0 auto;
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 8px;
    background: #1e4a7a;
    color: #fff;
    font-size: .78rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}
.dec-pers-tipo-lab { font-size: .88rem; font-weight: 600; color: #0f2744; }

.dec-pers-banner {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 10px 16px;
    padding: 14px 16px;
    margin: 0 0 1rem;
    border-radius: 12px;
    background: linear-gradient(135deg, #0f2744 0%, #1e4a7a 55%, #2a6aa8 100%);
    color: #fff;
}
.dec-pers-banner-k {
    display: block;
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .75;
    margin-bottom: 2px;
}
.dec-pers-banner strong { font-size: .98rem; font-weight: 650; }
.dec-pers-panel {
    background: #fff;
    border: 1px solid #d5dee8;
    border-radius: 12px;
    padding: 1rem 1.15rem;
    margin: 0 0 1rem;
    box-shadow: 0 1px 4px rgba(15, 39, 68, .05);
}
.dec-pers-panel h3 {
    margin: 0 0 .85rem;
    font-size: 1rem;
    color: #0f2744;
}
.dec-pers-fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 16px;
}
.dec-pers-fields label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-weight: 600; font-size: .88rem; color: #334155; }
.dec-pers-fields textarea,
.dec-pers-fields input { font-weight: 400; }
.dec-pers-full { grid-column: 1 / -1; }
.dec-pers-actions { margin-top: .25rem; }
@media (max-width: 640px) {
    .dec-pers-fields { grid-template-columns: 1fr; }
    .dec-pers-card-main { grid-template-columns: auto 1fr; }
}

/* Hub Encargado Transparencia */
.ta-resumen-card { margin-bottom: 1.25rem; }
.ta-hub-menu .ta-hub-group {
    margin: 1.25rem 0 .65rem;
    font-size: 1.05rem;
    color: #0f2744;
    font-weight: 650;
}
.ta-hub-menu .ta-hub-group-block {
    margin-bottom: 1.35rem;
    padding-bottom: .5rem;
    border-bottom: 1px solid #e2e8f0;
}
.ta-hub-menu .ta-hub-group-block:last-of-type { border-bottom: 0; }
.ta-hub-menu .tile-grid { margin-bottom: .5rem; }
.ta-mount-ok { color: #166534; font-weight: 600; }
.ta-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 650;
}
.ta-badge--ok { background: #dcfce7; color: #166534; }
.ta-badge--falta { background: #ffe4e6; color: #9f1239; }
.ta-badge--revisar { background: #fef3c7; color: #a16207; }
.ta-unit-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin: .75rem 0 1rem;
}
.ta-unit-tab {
    display: inline-flex;
    align-items: center;
    padding: .4rem .85rem;
    border-radius: 999px;
    border: 1px solid #cbd5e1;
    background: #f8fafc;
    color: #0f2744;
    text-decoration: none;
    font-size: .88rem;
    font-weight: 600;
}
.ta-unit-tab:hover { border-color: #93c5fd; background: #eff6ff; }
.ta-unit-tab.is-active {
    background: #0f2744;
    border-color: #0f2744;
    color: #f8fafc;
}

/* Transparencia: subir/reemplazar PDF (solo iconos) */
.ta-upload {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    flex-wrap: wrap;
    max-width: 16rem;
}
.ta-upload-status {
    display: inline-grid;
    place-items: center;
    width: 1.55rem;
    height: 1.55rem;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
    flex-shrink: 0;
}
.ta-upload-status--ok {
    background: #dcfce7;
    color: #166534;
    border: 1px solid #86efac;
}
.ta-upload-status--falta {
    background: #fee2e2;
    color: #b91c1c;
    border: 1px solid #fca5a5;
}
.ta-upload-form {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    flex-wrap: wrap;
    margin: 0;
}
.ta-upload-variante {
    width: 2.4rem;
    padding: .2rem .15rem;
    font-size: .8rem;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
}
.ta-upload-pick,
.ta-upload-go {
    width: 2.05rem;
    height: 2.05rem;
    cursor: pointer;
}
.ta-upload-pick:hover { background: #eff6ff; border-color: #93c5fd; }
.ta-upload-go--up:hover { background: #ecfdf5; border-color: #6ee7b7; }
.ta-upload-go--replace:hover { background: #fff7ed; border-color: #fdba74; }
.ta-upload-name {
    display: inline-block;
    max-width: 7.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .75rem;
    color: #475569;
}
.ta-acciones {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    flex-wrap: wrap;
}
.ta-acciones-marcar {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    flex-wrap: wrap;
    margin: 0;
}
.ta-acciones-estado {
    min-width: 5.2rem;
    padding: .25rem .35rem;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
    font-size: .8rem;
    font-weight: 650;
}
.ta-acciones-nota {
    width: 6.5rem;
    padding: .25rem .4rem;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
    font-size: .8rem;
}

/* Vista Informática → menú de un funcionario */
.muni-vista-usuario-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px 16px;
    padding: 10px 16px;
    background: linear-gradient(90deg, #0f2744, #1e3a5f);
    color: #f8fafc;
    font-size: .92rem;
    border-bottom: 1px solid rgba(255,255,255,.12);
}
.muni-vista-usuario-banner a.btn {
    background: #f8fafc;
    color: #0f2744;
    border: 0;
    text-decoration: none;
}
.muni-vista-usuario-form {
    max-width: 640px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.muni-vista-usuario-form .muni-vista-select {
    width: 100%;
    max-width: 100%;
    padding: .55rem .75rem;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    background: #fff;
    font: inherit;
}

/* Clic derecho → autorizar acceso a tarjeta (Informática) */
.muni-tile-acl-menu {
    position: fixed;
    z-index: 10050;
    min-width: 220px;
    background: #0f2744;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(15, 23, 42, 0.35);
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.muni-tile-acl-menu[hidden] { display: none !important; }
.muni-tile-acl-menu button {
    appearance: none;
    border: 0;
    background: transparent;
    text-align: left;
    padding: 10px 12px;
    border-radius: 10px;
    font: inherit;
    cursor: pointer;
    color: #f8fafc;
    display: flex;
    align-items: center;
    gap: 10px;
}
.muni-tile-acl-menu button:hover { background: rgba(59, 130, 246, 0.35); }
.muni-tile-acl-ico { font-size: 1.05rem; width: 1.4rem; text-align: center; }

.muni-tile-acl-dialog {
    max-width: min(560px, 96vw);
    width: 560px;
    padding: 0;
    border: 0;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);
}
.muni-tile-acl-dialog::backdrop { background: rgba(15, 23, 42, 0.45); backdrop-filter: blur(2px); }
.muni-tile-acl-hero {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    padding: 18px 20px 14px;
    background: linear-gradient(135deg, #0f2744 0%, #1e3a5f 55%, #2563eb 140%);
    color: #f8fafc;
}
.muni-tile-acl-hero__icon {
    width: 44px; height: 44px; border-radius: 12px;
    display: grid; place-items: center;
    background: rgba(255,255,255,.12);
    font-size: 1.35rem; flex-shrink: 0;
}
.muni-tile-acl-kicker {
    margin: 0 0 2px; font-size: .72rem; letter-spacing: .06em;
    text-transform: uppercase; opacity: .75;
}
.muni-tile-acl-hero .muni-dialog__title {
    margin: 0; color: #fff; font-size: 1.15rem; font-weight: 700;
}
.muni-tile-acl-sub { margin: 4px 0 0; font-size: .9rem; opacity: .9; line-height: 1.35; }
.muni-tile-acl-form { padding: 14px 18px 6px; display: flex; flex-direction: column; gap: 10px; }
.muni-tile-acl-toolbar {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 10px;
}
.muni-tile-acl-field {
    display: flex; flex-direction: column; gap: 4px;
    font-size: .82rem; font-weight: 650; color: #334155;
}
.muni-tile-acl-field select,
.muni-tile-acl-field input {
    font-weight: 400; border-radius: 10px; border: 1px solid #cbd5e1;
    padding: 8px 10px; background: #fff;
}
.muni-tile-acl-pass-wrap {
    position: relative;
    display: block;
}
.muni-tile-acl-pass-wrap input {
    width: 100%;
    padding-right: 44px;
    box-sizing: border-box;
}
.muni-tile-acl-pass-eye {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 34px;
    height: 34px;
    border: 0;
    background: transparent;
    border-radius: 8px;
    cursor: pointer;
    display: grid;
    place-items: center;
    font-size: 1.05rem;
    color: #334155;
}
.muni-tile-acl-pass-eye:hover,
.muni-tile-acl-pass-eye:focus-visible {
    background: #e2e8f0;
    outline: none;
}
.muni-tile-acl-people {
    max-height: 300px;
    overflow: auto;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    padding: 6px;
    background: #f1f5f9;
}
.muni-tile-acl-empty { margin: 18px 12px; color: #64748b; text-align: center; font-size: .92rem; }
.muni-tile-acl-row {
    display: grid;
    grid-template-columns: auto auto 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 8px 10px;
    margin: 0 0 4px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid transparent;
    cursor: pointer;
}
/* display:grid anula el [hidden] del UA; sin esto la búsqueda no oculta filas */
.muni-tile-acl-row[hidden] { display: none !important; }
.muni-tile-acl-row:hover { border-color: #bfdbfe; }
.muni-tile-acl-row.is-granted { background: #eff6ff; border-color: #bfdbfe; }
.muni-tile-acl-row.is-denied { background: #fff1f2; border-color: #fecdd3; }
.muni-tile-acl-row.is-role { background: #f0fdf4; border-color: #bbf7d0; }
.muni-tile-acl-badge--role { background: #15803d; }
.muni-tile-acl-badge--deny { background: #ffe4e6; color: #9f1239; }
.muni-tile-acl-row input { width: 16px; height: 16px; accent-color: #2563eb; }
.muni-tile-acl-avatar {
    width: 34px; height: 34px; border-radius: 50%;
    display: grid; place-items: center;
    background: #dbeafe; color: #1e40af; font-weight: 700; font-size: .9rem;
}
.muni-tile-acl-body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.muni-tile-acl-name { color: #0f172a; font-weight: 650; font-size: .92rem; }
.muni-tile-acl-meta { color: #64748b; font-size: .78rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.muni-tile-acl-badge {
    width: 26px; height: 26px; border-radius: 999px;
    display: grid; place-items: center;
    background: #16a34a; color: #fff; font-size: .85rem; font-weight: 700;
}
.muni-tile-acl-hint { margin: 0 2px 4px; color: #64748b; font-size: .8rem; }
.muni-tile-acl-actions {
    display: flex; justify-content: flex-end; gap: 8px;
    padding: 12px 16px 16px; border-top: 1px solid #e2e8f0; background: #fafafa;
}
.muni-tile-acl-btn {
    appearance: none; border: 1px solid #cbd5e1; background: #fff;
    border-radius: 12px; width: 42px; height: 42px; padding: 0; cursor: pointer;
    display: inline-grid; place-items: center;
    font: inherit; font-size: 1.15rem; color: #0f172a;
}
.muni-tile-acl-btn:hover { background: #f1f5f9; }
.muni-tile-acl-btn--ok {
    background: #2563eb; border-color: #2563eb; color: #fff;
}
.muni-tile-acl-btn--ok:hover { background: #1d4ed8; }
.muni-tile-acl-btn--danger {
    background: #fff1f2; border-color: #fecdd3; color: #be123c;
}
.muni-tile-acl-btn--danger:hover { background: #ffe4e6; }
.muni-tile-acl-section {
    margin: 10px 6px 6px;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #64748b;
}
.muni-tile-acl-row.is-jefe {
    opacity: 0.72;
    cursor: default;
    background: #f8fafc;
    border-style: dashed;
}
.muni-tile-acl-lock {
    width: 16px;
    text-align: center;
    font-size: .9rem;
}
.tile[data-muni-acl="1"] { position: relative; }
@media (max-width: 560px) {
    .muni-tile-acl-toolbar { grid-template-columns: 1fr; }
}

/* Informática → Direcciones / departamentos */
.dir-admin-grid .dir-admin-card {
    min-height: 148px;
}
.dir-admin-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid #e2e8f0;
}
.dir-admin-actions .action-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: inline-grid;
    place-items: center;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    text-decoration: none;
    font-size: 1.05rem;
    transition: background .15s, border-color .15s, transform .15s;
}
.dir-admin-actions .action-icon:hover {
    background: #eff6ff;
    border-color: #93c5fd;
    transform: translateY(-1px);
}
.dir-admin-actions .action-icon-plantilla:hover { background: #eff6ff; }
.dir-admin-actions .action-icon-users:hover { background: #ecfdf5; border-color: #6ee7b7; }
.dir-admin-actions .action-icon-hub:hover { background: #fff7ed; border-color: #fdba74; }


/* Calendario proceso calificatorio (hubs / Inform�tica) */
.calif-calendario-fechas {
  margin: 0 0 14px;
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px solid #d4cbb8;
  background: #fbf9f4;
  color: #1a2332;
}
.calif-calendario-fechas.is-abierto { border-color: #81c784; background: #f1f8f2; }
.calif-calendario-fechas.is-cerrado { border-color: #e57373; background: #fff5f5; }
.calif-calendario-fechas.is-bypass { border-color: #64b5f6; background: #eef6fc; }
.calif-calendario-fechas__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.calif-calendario-fechas__badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.8rem;
  font-weight: 700;
  background: #e3f2fd;
  color: #1565c0;
}
.calif-calendario-fechas.is-cerrado .calif-calendario-fechas__badge { background: #ffebee; color: #b71c1c; }
.calif-calendario-fechas.is-abierto .calif-calendario-fechas__badge { background: #e8f5e9; color: #2e7d32; }

/* Toma de conocimiento / en presencia — opciones notorias */
.calif-conoce-bloque .calif-conoce-elige-label {
  margin: 0.75rem 0 0.4rem;
  font-weight: 700;
  font-size: 0.95rem;
  color: #1e3a8a;
}
.calif-conoce-opciones {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin: 0 0 1rem;
}
@media (max-width: 640px) {
  .calif-conoce-opciones { grid-template-columns: 1fr; }
}
.calif-conoce-opcion {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin: 0;
  padding: 0.9rem 1rem;
  border: 2px solid #94a3b8;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.calif-conoce-opcion input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.calif-conoce-opcion__mark {
  flex: 0 0 auto;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 1.1rem;
  font-weight: 800;
  background: #e2e8f0;
  color: #475569;
}
.calif-conoce-opcion__text {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}
.calif-conoce-opcion__text strong {
  font-size: 1.05rem;
  color: #0f172a;
}
.calif-conoce-opcion__text small {
  font-size: 0.82rem;
  color: #64748b;
  line-height: 1.35;
}
.calif-conoce-opcion--ok:has(input:checked) {
  border-color: #15803d;
  background: #f0fdf4;
  box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.18);
}
.calif-conoce-opcion--ok:has(input:checked) .calif-conoce-opcion__mark {
  background: #16a34a;
  color: #fff;
}
.calif-conoce-opcion--no:has(input:checked) {
  border-color: #c2410c;
  background: #fff7ed;
  box-shadow: 0 0 0 3px rgba(194, 65, 12, 0.18);
}
.calif-conoce-opcion--no:has(input:checked) .calif-conoce-opcion__mark {
  background: #ea580c;
  color: #fff;
}
.calif-conoce-opcion:hover {
  border-color: #64748b;
}
.calif-conoce-obs {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  font-weight: 650;
  color: #334155;
  margin-bottom: 0.85rem;
}
.calif-conoce-obs-hint {
  font-weight: 500;
  color: #64748b;
  font-size: 0.85rem;
}
.calif-conoce-obs textarea {
  font-weight: 400;
  border-radius: 10px;
  border: 1px solid #cbd5e1;
  padding: 0.65rem 0.75rem;
  min-height: 4.5rem;
}
.calif-conoce-presencia {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin: 0 0 1rem;
  padding: 0.85rem 1rem;
  border-radius: 10px;
  border: 2px dashed #2563eb;
  background: #dbeafe;
  font-size: 0.98rem;
  color: #1e3a8a;
  cursor: pointer;
}
.calif-conoce-presencia input {
  width: 1.2rem;
  height: 1.2rem;
  margin-top: 0.15rem;
  accent-color: #1d4ed8;
  flex-shrink: 0;
}
.calif-conoce-submit {
  min-height: 2.75rem;
  font-weight: 700;
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
