/* =====================================================
   NATURSOFT / GENAL LOOK&FEEL
   ===================================================== */

:root {
    --natursoft-primary: #38a13c;
    --natursoft-primary-dark: #2b7d2f;
    --natursoft-primary-darker: #1f5c24;
    --natursoft-primary-light: #53bb57;
    --natursoft-secondary: #223036;

    --lumo-primary-color: #38a13c;
    --lumo-primary-color-50pct: rgba(56,161,60,0.5);
    --lumo-primary-color-10pct: rgba(56,161,60,0.1);
    --lumo-base-color: #f8fafc;
    --lumo-body-text-color: #374151;
    --lumo-secondary-text-color: #6b7280;
    --lumo-contrast-10pct: rgba(17, 24, 39, 0.08);
    --lumo-contrast-20pct: rgba(17, 24, 39, 0.14);

    --ui-bg: #f4f8f3;
    --ui-bg-soft: #ffffff;
    --ui-surface: #ffffff;
    --ui-surface-strong: #ffffff;
    --ui-border: #e5e7eb;
    --ui-border-strong: rgba(56, 161, 60, 0.18);
    --ui-text: #374151;
    --ui-muted: #6b7280;
    --ui-button-radius: 12px;
    --ui-card-gap: 22px;

    --shadow-soft: 0 6px 16px rgba(15, 23, 42, 0.10);
    --shadow-card: 0 14px 34px rgba(15, 23, 42, 0.12);
    --shadow-strong: 0 24px 52px rgba(15, 23, 42, 0.16);
    --shadow: 0 18px 40px rgba(15, 23, 42, 0.16);
}

