:root {
    --wine: #680710;
    --wine-dark: #43040a;
    --wine-soft: #8b2631;

    --cream: #f5e5bd;
    --cream-light: #fbf4e4;

    --bg: #f7eee6;
    --white: #ffffff;

    --text: #24191a;
    --muted: #756869;

    --border: #eadfdb;

    --success: #176b42;
    --success-bg: #edf9f2;

    --danger: #9c1722;
    --danger-bg: #fff0f1;

    --shadow: 0 18px 45px rgba(60, 5, 10, .10);

    --radius: 18px;
    --transition: 180ms ease;
}

* {
    box-sizing: border-box;
}

html {
    min-height: 100%;
}

body {
    margin: 0;
    min-height: 100vh;
    font-family:
        Inter,
        ui-sans-serif,
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
    color: var(--text);
    background:
        radial-gradient(
            circle at top left,
            rgba(245, 229, 189, .45),
            transparent 35%
        ),
        var(--bg);
}

button,
input {
    font: inherit;
}

button {
    cursor: pointer;
}

.login-page {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 42px 24px;
    overflow: hidden;
}

.login-page::before,
.login-page::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
    filter: blur(2px);
}

.login-page::before {
    width: 420px;
    height: 420px;
    top: -180px;
    left: -150px;
    background: rgba(104, 7, 16, .08);
}

.login-page::after {
    width: 360px;
    height: 360px;
    right: -130px;
    bottom: -150px;
    background: rgba(245, 229, 189, .55);
}

.login-shell {
    position: relative;
    z-index: 1;
    width: min(100%, 960px);
}

.login-card {
    display: grid;
    grid-template-columns: minmax(300px, .9fr) minmax(360px, 1.1fr);
    grid-template-rows: auto auto;
    background: var(--white);
    border: 1px solid rgba(104, 7, 16, .10);
    border-radius: 26px;
    box-shadow:
        0 28px 70px rgba(60, 5, 10, .14),
        0 8px 24px rgba(60, 5, 10, .06);
    overflow: hidden;
}

.login-brand {
    grid-column: 1;
    grid-row: 1 / span 2;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 560px;
    padding: 48px 38px;
    text-align: center;
    background:
        radial-gradient(
            circle at 18% 16%,
            rgba(245, 229, 189, .18),
            transparent 28%
        ),
        radial-gradient(
            circle at 86% 88%,
            rgba(255, 255, 255, .08),
            transparent 26%
        ),
        linear-gradient(
            145deg,
            var(--wine),
            var(--wine-dark)
        );
    color: var(--white);
}

.login-brand::before {
    content: "";
    position: absolute;
    inset: 18px;
    border: 1px solid rgba(245, 229, 189, .20);
    border-radius: 20px;
    pointer-events: none;
}

.login-logo {
    position: relative;
    z-index: 1;
    width: 178px;
    height: 178px;
    object-fit: contain;
    display: block;
    margin: 0 auto 28px;
    border-radius: 50%;
    background: var(--white);
    padding: 8px;
    box-shadow:
        0 14px 34px rgba(0, 0, 0, .20),
        0 0 0 1px rgba(245, 229, 189, .35);
}

.login-brand h1 {
    position: relative;
    z-index: 1;
    margin: 0;
    font-family: Georgia, "Times New Roman", serif;
    font-size: 36px;
    font-weight: 700;
    letter-spacing: .2px;
}

.login-brand p {
    position: relative;
    z-index: 1;
    margin: 10px 0 0;
    color: rgba(255, 255, 255, .82);
    font-size: 14px;
    letter-spacing: .04em;
}

.login-form {
    grid-column: 2;
    grid-row: 1;
    padding: 48px 48px 34px;
    align-self: center;
}

.login-form::before {
    content: "Acceso al portal";
    display: block;
    margin-bottom: 6px;
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 29px;
    font-weight: 700;
}

.login-form::after {
    content: "Ingresa tus credenciales para continuar";
    display: block;
    margin-bottom: 30px;
    color: var(--muted);
    font-size: 13px;
}

.form-group {
    margin-bottom: 20px;
}

.form-label {
    display: block;
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 800;
    color: var(--text);
}

.form-input {
    width: 100%;
    min-height: 52px;
    padding: 13px 15px;
    border: 1px solid var(--border);
    border-radius: 12px;
    outline: none;
    background: #fffdfb;
    color: var(--text);
    transition:
        border-color var(--transition),
        box-shadow var(--transition),
        background var(--transition);
}

.form-input::placeholder {
    color: #a69a99;
}

.form-input:hover {
    border-color: rgba(104, 7, 16, .24);
}

.form-input:focus {
    border-color: var(--wine);
    background: var(--white);
    box-shadow: 0 0 0 4px rgba(104, 7, 16, .09);
}

.password-wrapper {
    position: relative;
}

.password-wrapper .form-input {
    padding-right: 86px;
}

.password-toggle {
    position: absolute;
    right: 9px;
    top: 50%;
    transform: translateY(-50%);
    border: 0;
    background: transparent;
    color: var(--wine);
    font-size: 13px;
    font-weight: 800;
    padding: 7px;
}

.password-toggle:hover {
    color: var(--wine-dark);
}

.login-submit {
    width: 100%;
    min-height: 52px;
    margin-top: 8px;
    border: 0;
    border-radius: 12px;
    background:
        linear-gradient(
            135deg,
            var(--wine),
            var(--wine-dark)
        );
    color: var(--white);
    font-weight: 800;
    letter-spacing: .2px;
    box-shadow: 0 9px 22px rgba(104, 7, 16, .18);
    transition:
        background var(--transition),
        transform var(--transition),
        box-shadow var(--transition);
}

.login-submit:hover {
    background:
        linear-gradient(
            135deg,
            var(--wine-soft),
            var(--wine)
        );
    box-shadow: 0 12px 26px rgba(104, 7, 16, .24);
}

.login-submit:active {
    transform: translateY(1px);
}

.login-submit:disabled {
    cursor: wait;
    opacity: .65;
}

.alert {
    display: none;
    margin-bottom: 18px;
    padding: 13px 14px;
    border-radius: 11px;
    font-size: 14px;
    line-height: 1.45;
}

.alert.is-visible {
    display: block;
}

.alert-success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid rgba(23, 107, 66, .15);
}

.alert-danger {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid rgba(156, 23, 34, .14);
}

.login-footer {
    grid-column: 2;
    grid-row: 2;
    padding: 0 48px 34px;
    text-align: center;
    color: var(--muted);
    font-size: 12px;
}

@media (max-width: 760px) {
    .login-page {
        padding: 24px 16px;
    }

    .login-card {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto auto;
        border-radius: 22px;
    }

    .login-brand {
        grid-column: 1;
        grid-row: 1;
        min-height: auto;
        padding: 34px 24px 30px;
    }

    .login-brand::before {
        inset: 12px;
        border-radius: 16px;
    }

    .login-logo {
        width: 122px;
        height: 122px;
        margin-bottom: 18px;
    }

    .login-brand h1 {
        font-size: 29px;
    }

    .login-form {
        grid-column: 1;
        grid-row: 2;
        padding: 34px 26px 24px;
    }

    .login-footer {
        grid-column: 1;
        grid-row: 3;
        padding: 0 26px 28px;
    }
}

@media (max-width: 430px) {
    .login-page {
        padding: 16px 12px;
    }

    .login-brand {
        padding: 30px 20px 26px;
    }

    .login-logo {
        width: 105px;
        height: 105px;
    }

    .login-brand h1 {
        font-size: 26px;
    }

    .login-form {
        padding: 28px 20px 20px;
    }

    .login-form::before {
        font-size: 25px;
    }

    .login-footer {
        padding: 0 20px 24px;
    }
}

/* ============================================================
   LAYOUT GLOBAL
   ========================================================== */

.app-shell {
    min-height: 100vh;
}

.app-header {
    position: sticky;
    top: 0;
    z-index: 1000;
    background: var(--wine);
    color: var(--white);
    box-shadow: 0 4px 18px rgba(0, 0, 0, .12);
}

.app-header-inner {
    min-height: 76px;
    max-width: 1600px;
    margin: 0 auto;
    padding: 10px 24px;
    display: flex;
    align-items: center;
    gap: 18px;
}

.app-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--white);
    text-decoration: none;
    min-width: 250px;
}

.app-logo {
    width: 52px;
    height: 52px;
    object-fit: contain;
    border-radius: 50%;
    background: var(--white);
    padding: 3px;
}

.app-brand-text {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.app-brand-text strong {
    font-family: Georgia, "Times New Roman", serif;
    font-size: 19px;
}

.app-brand-text small {
    margin-top: 4px;
    color: rgba(255, 255, 255, .75);
    font-size: 11px;
}

.app-user {
    margin-left: auto;
    display: flex;
    flex-direction: column;
    text-align: right;
}

.app-user-name {
    font-size: 14px;
    font-weight: 700;
}

.app-user-role {
    margin-top: 3px;
    color: rgba(255, 255, 255, .72);
    font-size: 11px;
}

.app-header-logout {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 122px;
    min-height: 40px;
    padding: 9px 16px;
    margin-left: 6px;
    border: 1px solid var(--cream) !important;
    border-radius: 10px;
    background: var(--cream) !important;
    color: var(--wine) !important;
    text-decoration: none !important;
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .12);
    transition:
        background var(--transition),
        border-color var(--transition),
        color var(--transition),
        transform var(--transition),
        box-shadow var(--transition);
}

.app-header-logout:hover,
.app-header-logout:focus-visible {
    background: var(--white) !important;
    border-color: var(--white) !important;
    color: var(--wine-dark) !important;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .18);
    outline: none;
}

.app-header-logout:active {
    transform: translateY(1px);
    box-shadow: 0 3px 8px rgba(0, 0, 0, .12);
}

.mobile-menu-button {
    display: none;
    border: 0;
    background: transparent;
    color: var(--white);
    font-size: 25px;
    padding: 6px;
}

.app-body {
    min-height: calc(100vh - 76px);
    display: flex;
}

.app-sidebar {
    width: 255px;
    flex: 0 0 255px;
    height: calc(100vh - 76px);
    position: sticky;
    top: 76px;
    background: var(--white);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.app-nav {
    flex: 1 1 auto;
    min-height: 0;
    padding: 18px 12px;
    overflow-y: auto;
}

.app-nav-link {
    display: block;
    padding: 12px 14px;
    margin-bottom: 4px;
    border-radius: 10px;
    color: var(--text);
    text-decoration: none;
    font-size: 14px;
    font-weight: 600;
    transition:
        background var(--transition),
        color var(--transition);
}

.app-nav-link:hover {
    background: var(--cream-light);
    color: var(--wine);
}

.app-nav-link.is-active {
    background: var(--wine);
    color: var(--white);
}

.app-sidebar-footer {
    margin-top: auto;
    padding: 18px 12px;
    border-top: 1px solid var(--border);
    flex: 0 0 auto;
}

.app-logout-link {
    display: block;
    padding: 11px 14px;
    color: var(--danger);
    text-decoration: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
}

.app-logout-link:hover {
    background: var(--danger-bg);
}

.app-main {
    min-width: 0;
    flex: 1;
    padding: 30px;
}

.page-heading {
    margin-bottom: 25px;
}

.page-heading h1 {
    margin: 0;
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 30px;
}

@media (max-width: 850px) {

    .app-header-inner {
        padding: 10px 16px;
    }

    .app-brand {
        min-width: 0;
    }

    .app-user {
        display: none;
    }

    .mobile-menu-button {
        display: block;
        margin-left: 0;
    }

    .app-header-logout {
        margin-left: auto;
        padding: 8px 11px;
        font-size: 12px;
    }

    .app-sidebar {
        position: fixed;
        top: 76px;
        bottom: 0;
        left: 0;
        z-index: 999;
        transform: translateX(-100%);
        transition: transform 180ms ease;
        box-shadow: 8px 0 25px rgba(0, 0, 0, .12);
    }

    .app-sidebar.is-open {
        transform: translateX(0);
    }

    .app-main {
        width: 100%;
        padding: 22px 16px;
    }
}

@media (max-width: 500px) {

    .app-header-logout {
        min-height: 36px;
        padding: 7px 9px;
        font-size: 11px;
    }

    .app-brand-text strong {
        font-size: 16px;
    }

    .app-logo {
        width: 45px;
        height: 45px;
    }

    .page-heading h1 {
        font-size: 25px;
    }
}
/* ============================================================
   ADMIN DASHBOARD
   ============================================================ */

.admin-dashboard {
    width: min(100%, 1440px);
    margin: 0 auto;
    padding: 28px;
}

.dashboard-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    padding: 34px;
    margin-bottom: 24px;
    border-radius: 24px;
    background:
        linear-gradient(
            135deg,
            var(--wine-dark),
            var(--wine)
        );
    color: var(--white);
    box-shadow: var(--shadow);
}

.dashboard-eyebrow {
    display: block;
    margin-bottom: 7px;
    color: var(--wine-soft);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.dashboard-hero .dashboard-eyebrow {
    color: var(--cream);
}

.dashboard-hero h1 {
    margin: 0 0 10px;
    font-size: clamp(1.8rem, 3vw, 2.7rem);
    line-height: 1.05;
}

.dashboard-hero p {
    max-width: 680px;
    margin: 0;
    color: rgba(255, 255, 255, .78);
    line-height: 1.65;
}

.dashboard-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.dashboard-hero .btn {
    min-width: 160px;
}

.dashboard-hero .btn-secondary {
    background: rgba(255, 255, 255, .12);
    border-color: rgba(255, 255, 255, .24);
    color: var(--white);
}

.dashboard-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 28px;
}

.dashboard-stat-card {
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 135px;
    padding: 22px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    color: var(--text);
    box-shadow: 0 10px 28px rgba(60, 5, 10, .06);
    text-decoration: none;
    transition:
        transform var(--transition),
        box-shadow var(--transition),
        border-color var(--transition);
}

.dashboard-stat-card:hover {
    transform: translateY(-3px);
    border-color: rgba(104, 7, 16, .22);
    box-shadow: var(--shadow);
}

.dashboard-stat-card-alert {
    border-color: rgba(156, 23, 34, .18);
}

.dashboard-stat-icon {
    display: grid;
    flex: 0 0 52px;
    width: 52px;
    height: 52px;
    place-items: center;
    border-radius: 15px;
    background: var(--cream);
    color: var(--wine);
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .08em;
}

.dashboard-stat-label {
    display: block;
    margin-bottom: 5px;
    color: var(--muted);
    font-size: .78rem;
    font-weight: 700;
}

.dashboard-stat-card strong {
    display: block;
    margin-bottom: 2px;
    color: var(--wine-dark);
    font-size: 1.8rem;
    line-height: 1;
}

.dashboard-stat-card small {
    color: var(--muted);
    font-size: .75rem;
}

.dashboard-section {
    margin-bottom: 28px;
}

.section-heading {
    margin-bottom: 14px;
}

.section-heading h2,
.dashboard-panel-header h2 {
    margin: 0;
    color: var(--wine-dark);
    font-size: 1.25rem;
}