html,
body {
    background:
        radial-gradient(circle at top center, rgba(56, 161, 60, 0.10), transparent 30%),
        radial-gradient(circle at bottom center, rgba(56, 161, 60, 0.05), transparent 34%),
        linear-gradient(180deg, #f6fbf4 0%, #eef6eb 100%);
    color: var(--ui-text);
}

body {
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}

/* =====================================================
   HEADER
   ===================================================== */

.top-header {
    background-color: #ffffff;
    border-bottom: 1px solid var(--ui-border);
    box-shadow: var(--shadow-soft);
    min-height: 90px;
    padding-left: 20px;
    padding-right: 20px;
    gap: 16px;
    box-sizing: border-box;
}

.top-logo {
    filter: none;
    transition: transform .18s ease;
}

.top-logo:hover {
    transform: translateY(-1px) scale(1.01);
}

.top-user {
    display: inline-flex;
    align-items: center;
    font-size: 0.92rem;
    font-weight: 600;
    color: #4b5563;
    white-space: nowrap;
}

.top-menu {
    background: transparent;
    border: none;
    box-shadow: none;
    --lumo-font-size-s: 0.95rem;
    --lumo-primary-text-color: var(--natursoft-primary-dark);
}

.top-menu-slot {
    min-width: 0;
}

.top-access-reminder-slot {
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

.top-access-reminder {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: 14px;
    border: 1px solid transparent;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
    max-width: 100%;
    animation: top-access-reminder-nudge 7s ease-in-out infinite;
    will-change: transform;
}

.top-access-reminder.entry {
    background: #fff7ed;
    border-color: rgba(249, 115, 22, 0.28);
}

.top-access-reminder.exit {
    background: #eff6ff;
    border-color: rgba(59, 130, 246, 0.24);
}

.top-access-reminder-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.top-access-reminder.entry .top-access-reminder-icon {
    color: #c2410c;
}

.top-access-reminder.exit .top-access-reminder-icon {
    color: #1d4ed8;
}

.top-access-reminder-message {
    display: inline-flex;
    align-items: center;
    color: #334155;
    font-size: 0.86rem;
    font-weight: 600;
    line-height: 1.3;
}

.top-access-reminder-button {
    flex-shrink: 0;
}

.top-access-reminder-button::part(button) {
    color: var(--natursoft-primary-dark);
    background: rgba(56, 161, 60, 0.10);
    border: 1px solid rgba(56, 161, 60, 0.20);
    border-radius: 10px;
}

.top-access-reminder-button:hover::part(button),
.top-access-reminder-button:focus-visible::part(button) {
    color: var(--natursoft-primary-darker);
    background: rgba(56, 161, 60, 0.16);
}

.top-access-reminder-button::part(label) {
    font-weight: 700;
}

.top-access-reminder-button vaadin-icon {
    width: 14px;
    height: 14px;
    color: var(--natursoft-primary-dark);
}

@keyframes top-access-reminder-nudge {
    0%, 84%, 100% {
        transform: translateX(0);
    }

    87% {
        transform: translateX(-4px);
    }

    90% {
        transform: translateX(5px);
    }

    93% {
        transform: translateX(-2px);
    }

    96% {
        transform: translateX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .top-access-reminder {
        animation: none;
    }
}

vaadin-menu-bar.top-menu {
    width: auto;
    max-width: 100%;
    background: transparent;
}

vaadin-menu-bar.top-menu::part(container) {
    gap: 8px;
}

.top-menu-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    line-height: 1;
}

.top-menu-label-icon {
    width: 16px;
    height: 16px;
    color: var(--natursoft-primary-dark);
    flex-shrink: 0;
}

.top-menu-label-text {
    display: inline-block;
}

.top-menu-label-about {
    display: inline-flex;
    align-items: center;
    line-height: 1;
}

.top-menu-label-about-subitem .top-menu-label-icon {
    color: #4f8f35;
}

/* =====================================================
   CUENTA DE RESULTADOS
   ===================================================== */

.cuenta-resultados-summary-card {
    margin-top: 16px;
}

.cuenta-resultados-kpi {
    min-width: 220px;
    padding: 16px 18px;
    border-radius: 16px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
    border: 1px solid rgba(34, 48, 54, 0.08);
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cuenta-resultados-kpi-title {
    font-size: 0.86rem;
    font-weight: 700;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.cuenta-resultados-kpi-value {
    font-size: 1.65rem;
    font-weight: 800;
    color: #1f2937;
    line-height: 1.1;
}

.cuenta-resultados-grid [class*="cuenta-resultados-cell"] {
    display: inline-flex;
    width: 100%;
    box-sizing: border-box;
    min-height: 36px;
    align-items: center;
    padding: 8px 12px;
    border-radius: 10px;
    overflow: hidden;
    white-space: nowrap;
}

.cuenta-resultados-cell-text {
    justify-content: flex-start;
    color: #334155;
}

.cuenta-resultados-cell-code {
    font-weight: 700;
    color: #1f2937;
}

.cuenta-resultados-cell-description {
    font-weight: 600;
}

.cuenta-resultados-cell-number {
    justify-content: flex-end;
    font-variant-numeric: tabular-nums;
    font-size: 0.86rem;
    line-height: 1;
    color: #1f2937;
}

.cuenta-resultados-row-total-ingresos,
.cuenta-resultados-row-total-iva-repercutido,
.cuenta-resultados-row-total-gastos,
.cuenta-resultados-row-total-iva-soportado,
.cuenta-resultados-row-resultado {
    font-weight: 800;
    color: #ffffff;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}

.cuenta-resultados-row-total-ingresos {
    background: linear-gradient(180deg, #2d7ac0 0%, #225f95 100%);
}

.cuenta-resultados-row-total-iva-repercutido {
    background: linear-gradient(180deg, #3f8fc9 0%, #2e6f9e 100%);
}

.cuenta-resultados-row-total-gastos {
    background: linear-gradient(180deg, #1f4c7a 0%, #173a5d 100%);
}

.cuenta-resultados-row-total-iva-soportado {
    background: linear-gradient(180deg, #4d7f4a 0%, #395f37 100%);
}

.cuenta-resultados-row-resultado {
    background: linear-gradient(180deg, #2ebc62 0%, #1f934b 100%);
}

.cuenta-resultados-row-subtotal-linea {
    font-weight: 700;
    color: #1f3a5f;
    background: #eef3f9;
    box-shadow: inset 0 0 0 1px rgba(34, 95, 149, 0.12);
}

/* Grids de ancho fijo (cuenta de resultados, detalle de IVA): el ancho lo fija la vista (suma de sus
   columnas); aqui solo se centran y se limitan al 100% del contenedor. */
vaadin-grid.grid-ancho-fijo {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    align-self: center !important;
}

vaadin-menu-bar.top-menu vaadin-menu-bar-button {
    border-radius: var(--ui-button-radius);
}

vaadin-menu-bar.top-menu vaadin-menu-bar-button::part(button) {
    background: transparent;
    border: none;
    border-radius: var(--ui-button-radius);
    color: var(--ui-text);
    font-size: 0.95rem;
    font-weight: 500;
    line-height: 1.2;
    padding: 8px 14px;
    min-height: 38px;
    box-shadow: none;
    transition: all .15s ease;
}

vaadin-menu-bar.top-menu vaadin-menu-bar-button:hover::part(button),
vaadin-menu-bar.top-menu vaadin-menu-bar-button[expanded]::part(button) {
    background-color: #f1f5f9;
    color: #111827;
}

vaadin-menu-bar.top-menu vaadin-menu-bar-button.current::part(button) {
    background-color: rgba(56,161,60,0.12);
    color: var(--natursoft-primary-darker);
    font-weight: 600;
}

vaadin-menu-bar.top-menu vaadin-menu-bar-button.top-menu-item-about::part(button) {
    padding-left: 14px;
    padding-right: 14px;
}

vaadin-menu-bar-overlay::part(overlay) {
    border-radius: 10px;
    border: 1px solid var(--ui-border);
    background: #ffffff;
    box-shadow: var(--shadow-card);
}

vaadin-menu-bar-item {
    color: var(--ui-text);
    font-size: 0.9rem;
    font-weight: 600;
}

vaadin-menu-bar-item.current {
    color: var(--natursoft-primary-dark);
    font-weight: 700;
}

vaadin-menu-bar-item::part(submenu-icon) {
    color: var(--natursoft-primary);
}

.natursoft-about-dialog::part(content) {
    padding: 0;
    border-radius: 24px;
    background: #ffffff;
    border: 1px solid rgba(56, 161, 60, 0.18);
    box-shadow: 0 28px 56px rgba(15, 23, 42, 0.18);
    overflow: hidden;
}

.natursoft-about-dialog::part(header) {
    padding: 18px 22px 0;
    color: var(--natursoft-primary-darker);
    font-size: 1.12rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    background: #ffffff;
}

.natursoft-about-dialog::part(footer) {
    padding: 0 22px 22px;
    background: #ffffff;
}

.natursoft-about-dialog::part(backdrop) {
    background: rgba(15, 23, 42, 0.18);
}

.natursoft-about-content {
    gap: 18px;
    padding: 0 22px 22px;
    box-sizing: border-box;
}

.natursoft-about-hero {
    width: calc(100% + 44px);
    margin: 0 -22px;
    padding: 22px;
    box-sizing: border-box;
    gap: 8px;
    background: linear-gradient(180deg, rgba(56, 161, 60, 0.14) 0%, rgba(56, 161, 60, 0.05) 100%);
    border-bottom: 1px solid rgba(56, 161, 60, 0.14);
}

.natursoft-about-logo {
    width: auto;
    max-width: 190px;
    height: 72px;
    object-fit: contain;
}

.natursoft-about-title {
    font-size: 1.4rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #1f2937;
}

.natursoft-about-version {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--natursoft-primary-dark);
}

.natursoft-about-info {
    gap: 10px;
}

.natursoft-about-info-row {
    width: 100%;
    padding: 12px 14px;
    box-sizing: border-box;
    gap: 12px;
    border-radius: 16px;
    background: #f8fafc;
    border: 1px solid #e5e7eb;
}

.natursoft-about-info-icon {
    width: 18px;
    height: 18px;
    color: var(--natursoft-primary-dark);
    flex-shrink: 0;
    margin-top: 2px;
}

.natursoft-about-info-stack {
    gap: 3px;
}

.natursoft-about-info-label {
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #64748b;
}

.natursoft-about-info-value {
    color: #1f2937;
    font-size: 0.96rem;
    font-weight: 600;
    line-height: 1.4;
}

a.natursoft-about-info-value {
    color: var(--natursoft-primary-darker);
    text-decoration: none;
}

a.natursoft-about-info-value:hover {
    text-decoration: underline;
}

.natursoft-about-close {
    min-width: 120px;
}

.top-user-section {
    gap: 10px;
    flex-shrink: 0;
    min-width: fit-content;
}

.top-icon-button {
    color: var(--natursoft-primary-dark);
    border-radius: var(--ui-button-radius);
    background: rgba(56,161,60,0.08);
    border: none;
    min-width: 46px;
    width: 46px;
    height: 46px;
    padding: 0;
    box-shadow: var(--shadow-soft);
}

.top-icon-button:hover::part(button),
.top-icon-button:focus-visible::part(button) {
    background-color: rgba(56,161,60,0.16);
    color: var(--natursoft-primary-dark);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.26);
}

.top-icon-button vaadin-icon {
    width: 18px;
    height: 18px;
}

/* =====================================================
   LOGIN
   ===================================================== */

.login-view {
    position: relative;
    overflow: hidden;
}

.login-view::before,
.login-view::after {
    content: "";
    position: absolute;
    inset: auto;
    border-radius: 50%;
    background: rgba(69,182,60,0.10);
    filter: blur(24px);
    pointer-events: none;
}

.login-view::before {
    width: 320px;
    height: 320px;
    top: 8%;
    left: 10%;
}

.login-view::after {
    width: 260px;
    height: 260px;
    right: 12%;
    bottom: 12%;
}

.login-card {
    position: relative;
    z-index: 1;
    min-height: 500px;
    max-width: min(380px, calc(100vw - 32px));
    padding: 32px 28px 26px;
    border-radius: 24px;
    border: 1px solid var(--ui-border);
    background: var(--ui-surface);
    box-shadow: var(--shadow-strong);
    justify-content: center;
    gap: 14px;
}

.presupuesto-publico-view {
    position: relative;
    overflow: hidden;
    padding: 24px;
    box-sizing: border-box;
}

.presupuesto-publico-view::before,
.presupuesto-publico-view::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    background: rgba(69, 182, 60, 0.10);
    filter: blur(28px);
    pointer-events: none;
}

.presupuesto-publico-view::before {
    width: 360px;
    height: 360px;
    top: 6%;
    left: 8%;
}

.presupuesto-publico-view::after {
    width: 320px;
    height: 320px;
    right: 8%;
    bottom: 10%;
}

.presupuesto-publico-card {
    position: relative;
    z-index: 1;
    max-width: min(760px, calc(100vw - 32px));
    padding: 34px 34px 28px;
    border-radius: 28px;
    border: 1px solid var(--ui-border);
    background: rgba(255, 255, 255, 0.96);
    box-shadow: var(--shadow-strong);
    gap: 14px;
    box-sizing: border-box;
}

.presupuesto-publico-card::before {
    content: "";
    position: absolute;
    inset: 14px;
    border-radius: 24px;
    border: 1px solid rgba(255, 255, 255, 0.55);
    pointer-events: none;
}

.presupuesto-publico-logo {
    width: 210px;
    max-width: 100%;
    height: auto;
    align-self: center;
    margin-bottom: 4px;
}

.presupuesto-publico-title {
    margin: 0;
    text-align: center;
    font-size: clamp(1.8rem, 2.8vw, 2.25rem);
    color: #1f2937;
}

.presupuesto-publico-subtitle {
    margin: 0 0 6px;
    text-align: center;
    color: var(--ui-muted);
    line-height: 1.5;
}

.presupuesto-publico-divider {
    height: 1px;
    width: 100%;
    background: linear-gradient(90deg, rgba(56, 161, 60, 0.04) 0%, rgba(56, 161, 60, 0.22) 50%, rgba(56, 161, 60, 0.04) 100%);
    margin: 4px 0 6px;
}

.presupuesto-publico-card vaadin-text-field::part(input-field),
.presupuesto-publico-card vaadin-text-area::part(input-field) {
    background: rgba(255, 255, 255, 0.84);
    border: 1px solid rgba(69, 182, 60, 0.18);
    border-radius: 16px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65);
}

.presupuesto-publico-card vaadin-text-field::part(label),
.presupuesto-publico-card vaadin-text-area::part(label) {
    color: var(--ui-muted);
    font-weight: 700;
}

.presupuesto-publico-consent {
    margin-top: 6px;
    padding: 14px 16px;
    border-radius: 18px;
    background: rgba(56, 161, 60, 0.06);
    border: 1px solid rgba(56, 161, 60, 0.16);
    color: var(--ui-text);
    line-height: 1.5;
}

.presupuesto-publico-consent label {
    font-weight: 600;
}

.presupuesto-publico-legal {
    color: var(--ui-muted);
    font-size: 0.88rem;
    line-height: 1.4;
}

.login-card::before {
    content: "";
    position: absolute;
    inset: 14px;
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,0.55);
    pointer-events: none;
}

.login-logo {
    width: 220px;
    max-width: 100%;
    height: auto;
    align-self: center;
    margin-bottom: 6px;
    filter: none;
}

.login-card vaadin-text-field::part(input-field),
.login-card vaadin-password-field::part(input-field) {
    background: rgba(255,255,255,0.84);
    border: 1px solid rgba(69,182,60,0.18);
    border-radius: 16px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.65);
}

.login-card vaadin-text-field::part(label),
.login-card vaadin-password-field::part(label) {
    color: var(--ui-muted);
    font-weight: 600;
}

.natursoft-login-button,
.login-button,
.btn-natursoft,
.pager-button {
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: white;
    font-weight: 600;
    border: none;
    box-shadow: var(--shadow-soft);
    transition: all .2s ease;
}

.natursoft-login-button::part(button),
.login-button::part(button),
.btn-natursoft::part(button),
.pager-button::part(button) {
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: #ffffff;
    box-shadow: 0 16px 26px rgba(31, 95, 34, 0.22);
}

.natursoft-login-button,
.login-button {
    --lumo-button-size: 46px;
    border-radius: var(--ui-button-radius);
    min-height: 46px;
    padding: 0 1.4em;
}

.natursoft-login-button::part(label),
.login-button::part(label) {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    line-height: 1;
}

.natursoft-login-button:hover::part(button),
.login-button:hover::part(button),
.btn-natursoft:hover::part(button),
.pager-button:hover::part(button) {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.26);
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
}

.btn-natursoft-secondary {
    background: #ffffff;
    color: var(--ui-text);
    font-weight: 600;
    border: none;
    box-shadow: var(--shadow-soft);
    transition: all .2s ease;
}

.btn-natursoft-secondary::part(button) {
    background: #ffffff;
    color: var(--ui-text);
    box-shadow: 0 16px 26px rgba(31, 95, 34, 0.14);
}

.btn-natursoft-secondary:hover::part(button) {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.22);
    background: #f8fcf7;
}

.btn-natursoft-neutral {
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: #ffffff;
    font-weight: 600;
    border: none;
    box-shadow: var(--shadow-soft);
    transition: all .2s ease;
}

.btn-natursoft-neutral::part(button) {
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: #ffffff;
    box-shadow: 0 16px 26px rgba(31, 95, 34, 0.22);
}

.btn-natursoft-neutral:hover::part(button) {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.26);
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
}

.btn-natursoft-danger {
    background: linear-gradient(180deg, #d64545 0%, #b92f2f 100%);
    color: #ffffff;
    font-weight: 600;
    border: none;
    box-shadow: var(--shadow-soft);
    transition: all .2s ease;
}

.btn-natursoft-danger::part(button) {
    background: linear-gradient(180deg, #d64545 0%, #b92f2f 100%);
    color: #ffffff;
    box-shadow: 0 16px 26px rgba(185, 47, 47, 0.18);
}

.btn-natursoft-danger:hover::part(button) {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(185, 47, 47, 0.24);
    background: linear-gradient(180deg, #e15555 0%, #c93838 100%);
}

.btn-small {
    --lumo-button-size: 28px;
    min-width: 28px;
    border-radius: var(--ui-button-radius);
}

.btn-mid {
    --lumo-button-size: 36px;
    min-width: 170px;
    font-size: 0.84rem;
}

.btn-large {
    --lumo-button-size: 60px;
    min-width: 320px;
    border-radius: var(--ui-button-radius);
}

vaadin-button.btn-small::part(prefix),
vaadin-button.btn-mid::part(prefix),
vaadin-button.btn-large::part(prefix),
vaadin-button.btn-natursoft::part(prefix),
vaadin-button.btn-natursoft-secondary::part(prefix),
vaadin-button.btn-natursoft-neutral::part(prefix),
vaadin-button.btn-natursoft-danger::part(prefix),
vaadin-button.natursoft-login-button::part(prefix),
vaadin-button.login-button::part(prefix),
vaadin-button.pager-button::part(prefix) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

vaadin-button.btn-small vaadin-icon,
vaadin-button.btn-mid vaadin-icon,
vaadin-button.btn-large vaadin-icon,
vaadin-button.btn-natursoft vaadin-icon,
vaadin-button.btn-natursoft-secondary vaadin-icon,
vaadin-button.btn-natursoft-neutral vaadin-icon,
vaadin-button.btn-natursoft-danger vaadin-icon,
vaadin-button.natursoft-login-button vaadin-icon,
vaadin-button.login-button vaadin-icon,
vaadin-button.pager-button vaadin-icon {
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
    flex-shrink: 0;
}

.menu-button {
    font-size: inherit;
    letter-spacing: normal;
}

.menu-button-inline vaadin-icon,
.menu-button-inline .menu-button-inline-icon {
    width: 16px;
    height: 16px;
    margin-right: 8px;
    flex-shrink: 0;
}

/* =====================================================
   VISTAS DE MENÚ
   ===================================================== */

.content-wrapper {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 120px);
}

.menu-page-title {
    width: 100%;
    margin: 0 auto;
    text-align: center;
    font-size: clamp(1.6rem, 2vw, 2.1rem);
    font-weight: 700;
    color: var(--ui-text);
    margin-bottom: 0;
}

.contabilidad-home-view {
    padding-top: 8px;
}

.maestros-view {
    padding-top: 8px;
}

.operativa-home-view,
.presupuestos-view,
.presupuesto-form-view {
    padding-top: 8px;
}

.operativa-section-view {
    padding-top: 8px;
}

.contabilidad-home-view .menu-zone {
    gap: 10px;
}

.maestros-view .menu-zone {
    gap: 10px;
}

.operativa-home-view .menu-zone,
.presupuestos-view .menu-zone,
.presupuesto-form-view .menu-zone {
    gap: 10px;
}

.operativa-section-view .menu-zone {
    gap: 10px;
}

.contabilidad-home-view .menu-zone,
.maestros-view .menu-zone,
.numeraciones-view .menu-zone {
    min-height: calc(100vh - 260px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.operativa-section-view .menu-row {
    gap: 10px;
}

.operativa-section-view .environment-entry-card {
    width: 220px;
    min-width: 220px;
    min-height: 112px;
}

.operativa-section-view .environment-entry-card-content {
    min-height: 112px;
    padding: 12px 14px;
}

.operativa-section-view .environment-entry-card-icon-shell {
    width: 34px;
    height: 34px;
    min-width: 34px;
    min-height: 34px;
}

.operativa-section-view .environment-entry-card-icon {
    width: 22px;
    height: 22px;
    min-width: 22px;
    min-height: 22px;
}

.contabilidad-home-top-row,
.contabilidad-home-bottom-row {
    width: 100%;
}

.contabilidad-home-top-row {
    align-items: stretch;
}

.contabilidad-home-top-row > .contabilidad-home-section-card {
    flex: 1 1 0;
    max-width: 490px;
    margin-bottom: 0;
}

.contabilidad-home-bottom-row > .contabilidad-home-section-card-bottom {
    flex: 0 1 490px;
    max-width: 490px;
    margin-bottom: 0;
}

.contabilidad-home-section-card {
    justify-content: center;
}

.maestros-view .menu-section-card-classic,
.numeraciones-view .menu-section-card-classic {
    width: 100%;
    max-width: 540px;
    min-height: 360px;
    justify-content: center;
    padding-top: 22px;
    padding-bottom: 22px;
}

.contabilidad-home-view .menu-section-card {
    padding: 14px 16px 16px;
    margin-bottom: 8px;
}

.maestros-view .menu-section-card {
    padding: 14px 16px 16px;
    margin-bottom: 8px;
}

.numeraciones-view .menu-page-title,
.numeraciones-list-view .menu-page-title,
.numeraciones-form-view .menu-page-title {
    font-size: clamp(1.6rem, 2vw, 2.1rem);
}

.erp-centered-form-page {
    width: 100%;
    min-height: calc(100vh - 220px);
    justify-content: center;
    align-items: center;
}

.erp-centered-form-page > .dashboard-card {
    width: 100%;
    max-width: 760px;
}

.erp-centered-form-page > vaadin-horizontal-layout {
    width: 100%;
    max-width: 760px;
}

.numeraciones-view {
    padding-top: 8px;
}

.numeraciones-view .menu-zone {
    gap: 10px;
}

.numeraciones-view .menu-section-card {
    padding: 16px 18px 18px;
    margin-bottom: 8px;
}

.numeraciones-view .environment-entry-card {
    width: 220px;
    min-width: 220px;
    min-height: 112px;
}

.numeraciones-view .environment-entry-card-content {
    min-height: 112px;
    padding: 12px 14px;
}

.numeraciones-view .environment-entry-card-icon-shell {
    width: 34px;
    height: 34px;
    min-width: 34px;
    min-height: 34px;
}

.numeraciones-view .environment-entry-card-icon {
    width: 22px;
    height: 22px;
    min-width: 22px;
    min-height: 22px;
}

.contabilidad-home-view .classic-block-title {
    font-size: 18px;
}

.maestros-view .classic-block-title {
    font-size: 18px;
}

.contabilidad-home-view .classic-block-subtitle {
    font-size: 12px;
}

.maestros-view .menu-row {
    gap: 8px;
}

.contabilidad-home-view .menu-row {
    gap: 8px;
}

.operativa-home-view .menu-row {
    gap: 10px;
}

.maestros-view .environment-entry-card {
    width: 190px;
    min-width: 190px;
    min-height: 104px;
    border-radius: 12px;
}

.contabilidad-home-view .environment-entry-card {
    width: 190px;
    min-width: 190px;
    min-height: 104px;
    border-radius: 12px;
}

.maestros-view .environment-entry-card-content {
    min-height: 104px;
    gap: 6px;
    padding: 10px 12px;
}

.contabilidad-home-view .environment-entry-card-content {
    min-height: 104px;
    gap: 6px;
    padding: 10px 12px;
}

.maestros-view .environment-entry-card-icon-shell {
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
}

.contabilidad-home-view .environment-entry-card-icon-shell {
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
}

.maestros-view .environment-entry-card-icon {
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
}

.contabilidad-home-view .environment-entry-card-icon {
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
}

.maestros-view .environment-entry-card-title {
    font-size: 0.84rem;
    letter-spacing: 0.025em;
}

.contabilidad-home-view .environment-entry-card-title {
    font-size: 0.84rem;
    letter-spacing: 0.025em;
}

.operativa-home-view .environment-entry-card {
    width: 220px;
    min-width: 220px;
    min-height: 112px;
}

.operativa-home-view .environment-entry-card-content {
    min-height: 112px;
    padding: 12px 14px;
}

.operativa-home-view .environment-entry-card-icon-shell {
    width: 34px;
    height: 34px;
    min-width: 34px;
    min-height: 34px;
}

.operativa-home-view .environment-entry-card-icon {
    width: 22px;
    height: 22px;
    min-width: 22px;
    min-height: 22px;
}

.operativa-home-section-card {
    width: 100%;
    max-width: 1000px;
}

.operativa-home-view .menu-zone {
    min-height: calc(100vh - 260px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.operativa-control-empleados-view .menu-zone {
    min-height: calc(100vh - 260px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.operativa-maestros-view .menu-zone,
.operativa-series-view .menu-zone {
    min-height: calc(100vh - 260px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.operativa-control-empleados-view .menu-section-card-classic {
    width: 100%;
    max-width: 540px;
    min-height: 320px;
    justify-content: center;
    padding-top: 22px;
    padding-bottom: 22px;
}

.operativa-maestros-view .menu-section-card-classic {
    width: 100%;
    max-width: 780px;
    min-height: 400px;
    justify-content: center;
    padding-top: 22px;
    padding-bottom: 22px;
}

.operativa-series-view .menu-section-card-classic {
    width: 100%;
    max-width: 540px;
    min-height: 360px;
    justify-content: center;
    padding-top: 22px;
    padding-bottom: 22px;
}

.operativa-trabajos-view .menu-section-card-classic {
    width: 100%;
    max-width: 470px;
    flex: 1 1 470px;
    min-height: 330px;
    justify-content: center;
    padding-top: 22px;
    padding-bottom: 22px;
}

.operativa-trabajos-view .menu-row {
    align-items: stretch;
}

.operativa-trabajos-view .menu-zone {
    min-height: calc(100vh - 260px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.operativa-control-empleados-view .environment-entry-card {
    width: 220px;
    min-width: 220px;
    min-height: 112px;
}

.operativa-maestros-view .environment-entry-card,
.operativa-series-view .environment-entry-card {
    width: 220px;
    min-width: 220px;
    min-height: 112px;
}

.operativa-control-empleados-view .environment-entry-card-content {
    min-height: 112px;
}

.operativa-maestros-view .environment-entry-card-content,
.operativa-series-view .environment-entry-card-content {
    min-height: 112px;
}

.menu-zone {
    gap: var(--ui-card-gap);
}

.menu-hero,
.menu-section-card,
.environment-card,
.dashboard-card {
    border: none;
    background: white;
    box-shadow: var(--shadow-card);
}

.filter-card {
    width: fit-content !important;
    max-width: min(calc(100% - 28px), 1120px) !important;
    margin-right: auto;
    box-sizing: border-box;
}

.filter-card > vaadin-horizontal-layout,
.filter-card > vaadin-vertical-layout,
.filter-card > div {
    width: auto !important;
    max-width: 100%;
    box-sizing: border-box;
}

.menu-hero {
    padding: 20px;
    border-radius: 10px;
    margin-bottom: 14px;
    text-align: center;
}

.menu-eyebrow,
.menu-section-eyebrow,
.environment-eyebrow {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 700;
    color: #6b7d84;
    margin-bottom: 8px;
}

.menu-hero-title,
.menu-section-title,
.environment-title {
    margin: 0;
    color: var(--ui-text);
    line-height: 1.06;
}

.classic-block-title {
    margin: 0;
    font-size: 20px;
    font-weight: 700;
    text-align: center;
    width: 100%;
    letter-spacing: 0.5px;
    color: var(--ui-text);
}

.classic-block-subtitle {
    margin: 0;
    width: 100%;
    font-size: 13px;
    text-align: center;
    color: var(--ui-muted);
}

.menu-hero-title {
    font-size: clamp(1.34rem, 1.7vw, 1.72rem);
}

.menu-section-title,
.environment-title {
    font-size: clamp(1.35rem, 1.7vw, 1.55rem);
    text-align: center;
}

.menu-hero-copy,
.menu-section-copy,
.environment-copy {
    margin: 10px 0 0;
    color: var(--ui-muted);
    line-height: 1.5;
    font-size: 0.92rem;
    text-align: center;
}

.menu-section-card {
    width: 100%;
    max-width: 1000px;
    padding: 16px 18px 18px;
    border-radius: 10px;
    margin-bottom: var(--ui-card-gap);
}

.menu-section-card-classic {
    gap: 6px;
}

.menu-row {
    gap: var(--ui-card-gap);
    margin-top: 4px;
}

.environment-grid {
    gap: 18px;
    justify-content: center;
}

.environment-grid > * {
    flex: 1 1 360px;
}

.environment-card {
    position: relative;
    min-height: 190px;
    padding: 20px;
    border-radius: 10px;
    justify-content: center;
    gap: 14px;
    text-align: center;
    transition: all .15s ease;
}

.environment-card-compact {
    min-height: 250px;
    max-width: 320px;
    padding: 28px 22px;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 18px;
    box-shadow: var(--shadow-strong);
}

.environment-action-button {
    width: 78px;
    min-width: 78px;
    height: 78px;
    min-height: 78px;
    padding: 0;
    border-radius: 22px;
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: #ffffff;
    border: none;
    box-shadow: 0 18px 34px rgba(34, 106, 36, 0.24);
    cursor: pointer;
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.environment-action-button:hover,
.environment-action-button:focus-visible {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.26);
}

.environment-action-icon {
    width: 32px;
    height: 32px;
}

.environment-title-compact {
    font-size: 1.16rem;
    margin: 0;
    text-align: center;
}

.environment-card:hover,
.environment-card:focus-within,
.dashboard-card:hover {
    transform: none;
    box-shadow: inherit;
    border-color: inherit;
}

.prehome-card {
    min-height: 240px;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-strong);
}

.environment-entry-card {
    display: flex;
    width: 220px;
    min-width: 220px;
    min-height: 132px;
    border-radius: 14px;
    text-decoration: none !important;
    color: inherit;
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    box-shadow: 0 16px 26px rgba(31, 95, 34, 0.22);
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
    will-change: transform;
}

.environment-entry-card:link,
.environment-entry-card:visited {
    text-decoration: none !important;
}

.environment-entry-card:hover,
.environment-entry-card:focus-visible,
.environment-entry-card:active {
    text-decoration: none !important;
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.26);
}

.environment-entry-card:hover,
.environment-entry-card:focus-visible {
    transform: translateY(-3px);
}

.environment-entry-card:active {
    transform: translateY(-1px);
}

.environment-entry-card-content {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 132px;
    padding: 14px 16px;
    text-align: center;
}

.environment-entry-card-icon-shell {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    min-width: 40px;
    min-height: 40px;
}

.environment-entry-card-icon {
    width: 24px;
    height: 24px;
    min-width: 24px;
    min-height: 24px;
    color: #ffffff;
}

.environment-entry-card-title {
    display: block;
    width: 100%;
    margin: 0;
    text-align: center;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    color: #ffffff;
    text-decoration: none !important;
}

@media (prefers-reduced-motion: reduce) {
    .environment-entry-card:hover,
    .environment-entry-card:focus-visible {
        transform: translateY(-2px);
    }
}

.numeraciones-card {
    width: 100%;
    max-width: none;
    padding: 16px 18px 18px;
    border-radius: 10px;
    box-sizing: border-box;
}

.numeraciones-filter-card.filter-card {
    width: 100% !important;
    max-width: none !important;
}

.numeraciones-card > h3 {
    margin: 0 0 12px;
    font-size: 1.05rem;
    color: var(--ui-text);
}

.numeraciones-filter-card > vaadin-horizontal-layout,
.numeraciones-filter-card > vaadin-vertical-layout,
.numeraciones-filter-card > div {
    width: 100% !important;
}

.numeraciones-filter-card vaadin-text-field,
.numeraciones-filter-card vaadin-select {
    min-width: 180px;
}

.numeraciones-actions {
    width: 100%;
    max-width: none;
}

.numeraciones-filter-actions {
    margin-top: 10px;
}

.numeraciones-helper-note {
    margin: 0;
    color: var(--ui-muted);
    line-height: 1.5;
    font-size: 0.92rem;
}

.numeraciones-preview-caption {
    margin: 0;
    color: var(--ui-muted);
    line-height: 1.45;
}

.numeracion-preview-value {
    display: block;
    font-size: clamp(1.15rem, 1.6vw, 1.45rem);
    font-weight: 700;
    color: var(--ui-text);
    letter-spacing: 0.02em;
}

.numeraciones-form-card vaadin-form-layout {
    width: 100%;
}

.presupuestos-shell,
.presupuesto-form-shell {
    width: 100%;
    max-width: none;
    gap: 8px;
    margin-right: auto;
}

.presupuesto-form-main-layout {
    width: 100%;
    align-items: stretch;
    gap: 8px;
    min-height: calc(100vh - 220px);
    overflow: hidden;
}

.presupuesto-form-left-column,
.presupuesto-form-side-column {
    gap: 10px;
}

.presupuesto-form-left-column {
    min-width: 0;
    flex: 1 1 0;
    max-width: none;
    max-height: calc(100vh - 220px);
    overflow-y: auto;
    padding-right: 6px;
}

.presupuesto-form-side-column {
    align-self: stretch;
    flex: 0 0 560px;
    width: 560px;
    max-width: 560px;
    position: static;
    min-height: 0;
    overflow: visible;
    padding-right: 6px;
}

.presupuesto-form-title {
    width: 100%;
    text-align: center;
    margin-bottom: 2px;
}

.presupuesto-form-top-actions {
    margin-bottom: -2px;
}

.presupuestos-filter-card,
.presupuestos-list-card,
.presupuestos-detail-card,
.presupuesto-form-card {
    width: 100%;
    box-sizing: border-box;
    padding: 12px 14px;
    border-radius: 10px;
}

.presupuestos-filter-card,
.presupuestos-summary-row {
    width: calc(100% - 28px);
    margin-inline: 14px;
    box-sizing: border-box;
}

.operativa-referencias-filter-card {
    width: fit-content;
    max-width: min(860px, 100%);
}

.presupuestos-filter-card > h3,
.presupuestos-list-card > h3,
.presupuestos-detail-card > h3,
.presupuesto-form-card > h3 {
    margin: 0 0 10px;
    font-size: 0.94rem;
    color: var(--ui-text);
}

.presupuesto-cabecera-form {
    width: 100%;
    --vaadin-form-layout-column-spacing: 12px;
    --vaadin-form-layout-row-spacing: 8px;
}

.presupuesto-cabecera-card {
    padding-top: 10px;
}

.presupuesto-cabecera-form vaadin-text-area,
.presupuesto-cabecera-form vaadin-combo-box,
.presupuesto-cabecera-form vaadin-text-field,
.presupuesto-cabecera-form vaadin-date-picker,
.presupuesto-cabecera-form vaadin-big-decimal-field {
    width: 100%;
}

.presupuesto-form-view .form-big {
    font-size: 13px;
}

.presupuesto-form-view .form-big::part(label) {
    font-size: 0.78rem;
    line-height: 1.15;
    padding-bottom: 4px;
}

.presupuesto-form-view .form-big::part(input-field) {
    min-height: 38px;
    font-size: 13px;
    padding-inline: 10px;
}

.presupuesto-mini-card {
    min-width: 0;
    flex: 1 1 0;
    padding: 7px 10px;
    border-radius: 10px;
    position: relative;
    overflow: hidden;
}

.presupuesto-mini-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 6px;
    border-radius: 10px 0 0 10px;
    background: #d1d5db;
}

.presupuesto-mini-card.kpi-total::before {
    background: #2563eb;
}

.presupuesto-mini-card.kpi-confirmados::before {
    background: #f59e0b;
}

.presupuesto-mini-card.kpi-en-curso::before {
    background: #16a34a;
}

.presupuesto-mini-card.kpi-finalizados::before {
    background: #0ea5e9;
}

.presupuesto-kpi-title {
    display: block;
    margin: 0;
    font-size: 0.72rem;
    color: var(--ui-muted);
    font-weight: 700;
    line-height: 1.1;
}

.presupuesto-mini-card .dashboard-card-value {
    font-size: 0.82rem;
    line-height: 1.1;
    margin-top: 2px;
}

.presupuesto-mini-card .dashboard-card-sub {
    display: block;
    margin-top: 1px;
    font-size: 0.68rem;
    color: #6b7280;
    line-height: 1.1;
}

.presupuesto-total-highlight {
    color: var(--natursoft-primary-dark);
}

.presupuesto-summary-card .presupuesto-mini-card {
    min-width: 0;
    flex: 1 1 0;
}

.presupuesto-summary-card .presupuesto-summary-row {
    width: 100%;
    flex-wrap: nowrap;
    gap: 6px;
    align-items: stretch;
}

.presupuesto-summary-actions {
    margin-top: 10px;
}

.presupuestos-grid,
.presupuestos-detail-grid,
.presupuesto-lineas-grid {
    width: 100%;
}

.presupuestos-list-card .grid-saas,
.presupuestos-detail-card .grid-saas,
.presupuesto-form-card .grid-saas {
    border-radius: 10px;
}

.presupuesto-lineas-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.presupuesto-lineas-actions {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.presupuesto-lineas-actions .form-big {
    min-width: 220px;
}

.presupuesto-lineas-count {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--ui-muted);
}

.presupuesto-referencias-toolbar,
.presupuesto-referencias-footer {
    display: flex;
    align-items: center;
}

.presupuesto-referencias-grid {
    width: 100%;
}

.presupuesto-referencias-card {
    position: static;
    align-self: stretch;
    height: 100%;
}

.presupuesto-referencias-card .presupuesto-referencias-grid {
    font-size: 0.68rem;
    border-radius: 8px;
    box-shadow: none;
    --vaadin-grid-cell-padding: 0 4px;
    --vaadin-grid-row-height: 28px;
}

.presupuesto-referencias-card vaadin-grid::part(header-cell) {
    font-size: 10px;
    padding-left: 6px;
    padding-right: 6px;
    padding-top: 4px;
    padding-bottom: 4px;
    line-height: 1.1;
}

.presupuesto-referencias-card vaadin-grid::part(body-cell) {
    font-size: 9.5px;
    padding-left: 4px;
    padding-right: 4px;
    padding-top: 1px;
    padding-bottom: 1px;
    line-height: 1.05;
}

.presupuesto-referencias-card vaadin-grid::part(row) {
    min-height: 28px;
}

.presupuesto-referencia-field {
    min-width: 0;
}

.presupuesto-referencia-field::part(input-field) {
    min-height: 22px;
    padding-inline: 4px;
    border-radius: 4px;
    box-shadow: none;
}

.presupuesto-referencia-field input {
    text-align: left;
    font-size: 0.72rem;
    line-height: 1;
}

.presupuesto-referencias-total {
    font-size: 0.9rem;
    font-weight: 800;
    color: var(--ui-text);
}

.presupuesto-context-layout {
    gap: 10px;
}

.presupuesto-context-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    border-radius: 10px;
    background: rgba(248, 250, 252, 0.92);
    border: 1px solid rgba(82, 117, 104, 0.10);
}

.presupuesto-context-label {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ui-muted);
}

.presupuesto-context-value {
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--ui-text);
    line-height: 1.35;
    word-break: break-word;
}

.presupuesto-tracking-grid {
    width: 100%;
}

@media (max-width: 1180px) {
    .presupuesto-form-main-layout {
        flex-direction: column;
        min-height: auto;
        overflow: visible;
    }

    .presupuesto-form-side-column {
        width: 100% !important;
        flex-basis: auto !important;
        position: static !important;
        top: auto !important;
        min-width: 0 !important;
        max-height: none !important;
    }

    .presupuesto-referencias-card {
        position: static !important;
        top: auto !important;
        height: auto !important;
    }

    .presupuesto-form-left-column {
        max-height: none !important;
        overflow: visible !important;
        padding-right: 0 !important;
    }

    .presupuesto-summary-card .presupuesto-summary-row {
        flex-wrap: wrap;
    }
}

.presupuestos-filter-row,
.presupuestos-actions-row {
    display: flex;
    justify-content: flex-start;
    align-items: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.presupuestos-actions-stack {
    gap: 6px;
}

.presupuestos-legend {
    gap: 6px;
    flex-wrap: wrap;
    align-items: center;
    margin-top: 8px;
}

.presupuestos-legend-item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 26px;
    padding: 0 10px;
    border-radius: 8px;
    border: 1px solid rgba(31, 41, 55, 0.08);
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}

.presupuestos-legend-label {
    font-size: 0.76rem;
    font-weight: 700;
    color: #243447;
    white-space: nowrap;
}

.presupuestos-legend-item-filtrable {
    cursor: pointer;
    transition: transform 0.08s ease, box-shadow 0.12s ease, opacity 0.12s ease;
    user-select: none;
}

.presupuestos-legend-item-filtrable:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.14);
}

.presupuestos-legend-item.legend-filter-active {
    outline: 2px solid #1f6feb;
    outline-offset: 1px;
    box-shadow: 0 4px 14px rgba(31, 111, 235, 0.35);
}

.presupuestos-legend-item.presupuesto-creado {
    background: #fff04a;
}

.presupuestos-legend-item.presupuesto-confirmado {
    background: #ffc46b;
}

.presupuestos-legend-item.presupuesto-pendiente-finalizar {
    background: #79e07a;
}

.presupuestos-legend-item.presupuesto-finalizado {
    background: #8ad6ff;
}

.presupuestos-legend-item.presupuesto-facturado {
    background: #f4b3e6;
}

.presupuestos-legend-item.presupuesto-anulado {
    background: #ffb8b8;
}

.presupuestos-filter-button {
    --lumo-button-size: 40px;
    min-width: 148px;
    font-size: 0.84rem;
}

.presupuestos-action-button {
    --lumo-button-size: 36px;
    min-width: 170px;
    font-size: 0.84rem;
}

.presupuestos-detail-stack {
    gap: 12px;
}

.presupuestos-grid {
    min-height: 640px;
}

.presupuestos-detail-card .dashboard-card-sub,
.presupuestos-filter-card .dashboard-card-sub,
.presupuesto-mini-card .dashboard-card-sub {
    font-size: 0.82rem;
}

.presupuestos-view .form-big::part(input-field) {
    min-height: 40px;
    font-size: 14px;
}

.presupuesto-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    border: 1px solid transparent;
    white-space: nowrap;
}

.presupuesto-status-pill.presupuesto-creado {
    color: #854d0e;
    background: #fef3c7;
    border-color: #fcd34d;
}

.presupuesto-status-pill.presupuesto-confirmado {
    color: #1d4ed8;
    background: #dbeafe;
    border-color: #93c5fd;
}

.presupuesto-status-pill.presupuesto-pendiente-finalizar {
    color: #166534;
    background: #dcfce7;
    border-color: #86efac;
}

.presupuesto-status-pill.presupuesto-finalizado {
    color: #0f766e;
    background: #ccfbf1;
    border-color: #5eead4;
}

.presupuesto-status-pill.presupuesto-facturado {
    color: #6d28d9;
    background: #ede9fe;
    border-color: #c4b5fd;
}

.presupuesto-status-pill.presupuesto-anulado {
    color: #991b1b;
    background: #fee2e2;
    border-color: #fca5a5;
}

.session-conflict-dialog::part(content) {
    padding: 0;
    border-radius: 24px;
    background: #ffffff;
    border: 1px solid rgba(15, 23, 42, 0.08);
    box-shadow: 0 28px 56px rgba(15, 23, 42, 0.16);
}

.session-conflict-dialog::part(backdrop) {
    background: rgba(15, 23, 42, 0.18);
}

.session-conflict-box {
    gap: 18px;
    padding: 24px;
    box-sizing: border-box;
}

.session-conflict-title {
    margin: 0;
    color: #1f2937;
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: -0.01em;
}

.session-conflict-message {
    margin: 0;
    color: #475569;
    font-size: 0.97rem;
    line-height: 1.6;
    padding: 16px 18px;
    border-radius: 14px;
    background: #f8fafc;
    border-left: 4px solid rgba(56, 161, 60, 0.90);
}

.session-conflict-detail-card {
    width: 100%;
    padding: 0;
    border-radius: 16px;
    background: #ffffff;
    border: 1px solid #e5e7eb;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.05);
    box-sizing: border-box;
    overflow: hidden;
}

.session-conflict-detail-layout {
    gap: 0;
}

.session-conflict-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    width: 100%;
    padding: 15px 18px;
    background: #ffffff;
    border-bottom: 1px solid #eef2f7;
    box-sizing: border-box;
}

.session-conflict-row:last-child {
    border-bottom: none;
}

.session-conflict-label {
    font-weight: 700;
    color: #334155;
    line-height: 1.35;
    min-width: 136px;
    white-space: nowrap;
}

.session-conflict-value {
    color: #0f172a;
    line-height: 1.35;
    word-break: break-word;
    text-align: right;
    flex: 1 1 auto;
    font-weight: 600;
}

.session-conflict-cancel-button,
.session-conflict-confirm-button {
    min-height: 44px;
    padding-inline: 18px;
    border-radius: 12px;
    font-weight: 700;
    box-shadow: none;
}

.session-conflict-cancel-button {
    background: #ffffff;
    color: #475569;
    border: 1px solid #d7dee8;
}

.session-conflict-cancel-button:hover,
.session-conflict-cancel-button:focus-visible {
    background: #f8fafc;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.06);
}

.session-conflict-confirm-button {
    background: linear-gradient(180deg, var(--natursoft-primary) 0%, var(--natursoft-primary-dark) 100%);
    color: #ffffff;
    border: none;
}

.session-conflict-confirm-button:hover,
.session-conflict-confirm-button:focus-visible {
    background: linear-gradient(180deg, var(--natursoft-primary-light) 0%, var(--natursoft-primary) 100%);
    box-shadow: 0 10px 22px rgba(31, 95, 34, 0.16);
}

.session-conflict-actions {
    width: 100%;
    justify-content: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 2px;
}

.access-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 132px;
    padding: 6px 12px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    border: 1px solid transparent;
}

.access-status-ok {
    color: #166534;
    background: #dcfce7;
    border-color: #86efac;
}

.access-status-no-fichaje {
    color: #991b1b;
    background: #fee2e2;
    border-color: #fca5a5;
}

.access-status-falta-entrada {
    color: #9a3412;
    background: #ffedd5;
    border-color: #fb923c;
}

.access-status-falta-salida {
    color: #6b21a8;
    background: #f3e8ff;
    border-color: #c084fc;
}

.access-status-fin-de-semana {
    color: #334155;
    background: #e2e8f0;
    border-color: #94a3b8;
}

.access-status-festivo {
    color: #1d4ed8;
    background: #dbeafe;
    border-color: #60a5fa;
}

.control-acceso-legend {
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

.control-acceso-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 28px;
    padding: 0 10px;
    border-radius: 8px;
    border: 1px solid rgba(31, 41, 55, 0.08);
    background: #ffffff;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
}

.control-acceso-legend-swatch {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 4px;
    border: 1px solid transparent;
    flex-shrink: 0;
}

.control-acceso-legend-label {
    font-size: 0.78rem;
    font-weight: 700;
    color: #243447;
    white-space: nowrap;
}

.control-acceso-legend-swatch.access-row-ok {
    background: #dcfce7;
    border-color: #86efac;
}

.control-acceso-legend-swatch.access-row-no-fichaje {
    background: #fee2e2;
    border-color: #fca5a5;
}

.control-acceso-legend-swatch.access-row-falta-entrada {
    background: #ffedd5;
    border-color: #fb923c;
}

.control-acceso-legend-swatch.access-row-fin-de-semana {
    background: #e2e8f0;
    border-color: #94a3b8;
}

.control-acceso-legend-swatch.access-row-festivo {
    background: #dbeafe;
    border-color: #60a5fa;
}

.control-acceso-legend-swatch.access-row-falta-salida {
    background: #f3e8ff;
    border-color: #c084fc;
}

.control-acceso-view {
    gap: 22px;
}

.control-acceso-view > .dashboard-card {
    margin-bottom: 0;
}

.control-acceso-actions {
    margin: 0 !important;
    gap: 12px;
    flex-wrap: wrap;
}

.operativa-incidencias-vehiculos-view {
    gap: 18px;
}

.operativa-incidencias-vehiculos-actions {
    margin: 0 !important;
    gap: 12px;
    flex-wrap: wrap;
}

.control-acceso-legend-swatch.vehicle-access-row-complete {
    background: #dcfce7;
    border-color: #86efac;
}

.control-acceso-legend-swatch.vehicle-access-row-incomplete {
    background: #ffedd5;
    border-color: #fb923c;
}

.operativa-ausencias-view {
    gap: 18px;
    align-items: center;
}

.operativa-ausencias-view > .dashboard-card {
    margin-bottom: 0;
}

.ausencias-filter-card,
.absence-calendar-card,
.absence-calendar-legend-card {
    align-self: center;
}

.absence-calendar-shell {
    display: flex;
    justify-content: center;
    align-self: center;
    width: min(100%, 1180px) !important;
    max-width: 1180px;
    position: relative;
    overflow: visible;
    background: transparent;
    box-sizing: border-box;
}

.absence-calendar-layout-row {
    width: 100%;
    max-width: 1180px;
    gap: 0;
    align-items: flex-start;
    flex-wrap: nowrap;
    justify-content: flex-start;
    position: relative;
    overflow: visible;
}

.ausencias-filter-card {
    width: min(100%, 1180px) !important;
    max-width: 1180px !important;
    margin-left: auto;
    margin-right: auto;
}

.ausencias-filter-card > vaadin-horizontal-layout {
    width: 100% !important;
}

.absence-compact-card {
    padding-top: 14px;
    padding-bottom: 14px;
}

.absence-compact-card h3 {
    margin: 0 0 10px;
    font-size: 1rem;
}

.absence-filter-row {
    gap: 12px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.absence-filter-row vaadin-combo-box::part(label) {
    font-size: 0.8rem;
    font-weight: 700;
}

.absence-filter-row vaadin-combo-box::part(input-field) {
    min-height: 42px;
}

.absence-filter-actions {
    margin-left: auto;
    gap: 10px;
    flex-wrap: wrap;
}

.absence-calendar-card {
    flex: 0 0 100%;
    width: 100% !important;
    max-width: 1180px !important;
    min-width: 0;
    padding-top: 16px;
}

.absence-calendar-card-header {
    width: 100%;
    align-items: center;
    margin-bottom: 14px;
}

.absence-calendar-header-side {
    width: 52px;
    flex-shrink: 0;
}

.absence-calendar-month-label {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    font-size: 1.05rem;
    font-weight: 800;
    color: #233142;
    text-align: center;
    line-height: 1.2;
}

.absence-calendar-nav-button {
    min-width: 40px;
    height: 36px;
    border-radius: 10px;
    border: 1px solid rgba(26, 127, 55, 0.28);
    background: linear-gradient(
        180deg,
        var(--natursoft-primary),
        var(--natursoft-primary-dark)
    );
    color: #ffffff;
    font-size: 0.92rem;
    font-weight: 700;
    box-shadow: 0 8px 18px rgba(26, 127, 55, 0.18);
}

.absence-calendar-nav-button:hover {
    background: linear-gradient(
        180deg,
        #3ea348,
        #2d8536
    );
}

.absence-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 8px;
}

.absence-calendar-weekday {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    border-radius: 8px;
    background: #eff6f1;
    color: #1f5e2b;
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.03em;
}

.absence-calendar-placeholder {
    min-height: 112px;
    border-radius: 10px;
    background: transparent;
    border: 1px solid transparent;
}

.absence-calendar-day {
    min-height: 112px;
    padding: 8px;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.22);
    background: #fff;
    display: flex;
    flex-direction: column;
    gap: 7px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.absence-calendar-day-clickable {
    cursor: pointer;
}

.absence-calendar-day-clickable:hover {
    border-color: rgba(21, 128, 61, 0.45);
    box-shadow: 0 8px 20px rgba(21, 128, 61, 0.08);
    transform: translateY(-1px);
}

.absence-calendar-day-weekend {
    background: #eef2f7;
}

.absence-calendar-day-festive {
    background: #dbeafe;
    border-color: rgba(96, 165, 250, 0.38);
}

.absence-calendar-day-pending-create {
    border-color: rgba(34, 197, 94, 0.45);
    box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.12);
}

.absence-calendar-day-pending-delete {
    border-color: rgba(239, 68, 68, 0.45);
    box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.12);
}