.quick-actions-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.quick-action-card {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    color: var(--text);
    text-decoration: none;
    transition:
        transform var(--transition),
        border-color var(--transition),
        box-shadow var(--transition);
}

.quick-action-card:hover {
    transform: translateY(-2px);
    border-color: rgba(104, 7, 16, .2);
    box-shadow: 0 12px 30px rgba(60, 5, 10, .07);
}

.quick-action-number {
    display: grid;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    place-items: center;
    border-radius: 11px;
    background: var(--cream-light);
    color: var(--wine);
    font-size: .68rem;
    font-weight: 900;
}

.quick-action-card strong {
    display: block;
    margin-bottom: 5px;
    color: var(--wine-dark);
}

.quick-action-card span:not(.quick-action-number) {
    color: var(--muted);
    font-size: .82rem;
    line-height: 1.5;
}

.dashboard-columns {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    gap: 20px;
    margin-bottom: 20px;
}

.dashboard-panel {
    min-width: 0;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    box-shadow: 0 10px 28px rgba(60, 5, 10, .05);
    overflow: hidden;
}

.dashboard-panel-full {
    margin-bottom: 20px;
}

.dashboard-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 22px 24px;
    border-bottom: 1px solid var(--border);
}

.panel-link {
    color: var(--wine);
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
}

.panel-link:hover {
    text-decoration: underline;
}

.dashboard-list {
    display: flex;
    flex-direction: column;
}

.dashboard-list-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 17px 24px;
    border-bottom: 1px solid var(--border);
    color: var(--text);
    text-decoration: none;
    transition: background var(--transition);
}

.dashboard-list-item:last-child {
    border-bottom: 0;
}

.dashboard-list-item:hover {
    background: var(--cream-light);
}

.dashboard-list-main {
    min-width: 0;
}

.dashboard-list-main strong,
.dashboard-list-main span,
.dashboard-list-main small {
    display: block;
}

.dashboard-list-main strong {
    margin-bottom: 4px;
    color: var(--wine-dark);
    font-size: .9rem;
}

.dashboard-list-main span {
    margin-bottom: 3px;
    color: var(--text);
    font-size: .82rem;
}

.dashboard-list-main small {
    color: var(--muted);
    font-size: .72rem;
}

.status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: max-content;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 800;
}

.status-success {
    background: var(--success-bg);
    color: var(--success);
}

.status-warning {
    background: #fff8e8;
    color: #956900;
}

.status-danger {
    background: var(--danger-bg);
    color: var(--danger);
}

.status-neutral {
    background: #f2f2f2;
    color: #666;
}

.dashboard-empty {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 35px 24px;
}

.dashboard-empty strong {
    color: var(--wine-dark);
    font-size: .9rem;
}

.dashboard-empty span {
    color: var(--muted);
    font-size: .8rem;
}

.activity-list {
    padding: 8px 24px;
}

.activity-item {
    position: relative;
    display: flex;
    gap: 13px;
    padding: 15px 0;
    border-bottom: 1px solid var(--border);
}

.activity-item:last-child {
    border-bottom: 0;
}

.activity-dot {
    flex: 0 0 9px;
    width: 9px;
    height: 9px;
    margin-top: 5px;
    border-radius: 50%;
    background: var(--wine);
}

.activity-content {
    min-width: 0;
}

.activity-content strong,
.activity-content span,
.activity-content small {
    display: block;
}

.activity-content strong {
    margin-bottom: 3px;
    color: var(--wine-dark);
    font-size: .82rem;
}

.activity-content span {
    margin-bottom: 3px;
    color: var(--text);
    font-size: .75rem;
}

.activity-content small {
    color: var(--muted);
    font-size: .7rem;
}

.dashboard-table-wrap {
    width: 100%;
    overflow-x: auto;
}

.dashboard-table {
    width: 100%;
    border-collapse: collapse;
}

.dashboard-table th,
.dashboard-table td {
    padding: 14px 18px;
    border-bottom: 1px solid var(--border);
    text-align: left;
    white-space: nowrap;
}

.dashboard-table th {
    background: var(--cream-light);
    color: var(--muted);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.dashboard-table td {
    color: var(--text);
    font-size: .78rem;
}

.dashboard-table td strong {
    color: var(--wine-dark);
}

.dashboard-table tbody tr:last-child td {
    border-bottom: 0;
}

.dashboard-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    padding-bottom: 20px;
}

.dashboard-summary-card {
    padding: 19px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
}

.dashboard-summary-card span,
.dashboard-summary-card small {
    display: block;
}

.dashboard-summary-card span {
    margin-bottom: 8px;
    color: var(--muted);
    font-size: .75rem;
    font-weight: 700;
}

.dashboard-summary-card strong {
    display: block;
    margin-bottom: 3px;
    color: var(--wine-dark);
    font-size: 1.55rem;
}

.dashboard-summary-card small {
    color: var(--muted);
    font-size: .7rem;
}


/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1100px) {

    .dashboard-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .quick-actions-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard-columns {
        grid-template-columns: 1fr;
    }

    .dashboard-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}


@media (max-width: 720px) {

    .admin-dashboard {
        padding: 16px;
    }

    .dashboard-hero {
        align-items: stretch;
        flex-direction: column;
        padding: 24px;
    }

    .dashboard-hero-actions {
        flex-direction: column;
    }

    .dashboard-hero .btn {
        width: 100%;
    }

    .dashboard-stat-grid,
    .quick-actions-grid,
    .dashboard-summary-grid {
        grid-template-columns: 1fr;
    }

    .dashboard-stat-card {
        min-height: 115px;
    }

    .dashboard-panel-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .dashboard-list-item {
        align-items: flex-start;
        flex-direction: column;
    }

    .dashboard-table th,
    .dashboard-table td {
        padding: 12px 14px;
    }
}
/* =========================================================
   EMPLOYEES
   ========================================================= */

.employees-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.page-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
}

.page-heading h1 {
    margin: 0;
    color: var(--wine);
    font-size: clamp(1.7rem, 3vw, 2.2rem);
}

.page-heading p {
    margin: 6px 0 0;
    color: var(--muted);
}

.employees-toolbar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.employees-search {
    position: relative;
    flex: 1 1 320px;
}

.employees-search input {
    width: 100%;
    min-height: 46px;
    padding: 0 16px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--white);
    color: var(--text);
    outline: none;
    transition: var(--transition);
}

.employees-search input:focus {
    border-color: var(--wine-soft);
    box-shadow: 0 0 0 3px rgba(104, 7, 16, .08);
}

.employees-filter {
    min-height: 46px;
    padding: 0 14px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--white);
    color: var(--text);
}

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 16px;
    border: 0;
    border-radius: 12px;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    transition: var(--transition);
}

.btn:hover {
    transform: translateY(-1px);
}

.btn-primary {
    background: var(--wine);
    color: var(--white);
}

.btn-primary:hover {
    background: var(--wine-dark);
}

.btn-secondary {
    background: var(--cream);
    color: var(--wine);
}

.btn-light {
    background: var(--white);
    color: var(--text);
    border: 1px solid var(--border);
}

.btn-danger {
    background: var(--danger-bg);
    color: var(--danger);
}

.btn-success {
    background: var(--success-bg);
    color: var(--success);
}

.btn-sm {
    min-height: 36px;
    padding: 0 11px;
    border-radius: 9px;
    font-size: .84rem;
}

.employees-panel {
    overflow: hidden;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.employees-table-wrap {
    width: 100%;
    overflow-x: auto;
}

.employees-table {
    width: 100%;
    min-width: 1050px;
    border-collapse: collapse;
}

.employees-table th {
    padding: 15px 16px;
    background: var(--cream-light);
    color: var(--wine);
    text-align: left;
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    white-space: nowrap;
}

.employees-table td {
    padding: 15px 16px;
    border-top: 1px solid var(--border);
    vertical-align: middle;
}

.employees-table tbody tr {
    transition: var(--transition);
}

.employees-table tbody tr:hover {
    background: #fffaf4;
}

.employee-name {
    font-weight: 700;
    color: var(--text);
}

.employee-document {
    color: var(--muted);
    font-size: .9rem;
}

.employee-position {
    max-width: 260px;
    color: var(--text);
    line-height: 1.35;
}

.employee-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7px;
    white-space: nowrap;
}

.status-badge,
.user-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: .76rem;
    font-weight: 800;
}

.status-active {
    background: var(--success-bg);
    color: var(--success);
}

.status-inactive {
    background: var(--danger-bg);
    color: var(--danger);
}

.user-active {
    background: #eef3ff;
    color: #3a55a5;
}

.user-none {
    background: #f4f1f1;
    color: var(--muted);
}

.employees-empty {
    padding: 55px 25px;
    text-align: center;
    color: var(--muted);
}

.employee-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
    backdrop-filter: blur(4px);
}

.employee-modal.is-open {
    display: flex;
}

.employee-modal-card {
    width: min(900px, 100%);
    max-height: min(92vh, 900px);
    overflow-y: auto;
    background: var(--white);
    border-radius: 20px;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .22);
}

.employee-modal-header {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 20px 24px;
    background: var(--white);
    border-bottom: 1px solid var(--border);
}

.employee-modal-header h2 {
    margin: 0;
    color: var(--wine);
    font-size: 1.35rem;
}

.modal-close {
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 10px;
    background: var(--cream-light);
    color: var(--wine);
    cursor: pointer;
    font-size: 1.25rem;
}

.employee-form {
    padding: 24px;
}

.employee-form-section {
    margin-bottom: 26px;
}

.employee-form-section:last-child {
    margin-bottom: 0;
}

.employee-form-section h3 {
    margin: 0 0 15px;
    color: var(--wine);
    font-size: 1rem;
}

.employee-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 15px;
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.form-group.full {
    grid-column: 1 / -1;
}

.form-group label {
    color: var(--text);
    font-size: .85rem;
    font-weight: 700;
}

.form-group input,
.form-group select {
    width: 100%;
    min-height: 44px;
    padding: 9px 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--white);
    color: var(--text);
    font: inherit;
    outline: none;
}

.form-group input:focus,
.form-group select:focus {
    border-color: var(--wine-soft);
    box-shadow: 0 0 0 3px rgba(104, 7, 16, .08);
}

.form-help {
    color: var(--muted);
    font-size: .76rem;
}

.form-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 13px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--cream-light);
}

.form-check input {
    margin-top: 3px;
}

.employee-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding-top: 20px;
    margin-top: 20px;
    border-top: 1px solid var(--border);
}

.employee-alert {
    display: none;
    margin: 0 24px;
    padding: 12px 15px;
    border-radius: 10px;
    font-size: .9rem;
}

.employee-alert.is-visible {
    display: block;
}

.employee-alert.success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid rgba(23, 107, 66, .15);
}

.employee-alert.error {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid rgba(156, 23, 34, .15);
}

.employees-summary {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--muted);
    font-size: .85rem;
}

.employees-summary strong {
    color: var(--wine);
}

@media (max-width: 760px) {
    .page-heading {
        flex-direction: column;
    }

    .page-heading .btn {
        width: 100%;
    }

    .employee-form-grid {
        grid-template-columns: 1fr;
    }

    .form-group.full {
        grid-column: auto;
    }

    .employee-form {
        padding: 18px;
    }

    .employee-modal-header {
        padding: 16px 18px;
    }

    .employee-alert {
        margin: 0 18px;
    }

    .employee-form-actions {
        flex-direction: column-reverse;
    }

    .employee-form-actions .btn {
        width: 100%;
    }
}
/* =========================================================
   PAYROLL
   ========================================================= */

.payroll-page {
    display: grid;
    gap: 22px;
}

.payroll-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: space-between;
    gap: 14px;
}

.payroll-filters {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) 180px 180px auto;
    gap: 12px;
    width: 100%;
}

.payroll-card {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    overflow: hidden;
}

.payroll-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 22px;
    border-bottom: 1px solid var(--border);
}

.payroll-card-header h2 {
    margin: 0;
    color: var(--wine);
    font-size: 1.05rem;
}

.payroll-card-body {
    padding: 22px;
}

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

.payroll-upload-grid .field-full {
    grid-column: 1 / -1;
}

.payroll-dropzone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 150px;
    padding: 24px;
    text-align: center;
    border: 2px dashed var(--border);
    border-radius: 14px;
    background: var(--cream-light);
    transition: var(--transition);
    cursor: pointer;
}

.payroll-dropzone:hover,
.payroll-dropzone.is-dragover {
    border-color: var(--wine);
    background: #fff9ed;
}

.payroll-dropzone input[type="file"] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.payroll-dropzone strong {
    color: var(--wine);
    margin-bottom: 6px;
}

.payroll-dropzone span {
    color: var(--muted);
    font-size: .9rem;
}

.payroll-file-list {
    display: grid;
    gap: 8px;
    margin-top: 12px;
}

.payroll-file-item {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    background: var(--cream-light);
    border-radius: 10px;
    font-size: .9rem;
}

.payroll-table-wrap {
    width: 100%;
    overflow-x: auto;
}

.payroll-table {
    width: 100%;
    min-width: 950px;
    border-collapse: collapse;
}

.payroll-table th,
.payroll-table td {
    padding: 13px 15px;
    text-align: left;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
}

.payroll-table th {
    color: var(--muted);
    background: var(--cream-light);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.payroll-table tbody tr:hover {
    background: #fffaf4;
}

.payroll-employee {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.payroll-employee strong {
    color: var(--text);
}

.payroll-employee span {
    color: var(--muted);
    font-size: .82rem;
}

.payroll-period {
    display: inline-flex;
    align-items: center;
    padding: 6px 9px;
    border-radius: 999px;
    background: var(--cream);
    color: var(--wine);
    font-size: .8rem;
    font-weight: 700;
}

.payroll-status {
    display: inline-flex;
    align-items: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
}

.payroll-status.is-assigned {
    color: var(--success);
    background: var(--success-bg);
}

.payroll-status.is-pending {
    color: #805b00;
    background: #fff6d8;
}

.payroll-status.is-deleted {
    color: var(--danger);
    background: var(--danger-bg);
}

.payroll-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.payroll-actions .btn {
    white-space: nowrap;
}

.payroll-empty {
    padding: 42px 20px;
    text-align: center;
    color: var(--muted);
}

.payroll-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.payroll-summary-item {
    padding: 16px;
    background: var(--cream-light);
    border: 1px solid var(--border);
    border-radius: 14px;
}

.payroll-summary-item strong {
    display: block;
    margin-top: 5px;
    color: var(--wine);
    font-size: 1.45rem;
}

.payroll-summary-item span {
    color: var(--muted);
    font-size: .82rem;
}

.payroll-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
}

.payroll-modal.is-open {
    display: flex;
}

.payroll-modal-dialog {
    width: min(760px, 100%);
    max-height: 90vh;
    overflow-y: auto;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .25);
}

.payroll-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 22px;
    border-bottom: 1px solid var(--border);
}

.payroll-modal-header h3 {
    margin: 0;
    color: var(--wine);
}

.payroll-modal-body {
    padding: 22px;
}

.payroll-modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 18px 22px;
    border-top: 1px solid var(--border);
}

.payroll-alert {
    display: none;
    padding: 12px 15px;
    margin-bottom: 18px;
    border-radius: 12px;
    font-size: .9rem;
}

.payroll-alert.is-visible {
    display: block;
}

.payroll-alert.is-success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid #cdebd9;
}

.payroll-alert.is-error {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid #f3c9cd;
}

.payroll-matching-result {
    display: grid;
    gap: 10px;
    margin-top: 15px;
}

.payroll-match-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 12px;
}

.payroll-match-item strong {
    color: var(--text);
}

.payroll-match-item span {
    color: var(--muted);
    font-size: .82rem;
}

@media (max-width: 1000px) {
    .payroll-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .payroll-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .payroll-filters,
    .payroll-upload-grid {
        grid-template-columns: 1fr;
    }

    .payroll-upload-grid .field-full {
        grid-column: auto;
    }

    .payroll-summary {
        grid-template-columns: 1fr;
    }

    .payroll-card-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .payroll-actions {
        flex-direction: column;
    }
}
/* =========================================================
   DOCUMENTOS Y CERTIFICADOS
   ========================================================= */

.documents-page {
    display: grid;
    gap: 22px;
}

.documents-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.documents-summary-item {
    padding: 18px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.documents-summary-item span {
    color: var(--muted);
    font-size: .82rem;
}

.documents-summary-item strong {
    display: block;
    margin-top: 5px;
    color: var(--wine);
    font-size: 1.45rem;
}

.documents-card {
    overflow: hidden;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.documents-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 22px;
    border-bottom: 1px solid var(--border);
}

.documents-card-header h2 {
    margin: 0;
    color: var(--wine);
    font-size: 1.05rem;
}

.documents-card-body {
    padding: 22px;
}

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

.documents-upload-grid .field-full {
    grid-column: 1 / -1;
}

.documents-dropzone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 145px;
    padding: 24px;
    text-align: center;
    border: 2px dashed var(--border);
    border-radius: 14px;
    background: var(--cream-light);
    cursor: pointer;
    transition: var(--transition);
}

.documents-dropzone:hover,
.documents-dropzone.is-dragover {
    border-color: var(--wine);
    background: #fff9ed;
}

.documents-dropzone input[type="file"] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.documents-dropzone strong {
    margin-bottom: 6px;
    color: var(--wine);
}

.documents-dropzone span {
    color: var(--muted);
    font-size: .88rem;
}

.documents-file-list {
    display: grid;
    gap: 8px;
    margin-top: 12px;
}

.documents-file-item {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--cream-light);
    font-size: .88rem;
}

.documents-table-wrap {
    width: 100%;
    overflow-x: auto;
}

.documents-table {
    width: 100%;
    min-width: 900px;
    border-collapse: collapse;
}

.documents-table th,
.documents-table td {
    padding: 13px 15px;
    text-align: left;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
}

.documents-table th {
    color: var(--muted);
    background: var(--cream-light);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.documents-table tbody tr:hover {
    background: #fffaf4;
}

.document-employee {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.document-employee strong {
    color: var(--text);
}

.document-employee span {
    color: var(--muted);
    font-size: .82rem;
}

.document-type {
    display: inline-flex;
    padding: 6px 10px;
    border-radius: 999px;
    background: var(--cream);
    color: var(--wine);
    font-size: .78rem;
    font-weight: 700;
}

.document-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.documents-alert {
    display: none;
    padding: 12px 15px;
    border-radius: 12px;
    font-size: .9rem;
}

.documents-alert.is-visible {
    display: block;
}

.documents-alert.is-success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid #cdebd9;
}

.documents-alert.is-error {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid #f3c9cd;
}

.documents-empty {
    padding: 42px 20px;
    text-align: center;
    color: var(--muted);
}

.documents-filter-grid {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) 220px 220px auto;
    gap: 12px;
    align-items: end;
}

.documents-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
}

.documents-modal.is-open {
    display: flex;
}

.documents-modal-dialog {
    width: min(700px, 100%);
    max-height: 90vh;
    overflow-y: auto;
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: 0 30px 80px rgba(0, 0, 0, .25);
}

.documents-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 22px;
    border-bottom: 1px solid var(--border);
}

.documents-modal-header h3 {
    margin: 0;
    color: var(--wine);
}

.documents-modal-body {
    padding: 22px;
}

.documents-modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 18px 22px;
    border-top: 1px solid var(--border);
}

@media (max-width: 900px) {
    .documents-summary {
        grid-template-columns: 1fr;
    }

    .documents-filter-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .documents-upload-grid,
    .documents-filter-grid {
        grid-template-columns: 1fr;
    }

    .documents-upload-grid .field-full {
        grid-column: auto;
    }
}
/* =========================================================
   REQUESTS
   ========================================================= */

.requests-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.requests-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.requests-toolbar h1 {
    margin: 0;
}

.requests-toolbar p {
    margin: 5px 0 0;
    color: var(--muted);
}

.requests-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.requests-filters {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.requests-stats {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px;
}

.request-stat {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 18px;
    box-shadow: var(--shadow);
}

.request-stat-label {
    display: block;
    color: var(--muted);
    font-size: .82rem;
    margin-bottom: 7px;
}

.request-stat-value {
    display: block;
    color: var(--wine);
    font-size: 1.65rem;
    font-weight: 800;
}

.requests-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.request-card {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 20px;
}

.request-card.is-deleted {
    opacity: .65;
}

.request-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.request-title {
    margin: 0;
    color: var(--text);
    font-size: 1.05rem;
}

.request-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    margin-top: 7px;
    color: var(--muted);
    font-size: .84rem;
}

.request-description {
    margin: 16px 0 0;
    color: var(--text);
    line-height: 1.6;
    white-space: pre-wrap;
}

.request-response {
    margin-top: 16px;
    padding: 14px 16px;
    border-left: 4px solid var(--wine);
    background: var(--cream-light);
    border-radius: 10px;
}

.request-response strong {
    display: block;
    margin-bottom: 5px;
    color: var(--wine);
}

.request-notes {
    margin-top: 12px;
    padding: 12px 14px;
    background: #faf7f7;
    border: 1px dashed var(--border);
    border-radius: 10px;
    color: var(--muted);
    font-size: .9rem;
}

.request-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 18px;
    padding-top: 15px;
    border-top: 1px solid var(--border);
    flex-wrap: wrap;
}

.request-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.request-status {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
}

.request-status.pending {
    color: #8a5a00;
    background: #fff5d8;
}

.request-status.reviewing {
    color: #245a88;
    background: #eaf4ff;
}

.request-status.approved {
    color: var(--success);
    background: var(--success-bg);
}

.request-status.rejected {
    color: var(--danger);
    background: var(--danger-bg);
}

.request-status.attended {
    color: #5a477d;
    background: #f0ebfa;
}

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

.request-form-grid .full {
    grid-column: 1 / -1;
}

.request-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.request-empty {
    padding: 45px 20px;
    text-align: center;
    color: var(--muted);
    background: var(--white);
    border: 1px dashed var(--border);
    border-radius: var(--radius);
}

.request-employee {
    font-weight: 700;
    color: var(--wine);
}

.request-attachment {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    color: var(--wine);
    font-size: .86rem;
    font-weight: 700;
    text-decoration: none;
}

.request-attachment:hover {
    text-decoration: underline;
}

.request-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
}

.request-modal.is-open {
    display: flex;
}

.request-modal-dialog {
    width: min(760px, 100%);
    max-height: calc(100vh - 40px);
    overflow-y: auto;
    background: var(--white);
    border-radius: 22px;
    box-shadow: 0 25px 70px rgba(0, 0, 0, .22);
}

.request-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 22px;
    border-bottom: 1px solid var(--border);
}

.request-modal-header h2 {
    margin: 0;
    font-size: 1.2rem;
}

.request-modal-body {
    padding: 22px;
}

.request-close {
    border: 0;
    background: transparent;
    color: var(--muted);
    font-size: 1.4rem;
    cursor: pointer;
}

.request-close:hover {
    color: var(--wine);
}

.request-alert {
    display: none;
    padding: 12px 15px;
    margin-bottom: 16px;
    border-radius: 10px;
    font-size: .9rem;
}

.request-alert.is-visible {
    display: block;
}

.request-alert.success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid rgba(23, 107, 66, .15);
}

.request-alert.error {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid rgba(156, 23, 34, .15);
}

.request-loading {
    pointer-events: none;
    opacity: .65;
}

@media (max-width: 1100px) {
    .requests-stats {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .requests-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .requests-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .requests-filters,
    .request-form-grid {
        grid-template-columns: 1fr;
    }

    .request-form-grid .full {
        grid-column: auto;
    }

    .request-card-header,
    .request-card-footer {
        align-items: flex-start;
        flex-direction: column;
    }

    .request-actions {
        width: 100%;
    }
}

@media (max-width: 480px) {
    .requests-stats {
        grid-template-columns: 1fr;
    }
}
/* =========================================================
   NOTIFICATIONS
   ========================================================= */

.notifications-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.notifications-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
}

.notifications-header h1 {
    margin: 0;
}

.notifications-header p {
    margin: 6px 0 0;
    color: var(--muted);
}

.notifications-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

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

.notification-summary-card {
    padding: 20px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.notification-summary-label {
    display: block;
    color: var(--muted);
    font-size: .84rem;
    margin-bottom: 6px;
}

.notification-summary-card strong {
    color: var(--wine);
    font-size: 1.7rem;
}

.notifications-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.notification-card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    padding: 19px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    transition:
        background var(--transition),
        border-color var(--transition),
        transform var(--transition);
}

.notification-card:hover {
    transform: translateY(-1px);
}

.notification-card.is-unread {
    background: var(--cream-light);
    border-color: rgba(104, 7, 16, .18);
}

.notification-indicator {
    flex: 0 0 9px;
    width: 9px;
    height: 9px;
    margin-top: 7px;
    border-radius: 50%;
    background: transparent;
}

.notification-card.is-unread .notification-indicator {
    background: var(--wine);
}

.notification-content {
    flex: 1;
    min-width: 0;
}

.notification-card-header {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.notification-card-header h2 {
    margin: 0;
    color: var(--text);
    font-size: 1rem;
}

.notification-content p {
    margin: 8px 0 10px;
    color: var(--text);
    line-height: 1.55;
}

.notification-new {
    display: inline-flex;
    align-items: center;
    padding: 3px 8px;
    border-radius: 999px;
    color: var(--wine);
    background: var(--cream);
    font-size: .7rem;
    font-weight: 800;
}

.notification-meta {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    color: var(--muted);
    font-size: .78rem;
}

.notification-actions {
    display: flex;
    gap: 7px;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.notifications-empty {
    padding: 55px 20px;
    text-align: center;
    background: var(--white);
    border: 1px dashed var(--border);
    border-radius: var(--radius);
}

.notifications-empty-icon {
    width: 52px;
    height: 52px;
    margin: 0 auto 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--success);
    background: var(--success-bg);
    font-size: 1.4rem;
    font-weight: 800;
}

.notifications-empty h2 {
    margin: 0 0 7px;
    font-size: 1.1rem;
}

.notifications-empty p {
    margin: 0;
    color: var(--muted);
}

.btn-sm {
    padding: 7px 11px;
    font-size: .78rem;
}

@media (max-width: 700px) {
    .notifications-summary {
        grid-template-columns: 1fr;
    }

    .notification-card {
        flex-direction: column;
    }

    .notification-indicator {
        display: none;
    }

    .notification-actions {
        width: 100%;
    }
}
/* =========================================================
   SETTINGS
   ========================================================= */

.settings-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.settings-header h1 {
    margin: 0;
}

.settings-header p {
    margin: 6px 0 0;
    color: var(--muted);
}

.settings-alert {
    display: none;
    padding: 13px 16px;
    border-radius: 11px;
    font-size: .9rem;
}

.settings-alert.is-visible {
    display: block;
}

.settings-alert.success {
    color: var(--success);
    background: var(--success-bg);
    border: 1px solid rgba(23, 107, 66, .16);
}

.settings-alert.error {
    color: var(--danger);
    background: var(--danger-bg);
    border: 1px solid rgba(156, 23, 34, .16);
}

.settings-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
    gap: 20px;
    align-items: start;
}

.settings-card {
    padding: 24px;
}

.settings-card-header {
    margin-bottom: 22px;
}

.settings-card-header h2 {
    margin: 0;
    color: var(--text);
    font-size: 1.15rem;
}

.settings-card-header p {
    margin: 6px 0 0;
    color: var(--muted);
    font-size: .88rem;
}

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

.settings-form-grid .full {
    grid-column: 1 / -1;
}

.settings-logo-preview {
    width: 100%;
    min-height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
    padding: 25px;
    background: var(--cream-light);
    border: 1px dashed var(--border);
    border-radius: 16px;
}

.settings-logo-preview img {
    display: block;
    max-width: 100%;
    max-height: 190px;
    object-fit: contain;
}

.settings-logo-placeholder {
    width: 110px;
    height: 110px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--wine);
    color: var(--cream);
    font-size: 2rem;
    font-weight: 800;
}

.settings-brand-note {
    margin-top: 18px;
    padding: 13px 14px;
    background: var(--cream-light);
    border-radius: 10px;
    color: var(--muted);
    font-size: .8rem;
    line-height: 1.55;
}

.settings-footer {
    display: flex;
    justify-content: flex-end;
}

@media (max-width: 900px) {
    .settings-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 650px) {
    .settings-form-grid {
        grid-template-columns: 1fr;
    }

    .settings-form-grid .full {
        grid-column: auto;
    }

    .settings-card {
        padding: 18px;
    }

    .settings-footer {
        justify-content: stretch;
    }

    .settings-footer .btn {
        width: 100%;
    }
}
/* =========================================================
   USERS
   ========================================================= */

.users-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.users-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
}

.users-header h1 {
    margin: 0;
}

.users-header p {
    margin: 6px 0 0;
    color: var(--muted);
}

.users-filters {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr auto;
    gap: 12px;
    align-items: end;
}

.users-filter-actions {
    display: flex;
    gap: 8px;
}

.users-table-wrapper {
    overflow: hidden;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.users-table-scroll {
    overflow-x: auto;
}

.users-table {
    width: 100%;
    min-width: 1050px;
    border-collapse: collapse;
}

.users-table th {
    padding: 14px;
    text-align: left;
    background: var(--cream-light);
    color: var(--wine);
    border-bottom: 1px solid var(--border);
    font-size: .78rem;
    text-transform: uppercase;
}

.users-table td {
    padding: 14px;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
    font-size: .87rem;
}

.users-table tbody tr:last-child td {
    border-bottom: 0;
}

.users-table tbody tr:hover {
    background: #fdfaf7;
}

.users-table td strong {
    display: block;
}

.users-table td small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}

.users-muted {
    color: var(--muted);
}

.user-role,
.user-status {
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
}

.user-role.admin {
    color: var(--wine);
    background: var(--cream);
}

.user-role.employee {
    color: #315b72;
    background: #eaf4fa;
}