.absence-calendar-day-number {
    font-size: 0.95rem;
    font-weight: 800;
    color: #1f2937;
}

.absence-calendar-day-entries {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-height: 0;
}

.absence-chip {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    min-height: 22px;
    padding: 2px 7px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 0.67rem;
    font-weight: 700;
    line-height: 1.15;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.absence-chip-vacaciones {
    background: #9fe4e7;
    color: #17525a;
    border-color: #bcc9cd;
}

.absence-chip-baja {
    background: #fff09c;
    color: #6e5b00;
    border-color: #d5cc9d;
}

.absence-chip-justificada {
    background: #ffc674;
    color: #7e4700;
    border-color: #d7b58e;
}

.absence-chip-nojustificada {
    background: #ff8d86;
    color: #7e201c;
    border-color: #d6a1a0;
}

.absence-chip-asuntospropios {
    background: #c9b6f0;
    color: #402a73;
    border-color: #b3a0da;
}

.absence-chip-default {
    background: #e2e8f0;
    color: #334155;
    border-color: #cbd5e1;
}

.absence-chip-pending-create {
    box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.18);
}

.absence-chip-pending-delete {
    opacity: 0.52;
    text-decoration: line-through;
}

.absence-calendar-legend {
    gap: 10px;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-start;
    justify-content: flex-start;
}

.absence-calendar-legend-card {
    flex: 0 0 auto;
    width: auto !important;
    min-width: 220px;
    max-width: 260px !important;
    min-height: 0;
    position: absolute;
    top: 50%;
    left: calc(100% + 72px);
    transform: translateY(-50%);
    padding-top: 0;
    background: transparent;
}

.absence-legend-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: auto;
    max-width: 100%;
    min-height: 28px;
    padding: 0;
    border-radius: 10px;
    border: none;
    background: transparent;
    box-sizing: border-box;
}

.absence-legend-swatch {
    width: 14px;
    height: 14px;
    border-radius: 4px;
    border: 1px solid transparent;
    flex-shrink: 0;
}

.absence-legend-label {
    font-size: 0.76rem;
    font-weight: 700;
    color: #243447;
    white-space: nowrap;
}

.absence-legend-swatch-vacaciones {
    background: #9fe4e7;
    border-color: #bcc9cd;
}

.absence-legend-swatch-baja {
    background: #fff09c;
    border-color: #d5cc9d;
}

.absence-legend-swatch-justificada {
    background: #ffc674;
    border-color: #d7b58e;
}

.absence-legend-swatch-nojustificada {
    background: #ff8d86;
    border-color: #d6a1a0;
}

.absence-legend-swatch-asuntospropios {
    background: #c9b6f0;
    border-color: #b3a0da;
}

.absence-legend-swatch-pending-create {
    background: #dcfce7;
    border-color: #4ade80;
}

.absence-legend-swatch-pending-delete {
    background: #fee2e2;
    border-color: #ef4444;
}

.absence-legend-swatch-weekend {
    background: #e2e8f0;
    border-color: #94a3b8;
}

.absence-legend-swatch-festive {
    background: #dbeafe;
    border-color: #60a5fa;
}

:host([data-natursoft-calendar='true']) [part='month-header'] {
    margin-bottom: 6px;
    font-size: 0.96rem;
    font-weight: 800;
    color: #233142;
    text-align: center;
}

:host([data-natursoft-calendar='true']) [part='weekday'] {
    font-size: 0.74rem;
    font-weight: 700;
    color: #1f5e2b;
}

:host([data-natursoft-calendar='true']) [part~='date'] {
    border-radius: 8px;
    font-size: 0.84rem;
    font-weight: 600;
}

:host([data-natursoft-calendar='true']) [part~='date'][data-natursoft-weekend]:not([part~='selected']) {
    background: #f5f7fb;
    color: #64748b;
}

:host([data-natursoft-calendar='true']) [part~='date'][data-natursoft-holiday]:not([part~='selected']) {
    background: #dbeafe;
    color: #1d4ed8;
    box-shadow: inset 0 0 0 1px rgba(59, 130, 246, 0.22);
}

@media (max-width: 860px) {
    .absence-calendar-shell {
        width: 100% !important;
        max-width: none;
    }

    .absence-calendar-layout-row {
        flex-wrap: wrap;
        width: 100%;
    }

    .absence-calendar-legend-card {
        position: static;
        top: auto;
        left: auto;
        transform: none;
        width: 100% !important;
        min-width: 0;
        max-width: none !important;
        min-height: 0;
    }

    .absence-calendar-legend {
        flex-direction: row;
        flex-wrap: wrap;
    }

    .absence-legend-item {
        width: auto;
    }

    .absence-filter-actions {
        margin-left: 0;
        width: 100%;
        justify-content: flex-start;
    }
}

@media (max-width: 520px) {
    .session-conflict-box {
        padding: 20px;
        gap: 16px;
    }

    .session-conflict-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }

    .session-conflict-label {
        min-width: 0;
        white-space: normal;
    }

    .session-conflict-value {
        text-align: left;
    }

    .session-conflict-actions {
        flex-direction: column-reverse;
        align-items: stretch;
    }
}

/* =====================================================
   DASHBOARD / BLOQUES
   ===================================================== */

.dashboard-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--ui-card-gap);
    margin-bottom: 20px;
}

.operativa-master-list-view,
.erp-centered-form-page {
    gap: var(--ui-card-gap);
}

vaadin-horizontal-layout:has(> .dashboard-card + .dashboard-card) {
    gap: var(--ui-card-gap);
}

.operativa-master-list-view > .dashboard-card,
.erp-centered-form-page > .dashboard-card {
    margin-bottom: 0;
}

.operativa-master-list-view > .dashboard-card:last-of-type,
.erp-centered-form-page > .dashboard-card:last-of-type {
    margin-bottom: 0;
}

.operativa-master-list-view > .operativa-list-actions,
.operativa-master-list-view > .operativa-list-pagination,
.operativa-master-list-view > .operativa-list-grid-card {
    width: 100%;
    box-sizing: border-box;
}

.operativa-master-list-view > .operativa-list-legend {
    width: fit-content;
    max-width: 100%;
    align-self: flex-start;
}

.erp-unified-list-view {
    gap: 8px;
}

.erp-unified-list-view > .dashboard-card,
.erp-unified-list-view > .operativa-list-actions,
.erp-unified-list-view > .operativa-list-pagination,
.erp-unified-list-view > .operativa-list-grid-card,
.erp-unified-list-view > .tracking-entidades-card {
    width: calc(100% - 28px);
    margin-inline: 14px;
    box-sizing: border-box;
}

.erp-unified-list-view > .operativa-list-legend {
    width: fit-content;
    max-width: calc(100% - 28px);
    align-self: flex-start;
    margin: 4px 14px 12px 14px;
    box-sizing: border-box;
}

.erp-unified-list-view > .operativa-list-grid-card {
    flex: 1 1 auto;
}

.erp-unified-list-view .operativa-list-grid-card .grid-saas {
    min-height: clamp(560px, 68vh, 980px);
}

.erp-unified-list-view .filter-card {
    padding: 12px 14px;
}

.erp-unified-list-view .dashboard-card h3 {
    margin: 0 0 8px 0;
}

.operativa-single-grid-view > .operativa-list-grid-card {
    flex: 1 1 auto;
}

.operativa-single-grid-view .operativa-list-grid-card .grid-saas {
    min-height: clamp(620px, 72vh, 980px);
}

.contabilidad-erp-view {
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}

.contabilidad-erp-view h2 {
    font-family: inherit;
    font-size: clamp(1.6rem, 2vw, 2.1rem) !important;
    font-weight: 800;
    line-height: 1.15;
    color: var(--ui-text);
}

.contabilidad-erp-view h2 + span {
    font-family: inherit;
    font-size: 0.92rem !important;
    line-height: 1.4;
    color: var(--ui-muted) !important;
}

.contabilidad-erp-view .dashboard-card h3,
.contabilidad-erp-view .dashboard-card h4 {
    font-family: inherit;
    font-size: 1.05rem !important;
    font-weight: 700;
    line-height: 1.2;
    color: var(--ui-text);
}

.contabilidad-erp-view vaadin-text-field,
.contabilidad-erp-view vaadin-combo-box,
.contabilidad-erp-view vaadin-date-picker,
.contabilidad-erp-view vaadin-integer-field,
.contabilidad-erp-view vaadin-number-field,
.contabilidad-erp-view vaadin-big-decimal-field,
.contabilidad-erp-view vaadin-text-area {
    font-family: inherit;
    font-size: 13px;
}

.contabilidad-erp-view vaadin-text-field::part(label),
.contabilidad-erp-view vaadin-combo-box::part(label),
.contabilidad-erp-view vaadin-date-picker::part(label),
.contabilidad-erp-view vaadin-integer-field::part(label),
.contabilidad-erp-view vaadin-number-field::part(label),
.contabilidad-erp-view vaadin-big-decimal-field::part(label),
.contabilidad-erp-view vaadin-text-area::part(label) {
    font-family: inherit;
    font-size: 0.78rem;
    line-height: 1.15;
    padding-bottom: 4px;
}