.user-status.active {
    color: var(--success);
    background: var(--success-bg);
}

.user-status.inactive {
    color: var(--danger);
    background: var(--danger-bg);
}

.users-actions {
    display: flex;
    gap: 7px;
    flex-wrap: wrap;
}

.users-empty {
    padding: 45px !important;
    text-align: center;
    color: var(--muted);
}

.users-modal {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
}

.users-modal.is-open {
    display: flex;
}

.users-modal-dialog {
    width: min(720px, 100%);
    max-height: calc(100vh - 40px);
    overflow-y: auto;
    background: var(--white);
    border-radius: 20px;
    box-shadow: 0 25px 70px rgba(0, 0, 0, .25);
}

.users-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 19px 22px;
    border-bottom: 1px solid var(--border);
}

.users-modal-header h2 {
    margin: 0;
    font-size: 1.15rem;
}

.users-modal-close {
    border: 0;
    background: transparent;
    color: var(--muted);
    font-size: 1.5rem;
    cursor: pointer;
}

.users-modal-close:hover {
    color: var(--wine);
}

.users-modal-body {
    padding: 22px;
}

.users-alert {
    display: none;
    margin-bottom: 16px;
    padding: 12px 15px;
    border-radius: 10px;
    font-size: .88rem;
}

.users-alert.is-visible {
    display: block;
}

.users-alert.success {
    color: var(--success);
    background: var(--success-bg);
}

.users-alert.error {
    color: var(--danger);
    background: var(--danger-bg);
}

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

.users-form-grid .full {
    grid-column: 1 / -1;
}

.users-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 9px;
    padding-top: 5px;
}

@media (max-width: 900px) {
    .users-filters {
        grid-template-columns: repeat(2, 1fr);
    }

    .users-filter-actions {
        grid-column: 1 / -1;
    }
}

@media (max-width: 650px) {
    .users-filters,
    .users-form-grid {
        grid-template-columns: 1fr;
    }

    .users-filter-actions,
    .users-form-grid .full {
        grid-column: auto;
    }

    .users-filter-actions {
        justify-content: stretch;
    }

    .users-filter-actions .btn {
        flex: 1;
    }

    .users-form-actions {
        flex-direction: column-reverse;
    }

    .users-form-actions .btn {
        width: 100%;
    }
}
/* ============================================================
   EMPLOYEE DASHBOARD
   ============================================================ */

.employee-dashboard {
    width: min(100%, 1400px);
    margin: 0 auto;
    padding: 28px;
}

.employee-dashboard-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 34px;
    margin-bottom: 22px;
    border-radius: 24px;
    background:
        linear-gradient(
            135deg,
            var(--wine-dark),
            var(--wine)
        );
    color: var(--white);
    box-shadow: var(--shadow);
}

.employee-dashboard-eyebrow {
    display: block;
    margin-bottom: 7px;
    color: var(--wine-soft);
    font-size: .7rem;
    font-weight: 900;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.employee-dashboard-hero .employee-dashboard-eyebrow {
    color: var(--cream);
}

.employee-dashboard-welcome h1 {
    margin: 0 0 9px;
    font-size: clamp(1.9rem, 3vw, 2.7rem);
    line-height: 1.05;
}

.employee-dashboard-welcome p {
    max-width: 680px;
    margin: 0;
    color: rgba(255, 255, 255, .78);
    line-height: 1.65;
}

.employee-dashboard-profile {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 220px;
    padding: 12px 15px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 16px;
    background: rgba(255, 255, 255, .08);
}

.employee-avatar {
    display: grid;
    flex: 0 0 46px;
    width: 46px;
    height: 46px;
    place-items: center;
    border-radius: 50%;
    background: var(--cream);
    color: var(--wine);
    font-size: 1.05rem;
    font-weight: 900;
}

.employee-dashboard-profile strong,
.employee-dashboard-profile span {
    display: block;
}

.employee-dashboard-profile strong {
    margin-bottom: 3px;
    color: var(--white);
    font-size: .84rem;
}

.employee-dashboard-profile span {
    color: rgba(255, 255, 255, .68);
    font-size: .72rem;
}

.employee-dashboard-warning {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 16px 18px;
    margin-bottom: 22px;
    border: 1px solid #ead9a5;
    border-radius: 15px;
    background: #fff9e8;
}

.employee-dashboard-warning strong {
    color: #775600;
    font-size: .84rem;
}

.employee-dashboard-warning span {
    color: #806d3c;
    font-size: .76rem;
}

.employee-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 15px;
    margin-bottom: 28px;
}

.employee-stat-card {
    display: flex;
    align-items: center;
    gap: 15px;
    min-height: 125px;
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    color: var(--text);
    text-decoration: none;
    box-shadow: 0 10px 28px rgba(60, 5, 10, .05);
    transition:
        transform var(--transition),
        box-shadow var(--transition),
        border-color var(--transition);
}

.employee-stat-card:hover {
    transform: translateY(-3px);
    border-color: rgba(104, 7, 16, .22);
    box-shadow: var(--shadow);
}

.employee-stat-card-alert {
    border-color: rgba(104, 7, 16, .2);
}

.employee-stat-icon {
    display: grid;
    flex: 0 0 50px;
    width: 50px;
    height: 50px;
    place-items: center;
    border-radius: 14px;
    background: var(--cream);
    color: var(--wine);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .06em;
}

.employee-stat-card span:not(.employee-stat-icon) {
    display: block;
    margin-bottom: 5px;
    color: var(--muted);
    font-size: .75rem;
    font-weight: 700;
}

.employee-stat-card strong {
    display: block;
    margin-bottom: 3px;
    color: var(--wine-dark);
    font-size: 1.75rem;
    line-height: 1;
}

.employee-stat-card small {
    color: var(--muted);
    font-size: .7rem;
}

.employee-dashboard-section {
    margin-bottom: 28px;
}

.employee-section-heading {
    margin-bottom: 14px;
}

.employee-section-heading h2,
.employee-panel-header h2 {
    margin: 0;
    color: var(--wine-dark);
    font-size: 1.2rem;
}

.employee-quick-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 13px;
}

.employee-quick-card {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    padding: 18px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    color: var(--text);
    text-decoration: none;
    transition:
        transform var(--transition),
        box-shadow var(--transition),
        border-color var(--transition);
}

.employee-quick-card:hover {
    transform: translateY(-2px);
    border-color: rgba(104, 7, 16, .2);
    box-shadow: 0 12px 28px rgba(60, 5, 10, .06);
}

.employee-quick-number {
    display: grid;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 10px;
    background: var(--cream-light);
    color: var(--wine);
    font-size: .65rem;
    font-weight: 900;
}

.employee-quick-card strong,
.employee-quick-card span {
    display: block;
}

.employee-quick-card strong {
    margin-bottom: 4px;
    color: var(--wine-dark);
    font-size: .82rem;
}

.employee-quick-card span:not(.employee-quick-number) {
    color: var(--muted);
    font-size: .71rem;
    line-height: 1.45;
}

.employee-dashboard-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
    margin-bottom: 20px;
}

.employee-dashboard-panel {
    min-width: 0;
    margin-bottom: 20px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    box-shadow: 0 10px 28px rgba(60, 5, 10, .05);
    overflow: hidden;
}

.employee-dashboard-columns .employee-dashboard-panel {
    margin-bottom: 0;
}

.employee-dashboard-panel-full {
    width: 100%;
}

.employee-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 21px 23px;
    border-bottom: 1px solid var(--border);
}

.employee-panel-link {
    color: var(--wine);
    font-size: .74rem;
    font-weight: 800;
    text-decoration: none;
}

.employee-panel-link:hover {
    text-decoration: underline;
}

.employee-empty {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 34px 23px;
}

.employee-empty strong {
    color: var(--wine-dark);
    font-size: .84rem;
}

.employee-empty span {
    color: var(--muted);
    font-size: .74rem;
    line-height: 1.5;
}

.employee-list {
    display: flex;
    flex-direction: column;
}

.employee-list-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 15px 21px;
    border-bottom: 1px solid var(--border);
    color: var(--text);
    text-decoration: none;
    transition: background var(--transition);
}

.employee-list-item:last-child {
    border-bottom: 0;
}

.employee-list-item:hover {
    background: var(--cream-light);
}

.employee-list-icon {
    display: grid;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    place-items: center;
    border-radius: 11px;
    background: var(--cream);
    color: var(--wine);
    font-size: .57rem;
    font-weight: 900;
}

.employee-list-content {
    min-width: 0;
    flex: 1;
}

.employee-list-content strong,
.employee-list-content span,
.employee-list-content small {
    display: block;
}

.employee-list-content strong {
    margin-bottom: 3px;
    overflow: hidden;
    color: var(--wine-dark);
    font-size: .8rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.employee-list-content span {
    margin-bottom: 3px;
    overflow: hidden;
    color: var(--text);
    font-size: .7rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.employee-list-content small {
    color: var(--muted);
    font-size: .66rem;
}

.employee-list-arrow {
    color: var(--wine);
    font-size: 1rem;
    font-weight: 900;
}

.employee-notification-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    padding: 20px;
}

.employee-notification {
    display: flex;
    gap: 13px;
    padding: 17px;
    border: 1px solid var(--border);
    border-radius: 15px;
    background: var(--cream-light);
}

.employee-notification.is-unread {
    border-color: rgba(104, 7, 16, .2);
    background: var(--white);
}

.employee-notification-mark {
    display: grid;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 11px;
    background: var(--cream);
    color: var(--wine);
    font-size: .52rem;
    font-weight: 900;
}

.employee-notification strong {
    display: block;
    margin-bottom: 5px;
    color: var(--wine-dark);
    font-size: .8rem;
}

.employee-notification p {
    margin: 0 0 7px;
    color: var(--text);
    font-size: .72rem;
    line-height: 1.5;
}

.employee-notification small {
    color: var(--muted);
    font-size: .65rem;
}

.employee-info-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
}

.employee-info-item {
    padding: 19px 22px;
    border-right: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}

.employee-info-item:nth-child(3n) {
    border-right: 0;
}

.employee-info-item:nth-last-child(-n + 3) {
    border-bottom: 0;
}

.employee-info-item span,
.employee-info-item strong {
    display: block;
}

.employee-info-item span {
    margin-bottom: 5px;
    color: var(--muted);
    font-size: .68rem;
    font-weight: 700;
}

.employee-info-item strong {
    color: var(--wine-dark);
    font-size: .78rem;
}


/* ============================================================
   EMPLOYEE DASHBOARD RESPONSIVE
   ============================================================ */

@media (max-width: 1150px) {

    .employee-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-quick-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-info-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .employee-info-item:nth-child(3n) {
        border-right: 1px solid var(--border);
    }

    .employee-info-item:nth-child(2n) {
        border-right: 0;
    }

    .employee-info-item:nth-last-child(-n + 3) {
        border-bottom: 1px solid var(--border);
    }

    .employee-info-item:nth-last-child(-n + 2) {
        border-bottom: 0;
    }
}


@media (max-width: 800px) {

    .employee-dashboard {
        padding: 17px;
    }

    .employee-dashboard-hero {
        align-items: stretch;
        flex-direction: column;
        padding: 25px;
    }

    .employee-dashboard-profile {
        min-width: 0;
    }

    .employee-dashboard-columns {
        grid-template-columns: 1fr;
    }

    .employee-notification-grid {
        grid-template-columns: 1fr;
    }
}


@media (max-width: 600px) {

    .employee-stat-grid,
    .employee-quick-grid,
    .employee-info-grid {
        grid-template-columns: 1fr;
    }

    .employee-info-item,
    .employee-info-item:nth-child(3n),
    .employee-info-item:nth-child(2n) {
        border-right: 0;
        border-bottom: 1px solid var(--border);
    }

    .employee-info-item:last-child {
        border-bottom: 0;
    }

    .employee-panel-header {
        align-items: flex-start;
        flex-direction: column;
    }
}
/* ============================================================
   NOTIFICATIONS
   ============================================================ */

.notifications-page {
    width: min(100%, 1200px);
    margin: 0 auto;
    padding: 28px;
}

.notifications-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 32px;
    margin-bottom: 18px;
    border-radius: 24px;
    background:
        linear-gradient(
            135deg,
            var(--wine-dark),
            var(--wine)
        );
    color: var(--white);
    box-shadow: var(--shadow);
}

.notifications-eyebrow {
    display: block;
    margin-bottom: 7px;
    color: var(--cream);
    font-size: .7rem;
    font-weight: 900;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.notifications-hero h1 {
    margin: 0 0 8px;
    font-size: clamp(1.8rem, 3vw, 2.5rem);
}

.notifications-hero p {
    max-width: 650px;
    margin: 0;
    color: rgba(255, 255, 255, .76);
    font-size: .84rem;
    line-height: 1.6;
}

.notifications-hero-count {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 0 0 110px;
    width: 110px;
    height: 110px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 20px;
    background: rgba(255, 255, 255, .08);
}

.notifications-hero-count span {
    margin-bottom: 4px;
    color: rgba(255, 255, 255, .7);
    font-size: .7rem;
}

.notifications-hero-count strong {
    color: var(--cream);
    font-size: 2rem;
    line-height: 1;
}

.notifications-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 15px 18px;
    margin-bottom: 14px;
    border: 1px solid var(--border);
    border-radius: 15px;
    background: var(--white);
}

.notifications-toolbar-info {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.notifications-toolbar-info strong {
    color: var(--wine-dark);
    font-size: 1rem;
}

.notifications-toolbar-info span {
    color: var(--muted);
    font-size: .75rem;
}

.notifications-alert {
    padding: 12px 15px;
    margin-bottom: 14px;
    border-radius: 12px;
    font-size: .78rem;
    font-weight: 700;
}

.notifications-alert-success {
    border: 1px solid #b9e3ca;
    background: var(--success-bg);
    color: var(--success);
}

.notifications-alert-error {
    border: 1px solid #edc0c5;
    background: var(--danger-bg);
    color: var(--danger);
}

.notifications-panel {
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    box-shadow: 0 10px 28px rgba(60, 5, 10, .05);
    overflow: hidden;
}

.notifications-list {
    display: flex;
    flex-direction: column;
}

.notification-item {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    padding: 21px 23px;
    border-bottom: 1px solid var(--border);
    transition: background var(--transition);
}

.notification-item:last-child {
    border-bottom: 0;
}

.notification-item.is-unread {
    background: var(--cream-light);
}

.notification-item.is-unread:hover {
    background: #f9edd5;
}

.notification-item.is-read {
    background: var(--white);
}

.notification-status-mark {
    display: grid;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    place-items: center;
    border-radius: 11px;
    background: var(--cream);
}

.notification-unread-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--wine);
}

.notification-read-check {
    color: var(--success);
    font-size: 1rem;
    font-weight: 900;
}

.notification-body {
    min-width: 0;
    flex: 1;
}

.notification-heading {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 7px;
}

.notification-heading h2 {
    margin: 0;
    color: var(--wine-dark);
    font-size: .92rem;
}

.notification-new-badge {
    padding: 3px 7px;
    border-radius: 999px;
    background: var(--wine);
    color: var(--white);
    font-size: .54rem;
    font-weight: 900;
    letter-spacing: .06em;
}

.notification-body p {
    margin: 0 0 8px;
    color: var(--text);
    font-size: .78rem;
    line-height: 1.65;
}

.notification-body time {
    color: var(--muted);
    font-size: .68rem;
}

.notification-actions {
    align-self: center;
}

.notification-read-button {
    padding: 7px 10px;
    border: 1px solid var(--border);
    border-radius: 9px;
    background: var(--white);
    color: var(--wine);
    cursor: pointer;
    font-size: .66rem;
    font-weight: 800;
    transition:
        background var(--transition),
        border-color var(--transition);
}

.notification-read-button:hover {
    border-color: rgba(104, 7, 16, .25);
    background: var(--cream-light);
}

.notification-read-button:disabled {
    opacity: .6;
    cursor: wait;
}

.notifications-empty {
    display: flex;
    align-items: center;
    flex-direction: column;
    padding: 70px 25px;
    text-align: center;
}

.notifications-empty-icon {
    display: grid;
    width: 58px;
    height: 58px;
    margin-bottom: 15px;
    place-items: center;
    border-radius: 50%;
    background: var(--cream);
    color: var(--success);
    font-size: 1.3rem;
    font-weight: 900;
}

.notifications-empty h2 {
    margin: 0 0 7px;
    color: var(--wine-dark);
    font-size: 1rem;
}

.notifications-empty p {
    max-width: 420px;
    margin: 0;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.6;
}


@media (max-width: 700px) {

    .notifications-page {
        padding: 16px;
    }

    .notifications-hero {
        align-items: stretch;
        flex-direction: column;
        padding: 24px;
    }

    .notifications-hero-count {
        width: 100%;
        height: auto;
        min-height: 80px;
        flex-basis: auto;
    }

    .notifications-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .notifications-toolbar .btn {
        width: 100%;
    }

    .notification-item {
        padding: 18px;
    }

    .notification-actions {
        width: 100%;
        margin-top: 5px;
    }

    .notification-read-button {
        width: 100%;
    }
}


/* ============================================================
   EMPLOYEE PROFILE
   ========================================================== */

/* Estilos temporales y específicos de esta vista.
   Se trasladarán al app.css global junto con el resto del módulo. */

.profile-page {
    max-width: 1180px;
    margin: 0 auto;
}

.profile-page-intro {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 24px;
}

.profile-page-intro h2,
.profile-section-heading h3 {
    margin: 5px 0 0;
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
}

.profile-page-intro h2 {
    font-size: 30px;
}

.profile-page-intro p {
    margin: 8px 0 0;
    color: var(--muted);
}

.eyebrow {
    color: var(--wine);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .16em;
}

.profile-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 13px;
    border: 1px solid rgba(23, 107, 66, .14);
    border-radius: 999px;
    background: var(--success-bg);
    color: var(--success);
    font-size: 13px;
    font-weight: 800;
}

.profile-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success);
}

.profile-grid {
    display: grid;
    grid-template-columns: minmax(260px, .72fr) minmax(0, 1.8fr);
    gap: 20px;
    align-items: start;
}

.profile-summary,
.profile-form-card {
    padding: 24px;
}

.profile-summary {
    text-align: center;
}

.profile-avatar {
    width: 92px;
    height: 92px;
    margin: 0 auto 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--wine), var(--wine-dark));
    color: var(--cream);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 34px;
    font-weight: 700;
    box-shadow: 0 12px 28px rgba(104, 7, 16, .18);
}

.profile-summary h3 {
    margin: 0;
    color: var(--text);
    font-size: 19px;
}

.profile-position {
    margin: 7px 0 0;
    color: var(--muted);
    font-size: 13px;
}

.profile-department {
    display: inline-block;
    margin-top: 9px;
    padding: 5px 9px;
    border-radius: 999px;
    background: var(--cream-light);
    color: var(--wine);
    font-size: 11px;
    font-weight: 800;
}

.profile-summary-list {
    margin-top: 22px;
    border-top: 1px solid var(--border);
    text-align: left;
}

.profile-summary-list > div {
    display: flex;
    justify-content: space-between;
    gap: 15px;
    padding: 13px 0;
    border-bottom: 1px solid var(--border);
}

.profile-summary-list span {
    color: var(--muted);
    font-size: 12px;
}

.profile-summary-list strong {
    text-align: right;
    font-size: 12px;
}

.profile-note {
    margin: 18px 0 0;
    padding: 12px;
    border-radius: 11px;
    background: var(--cream-light);
    color: var(--muted);
    font-size: 11px;
    line-height: 1.5;
    text-align: left;
}

.profile-section-heading {
    padding-bottom: 17px;
    border-bottom: 1px solid var(--border);
}

.profile-section-heading h3 {
    font-size: 21px;
}

.profile-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 17px;
    padding-top: 21px;
}

.profile-form-full {
    grid-column: 1 / -1;
}

.form-group {
    min-width: 0;
}

.form-group label {
    display: block;
    margin-bottom: 7px;
    color: var(--text);
    font-size: 13px;
    font-weight: 800;
}

.form-input {
    width: 100%;
    min-height: 46px;
    padding: 11px 13px;
    border: 1px solid var(--border);
    border-radius: 10px;
    outline: none;
    background: #fffdfb;
    color: var(--text);
    transition: border-color var(--transition), box-shadow var(--transition);
}

.form-input:focus {
    border-color: var(--wine);
    box-shadow: 0 0 0 4px rgba(104, 7, 16, .08);
}

.form-input[readonly] {
    background: #f5f1ed;
    color: var(--muted);
    cursor: not-allowed;
}

.form-hint {
    display: block;
    margin-top: 6px;
    color: var(--muted);
    font-size: 11px;
}

.profile-password-box {
    margin-top: 25px;
    padding: 19px;
    border: 1px solid rgba(104, 7, 16, .10);
    border-radius: 14px;
    background: var(--cream-light);
}

.profile-password-box h3 {
    margin: 4px 0 0;
    font-size: 17px;
}

.profile-password-box p {
    margin: 5px 0 0;
    color: var(--muted);
    font-size: 12px;
}

.profile-password-box .profile-form-grid {
    padding-top: 15px;
}

.profile-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 23px;
    padding-top: 18px;
    border-top: 1px solid var(--border);
}

.profile-form-actions .btn {
    min-width: 145px;
}

@media (max-width: 850px) {
    .profile-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .profile-page-intro {
        align-items: flex-start;
        flex-direction: column;
    }

    .profile-page-intro h2 {
        font-size: 26px;
    }

    .profile-summary,
    .profile-form-card {
        padding: 18px;
    }

    .profile-form-grid {
        grid-template-columns: 1fr;
    }

    .profile-form-full {
        grid-column: auto;
    }

    .profile-form-actions {
        flex-direction: column-reverse;
    }

    .profile-form-actions .btn {
        width: 100%;
    }
}

/* ============================================================
   SETTINGS PAGE
   ========================================================== */

.settings-page {
    width: min(1180px, 100%);
    margin: 0 auto;
}

.settings-heading {
    margin-bottom: 22px;
}

.settings-heading h2 {
    margin: 5px 0 0;
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 32px;
}

.settings-heading p {
    max-width: 760px;
    margin: 8px 0 0;
    color: var(--muted);
    font-size: 14px;
}

.settings-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 20px;
}

.settings-card {
    padding: 25px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.settings-card-media {
    grid-column: 1 / -1;
}

.settings-card-heading {
    display: flex;
    align-items: flex-start;
    gap: 13px;
    padding-bottom: 17px;
    border-bottom: 1px solid var(--border);
}

.settings-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    border-radius: 11px;
    background: var(--cream);
    color: var(--wine);
    font-size: 11px;
    font-weight: 900;
}

.settings-card-heading h3 {
    margin: 4px 0 0;
    color: var(--text);
    font-size: 20px;
    line-height: 1.2;
}

.settings-description {
    margin: 16px 0 0;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.55;
}

.settings-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    padding-top: 20px;
}

.settings-field {
    min-width: 0;
}

.settings-field-full {
    grid-column: 1 / -1;
}

.settings-field label {
    display: block;
    margin-bottom: 7px;
    color: var(--text);
    font-size: 13px;
    font-weight: 800;
}

.settings-field input,
.settings-field select {
    width: 100%;
    min-height: 46px;
    padding: 11px 13px;
    border: 1px solid var(--border);
    border-radius: 10px;
    outline: none;
    background: #fffdfb;
    color: var(--text);
    font: inherit;
    transition:
        border-color var(--transition),
        box-shadow var(--transition);
}

.settings-field input:focus,
.settings-field select:focus {
    border-color: var(--wine);
    box-shadow: 0 0 0 4px rgba(104, 7, 16, .08);
}

.settings-media-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 20px;
}

.settings-media-box {
    padding: 17px;
    border: 1px dashed #d9c7c1;
    border-radius: 14px;
    background: var(--cream-light);
}

.settings-media-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 190px;
    margin-bottom: 14px;
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--white);
    color: var(--muted);
    font-size: 12px;
    text-align: center;
}

.settings-media-preview img {
    display: block;
    max-width: 100%;
    max-height: 160px;
    object-fit: contain;
}

.settings-signature-preview img {
    max-height: 115px;
}

.settings-media-box > label {
    display: block;
    margin-bottom: 7px;
    color: var(--text);
    font-size: 13px;
    font-weight: 800;
}

.settings-media-box input[type="file"] {
    width: 100%;
    font-size: 12px;
}

.settings-media-box small {
    display: block;
    margin-top: 7px;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.4;
}

.settings-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--border);
}

@media (max-width: 900px) {
    .settings-grid {
        grid-template-columns: 1fr;
    }

    .settings-card-media {
        grid-column: auto;
    }
}

@media (max-width: 650px) {
    .settings-heading h2 {
        font-size: 27px;
    }

    .settings-card {
        padding: 18px;
        border-radius: 14px;
    }

    .settings-form-grid,
    .settings-media-grid {
        grid-template-columns: 1fr;
    }

    .settings-field-full {
        grid-column: auto;
    }

    .settings-actions {
        flex-direction: column-reverse;
    }

    .settings-actions .btn {
        width: 100%;
    }
}


/* Nómina del empleado */
.employee-payroll-page {
    display: grid;
    gap: 20px;
}

.employee-payroll-page .payroll-summary {
    grid-template-columns: minmax(220px, 320px);
}

.employee-payroll-table td {
    vertical-align: middle;
}

.employee-payroll-table .payroll-actions {
    justify-content: flex-start;
}

@media (max-width: 760px) {
    .employee-payroll-table {
        min-width: 680px;
    }
}

/* =========================================================
   AUDIT
   ========================================================= */

.audit-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.audit-header h1 {
    margin: 0;
}

.audit-header p {
    margin: 6px 0 0;
    color: var(--muted);
}

.audit-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.audit-stat {
    padding: 18px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.audit-stat span {
    display: block;
    color: var(--muted);
    font-size: .82rem;
    margin-bottom: 7px;
}

.audit-stat strong {
    color: var(--wine);
    font-size: 1.55rem;
}

.audit-filters {
    display: grid;
    grid-template-columns:
        minmax(180px, 2fr)
        repeat(3, minmax(150px, 1fr))
        repeat(2, minmax(130px, 1fr))
        auto;
    gap: 12px;
    align-items: end;
}

.audit-filter-actions {
    display: flex;
    gap: 8px;
}

.audit-table-wrapper {
    overflow: hidden;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

.audit-table-scroll {
    overflow-x: auto;
}

.audit-table {
    width: 100%;
    min-width: 1050px;
    border-collapse: collapse;
}

.audit-table th {
    padding: 14px;
    text-align: left;
    background: var(--cream-light);
    color: var(--wine);
    border-bottom: 1px solid var(--border);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.audit-table td {
    padding: 14px;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
    color: var(--text);
    font-size: .87rem;
}

.audit-table tbody tr:last-child td {
    border-bottom: 0;
}

.audit-table tbody tr:hover {
    background: #fdfaf7;
}

.audit-table td strong {
    display: block;
}

.audit-table td small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}

.audit-date {
    white-space: nowrap;
    color: var(--muted) !important;
}

.audit-action {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    background: var(--cream);
    color: var(--wine);
    font-size: .76rem;
    font-weight: 700;
}

.audit-system-user {
    color: var(--muted);
    font-style: italic;
}

.audit-table code {
    padding: 3px 6px;
    border-radius: 6px;
    background: #f5f2f2;
    color: var(--text);
    font-size: .75rem;
}

.audit-raw-detail {
    display: inline-block;
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.audit-muted {
    color: var(--muted);
}

.audit-result-count {
    padding: 12px 16px;
    border-top: 1px solid var(--border);
    color: var(--muted);
    font-size: .78rem;
}

.audit-empty {
    padding: 50px 20px;
    text-align: center;
    color: var(--muted);
}

.audit-modal {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(36, 25, 26, .58);
}

.audit-modal.is-open {
    display: flex;
}

.audit-modal-dialog {
    width: min(760px, 100%);
    max-height: calc(100vh - 40px);
    overflow: hidden;
    background: var(--white);
    border-radius: 20px;
    box-shadow: 0 25px 70px rgba(0, 0, 0, .25);
}

.audit-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 20px;
    border-bottom: 1px solid var(--border);
}

.audit-modal-header h2 {
    margin: 0;
    font-size: 1.1rem;
}

.audit-modal-close {
    border: 0;
    background: transparent;
    color: var(--muted);
    font-size: 1.5rem;
    cursor: pointer;
}

.audit-modal-close:hover {
    color: var(--wine);
}

.audit-modal-body {
    max-height: calc(100vh - 130px);
    overflow: auto;
    padding: 20px;
}

.audit-details-content {
    margin: 0;
    padding: 16px;
    overflow: auto;
    background: #f8f5f3;
    border: 1px solid var(--border);
    border-radius: 12px;
    color: var(--text);
    font: .82rem/1.6 monospace;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

@media (max-width: 1200px) {
    .audit-filters {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .audit-filter-actions {
        grid-column: 1 / -1;
    }

    .audit-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 650px) {
    .audit-filters,
    .audit-stats {
        grid-template-columns: 1fr;
    }

    .audit-filter-actions {
        grid-column: auto;
    }
}


/* =========================================================
   PAYROLL — UI COMPACTA Y OPTIMIZADA
   ========================================================= */
.payroll-page {
    gap: 14px;
}

.payroll-intro {
    margin-top: -5px;
    margin-bottom: 2px;
}

.payroll-intro p {
    margin: 0;
    color: var(--muted);
    font-size: .9rem;
}

.payroll-summary {
    gap: 10px;
}

.payroll-summary-item {
    position: relative;
    min-height: 78px;
    padding: 13px 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-radius: 13px;
    box-shadow: none;
}

.payroll-summary-item strong {
    margin-top: 2px;
    font-size: 1.35rem;
    line-height: 1.1;
}

.payroll-summary-item span {
    font-size: .76rem;
}

.payroll-card {
    border-radius: 15px;
    box-shadow: 0 8px 24px rgba(60, 5, 10, .055);
}

.payroll-card-header {
    min-height: 58px;
    padding: 13px 17px;
}

.payroll-card-header h2 {
    font-size: .94rem;
}

.payroll-card-header p {
    margin: 3px 0 0;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.35;
}

.payroll-card-header-actions {
    display: flex;
    align-items: center;
    gap: 8px;
}

.payroll-card-body {
    padding: 15px 17px;
}

.payroll-import-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr);
    gap: 12px;
    align-items: stretch;
}

.payroll-import-file-field {
    min-width: 0;
}

.payroll-import-info {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid var(--border);
    border-radius: 11px;
    background: var(--cream-light);
    color: var(--muted);
    font-size: .76rem;
    line-height: 1.4;
}

.payroll-import-info strong {
    color: var(--wine);
    font-size: .8rem;
}

.payroll-import-info span::before {
    content: '•';
    margin-right: 6px;
    color: var(--wine-soft);
}

.payroll-import-card .form-actions {
    margin-top: 10px;
}

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

.payroll-batch-box {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px 11px;
    padding: 13px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--cream-light);
}

.payroll-batch-box h3 {
    grid-column: 1 / -1;
    margin: 0 0 1px;
    color: var(--wine);
    font-size: .9rem;
}

.payroll-batch-box .field {
    min-width: 0;
}

.payroll-batch-box .field label,
.payroll-upload-grid .field label,
.payroll-toolbar .field label {
    margin-bottom: 4px;
    font-size: .73rem;
}

.payroll-batch-box .btn {
    grid-column: 1 / -1;
    justify-self: start;
    margin-top: 1px;
}

.payroll-batch-rule {
    margin-top: 10px;
    padding: 9px 12px;
    border-left: 3px solid var(--wine);
    border-radius: 8px;
    background: #fbf4f5;
    color: var(--muted);
    font-size: .74rem;
    line-height: 1.45;
}

.payroll-batch-rule strong {
    color: var(--wine);
}

.payroll-batch-card .payroll-alert {
    margin-top: 10px;
}

.payroll-periods-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.payroll-period-card {
    min-width: 0;
    padding: 12px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--cream-light);
}