.contabilidad-erp-view vaadin-text-field::part(input-field),
.contabilidad-erp-view vaadin-combo-box::part(input-field),
.contabilidad-erp-view vaadin-date-picker::part(input-field),
.contabilidad-erp-view vaadin-integer-field::part(input-field),
.contabilidad-erp-view vaadin-number-field::part(input-field),
.contabilidad-erp-view vaadin-big-decimal-field::part(input-field) {
    min-height: 38px;
    font-family: inherit;
    font-size: 13px;
    padding-inline: 10px;
}

.contabilidad-erp-view vaadin-text-area::part(input-field) {
    font-family: inherit;
    font-size: 13px;
    padding-inline: 10px;
}

.contabilidad-erp-view vaadin-grid::part(header-cell) {
    font-family: inherit;
    font-size: 13px;
}

.contabilidad-erp-view vaadin-grid::part(body-cell) {
    font-family: inherit;
    font-size: 13px;
}

.dashboard-card {
    border-radius: 10px;
    padding: 16px;
    transition: all .15s ease;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.dashboard-card-title {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 6px;
}

.dashboard-card-value {
    font-size: 24px;
    font-weight: 700;
    color: #111827;
    line-height: 1.15;
}

.dashboard-card-sub {
    font-size: 12px;
    color: #6b7280;
    margin-top: 6px;
}

/* =====================================================
   PAGINACIÓN / FOOTER
   ===================================================== */

vaadin-button {
    display: inline-flex;
    cursor: pointer;
    --lumo-border-radius-m: var(--ui-button-radius);
    --lumo-border-radius-s: var(--ui-button-radius);
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
    will-change: transform;
}

vaadin-button::part(button) {
    border-radius: var(--ui-button-radius);
    border: none;
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease, background .16s ease, border-color .16s ease;
    will-change: transform;
}

vaadin-button:hover:not([disabled]),
vaadin-button:focus-visible:not([disabled]) {
    transform: translateY(-3px);
}

vaadin-button.btn-natursoft:hover:not([disabled]),
vaadin-button.btn-natursoft:focus-visible:not([disabled]),
vaadin-button.btn-natursoft-secondary:hover:not([disabled]),
vaadin-button.btn-natursoft-secondary:focus-visible:not([disabled]),
vaadin-button.btn-natursoft-neutral:hover:not([disabled]),
vaadin-button.btn-natursoft-neutral:focus-visible:not([disabled]),
vaadin-button.btn-natursoft-danger:hover:not([disabled]),
vaadin-button.btn-natursoft-danger:focus-visible:not([disabled]),
vaadin-button.natursoft-login-button:hover:not([disabled]),
vaadin-button.natursoft-login-button:focus-visible:not([disabled]),
vaadin-button.login-button:hover:not([disabled]),
vaadin-button.login-button:focus-visible:not([disabled]),
vaadin-button.pager-button:hover:not([disabled]),
vaadin-button.pager-button:focus-visible:not([disabled]) {
    transform: translateY(-3px);
}

vaadin-button:hover:not([disabled])::part(button),
vaadin-button:focus-visible:not([disabled])::part(button) {
    transform: translateY(-3px);
    filter: saturate(1.02);
    box-shadow: 0 18px 30px rgba(31, 95, 34, 0.18);
}

vaadin-button:active:not([disabled]) {
    transform: translateY(-1px);
}

vaadin-button:active:not([disabled])::part(button) {
    transform: translateY(-1px);
}

.pager-button[disabled] {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}

.pager-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--ui-text);
    min-width: 120px;
    text-align: center;
}

vaadin-app-layout::part(content) {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background:
        radial-gradient(circle at top center, rgba(56, 161, 60, 0.10), transparent 30%),
        radial-gradient(circle at bottom center, rgba(56, 161, 60, 0.05), transparent 34%),
        linear-gradient(180deg, #f6fbf4 0%, #eef6eb 100%);
}

.app-footer {
    flex-shrink: 0;
    margin-top: auto;
    border-top: 1px solid var(--ui-border);
    background: rgba(248, 250, 249, 0.96);
}

.footer-logo {
    height: 56px;
    width: auto;
    object-fit: contain;
}

/* =====================================================
   NOTIFICACIONES
   ===================================================== */

.notif-grande {
    font-size: 18px;
}

.notif-grande::part(container) {
    padding: 20px 28px;
    min-width: 320px;
}

.notif-grande::part(content) {
    font-size: 18px;
    font-weight: 600;
}

.notif-error,
.notif-ok,
.notif-warning {
    background: transparent;
}

.notif-error::part(overlay),
.notif-ok::part(overlay),
.notif-warning::part(overlay),
.notif-error::part(container),
.notif-ok::part(container),
.notif-warning::part(container) {
    background: transparent;
    border: none;
    border-radius: 16px;
    padding: 0;
    box-shadow: none;
    overflow: hidden;
}

.notif-error::part(content) {
    background-color: #a52727;
    color: white;
    font-weight: 700;
    border-radius: 14px;
    padding: 12px 20px;
    box-shadow: 0 3px 10px rgba(15, 23, 42, 0.18);
}

.notif-ok::part(content) {
    background-color: #0f766e;
    color: white;
    font-weight: 700;
    border-radius: 14px;
    padding: 12px 20px;
    box-shadow: 0 3px 10px rgba(15, 23, 42, 0.18);
}

.notif-warning::part(content) {
    background-color: #b68210;
    color: white;
    font-weight: 700;
    border-radius: 14px;
    padding: 12px 20px;
    box-shadow: 0 3px 10px rgba(15, 23, 42, 0.18);
}

/* =====================================================
   TESORERIA / ESTADOS
   ===================================================== */

.teso-ingreso {
    background-color: #d1fae5;
    color: #065f46;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 8px;
}

.teso-gasto {
    background-color: #fee2e2;
    color: #7f1d1d;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 8px;
}

.teso-balance {
    background-color: #e5efff;
    color: #1e3a8a;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 8px;
}

.saldo-positivo {
    color: #2e8b57;
    font-weight: 700;
}

.saldo-negativo {
    color: #b42318;
    font-weight: 700;
}

.saldo-cero {
    color: #6b7280;
    font-weight: 600;
}

.grid-tesoreria::part(header-cell) {
    background-color: rgba(231, 239, 235, 0.96);
    color: var(--ui-text);
    font-weight: 700;
    text-align: center;
}

.grid-tesoreria::part(body-cell) {
    border-bottom: 1px solid rgba(69,182,60,0.14);
}

/* =====================================================
   UTILIDADES
   ===================================================== */

.verde {
    background: #9fd18b;
    padding: 4px 8px;
    font-weight: bold;
}

.amarillo {
    background: #ffe066;
    padding: 4px 8px;
    font-weight: bold;
}

.rojo {
    background: #f28b82;
    padding: 4px 8px;
    font-weight: bold;
}

.celda-verde {
    background-color: #d4edda;
}

.celda-amarilla {
    background-color: #fff3cd;
}

.celda-roja {
    background-color: #ffcccc;
}

@media (max-width: 900px) {
    .top-header {
        padding: 12px 14px;
        min-height: auto;
        flex-wrap: wrap;
        justify-content: center;
    }

    .top-access-reminder-slot {
        width: 100%;
        justify-content: center;
    }

    .top-access-reminder {
        justify-content: center;
    }

    vaadin-menu-bar.top-menu vaadin-menu-bar-button::part(button) {
        padding: 7px 10px;
        font-size: 0.8rem;
    }

    .login-card {
        min-height: 500px;
    }

    .menu-section-card,
    .menu-hero,
    .environment-card {
        border-radius: 10px;
    }
}

@media (max-width: 640px) {
    .login-card {
        width: calc(100vw - 28px);
        max-width: calc(100vw - 28px);
        min-height: 470px;
        padding: 28px 20px 24px;
    }

    .btn-large {
        min-width: 100%;
    }

    .environment-card {
        min-height: 240px;
    }
}

/* =====================================================
   GRID SAAS
   ===================================================== */

vaadin-grid.grid-saas,
vaadin-grid[theme~="grid-saas"] {
    border: 1px solid var(--ui-border);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: var(--shadow-soft);
    --lumo-header-background-color: #f1f5f9;
    --lumo-row-hover-color: #f9fafb;
}

vaadin-grid.grid-saas::part(header-cell),
vaadin-grid[theme~="grid-saas"]::part(header-cell) {
    background: linear-gradient(
        180deg,
        var(--natursoft-primary),
        var(--natursoft-primary-dark)
    );
    color: white;
    font-weight: 600;
    font-size: 13px;
    padding-top: 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--natursoft-primary-dark);
}

vaadin-grid.grid-saas::part(body-cell),
vaadin-grid[theme~="grid-saas"]::part(body-cell) {
    font-size: 13px;
    border-bottom: 1px solid #f1f5f9;
}

.multiline-grid-text {
    display: block;
    width: 100%;
    white-space: pre-wrap;
    word-break: break-word;
    line-height: 1.25;
}

vaadin-grid.grid-saas::part(row):hover,
vaadin-grid[theme~="grid-saas"]::part(row):hover {
    background: #eef5f1;
}

vaadin-grid.grid-saas::part(row):nth-child(even),
vaadin-grid[theme~="grid-saas"]::part(row):nth-child(even) {
    background: #fbfcfb;
}

vaadin-grid.grid-resizable-columns::part(header-cell) {
    box-shadow:
        inset -1px 0 0 rgba(255, 255, 255, 0.22),
        inset -3px 0 0 rgba(255, 255, 255, 0.08);
    transition: box-shadow 140ms ease;
}

vaadin-grid.grid-resizable-columns::part(body-cell) {
    box-shadow: inset -1px 0 0 rgba(15, 23, 42, 0.08);
}

vaadin-grid.grid-resizable-columns::part(header-cell):hover {
    box-shadow:
        inset -2px 0 0 rgba(255, 255, 255, 0.38),
        inset -5px 0 0 rgba(255, 255, 255, 0.12);
}

.presupuestos-view vaadin-grid.grid-saas::part(header-cell),
.presupuestos-view vaadin-grid[theme~="grid-saas"]::part(header-cell) {
    font-size: 12px;
    padding-top: 6px;
    padding-bottom: 6px;
}

.presupuestos-view vaadin-grid.grid-saas::part(body-cell),
.presupuestos-view vaadin-grid[theme~="grid-saas"]::part(body-cell) {
    font-size: 12px;
    padding-top: 6px;
    padding-bottom: 6px;
}

.form-big:not(.presupuesto-referencia-field)::part(input-field) {
    min-height: 46px;
    font-size: 15px;
}

.form-big:not(.presupuesto-referencia-field) {
    font-size: 15px;
}

.presupuesto-referencias-card vaadin-grid::part(header-cell) {
    font-size: 10px;
    padding-left: 6px;
    padding-right: 6px;
    padding-top: 3px;
    padding-bottom: 3px;
    line-height: 1.05;
}

.presupuesto-referencias-card vaadin-grid::part(body-cell) {
    font-size: 9px;
    padding-left: 4px;
    padding-right: 4px;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1;
    vertical-align: middle;
}

/*
 * NO forzar height/min-height en las filas con !important: rompe el calculo de
 * altura de fila de vaadin-grid y su virtualizacion, ocultando una fila (la
 * primera). La altura de fila se define con la variable soportada.
 */
.presupuesto-referencias-card vaadin-grid {
    --vaadin-grid-row-height: 28px;
}

.presupuesto-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field {
    font-size: 0.7rem !important;
    min-height: 18px !important;
    height: 18px !important;
    margin: 0 !important;
    padding: 0 !important;
}

.presupuesto-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field::part(input-field) {
    min-height: 16px !important;
    height: 16px !important;
    padding-inline: 2px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    border-radius: 4px;
    box-shadow: none;
    font-size: 10px !important;
}

.presupuesto-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field input {
    font-size: 0.68rem !important;
    line-height: 1;
    padding: 0 !important;
}

.teso-ok {
    background-color: rgba(34, 197, 94, 0.14);
}

.teso-warning {
    background-color: rgba(234, 179, 8, 0.16);
}

.teso-error {
    background-color: rgba(239, 68, 68, 0.14);
}