.payroll-period-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
}

.payroll-period-card-header > div {
    min-width: 0;
}

.payroll-period-label {
    display: block;
    color: var(--wine);
    font-size: .82rem;
    font-weight: 800;
    line-height: 1.25;
}

.payroll-period-card-header small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-size: .68rem;
}

.payroll-period-card-header > strong {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--wine);
    color: var(--white);
    font-size: .76rem;
}

.payroll-period-metrics {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    margin-top: 10px;
}

.payroll-period-metrics span {
    padding: 6px 7px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--white);
    color: var(--muted);
    font-size: .67rem;
    line-height: 1.15;
}

.payroll-period-metrics b {
    color: var(--text);
}

.payroll-period-metrics .is-pending b {
    color: var(--danger);
}

.payroll-period-actions {
    margin-top: 8px;
}

.payroll-period-actions .btn {
    width: 100%;
    min-height: 34px;
    padding: 7px 10px;
    font-size: .75rem;
}

.payroll-upload-grid {
    grid-template-columns: minmax(0, 1.7fr) minmax(180px, 1fr) 85px 85px 85px;
    gap: 10px;
    align-items: end;
}

.payroll-upload-grid .field-full {
    grid-column: 1 / -1;
}

.payroll-upload-grid .field-full {
    margin-top: 2px;
}

.payroll-dropzone {
    min-height: 78px;
    padding: 12px 18px;
    border-radius: 11px;
}

.payroll-dropzone strong {
    margin-bottom: 3px;
    font-size: .82rem;
}

.payroll-dropzone span {
    font-size: .72rem;
}

.payroll-file-list {
    margin-top: 7px;
    gap: 5px;
}

.payroll-file-item {
    padding: 7px 9px;
    border-radius: 8px;
    font-size: .76rem;
}

.payroll-card > .payroll-card-body > .form-actions,
.payroll-card-body > .form-actions {
    margin-top: 9px;
}

.payroll-toolbar {
    gap: 10px;
    align-items: end;
}

.payroll-filters {
    grid-template-columns: minmax(220px, 1fr) 190px 105px auto;
    gap: 9px;
}

.payroll-table {
    min-width: 880px;
}

.payroll-table th,
.payroll-table td {
    padding: 9px 11px;
}

.payroll-table th {
    font-size: .68rem;
}

.payroll-table td {
    font-size: .78rem;
}

.payroll-employee {
    gap: 1px;
}

.payroll-employee strong {
    font-size: .78rem;
}

.payroll-employee span {
    font-size: .69rem;
}

.payroll-period {
    padding: 4px 7px;
    font-size: .68rem;
}

.payroll-status {
    padding: 4px 7px;
    font-size: .67rem;
}

.payroll-actions {
    gap: 5px;
}

.payroll-actions .btn {
    min-height: 31px;
    padding: 6px 9px;
    font-size: .7rem;
}

.payroll-match-detail {
    max-width: 240px;
    font-size: .68rem;
}

.payroll-match-candidates {
    margin-top: 4px;
    font-size: .67rem;
}

.payroll-empty {
    padding: 26px 15px;
}

.payroll-modal-dialog {
    width: min(680px, 100%);
}

.payroll-modal-header {
    padding: 15px 17px;
}

.payroll-modal-body {
    padding: 17px;
}

.payroll-modal-footer {
    padding: 13px 17px;
}

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

    .payroll-upload-grid {
        grid-template-columns: minmax(0, 1.5fr) minmax(180px, 1fr) 80px 80px 80px;
    }
}

@media (max-width: 900px) {
    .payroll-import-grid,
    .payroll-batch-grid {
        grid-template-columns: 1fr;
    }

    .payroll-upload-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .payroll-upload-grid .field-full {
        grid-column: 1 / -1;
    }
}

@media (max-width: 700px) {
    .payroll-page {
        gap: 10px;
    }

    .payroll-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .payroll-periods-grid {
        grid-template-columns: 1fr;
    }

    .payroll-batch-box,
    .payroll-upload-grid {
        grid-template-columns: 1fr;
    }

    .payroll-upload-grid .field-full {
        grid-column: auto;
    }

    .payroll-card-header {
        padding: 12px 14px;
    }

    .payroll-card-body {
        padding: 12px 14px;
    }

    .payroll-card-header-actions {
        width: 100%;
    }

    .payroll-card-header-actions .btn {
        width: 100%;
    }

    .payroll-filters {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .payroll-summary {
        grid-template-columns: 1fr 1fr;
        gap: 7px;
    }

    .payroll-summary-item {
        min-height: 68px;
        padding: 10px 11px;
    }

    .payroll-summary-item strong {
        font-size: 1.15rem;
    }
}

/* =========================================================
   NÓMINA · HUB UNIFICADO DE CARGA
   ========================================================= */
.payroll-upload-hub-card { overflow:hidden; }
.payroll-upload-hub-header { padding-bottom:14px; }
.payroll-upload-hub-body { padding-top:14px; }
.payroll-upload-methods {
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
    align-items:stretch;
}
.payroll-method-card {
    display:flex;
    flex-direction:column;
    min-width:0;
    padding:15px;
    border:1px solid var(--border);
    border-radius:14px;
    background:var(--cream-light);
}
.payroll-method-card:hover {
    border-color:rgba(104,7,16,.22);
}
.payroll-method-heading {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
    padding-bottom:11px;
    border-bottom:1px solid var(--border);
}
.payroll-method-heading > div { min-width:0; }
.payroll-method-kicker {
    display:block;
    margin-bottom:2px;
    color:var(--muted);
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.08em;
}
.payroll-method-heading h3 {
    margin:0;
    color:var(--wine);
    font-size:1rem;
}
.payroll-method-icon {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:28px;
    padding:4px 8px;
    border-radius:8px;
    background:var(--white);
    border:1px solid var(--border);
    color:var(--wine);
    font-size:.64rem;
    font-weight:800;
    white-space:nowrap;
}
.payroll-method-fields {
    display:flex;
    flex-direction:column;
    gap:10px;
    padding-top:12px;
    flex:1;
}
.payroll-method-fields .field { margin:0; }
.payroll-method-fields .field label {
    margin-bottom:5px;
    font-size:.73rem;
}
.payroll-method-fields input,
.payroll-method-fields select {
    min-height:38px;
    font-size:.82rem;
}
.payroll-method-inline-fields {
    display:grid;
    grid-template-columns:minmax(0,1fr) 62px 62px 62px;
    gap:7px;
}
.payroll-method-inline-fields .payroll-small-field input {
    width:100%;
    padding-left:8px;
    padding-right:8px;
}
.payroll-dropzone-compact {
    min-height:82px;
    padding:12px;
    border-radius:10px;
}
.payroll-dropzone-compact strong { font-size:.8rem; }
.payroll-dropzone-compact span { font-size:.7rem; }
.payroll-method-help {
    display:flex;
    flex-direction:column;
    gap:3px;
    min-height:54px;
    padding:9px 10px;
    border-left:3px solid var(--wine);
    border-radius:8px;
    background:#fbf4f5;
}
.payroll-method-help strong {
    color:var(--wine);
    font-size:.72rem;
}
.payroll-method-help span {
    color:var(--muted);
    font-size:.7rem;
    line-height:1.4;
}
.payroll-method-footer {
    display:flex;
    justify-content:flex-start;
    padding-top:12px;
}
.payroll-method-footer .btn {
    min-height:36px;
    padding:8px 13px;
    font-size:.78rem;
}
.payroll-upload-hub-rule {
    display:flex;
    align-items:baseline;
    gap:5px;
    margin-top:12px;
    padding:9px 12px;
    font-size:.72rem;
    line-height:1.45;
}
.payroll-upload-hub-rule span { color:var(--muted); }
.payroll-upload-hub-card .payroll-alert { margin-top:10px; }

@media (max-width:1100px) {
    .payroll-upload-methods { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .payroll-method-individual { grid-column:1 / -1; }
    .payroll-method-individual .payroll-method-fields-individual {
        display:grid;
        grid-template-columns:minmax(220px,.8fr) minmax(0,1.7fr);
        align-items:start;
    }
    .payroll-method-individual .field-full { grid-column:1 / -1; }
}
@media (max-width:760px) {
    .payroll-upload-methods { grid-template-columns:1fr; }
    .payroll-method-individual { grid-column:auto; }
    .payroll-method-individual .payroll-method-fields-individual { display:flex; }
    .payroll-method-inline-fields { grid-template-columns:minmax(0,1fr) repeat(3,58px); }
    .payroll-upload-hub-rule { display:block; }
}
@media (max-width:520px) {
    .payroll-method-inline-fields { grid-template-columns:1fr 1fr 1fr; }
    .payroll-method-inline-fields .field:first-child { grid-column:1 / -1; }
}

/* =========================================================
   PAYROLL — MODAL NAVIGATION / DENSITY
   ========================================================= */
.payroll-management-actions {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin-top:12px;
}

.payroll-management-button {
    display:grid;
    grid-template-columns:42px minmax(0,1fr) 22px;
    align-items:center;
    gap:12px;
    width:100%;
    min-height:76px;
    padding:12px 14px;
    border:1px solid var(--border);
    border-radius:14px;
    background:var(--white);
    color:var(--text);
    text-align:left;
    cursor:pointer;
    box-shadow:0 8px 22px rgba(60,5,10,.05);
    transition:transform var(--transition),border-color var(--transition),box-shadow var(--transition),background var(--transition);
}

.payroll-management-button:hover {
    transform:translateY(-1px);
    border-color:rgba(104,7,16,.25);
    background:var(--cream-light);
    box-shadow:0 12px 28px rgba(60,5,10,.09);
}

.payroll-management-button:focus-visible {
    outline:3px solid rgba(104,7,16,.18);
    outline-offset:2px;
}

.payroll-management-icon {
    display:flex;
    align-items:center;
    justify-content:center;
    width:42px;
    height:42px;
    border-radius:11px;
    background:var(--cream);
    color:var(--wine);
    font-size:1.1rem;
    font-weight:900;
}

.payroll-management-button strong {
    display:block;
    color:var(--wine);
    font-size:.9rem;
    line-height:1.2;
}

.payroll-management-button small {
    display:block;
    margin-top:4px;
    color:var(--muted);
    font-size:.72rem;
    line-height:1.35;
}

.payroll-management-arrow {
    color:var(--wine);
    font-size:1.6rem;
    line-height:1;
    text-align:right;
}

.payroll-data-modal {
    padding:18px;
}

.payroll-data-modal-dialog {
    width:min(1180px,100%);
    max-height:calc(100vh - 36px);
    overflow:hidden;
    display:flex;
    flex-direction:column;
}

.payroll-data-modal .payroll-modal-header {
    flex:0 0 auto;
    padding:15px 18px;
}

.payroll-data-modal .payroll-modal-header > div {
    min-width:0;
}

.payroll-data-modal .payroll-modal-header h3 {
    font-size:1rem;
}

.payroll-data-modal .payroll-modal-header p {
    margin:4px 0 0;
    color:var(--muted);
    font-size:.73rem;
}

.payroll-data-modal .payroll-modal-body {
    min-height:0;
    overflow:auto;
    padding:16px;
}

.payroll-periods-grid {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
}

.payroll-period-card-top {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
}

.payroll-period-card-top > div {
    min-width:0;
}

.payroll-period-card-top strong {
    display:block;
    color:var(--wine);
    font-size:.83rem;
    line-height:1.25;
}

.payroll-period-card-top small {
    display:block;
    margin-top:3px;
    color:var(--muted);
    font-size:.67rem;
}

.payroll-period-count {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    min-width:30px;
    height:30px;
    padding:0 8px;
    border-radius:999px;
    background:var(--wine);
    color:var(--white);
    font-size:.72rem;
    font-weight:800;
}

.payroll-period-metrics strong {
    color:var(--text);
    font-weight:800;
}

.payroll-period-link {
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:32px;
    margin-top:8px;
    padding:6px 10px;
    border-radius:9px;
    background:var(--cream);
    color:var(--wine);
    font-size:.74rem;
    font-weight:800;
    text-decoration:underline;
}

.payroll-period-link:hover {
    background:var(--wine);
    color:var(--white);
}

.payroll-records-modal-body > #payrollRecordsCard {
    margin:0;
    border:0;
    border-radius:0;
    box-shadow:none;
    background:transparent;
}

.payroll-records-modal-body > #payrollRecordsCard > .payroll-card-header {
    display:none;
}

.payroll-records-modal-body > #payrollRecordsCard > .payroll-card-body {
    padding:0;
}

.payroll-records-modal-dialog {
    width:min(1380px,100%);
}

.payroll-records-modal-body .payroll-toolbar {
    position:sticky;
    top:-16px;
    z-index:3;
    padding:0 0 12px;
    background:var(--white);
}

.payroll-records-modal-body .payroll-table-wrap {
    max-height:calc(100vh - 230px);
    overflow:auto;
}

.payroll-empty-state {
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:150px;
    padding:25px;
    border:1px dashed var(--border);
    border-radius:12px;
    background:var(--cream-light);
    color:var(--muted);
    font-size:.82rem;
    text-align:center;
}

@media (max-width:900px) {
    .payroll-management-actions { grid-template-columns:1fr; }
    .payroll-periods-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:620px) {
    .payroll-data-modal { padding:8px; }
    .payroll-data-modal-dialog { max-height:calc(100vh - 16px); border-radius:14px; }
    .payroll-data-modal .payroll-modal-header { padding:12px 14px; }
    .payroll-data-modal .payroll-modal-body { padding:12px; }
    .payroll-periods-grid { grid-template-columns:1fr; }
    .payroll-management-button { min-height:68px; }
    .payroll-management-icon { width:38px; height:38px; }
    .payroll-management-button { grid-template-columns:38px minmax(0,1fr) 18px; gap:9px; }
}

.payroll-period-link {
    width:100%;
    border:0;
    cursor:pointer;
    font-family:inherit;
}

/* =========================================================
   SIMÓN PANADERO — NÓMINA / UX FINAL
   ========================================================= */
.payroll-page {
    gap: 14px;
}
.payroll-page .payroll-intro {
    margin-bottom: 2px;
}
.payroll-page .payroll-intro p {
    margin: 0;
    color: var(--muted);
    font-size: .84rem;
}
.payroll-summary {
    gap: 10px;
}
.payroll-summary-item {
    min-height: 66px;
    padding: 12px 15px;
}
.payroll-card {
    margin: 0;
}
.payroll-card-header {
    padding: 14px 18px;
}
.payroll-card-header h2 {
    font-size: .96rem;
}
.payroll-card-header p {
    margin-top: 3px;
    font-size: .74rem;
}
.payroll-card-body {
    padding: 14px 18px;
}

.payroll-upload-hub-card .payroll-card-header {
    padding-bottom: 11px;
}
.payroll-upload-hub-card .payroll-card-body {
    padding-top: 12px;
}
.payroll-upload-methods {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}
.payroll-method-card {
    min-width: 0;
    padding: 13px;
    border-radius: 12px;
}
.payroll-method-heading {
    padding-bottom: 9px;
}
.payroll-method-fields {
    gap: 8px;
    padding-top: 10px;
}
.payroll-method-fields input,
.payroll-method-fields select {
    min-height: 35px;
}
.payroll-method-footer {
    padding-top: 9px;
}
.payroll-method-footer .btn {
    width: 100%;
}
.payroll-dropzone-compact {
    min-height: 70px;
    padding: 9px;
}
.payroll-method-help {
    min-height: 45px;
    padding: 7px 9px;
}
.payroll-method-help strong,
.payroll-method-help span {
    font-size: .67rem;
}

.payroll-management-actions {
    margin-top: 0;
    gap: 10px;
}
.payroll-management-button {
    min-height: 68px;
    padding: 10px 13px;
}

.payroll-data-modal {
    z-index: 1200;
    background: rgba(36,25,26,.52);
    backdrop-filter: blur(2px);
}
.payroll-data-modal-dialog {
    width: min(1180px, calc(100vw - 48px));
    max-height: calc(100vh - 48px);
    border-radius: 16px;
}
.payroll-records-modal-dialog {
    width: min(1450px, calc(100vw - 48px));
}
.payroll-data-modal .payroll-modal-body {
    padding: 14px;
}
.payroll-records-modal-body .payroll-table-wrap {
    max-height: calc(100vh - 255px);
}

@media (max-width: 1050px) {
    .payroll-upload-methods {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .payroll-method-individual {
        grid-column: 1 / -1;
    }
}
@media (max-width: 760px) {
    .payroll-upload-methods,
    .payroll-management-actions {
        grid-template-columns: 1fr;
    }
    .payroll-method-individual {
        grid-column: auto;
    }
    .payroll-data-modal {
        padding: 8px;
    }
    .payroll-data-modal-dialog,
    .payroll-records-modal-dialog {
        width: 100%;
        max-height: calc(100vh - 16px);
        border-radius: 13px;
    }
}
/* =========================================================
   PAYROLL V2 — gestión por lote / empleado
   ========================================================= */
.payroll-v2{display:flex;flex-direction:column;gap:22px}
.payroll-v2 .payroll-intro h1{margin:4px 0 6px;color:var(--wine);font-size:clamp(1.7rem,2.5vw,2.25rem)}
.payroll-v2 .payroll-intro p{margin:0;color:var(--muted)}
.payroll-section-kicker{display:block;color:var(--wine-soft);font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.payroll-v2 .payroll-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.payroll-v2 .payroll-summary-item{padding:18px 20px;background:var(--white);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}
.payroll-v2 .payroll-summary-item span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:6px}.payroll-v2 .payroll-summary-item strong{font-size:1.55rem;color:var(--wine)}
.payroll-workspace-card,.payroll-management{background:var(--white);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow)}
.payroll-workspace-card .payroll-card-header{padding:22px 24px;border-bottom:1px solid var(--border)}
.payroll-workspace-card .payroll-card-header h2,.payroll-management-head h2{margin:4px 0 5px;color:var(--wine);font-size:1.35rem}.payroll-workspace-card .payroll-card-header p,.payroll-management-head p{margin:0;color:var(--muted);font-size:.86rem}
.payroll-workspace-card .payroll-card-body{padding:20px}
.payroll-workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.payroll-work-card{min-width:0;padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--cream-light)}
.payroll-work-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px}.payroll-work-card-head h3{margin:3px 0 0;color:var(--wine);font-size:1.08rem}.payroll-work-number{color:var(--wine-soft);font-size:.72rem;font-weight:900;letter-spacing:.08em}.payroll-work-badge{padding:5px 9px;border-radius:999px;background:var(--cream);color:var(--wine);font-size:.68rem;font-weight:800}
.payroll-work-fields{display:flex;flex-direction:column;gap:13px}.payroll-work-fields .field{margin:0}.payroll-inline-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.payroll-field-help{display:block;margin-top:5px;color:var(--muted);font-size:.74rem;line-height:1.4}
.payroll-work-card-footer{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:15px;border-top:1px solid var(--border)}
.payroll-mass-tabs{display:flex;gap:5px;margin-bottom:14px;padding:4px;background:rgba(104,7,16,.06);border-radius:10px}.payroll-mass-tab{flex:1;border:0;background:transparent;color:var(--muted);padding:9px;border-radius:8px;font-weight:800;cursor:pointer}.payroll-mass-tab.is-active{background:var(--white);color:var(--wine);box-shadow:0 2px 8px rgba(60,5,10,.08)}
.payroll-mass-panel{display:none;gap:13px}.payroll-mass-panel.is-active{display:flex;flex-direction:column}.payroll-mass-panel .field{margin:0}.payroll-matching-note{display:flex;flex-direction:column;gap:3px;padding:12px 13px;border-left:4px solid var(--wine);background:#fbf4f5;border-radius:8px;color:var(--muted);font-size:.76rem;line-height:1.45}.payroll-matching-note strong{color:var(--wine)}
.payroll-management{padding:22px}.payroll-management-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.payroll-view-switcher{display:flex;gap:5px;margin-top:18px;border-bottom:1px solid var(--border)}.payroll-view-button{padding:11px 16px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}.payroll-view-button.is-active{border-bottom-color:var(--wine);color:var(--wine)}
.payroll-toolbar-v2{display:grid;grid-template-columns:minmax(220px,2fr) minmax(170px,1fr) minmax(150px,1fr) auto;gap:12px;align-items:end;margin:18px 0 12px;padding:15px;background:var(--cream-light);border:1px solid var(--border);border-radius:14px}.payroll-toolbar-v2 .field{margin:0}.payroll-toolbar-v2 .btn{height:42px}
.payroll-period-pills{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;margin-bottom:10px}.payroll-period-pill{flex:0 0 auto;border:1px solid var(--border);background:var(--white);color:var(--text);padding:8px 11px;border-radius:999px;font-size:.73rem;font-weight:800;cursor:pointer}.payroll-period-pill.is-active,.payroll-period-pill:hover{border-color:var(--wine-soft);color:var(--wine);background:var(--cream-light)}
.payroll-view-panel{display:none}.payroll-view-panel.is-active{display:block}
.payroll-period-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.payroll-lot-card{padding:18px;border:1px solid var(--border);border-radius:15px;background:var(--cream-light)}.payroll-lot-card[hidden],.payroll-employee-card[hidden],[data-payroll-row][hidden]{display:none!important}.payroll-lot-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.payroll-lot-head strong{display:block;color:var(--wine);font-size:.95rem}.payroll-lot-head small{display:block;margin-top:4px;color:var(--muted);font-size:.75rem}.payroll-lot-status{white-space:nowrap;padding:5px 8px;border-radius:999px;font-size:.7rem;font-weight:800}.payroll-lot-status.is-complete{background:var(--success-bg);color:var(--success)}.payroll-lot-status.is-pending{background:var(--danger-bg);color:var(--danger)}
.payroll-lot-metrics{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0;color:var(--muted);font-size:.75rem}.payroll-lot-metrics b{color:var(--text)}.payroll-lot-actions{display:flex;flex-wrap:wrap;gap:7px;padding-top:13px;border-top:1px solid var(--border)}.payroll-lot-actions .btn{font-size:.72rem;padding:7px 10px}
.payroll-employee-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.payroll-employee-card{display:flex;justify-content:space-between;gap:12px;padding:13px 14px;border:1px solid var(--border);border-radius:12px;background:var(--cream-light)}.payroll-employee-card strong{display:block;font-size:.82rem}.payroll-employee-card small{display:block;margin-top:3px;color:var(--muted);font-size:.7rem}.payroll-employee-metrics{display:flex;flex-direction:column;align-items:flex-end;gap:3px;color:var(--muted);font-size:.7rem;white-space:nowrap}
.payroll-records-panel{margin-top:18px;border:1px solid var(--border);border-radius:15px;overflow:hidden}.payroll-records-head{display:flex;justify-content:space-between;align-items:center;padding:15px 17px;background:var(--cream-light);border-bottom:1px solid var(--border)}.payroll-records-head h3{margin:0;color:var(--wine);font-size:1rem}.payroll-records-head span{color:var(--muted);font-size:.74rem}.payroll-file-name{display:block;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.payroll-v2 .payroll-table-wrap{border:0;border-radius:0;box-shadow:none}.payroll-v2 .payroll-table{min-width:1100px}.payroll-v2 .payroll-actions{display:flex;flex-wrap:wrap;gap:5px}.payroll-v2 .payroll-actions .btn{font-size:.7rem;padding:6px 9px}.payroll-v2 .payroll-match-detail{display:block;margin-top:5px;max-width:240px;color:var(--muted);font-size:.7rem;line-height:1.35}
.payroll-v2 .payroll-alert{margin:0}.payroll-v2 .payroll-work-card .payroll-alert{margin-top:12px}
@media(max-width:1100px){.payroll-v2 .payroll-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.payroll-workspace-grid,.payroll-period-grid{grid-template-columns:1fr}.payroll-employee-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.payroll-toolbar-v2{grid-template-columns:1fr 1fr}.payroll-toolbar-v2 .btn{grid-column:1/-1;justify-self:start}}
@media(max-width:700px){.payroll-management-head{flex-direction:column}.payroll-employee-grid{grid-template-columns:1fr}.payroll-toolbar-v2{grid-template-columns:1fr}.payroll-toolbar-v2 .btn{grid-column:auto}.payroll-inline-fields{grid-template-columns:1fr}.payroll-v2 .payroll-summary{grid-template-columns:1fr 1fr}.payroll-lot-actions .btn{flex:1}.payroll-work-card-footer{flex-direction:column-reverse}.payroll-work-card-footer .btn{width:100%}}
@media(max-width:480px){.payroll-v2 .payroll-summary{grid-template-columns:1fr}.payroll-management,.payroll-workspace-card .payroll-card-body,.payroll-workspace-card .payroll-card-header{padding:15px}.payroll-work-card{padding:15px}}
/* =========================================================
   ASIGNACIÓN MANUAL DE NÓMINAS
   ========================================================= */
.payroll-assignment-review {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 18px;
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--cream-light);
}

.payroll-assignment-review-row {
    display: grid;
    grid-template-columns: 90px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
}

.payroll-assignment-review-row span {
    color: var(--muted);
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
}

.payroll-assignment-review-row strong {
    color: var(--text);
    overflow-wrap: anywhere;
}

.payroll-assignment-candidates {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px solid var(--border);
}

.payroll-assignment-candidates-title {
    color: var(--wine);
    font-size: .8rem;
    font-weight: 800;
}

.payroll-candidate-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--white);
    color: var(--text);
    text-align: left;
    cursor: pointer;
    transition: border-color var(--transition), background var(--transition);
}

.payroll-candidate-item:hover {
    border-color: var(--wine-soft);
    background: #fffafa;
}

.payroll-candidate-item strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.payroll-candidate-item span {
    flex: 0 0 auto;
    color: var(--muted);
    font-size: .78rem;
    font-weight: 700;
}

.payroll-assignment-empty {
    color: var(--muted);
    font-size: .82rem;
    line-height: 1.45;
}

#assignEmployeeId option[hidden] {
    display: none;
}

@media (max-width: 600px) {
    .payroll-assignment-review-row {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .payroll-candidate-item {
        align-items: flex-start;
        flex-direction: column;
        gap: 4px;
    }
}

/* ============================================================
   LOGIN — SIMÓN PANADERO
   ============================================================ */

.login-page .login-shell {
    position: relative;
    z-index: 1;
    width: min(100%, 960px);
    min-width: 0;
}

.login-page .login-card {
    display: grid;
    grid-template-columns: minmax(300px, .9fr) minmax(360px, 1.1fr);
    grid-template-rows: auto;
    width: 100%;
    min-width: 0;
    position: relative;
    overflow: hidden;
}

.login-page .login-brand {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
    min-height: 560px;
}

.login-page .login-form {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    min-height: 560px;
    height: auto;
    margin: 0;
    padding: 48px;
    align-self: stretch;
    justify-self: stretch;
    position: relative;
    z-index: 20;
    visibility: visible;
    opacity: 1;
    color: var(--text);
}

.login-page .login-form::before,
.login-page .login-form::after {
    flex: 0 0 auto;
}

.login-page .login-form > .form-group {
    display: flex;
    flex-direction: column;
    gap: 7px;
    width: 100%;
    min-width: 0;
    margin: 0 0 20px;
    visibility: visible;
    opacity: 1;
}

.login-page .login-form .form-label,
.login-page .login-form label {
    display: block;
    width: 100%;
    margin: 0 0 1px;
    color: var(--text);
    font-size: 13px;
    font-weight: 800;
    line-height: 1.3;
    visibility: visible;
    opacity: 1;
}

.login-page .login-form .form-input,
.login-page .login-form input:not([type="hidden"]) {
    display: block;
    width: 100%;
    min-width: 0;
    min-height: 52px;
    height: 52px;
    margin: 0;
    padding: 13px 15px;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: #fffdfb;
    color: var(--text);
    visibility: visible;
    opacity: 1;
    position: relative;
    z-index: 22;
}

.login-page .login-form input[type="hidden"] {
    display: none;
}

.login-page .login-form .password-wrapper {
    display: block;
    position: relative;
    width: 100%;
    min-width: 0;
    min-height: 52px;
    visibility: visible;
    opacity: 1;
}

.login-page .login-form .password-wrapper .form-input,
.login-page .login-form .password-wrapper input[type="password"] {
    padding-right: 86px;
}

.login-page .login-form .password-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    right: 9px;
    top: 50%;
    transform: translateY(-50%);
    min-height: 0;
    width: auto;
    margin: 0;
    padding: 7px;
    border: 0;
    background: transparent;
    color: var(--wine);
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
    visibility: visible;
    opacity: 1;
    z-index: 30;
}
/* ============================================================
   POLISH GLOBAL 2026
   Mantiene los contratos de clases existentes.
   ========================================================== */