.teso-legend-dot {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.teso-ok-dot {
    background-color: #22c55e;
}

.teso-warning-dot {
    background-color: #eab308;
}

.teso-error-dot {
    background-color: #ef4444;
}

.dashboard-card-value.saldo-positivo,
.saldo-positivo {
    color: #16a34a;
    font-weight: 700;
}

.dashboard-card-value.saldo-negativo,
.saldo-negativo {
    color: #dc2626;
    font-weight: 700;
}

.dashboard-card-value.saldo-cero,
.saldo-cero {
    color: #6b7280;
    font-weight: 600;
}

/* =====================================================
   LOGIN
   ===================================================== */

.login-background {
    min-height: 100vh;
    width: 100%;
    background:
        linear-gradient(180deg, #f7f9fa 0%, #eef2f4 100%);
}

.login-card {
    background: var(--ui-surface);
    border: 1px solid var(--ui-border);
    border-radius: 24px;
    box-shadow: var(--shadow-strong);
    padding: 32px 28px 26px;
    max-width: 380px;
    width: 100%;
    box-sizing: border-box;
}

.login-logo {
    max-width: 220px;
    height: auto;
    margin-bottom: 6px;
    filter: none;
}
vaadin-grid.grid-saas::part(fila-pendiente-cobro),
vaadin-grid.grid-saas::part(fila-pendiente-cobro-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-pendiente-cobro),
vaadin-grid[theme~="grid-saas"]::part(fila-pendiente-cobro-cell) {
    background-color: var(--cartera-estado-pendiente-bg, #8ad6ff);
    color: var(--cartera-estado-pendiente-text, #0e3552);
}

vaadin-grid.grid-saas::part(fila-cobro-parcial),
vaadin-grid.grid-saas::part(fila-cobro-parcial-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-cobro-parcial),
vaadin-grid[theme~="grid-saas"]::part(fila-cobro-parcial-cell) {
    background-color: var(--cartera-estado-parcial-bg, #ffef9a);
    color: var(--cartera-estado-parcial-text, #6a4d00);
}

vaadin-grid.grid-saas::part(fila-cobro-vencido),
vaadin-grid.grid-saas::part(fila-cobro-vencido-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-cobro-vencido),
vaadin-grid[theme~="grid-saas"]::part(fila-cobro-vencido-cell) {
    background-color: var(--cartera-estado-vencido-bg, #ffc9c9);
    color: var(--cartera-estado-vencido-text, #7a2323);
}

vaadin-grid.grid-saas::part(fila-cobrada),
vaadin-grid.grid-saas::part(fila-cobrada-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-cobrada),
vaadin-grid[theme~="grid-saas"]::part(fila-cobrada-cell) {
    background-color: var(--cartera-estado-cobrado-bg, #89f5a1);
    color: var(--cartera-estado-cobrado-text, #18552b);
}

vaadin-grid.grid-saas::part(fila-ok),
vaadin-grid.grid-saas::part(fila-ok-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-ok),
vaadin-grid[theme~="grid-saas"]::part(fila-ok-cell) {
    background-color: #dcf7e5;
    color: #18552b;
}

vaadin-grid.grid-saas::part(fila-warning),
vaadin-grid.grid-saas::part(fila-warning-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-warning),
vaadin-grid[theme~="grid-saas"]::part(fila-warning-cell) {
    background-color: #fff1a8;
    color: #5b4300;
}

vaadin-grid.grid-saas::part(fila-error),
vaadin-grid.grid-saas::part(fila-error-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-error),
vaadin-grid[theme~="grid-saas"]::part(fila-error-cell) {
    background-color: #ffc9c9;
    color: #7a2323;
}

vaadin-grid.grid-saas::part(presupuesto-creado),
vaadin-grid.grid-saas::part(presupuesto-creado-cell) {
    background-color: #fff56a;
    color: #2f2f00;
}

vaadin-grid.grid-saas::part(presupuesto-confirmado),
vaadin-grid.grid-saas::part(presupuesto-confirmado-cell) {
    background-color: #ffd490;
    color: #402400;
}

vaadin-grid.grid-saas::part(presupuesto-pendiente-finalizar),
vaadin-grid.grid-saas::part(presupuesto-pendiente-finalizar-cell) {
    background-color: #c7f3b5;
    color: #14351a;
}

vaadin-grid.grid-saas::part(presupuesto-finalizado),
vaadin-grid.grid-saas::part(presupuesto-finalizado-cell) {
    background-color: #c2e9ff;
    color: #0e3552;
}

vaadin-grid.grid-saas::part(presupuesto-facturado),
vaadin-grid.grid-saas::part(presupuesto-facturado-cell) {
    background-color: #f8d1ef;
    color: #4d1d45;
}

vaadin-grid.grid-saas::part(presupuesto-anulado),
vaadin-grid.grid-saas::part(presupuesto-anulado-cell) {
    background-color: #ffd3d3;
    color: #5e1919;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-creado),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-creado-cell) {
    background-color: #fff56a;
    color: #2f2f00;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-confirmado),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-confirmado-cell) {
    background-color: #ffd490;
    color: #402400;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-pendiente-finalizar),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-pendiente-finalizar-cell) {
    background-color: #c7f3b5;
    color: #14351a;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-finalizado),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-finalizado-cell) {
    background-color: #c2e9ff;
    color: #0e3552;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-facturado),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-facturado-cell) {
    background-color: #f8d1ef;
    color: #4d1d45;
}

vaadin-grid[theme~="grid-saas"]::part(presupuesto-anulado),
vaadin-grid[theme~="grid-saas"]::part(presupuesto-anulado-cell) {
    background-color: #ffd3d3;
    color: #5e1919;
}

vaadin-grid.control-acceso-grid::part(access-row-ok),
vaadin-grid.control-acceso-grid::part(access-row-ok-cell) {
    background-color: #ecfdf3;
    color: #14532d;
}

vaadin-grid.control-acceso-grid::part(access-row-no-fichaje),
vaadin-grid.control-acceso-grid::part(access-row-no-fichaje-cell) {
    background-color: #fef2f2;
    color: #7f1d1d;
}

vaadin-grid.control-acceso-grid::part(access-row-falta-entrada),
vaadin-grid.control-acceso-grid::part(access-row-falta-entrada-cell) {
    background-color: #fff7ed;
    color: #9a3412;
}

vaadin-grid.control-acceso-grid::part(access-row-falta-salida),
vaadin-grid.control-acceso-grid::part(access-row-falta-salida-cell) {
    background-color: #faf5ff;
    color: #6b21a8;
}

vaadin-grid.control-acceso-grid::part(access-row-fin-de-semana),
vaadin-grid.control-acceso-grid::part(access-row-fin-de-semana-cell) {
    background-color: #f1f5f9;
    color: #334155;
}

vaadin-grid.control-acceso-grid::part(access-row-festivo),
vaadin-grid.control-acceso-grid::part(access-row-festivo-cell) {
    background-color: #dbeafe;
    color: #1d4ed8;
}

vaadin-grid.vehicle-access-grid::part(vehicle-access-row-complete),
vaadin-grid.vehicle-access-grid::part(vehicle-access-row-complete-cell) {
    background-color: #ecfdf3;
    color: #14532d;
}

vaadin-grid.vehicle-access-grid::part(vehicle-access-row-incomplete),
vaadin-grid.vehicle-access-grid::part(vehicle-access-row-incomplete-cell) {
    background-color: #fff7ed;
    color: #9a3412;
}

.tareas-filter-card.filter-card {
    width: 100% !important;
    max-width: min(100%, 1020px) !important;
}

.tareas-top-row,
.tareas-detail-row,
.tareas-form-row {
    align-items: stretch;
}

.tareas-top-row,
.tareas-detail-row {
    gap: var(--ui-card-gap);
    margin-top: 0;
    margin-bottom: 0;
}

.tareas-top-row > .dashboard-card,
.tareas-detail-row > .dashboard-card {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
}

.tareas-top-row > .tareas-filter-card {
    flex: 1.3 1 0;
}

.tareas-top-row > .tareas-mini-gantt-card {
    flex: 0.7 1 0;
}

.tareas-mini-gantt-card,
.tareas-detail-card,
.tareas-grid-card,
.tareas-form-card,
.tareas-gantt-full-card {
    width: calc(100% - 28px);
    margin-right: 28px;
    box-sizing: border-box;
}

.tareas-mini-gantt-card {
    min-width: 380px;
    overflow: hidden;
}

.tareas-filter-row-main,
.tareas-filter-row-dates {
    gap: 12px;
}

.tareas-filter-row-main {
    flex-wrap: nowrap;
}

.tareas-filter-row-main > *,
.tareas-filter-row-dates > * {
    min-width: 0;
}

.tareas-gantt-filter-row {
    gap: 12px;
    flex-wrap: wrap;
    align-items: flex-end;
}

.tareas-gantt-filter-card,
.tareas-gantt-legend-card {
    width: fit-content;
    max-width: calc(100% - 28px);
}

.tareas-gantt-full-card {
    width: 100%;
}

.tareas-gantt-generate-button {
    min-width: 210px;
}

.tareas-gantt-generate-button::part(label) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    white-space: nowrap;
}

.tareas-gantt-table-scroll {
    width: 100%;
    position: relative;
}

.tareas-gantt-table {
    display: flex;
    flex-direction: column;
    min-width: 100%;
    width: 100%;
    border: 1px solid var(--ui-border);
    border-radius: 10px;
    overflow: visible;
    background: #ffffff;
    box-shadow: var(--shadow-soft);
}

.tareas-gantt-table-scroll-header {
    position: sticky;
    top: 0;
    z-index: 8;
    overflow: hidden;
    padding-right: 28px;
    box-sizing: border-box;
    background: #ffffff;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
}

.tareas-gantt-table-scroll-body {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding-right: 28px;
    box-sizing: border-box;
}

.tareas-gantt-table-body {
    display: flex;
    flex-direction: column;
    min-width: 100%;
    width: max-content;
}

.tareas-gantt-table-header,
.tareas-gantt-table-row {
    display: grid;
    width: max-content;
    min-width: 100%;
}

.tareas-gantt-table-row {
    grid-template-rows: 42px;
    grid-auto-rows: 0;
    align-items: center;
    overflow: hidden;
}

.tareas-gantt-table-header {
    position: relative;
    background: #ffffff;
    border-bottom: 1px solid var(--natursoft-primary-dark);
    box-shadow: 0 1px 0 rgba(35, 54, 76, 0.06);
}

.tareas-gantt-header-corner,
.tareas-gantt-header-day,
.tareas-gantt-task-cell,
.tareas-gantt-day-cell {
    min-height: 32px;
    box-sizing: border-box;
}

.tareas-gantt-header-corner,
.tareas-gantt-task-cell {
    display: flex;
    align-items: center;
    padding: 0 12px;
    border-right: none;
}

.tareas-gantt-header-corner {
    font-size: 0.92rem;
    font-weight: 700;
    color: #ffffff;
    background: linear-gradient(
        180deg,
        var(--natursoft-primary),
        var(--natursoft-primary-dark)
    );
}

.tareas-gantt-header-day {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 2px;
    padding: 4px 6px;
    border-left: none;
    text-align: center;
    background: linear-gradient(
        180deg,
        var(--natursoft-primary),
        var(--natursoft-primary-dark)
    );
}

.tareas-gantt-header-date,
.tareas-gantt-header-weekday {
    display: block;
    line-height: 1.05;
    white-space: nowrap;
}

.tareas-gantt-header-date {
    font-size: 0.9rem;
    font-weight: 700;
    color: #ffffff;
}

.tareas-gantt-header-weekday {
    font-size: 0.74rem;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.88);
}

.tareas-gantt-table-row:nth-child(even) {
    background: #fbfcfb;
}

.tareas-gantt-table-row + .tareas-gantt-table-row {
    border-top: 1px solid #f1f5f9;
}

.tareas-gantt-task-cell {
    height: 42px;
    min-height: 42px;
    background: inherit;
}

.tareas-gantt-task-name {
    display: block;
    font-size: 0.9rem;
    font-weight: 600;
    color: #334155;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tareas-gantt-day-cell {
    display: flex;
    height: 42px;
    align-items: stretch;
    padding: 0;
    border-left: none;
    background: transparent;
}

.tareas-gantt-day-block {
    display: flex;
    align-items: center;
    width: 100%;
    height: 20px;
    min-height: 20px;
    margin: 0;
    padding: 0 6px;
    align-self: center;
    border-radius: 8px;
    z-index: 2;
    overflow: hidden;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.05);
}

.tareas-gantt-day-block-label {
    display: block;
    width: 100%;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1;
    color: #1f2937;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tareas-gantt-column-controls {
    display: inline-flex;
    align-items: center;
    gap: 0;
    flex-wrap: nowrap;
}

.tareas-gantt-columns-info {
    color: #475569;
    font-size: 0.82rem;
    font-weight: 800;
    white-space: nowrap;
}

.tareas-gantt-header-corner,
.tareas-gantt-header-day,
.tareas-mini-gantt-header-corner,
.tareas-mini-gantt-day-label {
    position: relative;
}

.tareas-gantt-resize-handle {
    position: absolute;
    top: 0;
    right: -6px;
    width: 12px;
    height: 100%;
    cursor: col-resize;
    z-index: 30;
}

.tareas-gantt-resize-handle::before {
    content: "";
    position: absolute;
    top: 6px;
    bottom: 6px;
    left: 50%;
    width: 2px;
    transform: translateX(-50%);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.4);
    transition: background-color 120ms ease, box-shadow 120ms ease;
}

.tareas-mini-gantt-header-corner .tareas-gantt-resize-handle::before,
.tareas-mini-gantt-day-label .tareas-gantt-resize-handle::before {
    background: rgba(71, 85, 105, 0.22);
}

.tareas-gantt-resize-handle:hover::before,
.tareas-gantt-resize-handle:active::before,
.is-resizing-columns .tareas-gantt-resize-handle::before {
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}

.tareas-mini-gantt-header-corner .tareas-gantt-resize-handle:hover::before,
.tareas-mini-gantt-header-corner .tareas-gantt-resize-handle:active::before,
.tareas-mini-gantt-day-label .tareas-gantt-resize-handle:hover::before,
.tareas-mini-gantt-day-label .tareas-gantt-resize-handle:active::before,
.tareas-mini-gantt-scroll.is-resizing-columns .tareas-gantt-resize-handle::before {
    background: rgba(47, 143, 47, 0.9);
}

.tareas-gantt-table-scroll.is-resizing-columns,
.tareas-mini-gantt-scroll.is-resizing-columns,
body.is-resizing-columns {
    cursor: col-resize;
    user-select: none;
}

.tareas-gantt-empty {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
    color: #64748b;
    font-size: 0.95rem;
    font-weight: 600;
}

.empleados-gantt-occupancy-row,
.empleados-gantt-occupancy-row:nth-child(even) {
    background: #eef8f1;
}

.empleados-gantt-occupancy-label-cell {
    background: linear-gradient(180deg, #eef9f1, #e5f3e9);
}

.empleados-gantt-occupancy-label {
    color: #1f5f38;
    letter-spacing: 0.04em;
}

.empleados-gantt-occupancy-cell {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        linear-gradient(
            90deg,
            rgba(102, 219, 117, 0.38) 0%,
            rgba(102, 219, 117, 0.38) var(--occupancy-fill, 0%),
            rgba(255, 255, 255, 0) var(--occupancy-fill, 0%),
            rgba(255, 255, 255, 0) 100%
        ),
        linear-gradient(180deg, #eef9f1, #e9f5ed);
}

.empleados-gantt-occupancy-value {
    position: relative;
    z-index: 1;
    font-size: 0.78rem;
    font-weight: 800;
    color: #23543a;
}

.operativa-gantt-tv-view {
    display: flex;
    flex-direction: column;
    width: 100vw;
    height: 100vh;
    margin: 0;
    padding: 10px;
    box-sizing: border-box;
    overflow: hidden;
    background:
        radial-gradient(circle at top, rgba(198, 221, 203, 0.72), rgba(243, 247, 242, 0.96) 55%),
        linear-gradient(180deg, #eef5ef, #e7f0e8);
}

.operativa-gantt-tv-filter-bar {
    flex: 0 0 auto;
    align-self: stretch;
    flex-wrap: nowrap;
    width: 100%;
    margin-bottom: 8px;
    padding: 6px 10px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.88);
    border: 1px solid rgba(46, 125, 50, 0.12);
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);
}

.operativa-gantt-tv-filter-title {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding-right: 6px;
    color: #2a5c2e;
    font-size: 0.82rem;
    font-weight: 800;
    white-space: nowrap;
}

.operativa-gantt-tv-filter-date {
    min-width: 160px;
    --lumo-size-m: 38px;
}

.operativa-gantt-tv-filter-date::part(label) {
    font-size: 0.72rem;
    line-height: 1.1;
}

.operativa-gantt-tv-filter-date::part(input-field) {
    min-height: 38px;
}

.operativa-gantt-tv-toggle-group {
    flex-wrap: wrap;
    padding-left: 8px;
    border-left: 1px solid rgba(46, 125, 50, 0.14);
}

.operativa-gantt-tv-filter-controls {
    min-width: 0;
    flex: 1 1 auto;
    gap: 8px;
    flex-wrap: nowrap;
    align-items: center;
}

.operativa-gantt-tv-inline-label {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    color: #64748b;
    font-size: 0.72rem;
    font-weight: 800;
    white-space: nowrap;
}

.operativa-gantt-tv-legend {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: 8px;
    padding-left: 8px;
    border-left: 1px solid rgba(46, 125, 50, 0.14);
    flex-wrap: nowrap;
}

.operativa-gantt-tv-legend-separator {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 24px;
    color: #8aa18a;
    font-size: 0.72rem;
    font-weight: 800;
    padding: 0 1px;
}

.operativa-gantt-tv-legend-item {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 9px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.operativa-gantt-tv-legend-item.gantt-arboricultura {
    background: #ffe75c;
    border-color: #f4d63f;
    color: #4f3d00;
}

.operativa-gantt-tv-legend-item.gantt-campos-de-golf {
    background: #8dcdf5;
    border-color: #72bfe9;
    color: #1b3950;
}

.operativa-gantt-tv-legend-item.gantt-jardineria {
    background: #c8f368;
    border-color: #addb4d;
    color: #315400;
}

.operativa-gantt-tv-legend-item.gantt-residuos {
    background: #7ff08d;
    border-color: #66db75;
    color: #16522b;
}

.operativa-gantt-tv-legend-item.gantt-ausencia-vacaciones {
    background: #9fe4e7;
    border-color: #bcc9cd;
    color: #17525a;
}

.operativa-gantt-tv-legend-item.gantt-ausencia-baja {
    background: #fff09c;
    border-color: #d5cc9d;
    color: #6e5b00;
}

.operativa-gantt-tv-legend-item.gantt-ausencia-justificada {
    background: #ffc674;
    border-color: #d7b58e;
    color: #7e4700;
}

.operativa-gantt-tv-legend-item.gantt-ausencia-nojustificada {
    background: #ff8d86;
    border-color: #d6a1a0;
    color: #7e201c;
}

.operativa-gantt-tv-toggle {
    margin: 0;
    padding: 0.1rem 0.25rem;
    border-radius: 999px;
    background: rgba(46, 125, 50, 0.06);
}

.operativa-gantt-tv-toggle vaadin-checkbox::part(label) {
    color: #2a5c2e;
    font-size: 0.8rem;
    font-weight: 700;
}

.operativa-gantt-tv-last-update {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    min-height: 34px;
    min-width: 190px;
    margin-left: auto;
    padding-left: 10px;
    border-left: 1px solid rgba(46, 125, 50, 0.14);
    color: #64748b;
    font-size: 0.74rem;
    font-weight: 700;
    text-align: right;
    white-space: nowrap;
}

.operativa-gantt-tv-board {
    display: grid;
    grid-template-rows: repeat(3, minmax(0, 1fr));
    gap: 14px;
    width: 100%;
    height: 100%;
    flex: 1 1 auto;
    min-height: 0;
}

.operativa-gantt-tv-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 12px 14px 14px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(46, 125, 50, 0.12);
    box-shadow: 0 18px 40px rgba(15, 23, 42, 0.08);
    overflow: hidden;
}

.operativa-gantt-tv-panel-header {
    flex: 0 0 auto;
    margin-bottom: 10px;
    gap: 12px;
}

.operativa-gantt-tv-panel-heading {
    min-width: 0;
    gap: 12px;
}

.operativa-gantt-tv-panel-title {
    margin: 0;
    font-size: 1.5rem;
    line-height: 1.1;
    color: #1f2937;
}

.operativa-gantt-tv-panel-range {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(46, 125, 50, 0.08);
    color: #2a5c2e;
    font-size: 0.92rem;
    font-weight: 700;
    white-space: nowrap;
}

.operativa-gantt-tv-panel-update {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
    color: #64748b;
    font-size: 0.8rem;
    font-weight: 700;
    white-space: nowrap;
}

.operativa-gantt-tv-panel-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.operativa-gantt-tv-table-scroll {
    width: 100%;
    height: 100%;
    overflow: auto;
    padding-right: 6px;
    box-sizing: border-box;
}

.operativa-gantt-tv-table {
    min-width: 100%;
    width: 100%;
    height: fit-content;
}

.operativa-gantt-tv-table-header {
    position: sticky;
    top: 0;
    z-index: 5;
}

.operativa-gantt-tv-table .operativa-gantt-tv-sticky-left {
    position: sticky;
    left: 0;
    z-index: 4;
}

.operativa-gantt-tv-table .tareas-gantt-header-corner.operativa-gantt-tv-sticky-left {
    z-index: 6;
}

.operativa-gantt-tv-table .tareas-gantt-task-cell.operativa-gantt-tv-sticky-left {
    background: #ffffff;
}

.operativa-gantt-tv-table .tareas-gantt-table-row:nth-child(even) .tareas-gantt-task-cell.operativa-gantt-tv-sticky-left {
    background: #fbfcfb;
}

.operativa-gantt-tv-table .empleados-gantt-occupancy-label-cell.operativa-gantt-tv-sticky-left {
    background: linear-gradient(180deg, #eef9f1, #e5f3e9);
}

.operativa-gantt-tv-table .tareas-gantt-header-day {
    min-height: 42px;
}

.operativa-gantt-tv-table .tareas-gantt-header-corner {
    font-size: 0.88rem;
}

.operativa-gantt-tv-table .tareas-gantt-header-date {
    font-size: 0.86rem;
}

.operativa-gantt-tv-table .tareas-gantt-header-weekday {
    font-size: 0.7rem;
}

.operativa-gantt-tv-table .tareas-gantt-task-cell,
.operativa-gantt-tv-table .tareas-gantt-day-cell {
    min-height: 44px;
}

.operativa-gantt-tv-table .tareas-gantt-task-name {
    font-size: 0.82rem;
}

.operativa-gantt-tv-table .empleados-gantt-occupancy-label,
.operativa-gantt-tv-table .empleados-gantt-occupancy-value {
    font-size: 0.76rem;
}

.operativa-gantt-tv-empty {
    width: 100%;
    height: 100%;
    min-height: 120px;
}

.operativa-gantt-tv-logout {
    position: fixed;
    top: 18px;
    left: 50%;
    z-index: 1000;
    min-width: 240px;
    min-height: 62px;
    padding-inline: 1.6rem;
    transform: translateX(-50%);
    border-radius: 999px;
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.24);
}

.operativa-gantt-tv-logout::part(button) {
    background: linear-gradient(180deg, #d64545 0%, #b92f2f 100%);
    color: #ffffff;
    border: none;
    box-shadow: 0 16px 26px rgba(185, 47, 47, 0.18);
}

.operativa-gantt-tv-logout:hover:not([disabled])::part(button),
.operativa-gantt-tv-logout:focus-visible:not([disabled])::part(button),
.operativa-gantt-tv-logout:active:not([disabled])::part(button) {
    background: linear-gradient(180deg, #e15555 0%, #c93838 100%);
    color: #ffffff;
    border: none;
    box-shadow: 0 18px 30px rgba(185, 47, 47, 0.24);
}

.operativa-gantt-tv-logout:hover:not([disabled]),
.operativa-gantt-tv-logout:focus-visible:not([disabled]),
.operativa-gantt-tv-logout:active:not([disabled]) {
    transform: translateX(-50%) !important;
}

.operativa-gantt-tv-logout:hover:not([disabled])::part(button),
.operativa-gantt-tv-logout:focus-visible:not([disabled])::part(button),
.operativa-gantt-tv-logout:active:not([disabled])::part(button) {
    transform: none !important;
}

.tareas-mini-gantt-content {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}

.tareas-mini-gantt-range {
    color: #475569;
    font-size: 0.9rem;
    font-weight: 700;
}

.tareas-mini-gantt-scroll {
    width: 100%;
    max-height: 250px;
    overflow: auto;
    border: 1px solid rgba(35, 54, 76, 0.05);
    border-radius: 12px;
    background: #ffffff;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
    container-type: inline-size;
}

.tareas-mini-gantt-card .tareas-mini-gantt-scroll {
    max-width: 100%;
    --mini-gantt-task-width: 180px;
    --mini-gantt-day-count: 14;
    --mini-gantt-day-width: max(48px, calc((100cqw - var(--mini-gantt-task-width)) / var(--mini-gantt-day-count)));
}

.tareas-form-planificacion-card .tareas-mini-gantt-scroll {
    max-width: 100%;
    --mini-gantt-task-width: 180px;
    --mini-gantt-day-count: 7;
    --mini-gantt-day-width: max(52px, calc((100cqw - var(--mini-gantt-task-width)) / var(--mini-gantt-day-count)));
}

.tareas-mini-gantt-table {
    width: max-content;
    min-width: 100%;
}

.tareas-mini-gantt-header,
.tareas-mini-gantt-row {
    display: grid;
    align-items: center;
    width: max-content;
    min-width: 100%;
}

.tareas-mini-gantt-header {
    height: 24px;
    position: sticky;
    top: 0;
    z-index: 5;
    background: #ffffff;
    box-shadow: 0 1px 0 rgba(35, 54, 76, 0.06);
}

.tareas-mini-gantt-row {
    height: 22px;
    overflow: hidden;
}

.tareas-mini-gantt-header-corner,
.tareas-mini-gantt-day-label,
.tareas-mini-gantt-row-label,
.tareas-mini-gantt-cell {
    height: 22px;
    min-height: 22px;
    border-radius: 0;
    box-sizing: border-box;
}

.tareas-mini-gantt-header-corner {
    position: sticky;
    left: 0;
    z-index: 7;
    display: flex;
    align-items: center;
    padding: 2px 10px;
    background: #ffffff;
    color: #243140;
    font-size: 0.74rem;
    font-weight: 800;
    border-right: 1px solid rgba(35, 54, 76, 0.04);
}

.tareas-mini-gantt-day-label {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 1px 4px 2px;
    background: transparent;
    color: #1f6b42;
    border-left: 1px solid rgba(35, 54, 76, 0.03);
    text-align: center;
}

.tareas-mini-gantt-day-initial {
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1;
}

.tareas-mini-gantt-day-number {
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1;
}

.tareas-mini-gantt-row-label {
    position: sticky;
    left: 0;
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 0;
    padding: 1px 10px;
    background: #ffffff;
    color: #243140;
    overflow: hidden;
    border-right: 1px solid rgba(35, 54, 76, 0.04);
}

.tareas-mini-gantt-row-title,
.tareas-mini-gantt-row-meta {
    display: block;
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.tareas-mini-gantt-row-title {
    font-size: 0.69rem;
    font-weight: 700;
    line-height: 1;
    color: #243140;
}

.tareas-mini-gantt-row-meta {
    display: none;
}

.tareas-mini-gantt-cell {
    background: transparent;
    border: none;
    min-width: 56px;
}

.tareas-mini-gantt-day-label.is-weekend,
.tareas-mini-gantt-cell.is-weekend {
    background: rgba(226, 232, 240, 0.35);
}

.tareas-mini-gantt-day-label.is-festive,
.tareas-mini-gantt-cell.is-festive {
    background: rgba(226, 232, 240, 0.35);
}

.tareas-mini-gantt-bar {
    height: 8px;
    margin: 0 4px;
    align-self: center;
    border-radius: 999px;
    box-shadow: inset 0 0 0 1px rgba(17, 24, 39, 0.08);
    z-index: 3;
}

.tareas-mini-gantt-row + .tareas-mini-gantt-row {
    border-top: 1px solid rgba(35, 54, 76, 0.05);
}

.tareas-mini-gantt-empty {
    color: #64748b;
    font-size: 0.74rem;
}

.tareas-gantt-legend {
    width: fit-content;
    max-width: 100%;
    gap: 10px;
    margin-top: 4px;
    margin-bottom: 6px;
    border: none;
    border-radius: 0;
    overflow: visible;
    box-shadow: none;
}

.tareas-gantt-legend-item {
    min-height: 42px;
    padding: 0 20px;
    border: 1px solid transparent;
    border-radius: 16px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
    justify-content: center;
}

.tareas-gantt-legend-item + .tareas-gantt-legend-item {
    border-left: none;
}

.tareas-gantt-legend-separator {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 28px;
    color: #91a091;
    font-size: 0.88rem;
    font-weight: 800;
    padding: 0 4px;
}

.tareas-gantt-legend .presupuestos-legend-label {
    color: #1f2937;
    font-size: 0.84rem;
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: 0;
}

.tareas-mini-gantt-card .tareas-gantt-legend,
.tareas-form-planificacion-card .tareas-gantt-legend {
    gap: 6px;
    margin-top: 2px;
    margin-bottom: 4px;
}

.tareas-mini-gantt-card .tareas-gantt-legend-item,
.tareas-form-planificacion-card .tareas-gantt-legend-item {
    min-height: 28px;
    padding: 0 10px;
    border-radius: 12px;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.08);
}

.tareas-mini-gantt-card .tareas-gantt-legend .presupuestos-legend-label,
.tareas-form-planificacion-card .tareas-gantt-legend .presupuestos-legend-label {
    font-size: 0.68rem;
    font-weight: 700;
}

.tareas-legend-card {
    width: fit-content;
    max-width: 100%;
}

.tareas-detail-summary-card {
    width: 100%;
}

.tareas-detail-line {
    display: grid;
    grid-template-columns: 110px 1fr;
    gap: 12px;
    align-items: start;
    padding: 8px 0;
    border-top: 1px solid rgba(35, 54, 76, 0.08);
}

.tareas-detail-line:first-of-type {
    border-top: none;
}

.tareas-detail-label,
.tareas-form-info-label {
    color: #64748b;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.tarea-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    border: 1px solid transparent;
    white-space: nowrap;
    text-transform: uppercase;
}

.tareas-form-shell {
    width: 100%;
}

.tareas-form-row {
    gap: 8px;
}

.operativa-tarea-form-view .tareas-form-row > .tareas-form-main-card,
.operativa-tarea-form-view .tareas-form-row > .tareas-form-side-column {
    width: auto;
    min-width: 0;
}

.operativa-tarea-form-view .tareas-form-row > .tareas-form-main-card {
    flex: 0 1 1140px;
    max-width: 1140px;
}

.operativa-tarea-form-view .tareas-form-row > .tareas-form-side-column {
    flex: 1 1 420px;
    min-width: 320px;
    max-width: none;
}

.operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible > .tareas-form-main-card {
    flex: 0 1 1140px;
    max-width: 1140px;
}

.operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible > .tareas-form-side-column {
    flex: 1 1 420px;
    min-width: 320px;
    max-width: none;
}

.operativa-tarea-form-view .tareas-form-card,
.operativa-tarea-form-view .tareas-form-tracking-card {
    padding: 8px 9px;
    gap: 1px;
}

.operativa-tarea-form-view .tareas-form-card > h3,
.operativa-tarea-form-view .tareas-form-tracking-card > h3 {
    margin: 0 0 3px;
    font-size: 0.98rem;
    line-height: 1.2;
}

.operativa-tarea-form-view .tareas-form-card vaadin-form-layout {
    --vaadin-form-layout-column-spacing: 12px;
    --vaadin-form-layout-row-spacing: 6px;
}

.operativa-tarea-form-view .tareas-form-main-card {
    padding-top: 7px;
    padding-bottom: 7px;
}

.operativa-tarea-form-view .tareas-form-main-card > h3 {
    margin-bottom: 2px;
}

.operativa-tarea-form-view .tareas-form-main-layout {
    --vaadin-form-layout-column-spacing: 6px;
    --vaadin-form-layout-row-spacing: 1px;
}

.operativa-tarea-form-view .tareas-form-main-card .tareas-form-schedule-main-row {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) 130px 150px minmax(180px, 1fr) 130px auto;
    gap: 4px;
    align-items: end;
    margin-bottom: 2px;
}

.operativa-tarea-form-view .tareas-form-main-card .tareas-presupuesto-check {
    align-self: end;
    justify-self: end;
    margin-left: 0;
    padding-bottom: 4px;
    white-space: nowrap;
}

.operativa-tarea-form-view .tareas-form-main-card .tareas-form-info-strip {
    margin-top: 3px;
    gap: 5px;
}

.operativa-tarea-form-view .tareas-form-main-card vaadin-text-field.form-big::part(label),
.operativa-tarea-form-view .tareas-form-main-card vaadin-combo-box.form-big::part(label),
.operativa-tarea-form-view .tareas-form-main-card vaadin-date-picker.form-big::part(label),
.operativa-tarea-form-view .tareas-form-main-card vaadin-time-picker.form-big::part(label),
.operativa-tarea-form-view .tareas-form-main-card vaadin-text-area.form-big::part(label),
.operativa-tarea-form-view .tareas-form-main-card vaadin-integer-field.form-big::part(label) {
    margin-bottom: 0;
}

.operativa-tarea-form-view .tareas-form-main-card vaadin-text-field.form-big::part(input-field),
.operativa-tarea-form-view .tareas-form-main-card vaadin-combo-box.form-big::part(input-field),
.operativa-tarea-form-view .tareas-form-main-card vaadin-date-picker.form-big::part(input-field),
.operativa-tarea-form-view .tareas-form-main-card vaadin-time-picker.form-big::part(input-field),
.operativa-tarea-form-view .tareas-form-main-card vaadin-integer-field.form-big::part(input-field) {
    min-height: 32px;
}

.operativa-tarea-form-view .tareas-form-main-card vaadin-text-area.form-big::part(input-field) {
    min-height: 60px;
}

.operativa-tarea-form-view vaadin-text-field.form-big::part(label),
.operativa-tarea-form-view vaadin-combo-box.form-big::part(label),
.operativa-tarea-form-view vaadin-date-picker.form-big::part(label),
.operativa-tarea-form-view vaadin-time-picker.form-big::part(label),
.operativa-tarea-form-view vaadin-text-area.form-big::part(label),
.operativa-tarea-form-view vaadin-integer-field.form-big::part(label) {
    font-size: 0.76rem;
    line-height: 1.15;
    margin-bottom: 1px;
}

.operativa-tarea-form-view vaadin-text-field.form-big::part(input-field),
.operativa-tarea-form-view vaadin-combo-box.form-big::part(input-field),
.operativa-tarea-form-view vaadin-date-picker.form-big::part(input-field),
.operativa-tarea-form-view vaadin-time-picker.form-big::part(input-field),
.operativa-tarea-form-view vaadin-integer-field.form-big::part(input-field) {
    min-height: 36px;
    font-size: 0.88rem;
}

.operativa-tarea-form-view .tareas-form-grid-datetime-row {
    min-width: 0;
    gap: 8px;
}

.operativa-tarea-form-view .tareas-form-grid-datetime-row vaadin-date-picker {
    flex: 1 1 auto;
    min-width: 0;
}

.operativa-tarea-form-view .tareas-form-grid-datetime-row vaadin-time-picker,
.operativa-tarea-form-view .tareas-form-time-field {
    width: 8.5rem;
    min-width: 8.5rem;
}

.operativa-tarea-form-view vaadin-text-area.form-big::part(input-field) {
    min-height: 80px;
    font-size: 0.88rem;
}

.tareas-form-duration-field {
    width: 128px;
    min-width: 128px;
}

.tareas-form-info-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px;
    margin-top: 10px;
}

.tareas-form-info-item {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 6px 8px;
    border-radius: 10px;
    background: #f8fafb;
    border: 1px solid rgba(35, 54, 76, 0.08);
}

.tareas-form-toolbar {
    margin-bottom: 4px;
}

.operativa-tarea-form-view .tareas-form-toolbar .tareas-form-empleado-combo {
    flex: 0 1 22rem;
}

.operativa-tarea-form-view .tareas-form-toolbar .tareas-form-categoria-combo {
    flex: 0 1 17rem;
}

.operativa-tarea-form-view .tareas-form-toolbar .tareas-form-tipo-combo {
    flex: 0 1 13rem;
}

.tareas-form-actions {
    margin-top: 2px;
}

.tareas-form-grid {
    flex: 1 1 auto;
}

.tareas-inline-action {
    margin-inline: auto;
}

.tareas-form-planificacion-card {
    width: 100%;
    min-width: 0;
    max-width: none;
    align-self: stretch;
}

.operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible .tareas-form-planificacion-card {
    width: 100%;
    max-width: none;
}

.tareas-maps-copy-button {
    color: #2f8552;
}

.tareas-form-planificacion-content {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-height: 92px;
}

.tareas-presupuesto-section {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: 6px;
    margin-top: 0;
    padding-top: 7px;
    padding-bottom: 7px;
}

.tareas-presupuesto-fechas-row {
    flex-wrap: nowrap;
}

.tareas-presupuesto-fechas-row > * {
    min-width: 0;
}

.operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible .tareas-presupuesto-section {
    max-width: none;
}

.tareas-presupuesto-check {
    padding-bottom: 10px;
    margin-left: auto;
    white-space: nowrap;
}

.tareas-presupuesto-grid-row {
    align-items: stretch;
}

.tareas-presupuesto-grid-block {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    padding: 9px 10px 10px;
    border-radius: 12px;
    background: #f8fafc;
    border: 1px solid rgba(35, 54, 76, 0.08);
}

.tareas-presupuesto-grid-title {
    color: #46636b;
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.tareas-presupuesto-grid {
    min-height: 180px;
}

vaadin-details.tareas-form-details {
    width: 100%;
    border-radius: 14px;
    border: 1px solid rgba(35, 54, 76, 0.08);
    background: #fff;
    box-shadow: 0 18px 44px rgba(15, 23, 42, 0.06);
}

vaadin-details.tareas-form-details::part(summary) {
    padding: 11px 13px;
    font-size: 0.88rem;
    font-weight: 800;
    color: #243140;
}

vaadin-details.tareas-form-details::part(content) {
    padding: 0 13px 13px;
}

.tareas-form-details-body {
    width: 100%;
}

.tareas-form-accordion-stack {
    width: 100%;
    gap: 6px;
}

.tareas-form-accordion-row {
    width: 100%;
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.tareas-form-accordion-row > * {
    min-width: 0;
    flex: 1 1 0;
}

.tareas-form-accordion-row > vaadin-details.tareas-form-details {
    width: auto;
    align-self: flex-start;
}

vaadin-grid.grid-saas::part(tarea-pendiente-programar),
vaadin-grid.grid-saas::part(tarea-pendiente-programar-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-programar),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-programar-cell) {
    background-color: var(--tarea-estado-pendiente-programar-bg, #cfe6ff);
    color: var(--tarea-estado-pendiente-programar-text, #1f4f7c);
}

vaadin-grid.grid-saas::part(tarea-programada),
vaadin-grid.grid-saas::part(tarea-programada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-programada),
vaadin-grid[theme~="grid-saas"]::part(tarea-programada-cell) {
    background-color: var(--tarea-estado-programada-bg, #ffe86f);
    color: var(--tarea-estado-programada-text, #6a4d00);
}

vaadin-grid.grid-saas::part(tarea-pendiente-asignar),
vaadin-grid.grid-saas::part(tarea-pendiente-asignar-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-asignar),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-asignar-cell) {
    background-color: var(--tarea-estado-pendiente-asignar-bg, #ffef9a);
    color: var(--tarea-estado-pendiente-asignar-text, #6a4d00);
}

vaadin-grid.grid-saas::part(tarea-pendiente-iniciar),
vaadin-grid.grid-saas::part(tarea-pendiente-iniciar-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-iniciar),
vaadin-grid[theme~="grid-saas"]::part(tarea-pendiente-iniciar-cell) {
    background-color: var(--tarea-estado-pendiente-iniciar-bg, #ffd69a);
    color: var(--tarea-estado-pendiente-iniciar-text, #7a4609);
}

vaadin-grid.grid-saas::part(tarea-iniciada),
vaadin-grid.grid-saas::part(tarea-iniciada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-iniciada),
vaadin-grid[theme~="grid-saas"]::part(tarea-iniciada-cell) {
    background-color: var(--tarea-estado-iniciada-bg, #ffc66d);
    color: var(--tarea-estado-iniciada-text, #6d3c00);
}

vaadin-grid.grid-saas::part(tarea-parada),
vaadin-grid.grid-saas::part(tarea-parada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-parada),
vaadin-grid[theme~="grid-saas"]::part(tarea-parada-cell) {
    background-color: var(--tarea-estado-parada-bg, #d7f67f);
    color: var(--tarea-estado-parada-text, #395801);
}

vaadin-grid.grid-saas::part(tarea-postpuesta),
vaadin-grid.grid-saas::part(tarea-postpuesta-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-postpuesta),
vaadin-grid[theme~="grid-saas"]::part(tarea-postpuesta-cell) {
    background-color: var(--tarea-estado-postpuesta-bg, #d8cbff);
    color: var(--tarea-estado-postpuesta-text, #4f2d82);
}

vaadin-grid.grid-saas::part(tarea-finalizada),
vaadin-grid.grid-saas::part(tarea-finalizada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-finalizada),
vaadin-grid[theme~="grid-saas"]::part(tarea-finalizada-cell) {
    background-color: var(--tarea-estado-finalizada-bg, #89f5a1);
    color: var(--tarea-estado-finalizada-text, #18552b);
}

vaadin-grid.grid-saas::part(tarea-facturada),
vaadin-grid.grid-saas::part(tarea-facturada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-facturada),
vaadin-grid[theme~="grid-saas"]::part(tarea-facturada-cell) {
    background-color: var(--tarea-estado-facturada-bg, #f7cbe6);
    color: var(--tarea-estado-facturada-text, #6d2e59);
}

vaadin-grid.grid-saas::part(tarea-anulada),
vaadin-grid.grid-saas::part(tarea-anulada-cell),
vaadin-grid[theme~="grid-saas"]::part(tarea-anulada),
vaadin-grid[theme~="grid-saas"]::part(tarea-anulada-cell) {
    background-color: var(--tarea-estado-anulada-bg, #ffc9c9);
    color: var(--tarea-estado-anulada-text, #7a2323);
}

.presupuestos-legend-item.tarea-pendiente-programar {
    background: var(--tarea-estado-pendiente-programar-bg, #cfe6ff);
    border-color: var(--tarea-estado-pendiente-programar-border, #96c0eb);
}

.presupuestos-legend-item.tarea-programada {
    background: var(--tarea-estado-programada-bg, #ffe86f);
    border-color: var(--tarea-estado-programada-border, #ecc74a);
}

.presupuestos-legend-item.tarea-pendiente-asignar {
    background: var(--tarea-estado-pendiente-asignar-bg, #ffef9a);
    border-color: var(--tarea-estado-pendiente-asignar-border, #eed463);
}

.presupuestos-legend-item.tarea-pendiente-iniciar {
    background: var(--tarea-estado-pendiente-iniciar-bg, #ffd69a);
    border-color: var(--tarea-estado-pendiente-iniciar-border, #efb96a);
}

.presupuestos-legend-item.tarea-iniciada {
    background: var(--tarea-estado-iniciada-bg, #ffc66d);
    border-color: var(--tarea-estado-iniciada-border, #eda844);
}

.presupuestos-legend-item.tarea-parada {
    background: var(--tarea-estado-parada-bg, #d7f67f);
    border-color: var(--tarea-estado-parada-border, #b7dd50);
}

.presupuestos-legend-item.tarea-postpuesta {
    background: var(--tarea-estado-postpuesta-bg, #d8cbff);
    border-color: var(--tarea-estado-postpuesta-border, #bea9ee);
}

.presupuestos-legend-item.tarea-finalizada {
    background: var(--tarea-estado-finalizada-bg, #89f5a1);
    border-color: var(--tarea-estado-finalizada-border, #62d97f);
}

.presupuestos-legend-item.tarea-facturada {
    background: var(--tarea-estado-facturada-bg, #f7cbe6);
    border-color: var(--tarea-estado-facturada-border, #e2aed2);
}

.presupuestos-legend-item.tarea-anulada {
    background: var(--tarea-estado-anulada-bg, #ffc9c9);
    border-color: var(--tarea-estado-anulada-border, #eda8a8);
}

.presupuestos-legend-item.tarea-pendiente-programar .presupuestos-legend-label {
    color: var(--tarea-estado-pendiente-programar-text, #1f4f7c);
}

.presupuestos-legend-item.tarea-programada .presupuestos-legend-label {
    color: var(--tarea-estado-programada-text, #6a4d00);
}

.presupuestos-legend-item.tarea-pendiente-asignar .presupuestos-legend-label {
    color: var(--tarea-estado-pendiente-asignar-text, #6a4d00);
}

.presupuestos-legend-item.tarea-pendiente-iniciar .presupuestos-legend-label {
    color: var(--tarea-estado-pendiente-iniciar-text, #7a4609);
}

.presupuestos-legend-item.tarea-iniciada .presupuestos-legend-label {
    color: var(--tarea-estado-iniciada-text, #6d3c00);
}

.presupuestos-legend-item.tarea-parada .presupuestos-legend-label {
    color: var(--tarea-estado-parada-text, #395801);
}

.presupuestos-legend-item.tarea-postpuesta .presupuestos-legend-label {
    color: var(--tarea-estado-postpuesta-text, #4f2d82);
}

.presupuestos-legend-item.tarea-finalizada .presupuestos-legend-label {
    color: var(--tarea-estado-finalizada-text, #18552b);
}

.presupuestos-legend-item.tarea-facturada .presupuestos-legend-label {
    color: var(--tarea-estado-facturada-text, #6d2e59);
}

.presupuestos-legend-item.tarea-anulada .presupuestos-legend-label {
    color: var(--tarea-estado-anulada-text, #7a2323);
}

.tarea-status-pill.tarea-pendiente-programar {
    color: var(--tarea-estado-pendiente-programar-text, #1f4f7c);
    background: var(--tarea-estado-pendiente-programar-bg, #cfe6ff);
    border-color: var(--tarea-estado-pendiente-programar-border, #96c0eb);
}

.presupuestos-legend-item.gantt-arboricultura,
.tareas-mini-gantt-bar.gantt-arboricultura,
.tareas-gantt-day-block.gantt-arboricultura {
    background: #ffe75c;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-arboricultura {
    border-color: #f4d63f;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-arboricultura .presupuestos-legend-label {
    color: #4f3d00;
}

.presupuestos-legend-item.gantt-campos-de-golf,
.tareas-mini-gantt-bar.gantt-campos-de-golf,
.tareas-gantt-day-block.gantt-campos-de-golf {
    background: #8dcdf5;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-campos-de-golf {
    border-color: #72bfe9;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-campos-de-golf .presupuestos-legend-label {
    color: #1b3950;
}

.presupuestos-legend-item.gantt-jardineria,
.tareas-mini-gantt-bar.gantt-jardineria,
.tareas-gantt-day-block.gantt-jardineria {
    background: #c8f368;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-jardineria {
    border-color: #addb4d;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-jardineria .presupuestos-legend-label {
    color: #315400;
}

.presupuestos-legend-item.gantt-residuos,
.tareas-mini-gantt-bar.gantt-residuos,
.tareas-gantt-day-block.gantt-residuos {
    background: #7ff08d;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-residuos {
    border-color: #66db75;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-residuos .presupuestos-legend-label {
    color: #16522b;
}

.presupuestos-legend-item.gantt-sin-tipo,
.tareas-mini-gantt-bar.gantt-sin-tipo,
.tareas-gantt-day-block.gantt-sin-tipo {
    background: #cbd5e1;
}

.presupuestos-legend-item.gantt-ausencia-vacaciones,
.tareas-gantt-day-block.gantt-ausencia-vacaciones {
    background: #9fe4e7;
    border-color: #bcc9cd;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-ausencia-vacaciones .presupuestos-legend-label {
    color: #17525a;
}

.presupuestos-legend-item.gantt-ausencia-baja,
.tareas-gantt-day-block.gantt-ausencia-baja {
    background: #fff09c;
    border-color: #d5cc9d;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-ausencia-baja .presupuestos-legend-label {
    color: #6e5b00;
}

.presupuestos-legend-item.gantt-ausencia-justificada,
.tareas-gantt-day-block.gantt-ausencia-justificada {
    background: #ffc674;
    border-color: #d7b58e;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-ausencia-justificada .presupuestos-legend-label {
    color: #7e4700;
}

.presupuestos-legend-item.gantt-ausencia-nojustificada,
.tareas-gantt-day-block.gantt-ausencia-nojustificada {
    background: #ff8d86;
    border-color: #d6a1a0;
}

.tareas-gantt-legend .presupuestos-legend-item.gantt-ausencia-nojustificada .presupuestos-legend-label {
    color: #7e201c;
}

.presupuestos-legend-item.gantt-ausencia-default,
.tareas-gantt-day-block.gantt-ausencia-default {
    background: #e2e8f0;
    border-color: #cbd5e1;
}

.tareas-gantt-day-block.gantt-ausencia-vacaciones,
.tareas-gantt-day-block.gantt-ausencia-baja,
.tareas-gantt-day-block.gantt-ausencia-justificada,
.tareas-gantt-day-block.gantt-ausencia-nojustificada,
.tareas-gantt-day-block.gantt-ausencia-default {
    z-index: 3;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.1);
}

.tareas-mini-gantt-bar.tarea-pendiente-programar {
    background: var(--tarea-estado-pendiente-programar-bg, #cfe6ff);
}

.tarea-status-pill.tarea-programada {
    color: var(--tarea-estado-programada-text, #6a4d00);
    background: var(--tarea-estado-programada-bg, #ffe86f);
    border-color: var(--tarea-estado-programada-border, #ecc74a);
}

.tareas-mini-gantt-bar.tarea-programada {
    background: var(--tarea-estado-programada-bg, #ffe86f);
}

.tarea-status-pill.tarea-pendiente-asignar {
    color: var(--tarea-estado-pendiente-asignar-text, #6a4d00);
    background: var(--tarea-estado-pendiente-asignar-bg, #ffef9a);
    border-color: var(--tarea-estado-pendiente-asignar-border, #eed463);
}

.presupuestos-legend-item.proforma-no-facturada {
    background: #ffe58f;
    border-color: #f4cf5e;
}

.presupuestos-legend-item.proforma-no-facturada .presupuestos-legend-label {
    color: #6b4b00;
}

.presupuestos-legend-item.proforma-facturada {
    background: #b7ddff;
    border-color: #94c9f5;
}

.presupuestos-legend-item.proforma-facturada .presupuestos-legend-label {
    color: #123b61;
}

.presupuestos-legend-item.factura-pendiente-cobro,
.presupuestos-legend-item.pago-pendiente {
    background: var(--cartera-estado-pendiente-bg, #8ad6ff);
    border-color: var(--cartera-estado-pendiente-border, #6abfe9);
}

.presupuestos-legend-item.factura-pendiente-cobro .presupuestos-legend-label,
.presupuestos-legend-item.pago-pendiente .presupuestos-legend-label {
    color: var(--cartera-estado-pendiente-text, #0e3552);
}

.presupuestos-legend-item.factura-cobro-parcial,
.presupuestos-legend-item.pago-parcial {
    background: var(--cartera-estado-parcial-bg, #ffef9a);
    border-color: var(--cartera-estado-parcial-border, #eed463);
}

.presupuestos-legend-item.factura-cobro-parcial .presupuestos-legend-label,
.presupuestos-legend-item.pago-parcial .presupuestos-legend-label {
    color: var(--cartera-estado-parcial-text, #6a4d00);
}

.presupuestos-legend-item.factura-cobro-vencido,
.presupuestos-legend-item.pago-vencido {
    background: var(--cartera-estado-vencido-bg, #ffc9c9);
    border-color: var(--cartera-estado-vencido-border, #eda8a8);
}

.presupuestos-legend-item.factura-cobro-vencido .presupuestos-legend-label,
.presupuestos-legend-item.pago-vencido .presupuestos-legend-label {
    color: var(--cartera-estado-vencido-text, #7a2323);
}

.presupuestos-legend-item.factura-cobrada,
.presupuestos-legend-item.pago-cobrado {
    background: var(--cartera-estado-cobrado-bg, #89f5a1);
    border-color: var(--cartera-estado-cobrado-border, #62d97f);
}

.presupuestos-legend-item.factura-cobrada .presupuestos-legend-label,
.presupuestos-legend-item.pago-cobrado .presupuestos-legend-label {
    color: var(--cartera-estado-cobrado-text, #18552b);
}

vaadin-grid.grid-saas::part(proforma-no-facturada),
vaadin-grid.grid-saas::part(proforma-no-facturada-cell),
vaadin-grid[theme~="grid-saas"]::part(proforma-no-facturada),
vaadin-grid[theme~="grid-saas"]::part(proforma-no-facturada-cell) {
    background-color: #fff1a8;
    color: #5b4300;
}

vaadin-grid.grid-saas::part(proforma-facturada),
vaadin-grid.grid-saas::part(proforma-facturada-cell),
vaadin-grid[theme~="grid-saas"]::part(proforma-facturada),
vaadin-grid[theme~="grid-saas"]::part(proforma-facturada-cell) {
    background-color: #d9eeff;
    color: #123b61;
}

.operativa-proformas-view .operativa-proformas-filter-card,
.operativa-proformas-view .operativa-proformas-main-card,
.operativa-proformas-view .operativa-proformas-actions,
.operativa-proformas-view .operativa-proformas-pagination,
.operativa-proformas-view .tracking-entidades-card {
    width: calc(100% - 28px);
    margin-inline: 14px;
    box-sizing: border-box;
}

.facturas-clientes-list-view .operativa-facturas-filter-card,
.facturas-clientes-list-view .operativa-facturas-main-card,
.facturas-clientes-list-view .operativa-facturas-actions,
.facturas-clientes-list-view .operativa-facturas-pagination {
    width: calc(100% - 28px);
    margin-inline: 14px;
    box-sizing: border-box;
}

.operativa-proformas-view {
    gap: 8px;
}

.facturas-clientes-list-view {
    gap: 8px;
}

.operativa-proformas-view .operativa-proformas-filter-card {
    padding: 12px 14px;
}

.facturas-clientes-list-view .operativa-facturas-filter-card {
    padding: 12px 14px;
}

.facturas-clientes-list-view .operativa-facturas-filter-card.filter-card {
    width: calc(100% - 28px) !important;
    max-width: none !important;
}

.facturas-clientes-list-view .operativa-facturas-filter-card > vaadin-vertical-layout {
    width: 100% !important;
}

.facturas-clientes-list-view .operativa-facturas-filter-card > vaadin-vertical-layout > vaadin-horizontal-layout {
    width: 100% !important;
}

.facturas-clientes-list-view .operativa-facturas-filter-card .form-big,
.facturas-clientes-list-view .operativa-facturas-filter-card vaadin-combo-box,
.facturas-clientes-list-view .operativa-facturas-filter-card vaadin-text-field {
    max-width: 100%;
}

.facturas-clientes-list-view .facturas-filter-row-main,
.facturas-clientes-list-view .facturas-filter-row-dates {
    align-items: flex-end;
}

.facturas-clientes-list-view .facturas-cliente-filter {
    min-width: 360px;
    max-width: 420px;
    flex: 0 1 420px;
}

.facturas-clientes-list-view .facturas-filter-row-main > * {
    min-width: 0;
}

.operativa-proformas-view .presupuestos-legend,
.operativa-proforma-form-view .presupuestos-legend {
    justify-content: flex-start;
}

.facturas-clientes-list-view .presupuestos-legend {
    justify-content: flex-start;
}

.pagos-list-view .presupuestos-legend {
    justify-content: flex-start;
}

.pagos-list-view .pagos-filter-card.filter-card {
    width: min(calc(100% - 28px), 1360px) !important;
    max-width: min(calc(100% - 28px), 1360px) !important;
}

.pagos-list-view .pagos-filter-card > vaadin-vertical-layout,
.pagos-list-view .pagos-filter-card > div {
    width: 100% !important;
    max-width: 100% !important;
}

.pagos-list-view .pagos-filter-row-main,
.pagos-list-view .pagos-filter-row-dates {
    width: 100% !important;
    flex-wrap: nowrap !important;
    gap: 12px;
}

.pagos-list-view .pagos-filter-row-main > *,
.pagos-list-view .pagos-filter-row-dates > * {
    min-width: 0;
}

.pagos-list-view .operativa-list-grid-card .grid-saas {
    min-height: clamp(300px, 43vh, 520px);
}

@media (max-width: 1380px) {
    .pagos-list-view .pagos-filter-row-main,
    .pagos-list-view .pagos-filter-row-dates {
        flex-wrap: wrap !important;
    }
}

.cuentas-bancarias-list-view .operativa-list-grid-card .grid-saas {
    min-height: clamp(360px, 48vh, 560px);
}

.facturas-clientes-list-view .operativa-list-legend {
    margin: 4px 14px 12px 14px;
}

.tesoreria-dashboard-view {
    gap: 12px;
}

.tesoreria-dashboard-view .tesoreria-dashboard-kpi-row {
    gap: 16px !important;
    margin-bottom: 6px;
}

.tesoreria-dashboard-view > .dashboard-card,
.tesoreria-dashboard-view > .operativa-list-legend,
.tesoreria-dashboard-view > vaadin-horizontal-layout {
    margin-bottom: 6px;
}

.tesoreria-dashboard-view .operativa-list-legend {
    width: fit-content;
    max-width: 100%;
    align-self: flex-start;
}

.presupuestos-legend-item.tesoreria-prevision-ok {
    background: #dcf7e5;
}

.presupuestos-legend-item.tesoreria-prevision-ok .presupuestos-legend-label {
    color: #18552b;
}

.presupuestos-legend-item.tesoreria-prevision-warning {
    background: #fff1a8;
}

.presupuestos-legend-item.tesoreria-prevision-warning .presupuestos-legend-label {
    color: #5b4300;
}

.presupuestos-legend-item.tesoreria-prevision-error {
    background: #ffc9c9;
}

.presupuestos-legend-item.tesoreria-prevision-error .presupuestos-legend-label {
    color: #7a2323;
}

.operativa-proforma-form-shell {
    width: 100%;
    max-width: none;
    gap: 8px;
    margin-right: auto;
}

.operativa-proforma-form-main-layout {
    width: 100%;
    align-items: stretch;
    gap: 8px;
    min-height: calc(100vh - 220px);
    overflow: hidden;
}

.operativa-proforma-form-left-column,
.operativa-proforma-form-side-column {
    gap: 10px;
}

.operativa-proforma-form-single-column {
    width: 100%;
    max-width: none;
    max-height: none;
    overflow: visible;
    padding-right: 0;
    gap: 10px;
    flex: 0 0 auto;
    box-sizing: border-box;
}

.operativa-proforma-form-left-column {
    min-width: 0;
    flex: 1 1 0;
    max-height: calc(100vh - 220px);
    overflow-y: auto;
    padding-right: 6px;
}

.operativa-proforma-form-side-column {
    align-self: stretch;
    flex: 0 0 560px;
    width: 560px;
    max-width: 560px;
    max-height: calc(100vh - 220px);
}

.operativa-proforma-form-title {
    width: 100%;
    text-align: center;
    margin-bottom: 2px;
}

.operativa-proforma-form-view .dashboard-card {
    padding: 20px 22px;
}

.operativa-proforma-form-view .presupuesto-form-card {
    width: 100%;
    box-sizing: border-box;
    padding: 12px 14px;
    border-radius: 10px;
}

.operativa-proforma-form-view .dashboard-card h3,
.operativa-proformas-view .dashboard-card h3 {
    margin: 0 0 14px 0;
}

.operativa-proformas-view .dashboard-card h3 {
    margin: 0 0 8px 0;
}

.facturas-clientes-list-view .dashboard-card h3 {
    margin: 0 0 8px 0;
}

.operativa-proforma-cabecera-form {
    width: 100%;
    --vaadin-form-layout-column-spacing: 12px;
    --vaadin-form-layout-row-spacing: 8px;
}

.operativa-proforma-form-view .form-big {
    font-size: 13px;
}

.factura-cliente-form-view .form-big {
    font-size: 13px;
}

.operativa-proforma-form-view .form-big::part(label) {
    font-size: 0.78rem;
    line-height: 1.15;
    padding-bottom: 4px;
}

.factura-cliente-form-view .form-big::part(label) {
    font-size: 0.78rem;
    line-height: 1.15;
    padding-bottom: 4px;
}

.operativa-proforma-form-view .form-big::part(input-field) {
    min-height: 38px;
    font-size: 13px;
    padding-inline: 10px;
}

.factura-cliente-form-view .form-big::part(input-field) {
    min-height: 38px;
    font-size: 13px;
    padding-inline: 10px;
}

.operativa-proforma-form-view .operativa-proforma-cuenta-block {
    min-width: 0;
    width: 100%;
}

.operativa-proforma-form-view .operativa-proforma-lineas-card,
.operativa-proforma-form-view .operativa-proforma-bases-card,
.operativa-proforma-form-view .operativa-proforma-tareas-card {
    align-self: stretch;
}

.operativa-proforma-form-view .operativa-proforma-bases-card {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.document-totals-section {
    position: relative;
    display: flex;
    justify-content: flex-end;
    align-items: flex-start;
    align-self: stretch;
    width: 100%;
    min-height: 154px;
    box-sizing: border-box;
}

.document-totals-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    width: fit-content;
    max-width: 760px;
    margin-left: auto;
    margin-right: -4px;
    padding: 0;
    background: transparent;
    box-shadow: none;
    border: 0;
}

.document-totals-content {
    display: flex;
    align-items: flex-start;
    flex: 0 0 auto;
    gap: 10px;
    width: fit-content;
    min-width: 0;
}

.document-totals-grid {
    flex: 0 0 454px;
    width: 454px;
    min-width: 454px;
}

.document-totals-stack {
    flex: 0 0 170px;
    width: 170px;
    min-width: 170px;
    gap: 0;
    padding: 2px 0;
}

.document-totals-stack .presupuesto-mini-card {
    width: 100%;
    min-height: 0;
    flex: 0 0 auto;
    padding: 9px 0 9px 12px;
    background: #fff;
    box-shadow: var(--shadow-soft);
    border-radius: 10px;
    border-bottom: 0;
    margin-bottom: 6px;
}

.document-totals-stack .presupuesto-mini-card-content {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.document-totals-stack .presupuesto-kpi-title {
    white-space: nowrap;
    padding-bottom: 0;
    margin-right: 8px;
    line-height: 1;
    font-size: 0.78rem;
}

.document-totals-stack .dashboard-card-value {
    margin-top: 0;
    margin-left: auto;
    white-space: nowrap;
    text-align: right;
    line-height: 1;
    font-size: 0.82rem;
    padding-right: 10px;
}

.document-totals-stack .presupuesto-mini-card::before {
    width: 4px;
    border-radius: 4px 0 0 4px;
}

.document-totals-stack .presupuesto-mini-card:last-child {
    margin-bottom: 0;
}

.document-totals-card h3 {
    margin-bottom: 2px;
}

vaadin-grid.document-totals-grid,
vaadin-grid[theme~="grid-saas"].document-totals-grid {
    height: 104px;
    min-height: 104px;
    align-self: flex-start;
    background: #fff;
    box-shadow: var(--shadow-soft);
}

vaadin-grid.document-totals-grid::part(scroller),
vaadin-grid[theme~="grid-saas"].document-totals-grid::part(scroller) {
    min-height: 0;
}

.document-totals-actions {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 2;
}

.operativa-proforma-form-view .operativa-proforma-bases-card .grid-saas,
.factura-cliente-resumen-card .grid-saas {
    min-height: 0;
}

@media (max-width: 1100px) {
    .document-totals-content {
        flex-direction: column;
    }

    .document-totals-stack {
        width: 100%;
        min-width: 0;
        flex: 1 1 auto;
    }
}

.operativa-proforma-form-view .operativa-proforma-tareas-card {
    position: static;
    height: 100%;
}

.operativa-proforma-form-view .operativa-proforma-tareas-card .grid-saas {
    min-height: 420px;
}

.operativa-proforma-form-view .operativa-proforma-tareas-toolbar {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.operativa-proforma-form-view .operativa-proforma-tareas-toolbar .form-big {
    min-width: 280px;
    flex: 1 1 280px;
}

.operativa-proforma-form-view .operativa-proforma-lineas-grid::part(cell),
.factura-cliente-form-view .factura-cliente-lineas-grid::part(cell),
.operativa-proforma-form-view .operativa-proforma-tareas-card vaadin-grid::part(cell),
.operativa-proformas-view .operativa-proformas-grid::part(cell),
.facturas-clientes-list-view .operativa-facturas-grid::part(cell) {
    font-size: 0.83rem;
}

.operativa-proformas-view .operativa-proformas-actions {
    justify-content: flex-start;
}

.facturas-clientes-list-view .operativa-facturas-actions {
    justify-content: flex-start;
}

.operativa-proformas-view .operativa-proformas-pagination {
    justify-content: center;
}

.facturas-clientes-list-view .operativa-facturas-pagination {
    justify-content: center;
}

.facturas-clientes-list-view .operativa-facturas-main-card .operativa-facturas-pagination {
    width: 100%;
    margin-inline: 0;
    margin-top: 0;
    box-sizing: border-box;
}

.operativa-proformas-view .operativa-proformas-actions,
.operativa-proformas-view .operativa-proformas-pagination,
.operativa-proformas-view .operativa-list-legend {
    margin-top: 0;
}

.facturas-clientes-list-view .operativa-facturas-actions,
.facturas-clientes-list-view .operativa-facturas-pagination,
.facturas-clientes-list-view .operativa-list-legend {
    margin-top: 0;
}

.operativa-proformas-view .operativa-proformas-filter-card .form-big::part(input-field),
.operativa-proformas-view .operativa-proformas-filter-card vaadin-text-field::part(input-field),
.operativa-proformas-view .operativa-proformas-filter-card vaadin-combo-box::part(input-field),
.operativa-proformas-view .operativa-proformas-filter-card vaadin-date-picker::part(input-field),
.facturas-clientes-list-view .operativa-facturas-filter-card .form-big::part(input-field),
.facturas-clientes-list-view .operativa-facturas-filter-card vaadin-text-field::part(input-field),
.facturas-clientes-list-view .operativa-facturas-filter-card vaadin-combo-box::part(input-field),
.facturas-clientes-list-view .operativa-facturas-filter-card vaadin-date-picker::part(input-field) {
    min-height: 40px;
    font-size: 14px;
}

.operativa-proformas-view .operativa-proformas-grid {
    min-height: 460px;
}

.facturas-clientes-list-view .operativa-facturas-grid {
    min-height: 460px;
}

@media (max-width: 1180px) {
    .operativa-proforma-form-main-layout {
        flex-direction: column;
        min-height: auto;
        overflow: visible;
    }

    .operativa-proforma-form-left-column,
    .operativa-proforma-form-side-column {
        width: 100%;
        max-width: none;
        max-height: none;
        overflow: visible;
        padding-right: 0;
        flex: 1 1 auto;
    }

    .operativa-proformas-view .operativa-proformas-filter-card,
    .operativa-proformas-view .operativa-proformas-main-card,
    .operativa-proformas-view .operativa-proformas-actions,
    .operativa-proformas-view .operativa-proformas-pagination,
    .facturas-clientes-list-view .operativa-facturas-filter-card,
    .facturas-clientes-list-view .operativa-facturas-main-card,
    .facturas-clientes-list-view .operativa-facturas-actions,
    .facturas-clientes-list-view .operativa-facturas-pagination,
    .operativa-proformas-view .tracking-entidades-card {
        width: 100%;
        margin-inline: 0;
    }
}

@media (max-width: 960px) {
    .operativa-single-grid-view .operativa-list-grid-card .grid-saas {
        min-height: clamp(460px, 62vh, 760px);
    }
}

@media (max-width: 1100px) {
    .operativa-proforma-form-view .operativa-proforma-cuenta-block {
        min-width: 100%;
        flex-basis: 100%;
    }
}

.tareas-mini-gantt-bar.tarea-pendiente-asignar {
    background: var(--tarea-estado-pendiente-asignar-bg, #ffef9a);
}

.tarea-status-pill.tarea-pendiente-iniciar {
    color: var(--tarea-estado-pendiente-iniciar-text, #7a4609);
    background: var(--tarea-estado-pendiente-iniciar-bg, #ffd69a);
    border-color: var(--tarea-estado-pendiente-iniciar-border, #efb96a);
}

.tareas-mini-gantt-bar.tarea-pendiente-iniciar {
    background: var(--tarea-estado-pendiente-iniciar-bg, #ffd69a);
}

.tarea-status-pill.tarea-iniciada {
    color: var(--tarea-estado-iniciada-text, #6d3c00);
    background: var(--tarea-estado-iniciada-bg, #ffc66d);
    border-color: var(--tarea-estado-iniciada-border, #eda844);
}

.tareas-mini-gantt-bar.tarea-iniciada {
    background: var(--tarea-estado-iniciada-bg, #ffc66d);
}

.tarea-status-pill.tarea-parada {
    color: var(--tarea-estado-parada-text, #395801);
    background: var(--tarea-estado-parada-bg, #d7f67f);
    border-color: var(--tarea-estado-parada-border, #b7dd50);
}

.tareas-mini-gantt-bar.tarea-parada {
    background: var(--tarea-estado-parada-bg, #d7f67f);
}

.tarea-status-pill.tarea-postpuesta {
    color: var(--tarea-estado-postpuesta-text, #4f2d82);
    background: var(--tarea-estado-postpuesta-bg, #d8cbff);
    border-color: var(--tarea-estado-postpuesta-border, #bea9ee);
}

.tareas-mini-gantt-bar.tarea-postpuesta {
    background: var(--tarea-estado-postpuesta-bg, #d8cbff);
}

.tarea-status-pill.tarea-finalizada {
    color: var(--tarea-estado-finalizada-text, #18552b);
    background: var(--tarea-estado-finalizada-bg, #89f5a1);
    border-color: var(--tarea-estado-finalizada-border, #62d97f);
}

.tareas-mini-gantt-bar.tarea-finalizada {
    background: var(--tarea-estado-finalizada-bg, #89f5a1);
}

.tarea-status-pill.tarea-facturada {
    color: var(--tarea-estado-facturada-text, #6d2e59);
    background: var(--tarea-estado-facturada-bg, #f7cbe6);
    border-color: var(--tarea-estado-facturada-border, #e2aed2);
}

.tareas-mini-gantt-bar.tarea-facturada {
    background: var(--tarea-estado-facturada-bg, #f7cbe6);
}

.tarea-status-pill.tarea-anulada {
    color: var(--tarea-estado-anulada-text, #7a2323);
    background: var(--tarea-estado-anulada-bg, #ffc9c9);
    border-color: var(--tarea-estado-anulada-border, #eda8a8);
}

.tareas-mini-gantt-bar.tarea-anulada {
    background: var(--tarea-estado-anulada-bg, #ffc9c9);
}

@media (max-width: 1280px) {
    .tareas-top-row,
    .tareas-detail-row,
    .tareas-form-row {
        flex-direction: column;
    }

    .tareas-mini-gantt-card {
        min-width: 100%;
    }

    .tareas-form-planificacion-card {
        min-width: 100%;
    }

    .tareas-presupuesto-grid-row {
        flex-direction: column;
    }

    .tareas-form-accordion-row {
        flex-direction: column;
    }

    .operativa-tarea-form-view .tareas-form-row > .tareas-form-main-card,
    .operativa-tarea-form-view .tareas-form-row > .tareas-form-side-column,
    .operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible > .tareas-form-main-card,
    .operativa-tarea-form-view .tareas-form-row.is-presupuesto-visible > .tareas-form-side-column {
        width: 100%;
        min-width: 0;
        max-width: none;
        flex: 1 1 auto;
    }

    .operativa-tarea-form-view .tareas-form-main-card .tareas-form-schedule-main-row {
        grid-template-columns: 1fr;
    }

    .tareas-form-duration-field {
        width: 100%;
        min-width: 0;
    }

    .tareas-presupuesto-check {
        margin-left: 0;
        padding-bottom: 0;
        justify-self: start;
    }
}

.tracking-entidades-card {
    width: 100%;
}

.tracking-entidades-title {
    margin: 0;
}

.tracking-entidades-message {
    color: var(--lumo-secondary-text-color);
    font-size: 0.95rem;
}

.tracking-entidades-grid {
    width: 100%;
}

.tracking-grid-cell {
    display: flex;
    flex-direction: column;
    gap: 0.22rem;
    min-width: 0;
    line-height: 1.25;
    padding: 0.15rem 0;
}

.tracking-grid-cell-title {
    color: var(--lumo-body-text-color);
    font-size: 0.94rem;
    font-weight: 600;
    white-space: normal;
}

.tracking-grid-cell-detail {
    color: var(--lumo-secondary-text-color);
    font-size: 0.82rem;
    white-space: normal;
}

.agenda-tareas-toolbar {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: end;
    gap: 12px;
    margin-bottom: var(--ui-card-gap);
}

.agenda-tareas-toolbar-left {
    justify-self: start;
}

.agenda-tareas-toolbar-center {
    justify-self: center;
}

.agenda-tareas-toolbar-right {
    justify-self: end;
}

.agenda-tareas-date-picker::part(label) {
    width: 100%;
    color: #2d3b4f;
    font-size: 1rem;
    font-weight: 700;
    text-align: center;
    justify-content: center;
}

.agenda-tareas-date-text {
    min-width: 260px;
    color: #2d3b4f;
    font-size: 1rem;
    font-weight: 700;
}

.agenda-tareas-nav-button {
    min-width: 42px;
    min-height: 42px;
}

.agenda-tareas-status {
    font-size: 0.88rem;
    font-weight: 700;
    white-space: nowrap;
}

.agenda-tareas-status--pending {
    color: #8b5e00;
}

.agenda-tareas-status--saved {
    color: #2f6f45;
}

.agenda-tareas-layout {
    align-items: stretch;
}

.agenda-tareas-panel {
    width: 100%;
}

.agenda-panel-title {
    width: 100%;
    margin: 0 0 12px;
    text-align: center;
}

.agenda-tareas-panel--resources {
    min-width: 300px;
    max-width: 34%;
}

.agenda-tareas-board,
.agenda-tareas-resources {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.agenda-task-row {
    display: grid;
    grid-template-columns: var(--agenda-task-col-width, 380px) minmax(280px, 1fr) minmax(200px, 0.72fr) minmax(200px, 0.72fr);
    gap: 12px;
    align-items: start;
    padding: 10px 12px;
    border: 1px solid rgba(43, 84, 59, 0.14);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.84);
}

.agenda-task-row--header {
    background: rgba(236, 244, 238, 0.96);
    border-style: dashed;
    font-weight: 700;
}

.agenda-task-row--draft {
    background: rgba(243, 248, 244, 0.95);
    border-style: dashed;
}

.agenda-task-header-cell {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #2d4d34;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    text-align: center;
}

.agenda-task-label {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.agenda-task-name-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.agenda-task-label--clickable {
    cursor: pointer;
}

.agenda-task-label--clickable:hover {
    opacity: 0.88;
}

.agenda-task-name {
    color: #233447;
    font-weight: 800;
}

.agenda-task-duration {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: 5px 11px;
    border-radius: 999px;
    background: rgba(47, 143, 47, 0.12);
    color: #1f6b42;
    font-size: 0.82rem;
    font-weight: 800;
    white-space: nowrap;
}

.agenda-task-detail {
    color: #6a7886;
    font-size: 0.86rem;
    line-height: 1.35;
}

.agenda-task-actions-content {
    gap: 12px;
}

.agenda-task-actions-header {
    justify-content: space-between;
    gap: 12px;
}

.agenda-task-actions-title {
    color: #233447;
    font-size: 1.15rem;
    font-weight: 800;
    line-height: 1.2;
}

.agenda-task-actions-hours {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(47, 143, 47, 0.12);
    color: #1f6b42;
    font-size: 0.9rem;
    font-weight: 800;
    white-space: nowrap;
}

.agenda-task-actions-detail {
    color: #607080;
    font-size: 0.92rem;
    line-height: 1.4;
}

.agenda-task-actions-row {
    align-items: center;
}

.agenda-task-actions-empty {
    color: #6f7d8a;
    font-size: 0.9rem;
    font-weight: 600;
}

.agenda-task-add-footer {
    margin-top: 10px;
    gap: 10px;
}

.agenda-task-add-button {
    min-width: 42px;
}

.agenda-task-draft-cell {
    display: flex;
    align-items: center;
}

.agenda-dropzone--draft {
    color: #73808d;
    font-size: 0.84rem;
    font-weight: 600;
}

.agenda-employee-time-dialog {
    min-width: 420px;
}

.agenda-employee-time-dialog-subtitle {
    color: #607080;
    font-size: 0.94rem;
    font-weight: 700;
}

.agenda-employee-time-dialog-row {
    align-items: end;
}

.agenda-dropzone {
    min-height: 58px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: flex-start;
    padding: 8px;
    border: 1px dashed rgba(57, 92, 66, 0.25);
    border-radius: 12px;
    background: rgba(247, 250, 248, 0.92);
}

.agenda-dropzone-placeholder {
    color: #7b8793;
    font-size: 0.85rem;
}

.agenda-empty-state {
    padding: 18px 20px;
    border: 1px dashed rgba(57, 92, 66, 0.22);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.82);
    color: #647282;
}

.agenda-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 38px;
    padding: 6px 12px;
    border-radius: 10px;
    border: 1px solid rgba(35, 51, 71, 0.08);
    box-sizing: border-box;
    color: #22313f;
    font-size: 0.86rem;
    font-weight: 700;
    cursor: grab;
}

button.agenda-chip {
    border: 0;
    box-shadow: none;
}

.agenda-chip .agenda-chip-remove-icon {
    width: 14px;
    height: 14px;
}

.agenda-chip--assigned {
    cursor: pointer;
}

.agenda-chip--oficial {
    background: #dbeaf8;
}

.agenda-chip--peon {
    background: #f4c3a4;
}

.agenda-chip--ausencia {
    background: #f6a4a4;
}

.agenda-chip--vehiculo {
    background: #f6df7f;
}

.agenda-chip--vehiculo-residuo {
    background: #f4b16b;
}

.agenda-chip--palette-assigned {
    background: #e7ebef;
    color: #6f7b88;
}

.agenda-chip--palette-partial {
    opacity: 0.58;
    filter: saturate(0.82);
}

.agenda-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.agenda-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #506172;
    font-size: 0.84rem;
}

.agenda-legend-swatch {
    width: 14px;
    height: 14px;
    border-radius: 4px;
    border: 1px solid rgba(35, 51, 71, 0.08);
}

.agenda-resource-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.agenda-resource-group-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

@media (max-width: 1180px) {
    .agenda-tareas-toolbar {
        grid-template-columns: 1fr;
        justify-items: center;
    }

    .agenda-tareas-toolbar-left,
    .agenda-tareas-toolbar-center,
    .agenda-tareas-toolbar-right {
        justify-self: center;
    }

    .agenda-tareas-layout {
        flex-direction: column;
    }

    .agenda-task-row {
        grid-template-columns: 1fr;
    }
}

/* ============================================================
   REFRESCO MODERNO DE LAS VISTAS DE MENU
   Las cards de menu pasan de bloque verde solido a card clara
   con chip de icono en degradado (acento verde de marca),
   sombra suave y elevacion al hover.
   ============================================================ */
.environment-entry-card {
    position: relative;
    background: var(--ui-surface, #ffffff);
    border: 1px solid var(--ui-border, #e6eae6);
    border-radius: 18px;
    box-shadow: 0 6px 18px rgba(16, 24, 40, 0.06);
    overflow: hidden;
}

.environment-entry-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: linear-gradient(90deg, var(--natursoft-primary-light) 0%, var(--natursoft-primary) 55%, var(--natursoft-primary-dark) 100%);
    opacity: 0;
    transition: opacity .18s ease;
    pointer-events: none;
}

.environment-entry-card:hover,
.environment-entry-card:focus-visible,
.environment-entry-card:active {
    filter: none;
    box-shadow: 0 16px 34px rgba(31, 95, 34, 0.16);
    border-color: var(--natursoft-primary-light);
}

.environment-entry-card:hover::before,
.environment-entry-card:focus-visible::before {
    opacity: 1;
}

.environment-entry-card-content {
    gap: 12px;
}

.environment-entry-card-icon-shell {
    border-radius: 16px;
    background: linear-gradient(135deg, var(--natursoft-primary-light) 0%, var(--natursoft-primary-dark) 100%);
    box-shadow: 0 10px 20px rgba(31, 95, 34, 0.22);
}

.environment-entry-card-icon {
    color: #ffffff;
}

.environment-entry-card-title {
    color: var(--ui-text, #1f2937);
    font-weight: 650;
    letter-spacing: 0.01em;
}

/* Boton circular de accion de los menus: sombra mas suave y moderna */
.environment-action-button {
    box-shadow: 0 12px 24px rgba(31, 95, 34, 0.20);
    border-radius: 20px;
}

.environment-action-button:hover,
.environment-action-button:focus-visible {
    box-shadow: 0 16px 30px rgba(31, 95, 34, 0.24);
}

/* Tarjetas-seccion del menu: superficie limpia con borde sutil */
.menu-section-card {
    background: var(--ui-surface, #ffffff);
    border: 1px solid var(--ui-border, #eceeec);
    border-radius: 18px;
    box-shadow: 0 4px 14px rgba(16, 24, 40, 0.05);
}

/* --- Gastos: borrador (pendiente de validar) y subida de facturas PDF --- */
.presupuestos-legend-item.borrador {
    background: #ffe0b3;
    border-color: #f0b968;
}
.presupuestos-legend-item.borrador .presupuestos-legend-label {
    color: #7a4a00;
}
vaadin-grid.grid-saas::part(fila-borrador),
vaadin-grid.grid-saas::part(fila-borrador-cell),
vaadin-grid[theme~="grid-saas"]::part(fila-borrador),
vaadin-grid[theme~="grid-saas"]::part(fila-borrador-cell) {
    background-color: #ffe9c7;
    color: #6b4300;
}
.gasto-borrador-banner {
    background: #fff3e0;
    border: 1px solid #f0c27a;
    color: #7a4a00;
    padding: 10px 14px;
    border-radius: 8px;
    font-weight: 600;
    margin-bottom: 12px;
}
.gastos-upload-card {
    margin-top: 4px;
}
.gastos-upload-card h3 {
    margin: 0 0 8px 0;
    font-size: 1rem;
}

/* --- Tirador de arrastre de las referencias del presupuesto (drag&drop de filas) --- */
.referencia-drag-handle {
    cursor: grab;
    color: var(--lumo-contrast-50pct);
}
.referencia-drag-handle:active {
    cursor: grabbing;
}

/* --- Visor de facturas PDF adjuntas en el formulario de gasto --- */
.gasto-adjuntos-panel {
    border: 1px solid var(--lumo-contrast-20pct);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 12px;
    background: var(--lumo-contrast-5pct);
}
.gasto-adjuntos-title {
    margin: 0 0 8px 0;
    font-size: 1rem;
}
.gasto-adjuntos-link {
    display: inline-block;
    margin-bottom: 8px;
    font-weight: 600;
}
.gasto-adjuntos-visor {
    border: 1px solid var(--lumo-contrast-20pct);
    border-radius: 6px;
    width: 100%;
}

/* --- Diálogo "Nueva tarea" abierto desde el "+" de la Agenda --- */
.agenda-nueva-tarea-dialog::part(content) {
    padding: 8px 12px;
    overflow: auto;
}
.agenda-nueva-tarea-dialog .tareas-form-view,
.agenda-nueva-tarea-dialog .operativa-master-list-view {
    padding: 0;
}

/* --- Chips de empleado en la Agenda coloreados por "poda" (azul=poda; naranja=no poda) --- */
.agenda-chip--poda-si {
    background: #cfe2ff;
    border-color: #7aa7e6;
}
/* "No poda" conserva el color anaranjado que tenían antes (el antiguo "peón"). */
.agenda-chip--poda-no {
    background: #f4c3a4;
    border-color: #e0a074;
}

/* Orden de recogida (residuos): badge + flechas junto al camión */
.agenda-residuo-item {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.agenda-orden-wrap {
    display: inline-flex;
    align-items: center;
    gap: 2px;
}
.agenda-orden-badge {
    font-size: 11px;
    font-weight: 600;
    color: #2f6f3e;
    background: #e5f3e8;
    border: 1px solid #bcdcc3;
    border-radius: 10px;
    padding: 1px 8px;
    white-space: nowrap;
}
.agenda-orden-btn {
    min-width: 22px;
    width: 22px;
    height: 22px;
    padding: 0;
    margin: 0;
    cursor: pointer;
}
.agenda-orden-btn vaadin-icon,
.agenda-orden-btn iron-icon {
    width: 14px;
    height: 14px;
}

/* =====================================================
   MENÚ LATERAL (SideNav) — estilo Genal, verde (no azul Lumo)
   ===================================================== */
vaadin-side-nav {
    --lumo-primary-color: var(--natursoft-primary);
    --lumo-primary-color-10pct: rgba(56, 161, 60, 0.12);
    --lumo-primary-text-color: var(--natursoft-primary-dark);
}
vaadin-side-nav-item::part(item) {
    color: var(--ui-text);
    border-radius: 8px;
}
vaadin-side-nav-item[active]::part(item) {
    color: var(--natursoft-primary-dark);
    background-color: rgba(56, 161, 60, 0.12);
    font-weight: 600;
}
vaadin-side-nav-item::part(item):hover {
    background-color: rgba(56, 161, 60, 0.08);
}

/* Menú lateral: fondo blanco (no gris) como el resto de la app */
vaadin-app-layout::part(drawer) {
    background: var(--ui-surface, #ffffff);
    border-inline-end: 1px solid var(--ui-border, #e5e7eb);
}
.side-drawer {
    background: var(--ui-surface, #ffffff);
}

/* Quitar el footer (logo Natursoft) en toda la app */
.app-footer {
    display: none !important;
}

/* KPIs de la home (operativa/tareas) */
.kpi-row {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: center;
    width: 100%;
    max-width: 860px;
    margin: 0 auto 18px auto;
}
.kpi-card {
    flex: 1 1 180px;
    max-width: 240px;
    background: var(--ui-surface, #ffffff);
    border: 1px solid var(--ui-border, #e5e7eb);
    border-radius: 14px;
    box-shadow: var(--shadow-soft, 0 1px 4px rgba(28,52,84,.08));
    padding: 18px 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}
.kpi-value {
    font-size: 2rem;
    font-weight: 800;
    color: var(--natursoft-primary-dark, #2b7d2f);
    line-height: 1;
}
.kpi-label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ui-muted, #6b7280);
    text-align: center;
}

/* Tarjeta de gráfico de la home de Tesorería */
.kpi-chart-card {
    width: 100%;
    max-width: 700px;
    margin: 8px auto 0 auto;
    background: var(--ui-surface, #ffffff);
    border: 1px solid var(--ui-border, #e5e7eb);
    border-radius: 14px;
    box-shadow: var(--shadow-soft, 0 1px 4px rgba(28,52,84,.08));
    padding: 16px;
    box-sizing: border-box;
}

/* Menú lateral: ancho fijo y estable (no se ensancha/estrecha) y etiquetas completas */
vaadin-app-layout {
    --vaadin-app-layout-drawer-width: 340px;
}
vaadin-app-layout::part(drawer) {
    width: 340px;
    min-width: 340px;
    max-width: 340px;
}
vaadin-side-nav-item::part(item) {
    white-space: normal;
    line-height: 1.2;
}

/* Home Operativa: gantts incrustados en paneles plegables (ocultar/mostrar) */
.operativa-gantt-panel {
    width: 100%;
    max-width: 1400px;
    margin: 0 auto 16px auto;
    background: #ffffff;
    border: 1px solid var(--lumo-contrast-10pct);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
.operativa-gantt-panel::part(summary) {
    font-weight: 700;
    color: var(--lumo-primary-text-color);
    padding: 14px 18px;
}
.operativa-gantt-panel::part(content) {
    padding: 0 8px 8px 8px;
}
/* El gantt incrustado ocupa el panel y usa su propio scroll interno */
.operativa-gantt-panel .tareas-gantt-view {
    padding-top: 0;
}

/* Menú lateral: permitir scroll cuando hay muchas opciones (que se vea entero) */
vaadin-app-layout::part(drawer) {
    overflow-y: auto;
}
.side-drawer {
    height: 100%;
    overflow-y: auto;
}


/* Que la flecha de expandir/plegar de los grupos no quede pegada al borde */
vaadin-side-nav-item::part(item) {
    padding-inline-end: 8px;
}
vaadin-side-nav-item::part(toggle-button) {
    flex: 0 0 auto;
}

/* Hoja de cálculo auxiliar (acordeón plegable en el form de factura proforma) */
.hoja-calculo-panel {
    width: 100%;
    background: #ffffff;
    box-shadow: var(--shadow-card);
    border-radius: 12px;
}
.hoja-calculo-panel::part(summary) {
    font-weight: 700;
    color: var(--lumo-primary-text-color);
    padding: 14px 18px;
}
.hoja-calculo-panel::part(content) {
    padding: 0 18px 16px 18px;
}
.hoja-calculo {
    overflow-x: auto;
}
.hoja-calculo-ayuda {
    font-size: var(--lumo-font-size-s);
    color: var(--lumo-secondary-text-color);
}

/* Factura proforma: referencias teóricas (presupuesto) / reales y rentabilidad */
.operativa-proforma-form-view .proforma-fila-superior {
    width: 100%;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 10px;
}
.operativa-proforma-form-view .proforma-fila-superior > .operativa-proforma-header-card {
    flex: 1 1 520px;
    width: auto;
    min-width: 0;
}
.operativa-proforma-form-view .proforma-columna-referencias {
    flex: 1 1 520px;
    max-width: 680px;
    width: auto;
    min-width: 0;
    gap: 10px;
}
.proforma-referencias-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.proforma-referencias-teoricas {
    border-left: 4px solid #f2c200 !important;
}
.proforma-referencias-reales {
    border-left: 4px solid #29b6f6 !important;
}
.proforma-rentabilidad-card {
    border-left: 4px solid var(--lumo-contrast-30pct) !important;
}
.proforma-referencias-card .proforma-referencias-grid {
    font-size: 0.72rem;
    box-shadow: none;
    --vaadin-grid-cell-padding: 2px 6px;
}
.proforma-referencias-toolbar {
    width: 100%;
    align-items: flex-end;
    gap: 8px;
}
.proforma-referencias-total {
    align-self: flex-end;
    font-size: 0.9rem;
    font-weight: 800;
    color: var(--ui-text);
}
.proforma-rentabilidad-fila {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    padding: 4px 0;
    font-size: 0.9rem;
}
.proforma-rentabilidad-fila + .proforma-rentabilidad-fila {
    border-top: 1px solid var(--lumo-contrast-10pct);
}
.proforma-rentabilidad-valor {
    font-weight: 800;
    white-space: nowrap;
}
.proforma-rentabilidad-valor.rentabilidad-positiva {
    color: #1b7f3b;
}
.proforma-rentabilidad-valor.rentabilidad-negativa {
    color: #c62828;
}

/* Referencias / rentabilidad / hoja de la proforma: versión compacta (más pequeña que el resto del form) */
.proforma-columna-referencias {
    gap: 8px !important;
}
.proforma-columna-referencias .proforma-referencias-card {
    padding: 8px 10px !important;
    gap: 4px;
}
.operativa-proforma-form-view .proforma-columna-referencias .proforma-referencias-card h3 {
    font-size: 0.78rem;
    margin: 0 0 4px 0;
}
.proforma-referencias-card vaadin-grid.grid-saas::part(header-cell),
.proforma-referencias-card vaadin-grid[theme~="grid-saas"]::part(header-cell) {
    font-size: 10px;
    padding: 2px 6px;
    min-height: 24px;
    line-height: 1.05;
}
.proforma-referencias-card vaadin-grid.grid-saas::part(body-cell),
.proforma-referencias-card vaadin-grid[theme~="grid-saas"]::part(body-cell) {
    font-size: 10.5px;
    padding: 1px 6px;
    min-height: 26px;
    line-height: 1.1;
}
.proforma-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field {
    --lumo-text-field-size: 22px;
    font-size: 10.5px;
    padding: 0;
}
.proforma-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field::part(input-field) {
    min-height: 22px;
    padding-inline: 4px;
}
.proforma-referencias-card vaadin-big-decimal-field.presupuesto-referencia-field input {
    font-size: 10.5px;
}
.proforma-referencias-toolbar vaadin-combo-box.proforma-referencias-combo {
    --lumo-text-field-size: 26px;
    font-size: 11px;
    padding-top: 0;
}
.proforma-referencias-toolbar vaadin-combo-box.proforma-referencias-combo::part(label) {
    font-size: 10px;
    padding-bottom: 2px;
}
.proforma-referencias-card .top-icon-button {
    min-width: 24px;
    width: 24px;
    height: 22px;
    margin: 0;
    padding: 0;
}
.proforma-referencias-card .top-icon-button vaadin-icon {
    width: 12px;
    height: 12px;
}
.proforma-referencias-card .btn-small {
    font-size: 10px;
}
.proforma-referencias-card .proforma-referencias-total {
    font-size: 0.72rem;
}
.proforma-rentabilidad-card .proforma-rentabilidad-fila {
    font-size: 0.72rem;
    padding: 2px 0;
}
.hoja-calculo-panel::part(summary) {
    font-size: 0.78rem;
    padding: 8px 12px;
}
.hoja-calculo-panel::part(content) {
    padding: 0 12px 10px 12px;
}
.hoja-calculo-panel .hoja-calculo-ayuda {
    font-size: 0.7rem;
}
.hoja-calculo-panel .btn-small {
    font-size: 10px;
}
.hoja-calculo .jss_worksheet {
    font-size: 11px;
}