:focus-visible {
    outline: 3px solid rgba(104, 7, 16, .22);
    outline-offset: 2px;
}

::selection {
    background: rgba(104, 7, 16, .16);
    color: var(--wine-dark);
}

img {
    max-width: 100%;
}

button,
.btn,
a {
    -webkit-tap-highlight-color: transparent;
}

.btn {
    min-height: 42px;
    border-radius: 12px;
    font-weight: 750;
    transition:
        transform var(--transition),
        box-shadow var(--transition),
        border-color var(--transition),
        background var(--transition),
        color var(--transition);
}

.btn:hover {
    transform: translateY(-1px);
}

.btn:active {
    transform: translateY(0);
}

.btn:disabled,
button[disabled] {
    cursor: not-allowed;
    transform: none;
    opacity: .62;
}

.app-main {
    min-width: 0;
}

.app-sidebar {
    scrollbar-width: thin;
}

.app-nav-link {
    min-height: 44px;
    border-radius: 12px;
}

.app-nav-link:hover {
    transform: translateX(2px);
}

.dashboard-panel,
.employees-panel,
.payroll-card {
    border-radius: var(--radius);
    box-shadow: 0 10px 30px rgba(60, 5, 10, .055);
}

.dashboard-stat-card,
.quick-action-card {
    border-radius: 16px;
}

.dashboard-stat-card:hover,
.quick-action-card:hover {
    transform: translateY(-2px);
}

input,
select,
textarea {
    transition:
        border-color var(--transition),
        box-shadow var(--transition),
        background var(--transition);
}

input:focus,
select:focus,
textarea:focus {
    border-color: rgba(104, 7, 16, .48);
    box-shadow: 0 0 0 4px rgba(104, 7, 16, .075);
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* ============================================================
   NOTIFICATIONS — ADMIN COMPOSER
   ========================================================== */

.notifications-admin-composer {
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--white);
    box-shadow: var(--shadow);
}

.notifications-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 22px;
}

.notifications-section-heading h2 {
    margin: 0;
    color: var(--wine-dark);
    font-size: 1.25rem;
}

.notifications-section-heading p {
    margin: 6px 0 0;
    color: var(--muted);
    font-size: .78rem;
    line-height: 1.55;
}

.notifications-announcement-form {
    width: 100%;
}

.notifications-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 17px;
}

.notifications-field {
    display: flex;
    flex-direction: column;
    gap: 7px;
    min-width: 0;
}

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

.notifications-field > span {
    color: var(--text);
    font-size: .74rem;
    font-weight: 800;
}

.notifications-field input,
.notifications-field select,
.notifications-field textarea {
    width: 100%;
    border: 1px solid var(--border);
    border-radius: 12px;
    background: var(--white);
    color: var(--text);
    font: inherit;
    font-size: .82rem;
    outline: none;
    transition:
        border-color var(--transition),
        box-shadow var(--transition),
        background var(--transition);
}

.notifications-field input,
.notifications-field select {
    min-height: 44px;
    padding: 10px 12px;
}

.notifications-field textarea {
    min-height: 150px;
    padding: 12px;
    resize: vertical;
    line-height: 1.55;
}

.notifications-field input::placeholder,
.notifications-field textarea::placeholder {
    color: #a09696;
}

.notifications-field input:hover,
.notifications-field select:hover,
.notifications-field textarea:hover {
    border-color: rgba(104, 7, 16, .25);
}

.notifications-field input:focus,
.notifications-field select:focus,
.notifications-field textarea:focus {
    border-color: var(--wine);
    box-shadow: 0 0 0 3px rgba(104, 7, 16, .08);
}

.notifications-field[hidden] {
    display: none !important;
}

.notifications-form-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid var(--border);
}

.notifications-form-hint {
    color: var(--muted);
    font-size: .72rem;
    line-height: 1.5;
}

.notifications-form-actions .btn {
    flex-shrink: 0;
}

.notifications-alert {
    padding: 12px 15px;
    margin-top: 16px;
    border-radius: 12px;
    font-size: .78rem;
    font-weight: 700;
}

.notifications-alert[hidden] {
    display: none !important;
}

.notifications-alert-success {
    border: 1px solid rgba(23, 107, 66, .16);
    background: var(--success-bg);
    color: var(--success);
}

.notifications-alert-error {
    border: 1px solid rgba(156, 23, 34, .16);
    background: var(--danger-bg);
    color: var(--danger);
}

.notifications-announcement-form.is-loading {
    pointer-events: none;
    opacity: .72;
}

.notifications-announcement-form.is-loading .btn {
    cursor: wait;
}

@media (max-width: 800px) {
    .notifications-admin-composer {
        padding: 20px;
    }

    .notifications-form-grid {
        grid-template-columns: 1fr;
    }

    .notifications-field-wide {
        grid-column: auto;
    }

    .notifications-form-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .notifications-form-actions .btn {
        width: 100%;
    }
}

@media (max-width: 600px) {
    .notifications-admin-composer {
        padding: 17px;
        border-radius: 16px;
    }

    .notifications-section-heading {
        margin-bottom: 18px;
    }

    .notifications-section-heading h2 {
        font-size: 1.1rem;
    }

    .notifications-field input,
    .notifications-field select {
        min-height: 46px;
    }

    .notifications-field textarea {
        min-height: 130px;
    }
}
/* ================================================================
   Panel administrativo: distribución compacta
   Integrar al final de assets/app.css
   ================================================================ */

.admin-dashboard {
    --admin-dashboard-gap: 14px;
}

.admin-dashboard .dashboard-hero {
    margin-bottom: 18px;
}

.admin-dashboard .dashboard-stat-grid {
    gap: var(--admin-dashboard-gap);
    margin-bottom: 22px;
}

.admin-dashboard .dashboard-section {
    margin-bottom: 20px;
}

.admin-dashboard .section-heading {
    margin-bottom: 10px;
}

.admin-dashboard .quick-actions-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.admin-dashboard .quick-action-card {
    min-width: 0;
    align-items: center;
    gap: 11px;
    padding: 14px 15px;
    min-height: 76px;
}

.admin-dashboard .quick-action-number {
    flex-basis: 32px;
    width: 32px;
    height: 32px;
    border-radius: 9px;
}

.admin-dashboard .quick-action-card strong {
    margin-bottom: 3px;
    font-size: .93rem;
}

.admin-dashboard .quick-action-card span:not(.quick-action-number) {
    display: block;
    font-size: .76rem;
    line-height: 1.35;
}

/* Si el usuario no es superadministrador, solicitudes ocupan todo el ancho. */
.admin-dashboard .dashboard-columns-single {
    display: block;
    margin-bottom: 16px;
}

.admin-dashboard .dashboard-columns-single > .dashboard-panel {
    width: 100%;
}

.admin-dashboard .dashboard-columns-with-audit {
    grid-template-columns: minmax(0, 1.1fr) minmax(300px, .9fr);
    gap: 14px;
    margin-bottom: 16px;
}

.admin-dashboard .dashboard-panel-header {
    gap: 12px;
    padding: 15px 18px;
}

.admin-dashboard .dashboard-panel-header h2 {
    font-size: 1.08rem;
}

.admin-dashboard .dashboard-empty {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 18px;
    min-height: 0;
}

.admin-dashboard .dashboard-list-item {
    gap: 12px;
    padding: 12px 18px;
}

.admin-dashboard .dashboard-employees-panel {
    margin-bottom: 16px;
}

.admin-dashboard .dashboard-employees-panel .dashboard-panel-header {
    padding: 13px 18px;
}

.admin-dashboard .dashboard-table-wrap {
    overflow-x: auto;
}

.admin-dashboard .dashboard-table {
    width: 100%;
    border-collapse: collapse;
}

.admin-dashboard .dashboard-table th,
.admin-dashboard .dashboard-table td {
    padding: 10px 14px;
    vertical-align: middle;
}

.admin-dashboard .dashboard-table th {
    white-space: nowrap;
    font-size: .72rem;
}

.admin-dashboard .dashboard-table td {
    font-size: .82rem;
}

.admin-dashboard .dashboard-summary-grid {
    gap: 10px;
    margin-top: 0;
}

.admin-dashboard .dashboard-summary-card {
    padding: 14px 16px;
}

@media (max-width: 1000px) {
    .admin-dashboard .quick-actions-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .admin-dashboard .dashboard-columns-with-audit {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 640px) {
    .admin-dashboard .quick-actions-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .admin-dashboard .quick-action-card {
        min-height: 0;
        padding: 12px;
    }

    .admin-dashboard .dashboard-panel-header {
        padding: 13px 14px;
    }

    .admin-dashboard .dashboard-table th,
    .admin-dashboard .dashboard-table td {
        padding: 9px 10px;
    }
}

/* =====================================================================
   AJUSTES DE ESTABILIDAD Y RESPONSIVE
   Se conservan las reglas existentes y las variables de diseño originales.
   ===================================================================== */

/* Los controles deben heredar la tipografía del portal de forma consistente. */
button,
input,
select,
textarea {
    font: inherit;
}

img,
svg,
video,
canvas {
    max-width: 100%;
}

/* Evita que textos largos, correos o nombres desborden tarjetas y paneles. */
.app-main,
.app-content,
.page-content,
.card,
.panel,
.dashboard-panel,
.payroll-card,
.login-card {
    min-width: 0;
}

/* Tablas amplias conservan sus columnas sin deformar el diseño de la página. */
.table-responsive,
.table-wrap,
.dashboard-table-wrap,
.payroll-table-wrap {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Foco visible para navegación por teclado. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid rgba(104, 7, 16, .32);
    outline-offset: 2px;
}

/* Los campos no deben superar el ancho disponible en formularios en grid. */
:where(input, select, textarea) {
    max-width: 100%;
}

textarea {
    resize: vertical;
}

/* Evita animaciones excesivas para usuarios que lo han solicitado al sistema. */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

/* Refuerzo para pantallas estrechas: evita que el login fuerce ancho horizontal. */
@media (max-width: 760px) {
    .login-page {
        padding: 24px 14px;
    }

    .login-shell {
        width: 100%;
        max-width: 520px;
    }

    .login-card {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto auto;
        border-radius: 20px;
    }

    .login-brand {
        grid-column: 1;
        grid-row: 1;
        min-height: auto;
        padding: 30px 22px;
    }

    .login-logo {
        width: 112px;
        height: 112px;
        margin-bottom: 16px;
    }

    .login-brand h1 {
        font-size: clamp(25px, 6vw, 32px);
    }

    .login-form {
        grid-column: 1;
        grid-row: 2;
        padding: 28px 22px 30px;
    }
}

@media (max-width: 420px) {
    .login-page {
        padding: 14px 10px;
    }

    .login-brand {
        padding: 24px 16px;
    }

    .login-brand::before {
        inset: 10px;
    }

    .login-form {
        padding: 24px 16px;
    }
}


/* ============================================================
   LOGIN RESPONSIVE — CORRECCIÓN FINAL PARA MÓVILES
   Debe permanecer al final de app.css para prevalecer sobre
   las reglas anteriores de .login-page .login-card.
   No modifica la presentación de escritorio.
   ============================================================ */

.login-page,
.login-page * {
    box-sizing: border-box;
}

.login-page {
    width: 100%;
    max-width: 100%;
}

.login-page .login-shell,
.login-page .login-card,
.login-page .login-brand,
.login-page .login-form {
    min-width: 0;
    max-width: 100%;
}

.login-page .login-card {
    width: 100%;
}

.login-page .login-form .form-group,
.login-page .login-form .password-wrapper,
.login-page .login-form .form-input,
.login-page .login-form .login-submit {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.login-page .login-form .password-wrapper .form-input {
    padding-right: 86px;
}

@media (max-width: 760px) {
    .login-page {
        min-height: 100vh;
        min-height: 100dvh;
        align-items: flex-start;
        justify-content: center;
        padding: 20px 14px;
        overflow-x: clip;
        overflow-y: auto;
    }

    .login-page .login-shell {
        width: 100%;
        max-width: 520px;
        margin: auto;
    }

    .login-page .login-card {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto auto;
        width: 100%;
        min-width: 0;
        overflow: hidden;
        border-radius: 22px;
    }

    .login-page .login-brand {
        grid-column: 1;
        grid-row: 1;
        width: 100%;
        min-width: 0;
        min-height: 0;
        padding: 30px 22px;
    }

    .login-page .login-logo {
        width: clamp(92px, 24vw, 122px);
        height: clamp(92px, 24vw, 122px);
        margin: 0 auto 16px;
    }

    .login-page .login-brand h1 {
        max-width: 100%;
        font-size: clamp(24px, 6vw, 32px);
        line-height: 1.15;
        overflow-wrap: anywhere;
    }

    .login-page .login-brand p {
        font-size: 13px;
        line-height: 1.4;
    }

    .login-page .login-form {
        grid-column: 1;
        grid-row: 2;
        display: flex;
        flex-direction: column;
        width: 100%;
        min-width: 0;
        min-height: 0;
        height: auto;
        margin: 0;
        padding: 30px 24px 28px;
        align-self: stretch;
        justify-self: stretch;
    }

    .login-page .login-form::before {
        margin-bottom: 6px;
        font-size: clamp(24px, 6vw, 29px);
        line-height: 1.2;
    }

    .login-page .login-form::after {
        margin-bottom: 24px;
        line-height: 1.5;
    }

    .login-page .login-form > .form-group {
        width: 100%;
        min-width: 0;
        margin-bottom: 18px;
    }

    .login-page .login-form .form-input {
        min-height: 50px;
        font-size: 16px;
    }

    .login-page .login-form .login-submit {
        min-height: 50px;
    }
}

@media (max-width: 420px) {
    .login-page {
        padding: 14px 10px;
    }

    .login-page .login-shell {
        max-width: 100%;
    }

    .login-page .login-card {
        border-radius: 18px;
    }

    .login-page .login-brand {
        padding: 26px 16px;
    }

    .login-page .login-brand::before {
        inset: 10px;
        border-radius: 14px;
    }

    .login-page .login-form {
        padding: 24px 18px 22px;
    }

    .login-page .login-form::after {
        margin-bottom: 22px;
    }
}